Function at 0x412360
Capabilities:
Hide graphical window
Read .ini file

Disassembly:
sub esp, 0x6e8
mov eax, dword [0x4b0650]
xor eax, esp
mov dword [esp + 0x6e4], eax
push ebx
push ebp
push esi
push edi
push str.Download_Start
mov esi, ecx
call fcn.0040de80
push 0
call fcn.00479571
add esp, 8
mov ecx, esi
mov dword [esi + 0xa568], eax
mov dword [esi + 0xa56c], edx
call fcn.0040e870
call dword [sym.imp.WINMM.dll_timeGetTime]
mov edi, dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov ecx, eax
mov eax, 0x10624dd3
mul ecx
shr edx, 6
cmp dword [esi + 0xa578], 3
mov dword [esi + 0xa5a8], edx
je 0x41240a
mov edx, dword [esi + 0xa580]
push 0x2710
push edx
mov ebx, 0x80004005
call edi
test eax, eax
je 0x41240a
cmp eax, 0x102
jne 0x4123f8
push str.WAIT_TIMEOUT_over_ten_seconds____Abort_Completed
call fcn.00401030
add esp, 4
jmp 0x412777
push str.WAIT_FAILED___Abort_Completed
call fcn.00401030
add esp, 4
jmp 0x412777
mov eax, dword [esi + 0xa5b8]
test eax, eax
je 0x412430
push 0xffffffffffffffff
push eax
call edi
mov eax, dword [esi + 0xa5b8]
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esi + 0xa5b8], 0
push str.Complete_MD5_thread
call fcn.00401030
add esp, 4
lea ecx, [esi + 0x3d84]
push ecx
mov ecx, dword [esi + 0x694]
lea edx, [esi + 0x2934]
push edx
lea eax, [esi + 0x8a8]
push eax
call fcn.004039b0
mov ebx, eax
test ebx, ebx
jl 0x412746
mov ecx, dword [esi + 0x698]
test ecx, ecx
je 0x412495
mov eax, dword [esi + 0x694]
mov edx, dword [eax + 0x1fc]
mov eax, dword [eax + 0x1f8]
push edx
push eax
call fcn.00408d40
mov ecx, dword [esi + 0x698]
call fcn.00407fb0
mov cl, byte [esi + 0xa588]
mov eax, dword [esi + 0x694]
mov byte [esi + 0xa588], 0
mov edx, dword [eax + 0x1fc]
mov eax, dword [eax + 0x1f8]
push edx
push eax
mov byte [esp + 0x18], cl
lea ecx, [esp + 0x4f4]
push str._I64d
push ecx
call fcn.00401570
add esp, 0x10
lea eax, [esi + 0x2f4c]
push eax
push 0x104
lea edx, [esp + 0x2ec]
push edx
push 0x49526c
push str.FileSize
push 0x495298
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
mov ecx, 0x49526c
lea eax, [esp + 0x2e4]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x41252a
test dx, dx
je 0x412526
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x41252a
add eax, 4
add ecx, 4
test dx, dx
jne 0x412504
xor eax, eax
jmp 0x41252f
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x412562
mov eax, dword [esi + 0x694]
mov edi, dword [eax + 0x1f8]
mov ebp, dword [eax + 0x1fc]
lea eax, [esp + 0x2e4]
push eax
call fcn.00478ca5
add esp, 4
cmp edi, eax
jne 0x41255d
cmp ebp, edx
je 0x412562
mov byte [esp + 0x10], 1
lea eax, [esi + 0x2f4c]
push eax
lea ecx, [esp + 0x4f0]
push ecx
push str.FileSize
push 0x495298
call dword [sym.imp.KERNEL32.dll_WritePrivateProfileStringW]
test ebx, ebx
jne 0x412738
mov eax, dword [0x4af068]
mov edi, dword [esi + 0x694]
mov ecx, dword [edi + 0x1fc]
mov ebx, dword [edi + 0x1f8]
mov ebp, eax
shl eax, 0x14
cdq
cmp ecx, edx
jg 0x4125c0
jl 0x4125b0
cmp ebx, eax
jae 0x4125c0
push 0
push 0x100000
push ecx
push ebx
call fcn.004787c0
mov ebp, eax
push ebp
mov ecx, edi
call fcn.00401750
mov edx, dword [esp + 0x10]
mov eax, dword [0x4af5ac]
mov ecx, dword [esi + 0x694]
push edx
push eax
call fcn.00404a90
push 0x206
lea ecx, [esp + 0xe2]
push 0
push ecx
mov ebx, eax
mov word [esp + 0xe8], 0
call fcn.00477c40
push ebx
push str.MultiBlockDownloader::Start____hResult___.8X
lea edx, [esp + 0xf0]
push 0x104
push edx
call fcn.00477bdc
lea eax, [esp + 0xf8]
push eax
call fcn.00401030
add esp, 0x20
cmp ebx, 0x80070005
je 0x412636
cmp ebx, 0x80070003
jne 0x41263f
mov ecx, esi
call fcn.0040f340
mov ebx, eax
cmp ebx, 0x80700007
jne 0x41266e
mov ecx, dword [esi + 0xc]
push 0
push ebx
push 0x478
push ecx
call dword [sym.imp.USER32.dll_PostMessageW]
push str.Download_Start___failed_
call fcn.00401030
push ebx
push str.Fail_to_start_download:__x
jmp 0x412756
test ebx, ebx
jl 0x412659
push 0
call fcn.00479571
push 0
mov dword [esi + 0xa560], eax
mov dword [esi + 0xa564], edx
call fcn.00479571
mov ecx, dword [esi + 0x698]
mov dword [esi + 0xa568], eax
mov eax, dword [esi + 0x694]
mov dword [esi + 0xa56c], edx
mov edx, dword [eax + 0x208]
mov dword [esi + 0xa570], edx
mov eax, dword [eax + 0x20c]
mov dword [esi + 0xa574], eax
add esp, 8
lea eax, [esi + 0x2f4c]
push eax
call fcn.00408b10
mov ecx, dword [esi + 0xc]
push 0
push 0x3e8
push 4
push ecx
call dword [sym.imp.USER32.dll_SetTimer]
push 0
lea ecx, [esi + 0x5f34]
call fcn.00406760
mov ebp, dword [sym.imp.USER32.dll_ShowWindow]
push eax
call ebp
lea edi, [esi + 0x588c]
push 5
mov ecx, edi
call fcn.00406760
push eax
call ebp
push 0
mov ecx, edi
call fcn.00406770
push eax
mov ecx, edi
call fcn.00406760
push eax
call dword [sym.imp.USER32.dll_InvalidateRect]
mov ecx, edi
call fcn.00406760
push eax
call dword [sym.imp.USER32.dll_UpdateWindow]
mov dword [esi + 0xa578], 1
jmp 0x412777
cmp ebx, 1
jne 0x412777
mov ecx, esi
call fcn.0040f020
jmp 0x412777
push str.InitDownload___Failed_
call fcn.00401030
push ebx
push str.Fail_to_initialize_download:__x
call fcn.0040de80
mov ecx, dword [esi + 0x694]
add esp, 0xc
call fcn.004041d0
push eax
push str.UninitDownload_hr___x
call fcn.0040de80
add esp, 8
cmp dword [esp + 0x6fc], 0
jne 0x4127c5
mov ecx, dword [esi + 0x698]
test ecx, ecx
je 0x4127c5
call fcn.004083d0
cmp eax, 0x64
je 0x4127c5
mov ecx, dword [esi + 0x698]
call fcn.004083d0
push eax
add esi, 0x3154
push esi
lea edx, [esp + 0x1c]
push str.Download_Start__s:__d__
push edx
call dword [sym.imp.USER32.dll_wsprintfW]
lea eax, [esp + 0x24]
push eax
call fcn.00401030
add esp, 0x14
mov ecx, dword [esp + 0x6f4]
pop edi
pop esi
pop ebp
mov eax, ebx
pop ebx
xor ecx, esp
call fcn.00477bf8
add esp, 0x6e8
ret 4