Function at 0x41086d
Capabilities:
Create directory
Delete file
Download and write a file
Get file size
Get http content length
Move file
Query remote server for available data
Read data from internet
Receive and write data from server to client
Receive data
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x834
mov eax, dword [0x43db90]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
xor ebx, ebx
push ebx
mov esi, ecx
call fcn.0041532c
pop ecx
mov ecx, esi
call fcn.0041081f
test al, al
je 0x410d4c
push dword [esi + 0x20]
lea eax, [ebp - 0x804]
push eax
call fcn.00415520
lea eax, [ebp - 0x804]
push 0x5c
push eax
call fcn.004172b0
add esp, 0x10
cmp eax, ebx
je 0x4108c3
mov byte [eax], bl
push ebx
lea eax, [ebp - 0x804]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
test eax, eax
jne 0x410904
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x410904
push ebx
push ebx
push 0x8004
push dword [esi + 0x18]
call dword [sym.imp.USER32.dll_PostMessageA]
push str.Failed_to_write_the_downloaded_file_to_disk.
lea ecx, [esi + 4]
call fcn.00402f65
jmp 0x410d4c
push dword [esi + 0x1c]
push str.InternetOpenUrl_n_t____s_n
call fcn.0041141b
mov eax, dword [esi + 0x1c]
pop ecx
pop ecx
push ebx
push 0x4000000
push ebx
push ebx
push eax
push dword [esi + 0x38]
call dword [sym.imp.WININET.dll_InternetOpenUrlA]
mov dword [ebp - 0x80c], eax
cmp eax, ebx
jne 0x410969
lea edi, [esi + 4]
push str.Failed_to_open_the_file_for_downloading_
push edi
call fcn.004038de
pop ecx
pop ecx
push ebx
push ebx
push 0x8004
push dword [esi + 0x18]
call dword [sym.imp.USER32.dll_PostMessageA]
push dword [esi + 0x1c]
push dword [edi]
push str.CThreadDownloader::TheLoop_____n_t_s_____n
call fcn.0041141b
add esp, 0xc
jmp 0x410d4c
mov edi, dword [sym.imp.WININET.dll_HttpQueryInfoA]
push ebx
lea ecx, [ebp - 0x818]
push ecx
lea ecx, [ebp - 0x814]
push ecx
push 0x20000005
push eax
mov dword [ebp - 0x814], ebx
mov dword [ebp - 0x818], 4
call edi
test eax, eax
je 0x410d1e
cmp dword [ebp - 0x814], ebx
je 0x410d1e
push dword [ebp - 0x814]
push str.HttpQueryInfo__length_of_file_to_download_____d_n
call fcn.0041141b
pop ecx
pop ecx
push ebx
lea eax, [ebp - 0x818]
push eax
lea eax, [ebp - 0x820]
push eax
push 0x20000013
push dword [ebp - 0x80c]
mov dword [ebp - 0x820], ebx
call edi
test eax, eax
je 0x410d1e
mov eax, dword [ebp - 0x820]
lea ecx, [eax - 0xc8]
cmp ecx, 0x63
ja 0x410d1e
push eax
push str.HttpQueryInfo__HTTP_status_code:__d__n
call fcn.0041141b
pop ecx
pop ecx
push dword [esi + 0x20]
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov eax, dword [esi + 0x24]
mov edi, dword [sym.imp.KERNEL32.dll_CreateFileA]
push ebx
push 0x80000080
push 3
push ebx
push ebx
push 0x40000000
push eax
call edi
mov dword [ebp - 0x810], eax
cmp eax, 0xffffffff
je 0x410a84
push dword [ebp - 0x820]
push str.CreateFile__file_exists__so_continue_downloading_...:__d__n
call fcn.0041141b
pop ecx
pop ecx
push ebx
push dword [ebp - 0x810]
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov dword [esi + 0x30], eax
cmp eax, ebx
jbe 0x410a84
mov byte [esi + 0x34], 1
cmp eax, dword [ebp - 0x814]
je 0x410a84
push ebx
push ebx
push ebx
push eax
push dword [ebp - 0x80c]
call dword [sym.imp.WININET.dll_InternetSetFilePointer]
cmp eax, 0xffffffff
jne 0x410a84
mov byte [esi + 0x34], bl
mov dword [esi + 0x30], ebx
push dword [ebp - 0x810]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov eax, dword [esi + 0x24]
xor ecx, ecx
cmp byte [esi + 0x34], bl
push ebx
setne cl
push 0x80
add ecx, 2
push ecx
push ebx
push ebx
push 0x40000000
push eax
call edi
mov dword [ebp - 0x810], eax
cmp eax, 0xffffffff
jne 0x410ae5
add esi, 4
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.Error_creating_file__code__u___n
push esi
call fcn.004038de
add esp, 0xc
push dword [ebp - 0x80c]
call dword [sym.imp.WININET.dll_InternetCloseHandle]
push dword [esi]
jmp 0x410d40
push ebx
push ebx
push dword [esi + 0x30]
push eax
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
push dword [esi + 0x30]
push dword [ebp - 0x814]
push str.Download_Parameters__DownloadSize:_d__BytesDownloaded:_d__n
call fcn.0041141b
mov eax, dword [ebp - 0x814]
mov ecx, dword [esi + 0x30]
mov edi, dword [sym.imp.USER32.dll_PostMessageA]
add esp, 0xc
push eax
push ebx
push 0x8001
push dword [esi + 0x18]
mov dword [esi + 0x28], eax
mov dword [esi + 0x2c], ecx
call edi
push dword [esi + 0x2c]
push ebx
push 0x8002
push dword [esi + 0x18]
call edi
lea eax, [ebp - 0x82c]
push eax
mov dword [ebp - 0x81c], ebx
mov dword [ebp - 0x82c], ebx
mov dword [ebp - 0x828], ebx
call fcn.0041532c
pop ecx
mov dword [esi + 0x2c], ebx
jmp 0x410c78
mov eax, dword [esi + 0x30]
cmp eax, dword [esi + 0x28]
jae 0x410c81
push ebx
push ebx
lea eax, [ebp - 0x81c]
push eax
push dword [ebp - 0x80c]
call dword [sym.imp.WININET.dll_InternetQueryDataAvailable]
test eax, eax
setne byte [ebp - 0x805]
cmp byte [ebp - 0x805], bl
je 0x410c81
jmp 0x410c2a
cmp dword [ebp - 0x81c], ebx
jle 0x410c36
mov eax, 0x800
cmp dword [ebp - 0x81c], eax
jae 0x410bb7
mov eax, dword [ebp - 0x81c]
lea ecx, [ebp - 0x818]
push ecx
push eax
lea eax, [ebp - 0x804]
push eax
push dword [ebp - 0x80c]
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
setne byte [ebp - 0x805]
cmp byte [ebp - 0x805], bl
je 0x410c3e
cmp dword [ebp - 0x818], ebx
jbe 0x410c36
push ebx
lea eax, [ebp - 0x824]
push eax
push dword [ebp - 0x818]
lea eax, [ebp - 0x804]
push eax
push dword [ebp - 0x810]
call dword [sym.imp.KERNEL32.dll_WriteFile]
test eax, eax
je 0x410c36
mov eax, dword [ebp - 0x824]
cmp eax, dword [ebp - 0x818]
jne 0x410c36
add dword [esi + 0x2c], eax
add dword [esi + 0x30], eax
sub dword [ebp - 0x81c], eax
mov eax, dword [esi + 0x30]
cmp eax, dword [esi + 0x28]
jb 0x410b98
cmp byte [ebp - 0x805], bl
jne 0x410c44
call dword [sym.imp.KERNEL32.dll_GetLastError]
push ebx
call fcn.0041532c
sub eax, dword [ebp - 0x82c]
pop ecx
mov ecx, eax
mov dword [ebp - 0x830], edx
mov eax, ebx
je 0x410c6a
mov eax, dword [esi + 0x2c]
shr eax, 0xa
imul eax, eax, 0xa
xor edx, edx
div ecx
push dword [esi + 0x30]
push eax
push 0x8003
push dword [esi + 0x18]
call edi
cmp byte [esi + 0x10], bl
je 0x410b5d
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x80c], eax
cmp eax, ebx
je 0x410cab
push eax
push ecx
mov ecx, esp
push str.Downloader
call fcn.00403883
lea eax, [esi + 4]
push eax
call fcn.00411550
add esp, 0xc
push dword [ebp - 0x810]
call dword [sym.imp.KERNEL32.dll_SetEndOfFile]
push dword [ebp - 0x810]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push dword [esi + 0x30]
push dword [esi + 0x28]
push str.Download_Result__DownloadSize:_d__BytesDownloaded:_d__n
call fcn.0041141b
add esp, 0xc
cmp dword [ebp - 0x80c], ebx
jg 0x410d09
mov eax, dword [esi + 0x30]
cmp eax, dword [esi + 0x28]
jne 0x410d04
push dword [esi + 0x20]
push dword [esi + 0x24]
call dword [sym.imp.KERNEL32.dll_MoveFileA]
push ebx
push ebx
push 0x8005
push dword [esi + 0x18]
call edi
mov byte [esi + 0x11], 1
jmp 0x410d15
cmp byte [esi + 0x10], bl
jne 0x410d15
push ebx
push ebx
push 0x8004
push dword [esi + 0x18]
call edi
mov ecx, esi
call fcn.00410762
jmp 0x410d4c
push str.The_requested_file_was_not_found_on_the_download_server_
lea edi, [esi + 4]
push edi
call fcn.004038de
pop ecx
pop ecx
push ebx
push ebx
push 0x8004
push dword [esi + 0x18]
call dword [sym.imp.USER32.dll_PostMessageA]
push dword [edi]
push str.CThreadDownloader::TheLoop_____s_n
call fcn.0041141b
pop ecx
pop ecx
mov ecx, dword [ebp - 4]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00415106
leave
ret