Function at 0x406128
Capabilities:
Connect to http server
Create http request
Parse url
Read data from internet
Receive data
Send data
Send http request

Disassembly:
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
mov eax, 0x89f0
call fcn.00439870
sub rsp, rax
mov rdx, qword [0x00469190]
xor edi, edi
mov ebx, r8d
cmp rdx, rdi
mov rsi, rcx
je 0x406173
call fcn.00419540
cmp eax, edi
je 0x406173
lea rcx, str._HttpDownloader____s__Skipping_for_debug_purposes._n
mov rdx, rsi
call fcn.0040bd0c
xor eax, eax
jmp 0x4068d3
lea rcx, str._HttpDownloader____s___1__Starting_download..._n
mov rdx, rsi
call fcn.0040bd0c
cmp dword [rsp + 0x8a58], edi
mov rbp, qword [rsp + 0x8a50]
mov r14, rdi
mov dword [rsp + 0x20], edi
mov edx, ebx
lea rcx, str.JWrapperDownloader
je 0x4061c6
mov rax, qword [rsp + 0x8a60]
cmp rax, rdi
jne 0x4061bd
mov r8, qword [rbp + 0x28]
mov r9, qword [r8 + 8]
mov r8, qword [r8]
jmp 0x4061cc
mov r9, qword [rax + 8]
mov r8, qword [rax]
jmp 0x4061cc
xor r9d, r9d
xor r8d, r8d
call qword [sym.imp.WININET.dll_InternetOpenA]
cmp rax, rdi
mov r12, rax
jne 0x406201
lea rcx, str._HttpDownloader____s__Unable_initialise_HTTP_connection_n
mov rdx, rsi
call fcn.0040bd0c
lea rdx, str.InternetOpen
lea rcx, str.HttpDownloader
call fcn.0040ace4
jmp 0x40616c
mov ebx, 0x68
lea rcx, [rsp + 0x80]
xor edx, edx
mov r8, rbx
call fcn.00419040
mov rcx, qword [rbp + 0x18]
lea r13d, [rbx - 0x67]
lea r9, [rsp + 0x80]
xor r8d, r8d
xor edx, edx
mov dword [rsp + 0xa0], r13d
mov dword [rsp + 0xd0], r13d
mov dword [rsp + 0x80], ebx
call qword [sym.imp.WININET.dll_InternetCrackUrlA]
cmp eax, edi
je 0x406378
mov ebx, 0x400
lea rcx, [rsp + 0x5f0]
xor edx, edx
mov r8, rbx
call fcn.00419040
lea rcx, [rsp + 0x1f0]
mov r8, rbx
xor edx, edx
call fcn.00419040
cmp dword [rsp + 0xa0], edi
jbe 0x4062a1
mov r8d, dword [rsp + 0xa0]
mov rdx, qword [rsp + 0x98]
lea rcx, [rsp + 0x5f0]
call fcn.00418d50
cmp dword [rsp + 0xd0], edi
jbe 0x4062c7
mov r8d, dword [rsp + 0xd0]
mov rdx, qword [rsp + 0xc8]
lea rcx, [rsp + 0x1f0]
call fcn.00418d50
cmp dword [rsp + 0x94], 4
movzx r8d, word [rsp + 0xa4]
mov qword [rsp + 0x38], rdi
mov dword [rsp + 0x30], edi
mov ebx, edi
lea rdx, [rsp + 0x5f0]
cmove ebx, r13d
mov rcx, r12
xor r9d, r9d
mov dword [rsp + 0x28], 3
mov qword [rsp + 0x20], rdi
call qword [sym.imp.WININET.dll_InternetConnectA]
cmp rax, rdi
mov r14, rax
jne 0x406335
lea rdx, str.InternetConnect
lea rcx, str.HttpDownloader
call fcn.0040ace4
xor edx, edx
mov r8, r14
mov rcx, r12
call fcn.00405f08
jmp 0x40616c
mov qword [rsp + 0x38], rdi
mov eax, 0x400000
mov ecx, 0xc00000
cmp ebx, edi
lea r9, str.HTTP_1.1
lea r8, [rsp + 0x1f0]
cmovne eax, ecx
lea rdx, [0x0044f45c]
mov rcx, r14
mov dword [rsp + 0x30], eax
mov qword [rsp + 0x28], rdi
mov qword [rsp + 0x20], rdi
call qword [sym.imp.WININET.dll_HttpOpenRequestA]
jmp 0x4063ab
lea rdx, str.CrackURL
lea rcx, str.HttpDownloader
call fcn.0040ace4
mov rdx, qword [rbp + 0x18]
xor r9d, r9d
xor r8d, r8d
mov rcx, r12
mov qword [rsp + 0x28], rdi
mov dword [rsp + 0x20], 0x400800
call qword [sym.imp.WININET.dll_InternetOpenUrlA]
cmp rax, rdi
mov r13, rax
jne 0x4063bf
lea rdx, str.HttpOpenRequest_InternetOpenUrl
jmp 0x406317
mov ebx, 0x1f
lea r9, [rsp + 0x54]
lea r8, [rsp + 0x48]
mov rcx, r13
mov edx, ebx
mov dword [rsp + 0x54], 4
call qword [sym.imp.WININET.dll_InternetQueryOptionA]
or dword [rsp + 0x48], 0x3180
lea r9d, [rbx - 0x1b]
lea r8, [rsp + 0x48]
mov edx, ebx
mov rcx, r13
call qword [sym.imp.WININET.dll_InternetSetOptionA]
cmp eax, edi
jne 0x406420
lea rdx, str.InternetSetOption
lea rcx, str.HttpDownloader
call fcn.0040ace4
lea rcx, str._HttpDownloader__Unable_to_set_internet_option_correctly
call fcn.0040bd0c
lea rcx, str._HttpDownloader____s___3__Starting_download..._n
mov rdx, rsi
call fcn.0040bd0c
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, r13
mov dword [rsp + 0x20], edi
call qword [sym.imp.WININET.dll_HttpSendRequestA]
cmp eax, edi
jne 0x406463
lea rdx, str.HttpSendRequest
lea rcx, str.HttpDownloader
call fcn.0040ace4
mov rdx, r13
jmp 0x406325
mov rcx, r13
call fcn.00405eb8
lea rcx, [rsp + 0x60]
mov ebx, eax
call fcn.0041b7b0
cmp ebx, 0x197
mov eax, edi
mov dword [rsp + 0x40], edi
jne 0x406575
cmp eax, edi
jne 0x4064ad
mov rcx, qword [rbp + 8]
mov edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp dword [rbp + 0x14], edi
mov dword [rsp + 0x40], 1
jne 0x406531
lea rcx, str._HttpDownloader____s__Status_code_is__d_n
mov r8d, ebx
mov rdx, rsi
call fcn.0040bd0c
call qword [sym.imp.USER32.dll_GetDesktopWindow]
mov r9d, 7
mov r8d, 0x2eee
mov rdx, r13
mov rcx, rax
mov qword [rsp + 0x20], rdi
call qword [sym.imp.WININET.dll_InternetErrorDlg]
lea rcx, str._HttpDownloader____s__InternetErrorDlg_return_code_is__d_n
mov r8d, eax
mov rdx, rsi
mov ebx, eax
call fcn.0040bd0c
cmp ebx, 0x2f00
jne 0x4065c1
xor r9d, r9d
xor r8d, r8d
xor edx, edx
mov rcx, r13
mov dword [rsp + 0x20], edi
call qword [sym.imp.WININET.dll_HttpSendRequestA]
mov rcx, r13
call fcn.00405eb8
cmp eax, 0x197
mov ebx, eax
jne 0x40655d
mov eax, dword [rsp + 0x40]
jmp 0x406489
lea rcx, str._HttpDownloader____s__Proxy_thread_returning_as_another_has_connected_to_the_proxy_n
mov rdx, rsi
call fcn.0040bd0c
mov r8, r14
mov rdx, r13
mov rcx, r12
call fcn.00405f08
mov rcx, qword [rbp + 8]
call qword [sym.imp.KERNEL32.dll_ReleaseMutex]
jmp 0x40616c
cmp dword [rsp + 0x40], edi
je 0x406575
mov rcx, qword [rbp + 8]
mov eax, 1
mov dword [rbp + 0x14], eax
call qword [sym.imp.KERNEL32.dll_ReleaseMutex]
lea rcx, str._HttpDownloader____s__Connection_setup__querying_length_n
mov rdx, rsi
call fcn.0040bd0c
lea r9, [rsp + 0x58]
lea r8, [rsp + 0xf0]
mov edx, 5
mov rcx, r13
mov dword [rsp + 0x58], 0x100
mov qword [rsp + 0x20], rdi
call qword [sym.imp.WININET.dll_HttpQueryInfoA]
cmp eax, edi
je 0x4065e7
lea rcx, [rsp + 0xf0]
call fcn.00418d30
mov ebx, eax
jmp 0x4065ec
mov rcx, qword [rbp + 8]
mov eax, 1
mov dword [rbp + 0x14], eax
call qword [sym.imp.KERNEL32.dll_ReleaseMutex]
lea rcx, str._HttpDownloader____s__Could_not_get_proxy_credentials._n
mov rdx, rsi
call fcn.0040bd0c
jmp 0x40645b
mov ebx, 0xffffffff
cmp ebx, 0xffffffff
mov dword [rsp + 0x4c], edi
mov dword [rsp + 0x44], edi
mov rdx, rsi
je 0x406619
lea rcx, str._HttpDownloader____s__Required_file_size_is__d_n
mov r8d, ebx
mov dword [rsp + 0x44], 1
mov dword [rsp + 0x4c], ebx
call fcn.0040bd0c
jmp 0x406625
lea rcx, str._HttpDownloader____s__Required_file_size_is_unknown__n
call fcn.0040bd0c
lea rcx, [rsp + 0x9f0]
xor edx, edx
mov r8d, 0x8000
mov dword [rsp + 0x50], edi
call fcn.00419040
lea rcx, [rsp + 0x68]
call fcn.0041b7b0
movsxd rax, dword [rsp + 0x44]
mov ecx, edi
cmp eax, edi
mov dword [rsp + 0x40], edi
je 0x406665
cmp ebx, edi
mov edx, 1
cmove ecx, edx
mov dword [rsp + 0x40], ecx
cmp ecx, edi
mov qword [rsp + 0x70], rax
jne 0x406851
cmp rax, rdi
lea rcx, [0x0045a160]
je 0x406691
mov eax, ebx
imul eax, eax, 0x64
cdq
idiv dword [rsp + 0x4c]
mov edx, 0x64
sub edx, eax
jmp 0x406696
mov edx, 0xffffffff
call fcn.00409500
lea r9, [rsp + 0x44]
lea rdx, [rsp + 0x9f0]
mov r8d, 0x8000
mov rcx, r13
call qword [sym.imp.WININET.dll_InternetReadFile]
cmp eax, edi
je 0x406845
mov r8d, dword [rsp + 0x44]
sub ebx, r8d
cmp r8d, edi
jbe 0x4067fa
cmp dword [rsp + 0x50], edi
jne 0x4067e3
mov rcx, qword [rbp]
mov edx, 0xffffffff
call qword [sym.imp.KERNEL32.dll_WaitForSingleObject]
lea rcx, str._HttpDownloader____s__Download_is_now_active._n
mov rdx, rsi
call fcn.0040bd0c
cmp dword [rbp + 0x10], edi
mov rdx, rsi
jne 0x406822
mov eax, 1
lea rcx, str._HttpDownloader____s__Opened_file._Set_downloadWorked_to_TRUE___d__n
mov r8d, eax
mov dword [rsp + 0x50], eax
mov dword [rbp + 0x10], eax
call fcn.0040bd0c
cmp dword [rsp + 0x8a58], edi
mov rdx, rsi
je 0x406770
cmp qword [rsp + 0x8a60], rdi
jne 0x40674e
lea rcx, str._HttpDownloader____s__Copying_proxy_settings._n
call fcn.0040bd0c
mov rcx, qword [rbp + 0x28]
mov rdx, qword [rcx + 8]
mov rcx, qword [rcx]
jmp 0x406769
lea rcx, str._HttpDownloader____s__Using_override_proxy_settings._n
call fcn.0040bd0c
mov rax, qword [rsp + 0x8a60]
mov rdx, qword [rax + 8]
mov rcx, qword [rax]
call fcn.00405f48
jmp 0x4067c5
lea rcx, str._HttpDownloader____s__No_proxy_settings_detected._n
call fcn.0040bd0c
lea rdx, str.Proxy_Non_Auto
mov rcx, rsi
call fcn.00419540
cmp eax, edi
jne 0x4067bd
cmp qword [0x0045cd68], rdi
jne 0x4067bd
cmp qword [rbp + 0x28], rdi
je 0x4067bd
lea rcx, str._HttpDownloader____s___Special_Case__No_existing_proxy_settings_found._n
mov rdx, rsi
call fcn.0040bd0c
mov rcx, qword [rbp + 0x28]
mov rdx, qword [rcx + 8]
mov rcx, qword [rcx]
call fcn.00405f48
mov rcx, r12
call fcn.00405ffc
mov rcx, qword [rbp]
call qword [sym.imp.KERNEL32.dll_ReleaseMutex]
lea rcx, str._HttpDownloader____s__Starting_to_write_data_to_file..._n
mov rdx, rsi
call fcn.0040bd0c
mov r8d, dword [rsp + 0x44]
mov rcx, qword [rbp + 0x20]
lea rdx, [rsp + 0x9f0]
call fcn.00407bcc
mov ecx, dword [rsp + 0x40]
jmp 0x406814
lea rcx, str._HttpDownloader____s__Read_0_bytes_so_finishing._n
mov rdx, rsi
call fcn.0040bd0c
mov eax, 1
mov ecx, eax
mov dword [rsp + 0x40], eax
cmp ecx, edi
jne 0x406851
mov rax, qword [rsp + 0x70]
jmp 0x406672
lea rcx, str._HttpDownloader____s__Thread_returning_as_another_has_worked_n
call fcn.0040bd0c
mov r8, r14
mov rdx, r13
mov rcx, r12
call fcn.00405f08
mov rcx, qword [rbp]
jmp 0x406552
lea rdx, [0x0044f910]
jmp 0x40644f
cmp ebx, edi
jle 0x406869
lea rcx, str._HttpDownloader____s__Warning:_download_complete_but_required_length_is_still__d._n
mov r8d, ebx
mov rdx, rsi
call fcn.0040bd0c
jmp 0x4068c3
lea rcx, [rsp + 0x60]
call fcn.0041b7b0
mov rdx, qword [rsp + 0x68]
mov rcx, qword [rsp + 0x60]
call fcn.0041c2d0
lea rcx, str._HttpDownloader____s__Closing_buffer...__download_took__lf__n
mov rdx, rsi
movsd xmm2, xmm0
movq r8, xmm2
call fcn.0040bd0c
mov rcx, qword [rbp + 0x20]
call fcn.00407b44
lea rcx, [0x0045a160]
mov edx, 0x64
call fcn.00409500
mov rcx, qword [rbp + 0x38]
call qword [sym.imp.KERNEL32.dll_SetEvent]
mov edi, 1
mov r8, r14
mov rdx, r13
mov rcx, r12
call fcn.00405f08
mov eax, edi
add rsp, 0x89f0
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret