Function at 0x404e70
Capabilities:
Check if file exists
Create directory
Get file attributes

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x43d78c
mov eax, dword fs:[0]
push eax
sub esp, 0x8c
mov eax, dword [0x45406c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov edi, ecx
lea eax, [ebp - 0x58]
push eax
call fcn.00404950
lea eax, [ebp - 0x58]
mov dword [ebp - 4], 0
push eax
lea ecx, [ebp - 0x90]
call fcn.004058b0
cmp dword [ebp - 0x7c], 0x10
lea eax, [ebp - 0x90]
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmovae eax, dword [ebp - 0x90]
push eax
call esi
cmp eax, 0xffffffff
je 0x404ee6
test al, 0x10
je 0x404ee6
mov bl, 1
jmp 0x404ee8
xor bl, bl
mov edx, dword [ebp - 0x7c]
cmp edx, 0x10
jb 0x404f1f
mov ecx, dword [ebp - 0x90]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x404f15
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405448
push edx
push ecx
call fcn.0040d4ef
add esp, 8
test bl, bl
jne 0x40505a
cmp dword [ebp - 0x44], 0x10
lea eax, [ebp - 0x58]
push 0
cmovae eax, dword [ebp - 0x58]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x40505a
lea eax, [ebp - 0x58]
push eax
lea ecx, [ebp - 0x70]
call fcn.00407140
add esp, 4
mov byte [ebp - 4], 1
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0x90]
call fcn.00402d70
push eax
mov edx, str._error_code:
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x40]
call fcn.00407270
add esp, 4
mov byte [ebp - 4], 4
mov edx, dword [ebp - 0x7c]
cmp edx, 0x10
jb 0x404fb9
mov ecx, dword [ebp - 0x90]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x404faf
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40544d
push edx
push ecx
call fcn.0040d4ef
add esp, 8
sub esp, 0x18
mov dword [ebp - 0x80], 0
lea eax, [ebp - 0x40]
mov dword [ebp - 0x7c], 0xf
mov ecx, esp
mov byte [ebp - 0x90], 0
lea edx, [ebp - 0x70]
push eax
call fcn.00406d00
add esp, 4
mov ecx, edi
push 3
call fcn.00404830
mov edx, dword [ebp - 0x2c]
cmp edx, 0x10
jb 0x40501f
mov ecx, dword [ebp - 0x40]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x405015
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405452
push edx
push ecx
call fcn.0040d4ef
add esp, 8
mov edx, dword [ebp - 0x5c]
cmp edx, 0x10
jb 0x405053
mov ecx, dword [ebp - 0x70]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x405049
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405457
push edx
push ecx
call fcn.0040d4ef
add esp, 8
xor bl, bl
jmp 0x4053fa
push 0x44cb88
lea edx, [ebp - 0x58]
lea ecx, [ebp - 0x40]
call fcn.00406bb0
add esp, 4
lea ecx, [edi + 0x48]
mov byte [ebp - 4], 5
push ecx
mov edx, eax
lea ecx, [ebp - 0x28]
call fcn.00406e40
add esp, 4
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x2c]
cmp edx, 0x10
jb 0x4050ba
mov ecx, dword [ebp - 0x40]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4050b0
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40545c
push edx
push ecx
call fcn.0040d4ef
add esp, 8
lea eax, [ebp - 0x28]
mov dword [ebp - 0x30], 0
push eax
lea ecx, [ebp - 0x90]
mov dword [ebp - 0x2c], 0xf
mov byte [ebp - 0x40], 0
call fcn.004058b0
cmp dword [ebp - 0x7c], 0x10
lea eax, [ebp - 0x90]
cmovae eax, dword [ebp - 0x90]
push eax
call esi
cmp eax, 0xffffffff
je 0x4050fc
test al, 0x10
jne 0x4050fc
mov bl, 1
jmp 0x4050fe
xor bl, bl
mov edx, dword [ebp - 0x7c]
cmp edx, 0x10
jb 0x405135
mov ecx, dword [ebp - 0x90]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x40512b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405461
push edx
push ecx
call fcn.0040d4ef
add esp, 8
test bl, bl
je 0x40514d
cmp dword [ebp - 0x14], 0x10
lea eax, [ebp - 0x28]
cmovae eax, dword [ebp - 0x28]
push eax
call fcn.0042875a
add esp, 4
sub esp, 0x18
mov ecx, esp
push 0xe
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push str.start_download
mov byte [ecx], 0
call fcn.004067e0
push 2
mov ecx, edi
call fcn.00404830
lea eax, [ebp - 0x28]
push eax
lea ecx, [ebp - 0x90]
call fcn.004058b0
mov byte [ebp - 4], 8
lea ebx, [edi + 0x78]
mov byte [ebp - 0x71], 0
xor esi, esi
sub esp, 0x18
lea edx, [ebp - 0x90]
mov ecx, esp
mov dword [ebp - 0x94], esp
call fcn.004086f0
sub esp, 0x18
mov byte [ebp - 4], 9
mov edx, ebx
mov ecx, esp
call fcn.004086f0
mov byte [ebp - 4], 8
call fcn.004087b0
add esp, 0x30
test al, al
jne 0x405230
sub esp, 0x18
mov ecx, esp
push 0xf
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push str.download_failed
mov byte [ecx], al
call fcn.004067e0
push 3
mov ecx, edi
call fcn.00404830
inc esi
cmp esi, 3
jl 0x405194
mov bl, byte [ebp - 0x71]
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0x7c]
cmp edx, 0x10
jb 0x40523e
mov ecx, dword [ebp - 0x90]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x405234
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405466
jmp 0x405234
mov bl, 1
jmp 0x4051fd
push edx
push ecx
call fcn.0040d4ef
add esp, 8
mov dword [ebp - 0x80], 0
mov dword [ebp - 0x7c], 0xf
mov byte [ebp - 0x90], 0
test bl, bl
jne 0x405278
mov eax, dword [0x4575a4]
push 0
push 0x401
push 0x401
mov eax, dword [eax]
push dword [eax + 0x10]
call dword [sym.imp.USER32.dll_SendMessageW]
jmp 0x4053b4
sub esp, 0x18
mov ecx, esp
push 0x12
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push str.download_successed
mov byte [ecx], 0
call fcn.004067e0
push 2
mov ecx, edi
call fcn.00404830
sub esp, 0x18
lea eax, [ebp - 0x28]
mov ecx, esp
push eax
call fcn.004058b0
mov ecx, edi
call fcn.00404b20
test al, al
jne 0x405387
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov edx, eax
lea ecx, [ebp - 0x90]
call fcn.00402d70
push eax
mov edx, str.start_progress_failed_error_code:
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0x70]
call fcn.00407270
add esp, 4
mov byte [ebp - 4], 0xc
mov edx, dword [ebp - 0x7c]
cmp edx, 0x10
jb 0x405323
mov ecx, dword [ebp - 0x90]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x405319
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40546b
push edx
push ecx
call fcn.0040d4ef
add esp, 8
sub esp, 0x18
mov dword [ebp - 0x80], 0
lea eax, [ebp - 0x70]
mov dword [ebp - 0x7c], 0xf
mov ecx, esp
mov byte [ebp - 0x90], 0
push eax
call fcn.004058b0
push 3
mov ecx, edi
call fcn.00404830
mov edx, dword [ebp - 0x5c]
cmp edx, 0x10
jb 0x405383
mov ecx, dword [ebp - 0x70]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x405379
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405470
push edx
push ecx
call fcn.0040d4ef
add esp, 8
xor bl, bl
jmp 0x4053b4
sub esp, 0x18
mov ecx, esp
push 0x11
mov dword [ecx + 0x10], 0
mov dword [ecx + 0x14], 0xf
push str.lanched_successed
mov byte [ecx], 0
call fcn.004067e0
push 2
mov ecx, edi
call fcn.00404830
mov bl, 1
mov edx, dword [ebp - 0x14]
cmp edx, 0x10
jb 0x4053e8
mov ecx, dword [ebp - 0x28]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4053de
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x405475
push edx
push ecx
call fcn.0040d4ef
add esp, 8
mov dword [ebp - 0x18], 0
mov dword [ebp - 0x14], 0xf
mov byte [ebp - 0x28], 0
mov edx, dword [ebp - 0x44]
cmp edx, 0x10
jb 0x40542a
mov ecx, dword [ebp - 0x58]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x405420
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x40547a
push edx
push ecx
call fcn.0040d4ef
add esp, 8
mov al, bl
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0040d4d9
mov esp, ebp
pop ebp
ret
call fcn.004284f0
call fcn.004284f0
call fcn.004284f0
call fcn.004284f0
call fcn.004284f0
call fcn.004284f0
call fcn.004284f0
call fcn.004284f0
call fcn.004284f0
call fcn.004284f0
call fcn.004284f0
int3