Function at 0x406440
Capabilities:
Check if file exists
Connect to http server
Create directory
Create http request
Get file attributes
Read data from internet
Receive data
Send data
Send http request

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x46b2fc
mov eax, dword fs:[0]
push eax
sub esp, 0x4f8
mov eax, dword [0x48f244]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov esi, ecx
mov ebx, dword [ebp + 8]
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x4f8], esi
mov dword [ebp - 0x4c4], eax
mov dword [ebp - 0x4bc], 0
mov byte [ebp - 0x4a9], 0
mov dword [ebp - 0x4c0], 0
mov dword [ebp - 0x4b8], 0
mov dword [ebp - 4], 0
test ebx, ebx
je 0x406cad
mov ecx, ebx
lea edx, [ecx + 2]
nop
mov ax, word [ecx]
add ecx, 2
test ax, ax
jne 0x4064c0
sub ecx, edx
sar ecx, 1
je 0x406cad
mov eax, dword [esi + 0x10]
mov edi, dword [sym.imp.WININET.dll_InternetCloseHandle]
test eax, eax
je 0x4064ec
push eax
call edi
mov dword [esi + 0x10], 0
mov eax, dword [esi + 0xc]
test eax, eax
je 0x4064fd
push eax
call edi
mov dword [esi + 0xc], 0
mov eax, dword [esi + 8]
test eax, eax
je 0x40650e
push eax
call edi
mov dword [esi + 8], 0
push 0
push 0
push 0
push 0
push str.Http_connect
call dword [sym.imp.WININET.dll_InternetOpenW]
mov dword [esi + 8], eax
test eax, eax
je 0x406b90
xor eax, eax
mov dword [ebp - 0x490], 0
mov dword [ebp - 0x4b4], 0x50
mov dword [ebp - 0x480], 0
mov dword [ebp - 0x47c], 7
mov word [ebp - 0x490], ax
mov dword [ebp - 0x430], eax
mov dword [ebp - 0x420], eax
mov dword [ebp - 0x41c], 7
mov word [ebp - 0x430], ax
lea eax, [ebp - 0x4b4]
mov byte [ebp - 4], 2
push eax
lea eax, [ebp - 0x430]
mov ecx, ebx
push eax
lea edx, [ebp - 0x490]
call fcn.00404b60
mov ecx, dword [ebp - 0x4b4]
mov eax, 0x1bb
add esp, 8
cmp cx, ax
jne 0x4065b0
mov byte [esi + 4], 1
cmp dword [ebp - 0x47c], 8
lea eax, [ebp - 0x490]
push 0
cmovae eax, dword [ebp - 0x490]
push 0
push 3
push 0
push 0
push ecx
push eax
push dword [esi + 8]
call dword [sym.imp.WININET.dll_InternetConnectW]
mov edx, eax
mov dword [esi + 0xc], edx
test edx, edx
je 0x406bab
cmp byte [esi + 4], 0
mov eax, connect
push 0
mov ecx, 0x80802000
cmove ecx, eax
cmp dword [ebp - 0x41c], 8
push ecx
push 0
push 0
push 0x483834
lea eax, [ebp - 0x430]
cmovae eax, dword [ebp - 0x430]
push eax
push 0x483848
push edx
call dword [sym.imp.WININET.dll_HttpOpenRequestW]
mov dword [esi + 0x10], eax
test eax, eax
je 0x406bc6
lea eax, [ebp - 0x4a8]
push eax
lea ecx, [esi + 0x14]
call fcn.0040b240
mov byte [ebp - 4], 3
lea eax, [ebp - 0x4a8]
cmp dword [ebp - 0x494], 0x10
push 0xa0000000
push dword [ebp - 0x498]
cmovae eax, dword [ebp - 0x4a8]
push eax
push dword [esi + 0x10]
call dword [sym.imp.WININET.dll_HttpAddRequestHeadersA]
push 0
push 0
push 0
push 0
push dword [esi + 0x10]
call dword [sym.imp.WININET.dll_HttpSendRequestW]
test eax, eax
je 0x406be1
push 0x401
lea eax, [ebp - 0x418]
push 0
push eax
call fcn.00444b80
mov edi, dword [sym.imp.WININET.dll_HttpQueryInfoA]
lea eax, [ebp - 0x4b0]
add esp, 0xc
mov dword [ebp - 0x4b0], 0x400
push 0
push eax
lea eax, [ebp - 0x418]
push eax
push 0x15
push dword [esi + 0x10]
call edi
test eax, eax
je 0x406bfc
lea ecx, [ebp - 0x418]
mov dword [ebp - 0x460], 0
mov dword [ebp - 0x450], 0
lea edx, [ecx + 1]
mov dword [ebp - 0x44c], 0xf
mov byte [ebp - 0x460], 0
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4066f7
sub ecx, edx
lea eax, [ebp - 0x418]
push ecx
push eax
lea ecx, [ebp - 0x460]
call fcn.00405800
push 0
push 0x483830
lea ecx, [ebp - 0x460]
mov byte [ebp - 4], 4
call fcn.004044d0
cmp eax, 0xffffffff
jne 0x406c17
push 0
lea eax, [ebp - 0x4b0]
mov dword [ebp - 0x4b0], 0x400
push eax
lea eax, [ebp - 0x418]
push eax
push 5
push dword [esi + 0x10]
call edi
test eax, eax
je 0x406c32
mov eax, dword [ebp - 0x4b0]
cmp eax, 0x401
jae 0x406ca8
mov byte [ebp + eax - 0x418], 0
lea eax, [ebp - 0x418]
push eax
call fcn.0045426f
movsd xmm0, qword [0x484eb0]
add esp, 4
fstp qword [ebp - 0x500]
movsd xmm1, qword [ebp - 0x500]
comisd xmm0, xmm1
cvttsd2si eax, xmm1
ja 0x4067a8
mov eax, 0x1000
push eax
mov dword [ebp - 0x4b4], eax
call fcn.00447d93
add esp, 4
lea ecx, [ebp - 0x478]
mov ebx, eax
xor edi, edi
mov dword [ebp - 0x4c0], ebx
push dword [ebp - 0x4c4]
call fcn.004048d0
mov byte [ebp - 4], 5
nop word [eax + eax]
push edi
push 0x48385c
lea ecx, [ebp - 0x478]
call fcn.00404920
mov edi, eax
lea eax, [ebp - 0x478]
cmp edi, 0xffffffff
je 0x4068d8
cmp dword [ebp - 0x468], edi
lea ecx, [ebp - 0x448]
mov edx, edi
mov dword [ebp - 0x448], 0
cmovb edx, dword [ebp - 0x468]
cmp dword [ebp - 0x464], 8
push edx
cmovae eax, dword [ebp - 0x478]
push eax
mov dword [ebp - 0x438], 0
mov dword [ebp - 0x434], 7
call fcn.004049f0
or dword [ebp - 0x4bc], 1
lea eax, [ebp - 0x448]
cmp dword [ebp - 0x434], 8
cmovae eax, dword [ebp - 0x448]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x40688e
cmp dword [ebp - 0x434], 8
lea eax, [ebp - 0x448]
push 0
cmovae eax, dword [ebp - 0x448]
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov edx, dword [ebp - 0x434]
inc edi
cmp edx, 8
jb 0x4067e0
mov ecx, dword [ebp - 0x448]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4068c9
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406c4d
push edx
push ecx
call fcn.00439095
add esp, 8
jmp 0x4067e0
cmp dword [ebp - 0x464], 8
push 0x483730
cmovae eax, dword [ebp - 0x478]
push eax
lea eax, [ebp - 0x4b8]
push eax
call fcn.0044ff06
add esp, 0xc
cmp dword [ebp - 0x4b8], 0
je 0x406c52
mov edi, dword [sym.imp.WININET.dll_InternetReadFile]
xorps xmm0, xmm0
movsd qword [ebp - 0x4c8], xmm0
nop dword [eax]
lea eax, [ebp - 0x4b0]
push eax
push dword [ebp - 0x4b4]
push ebx
push dword [esi + 0x10]
call edi
test eax, eax
je 0x4069b0
mov eax, dword [ebp - 0x4b0]
test eax, eax
je 0x4069b0
push dword [ebp - 0x4b8]
push 1
push eax
push ebx
call fcn.00450215
add esp, 0x10
test eax, eax
je 0x406c6d
mov eax, dword [ebp - 0x4b0]
mov ecx, dword [esi + 0x70]
movd xmm0, eax
cvtdq2pd xmm0, xmm0
shr eax, 0x1f
addsd xmm0, qword [eax*8 + 0x484ed0]
addsd xmm0, qword [ebp - 0x4c8]
movsd qword [ebp - 0x4c8], xmm0
test ecx, ecx
je 0x406920
mov eax, dword [ecx]
sub esp, 0x10
movsd qword [esp + 8], xmm0
movsd xmm0, qword [ebp - 0x500]
movsd qword [esp], xmm0
push 0
push dword [esi + 0x6c]
call dword [eax]
jmp 0x406920
push dword [ebp - 0x4b8]
call fcn.0044f9ce
movsd xmm0, qword [ebp - 0x4c8]
add esp, 4
movsd xmm1, qword [ebp - 0x500]
ucomisd xmm1, xmm0
lahf
test ah, 0x44
jp 0x406c88
mov ecx, dword [esi + 0x70]
test ecx, ecx
je 0x4069fa
mov eax, dword [ecx]
sub esp, 0x10
movsd qword [esp + 8], xmm0
movsd qword [esp], xmm1
push 2
push dword [esi + 0x6c]
call dword [eax]
lea ecx, [ebp - 0x478]
mov byte [ebp - 0x4a9], 1
call fcn.004054a0
mov edx, dword [ebp - 0x44c]
cmp edx, 0x10
jb 0x406a46
mov ecx, dword [ebp - 0x460]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x406a3c
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406ca3
push edx
push ecx
call fcn.00439095
add esp, 8
lea ecx, [ebp - 0x4a8]
mov dword [ebp - 0x450], 0
mov dword [ebp - 0x44c], 0xf
mov byte [ebp - 0x460], 0
call fcn.00405010
mov edx, dword [ebp - 0x41c]
cmp edx, 8
jb 0x406aac
mov ecx, dword [ebp - 0x430]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x406aa2
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406ca3
push edx
push ecx
call fcn.00439095
add esp, 8
mov edx, dword [ebp - 0x47c]
xor eax, eax
mov dword [ebp - 0x420], 0
mov dword [ebp - 0x41c], 7
mov word [ebp - 0x430], ax
cmp edx, 8
jb 0x406b4c
mov ecx, dword [ebp - 0x490]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x406aff
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x406ca3
push edx
push ecx
call fcn.00439095
add esp, 8
jmp 0x406b4c
test ebx, ebx
je 0x406b59
push ebx
call fcn.00447d78
add esp, 4
mov ecx, dword [ebp - 0x4b8]
test ecx, ecx
je 0x406b6c
push ecx
call fcn.0044f9ce
add esp, 4
mov al, byte [ebp - 0x4a9]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.004390b1
mov esp, ebp
pop ebp
ret 8
push 0x48d00c
lea eax, [ebp - 0x4cc]
mov dword [ebp - 0x4cc], 1
push eax
call fcn.00444d5c
push 0x48d00c
lea eax, [ebp - 0x4d0]
mov dword [ebp - 0x4d0], 2
push eax
call fcn.00444d5c
push 0x48d00c
lea eax, [ebp - 0x4d4]
mov dword [ebp - 0x4d4], 1
push eax
call fcn.00444d5c
push 0x48d00c
lea eax, [ebp - 0x4d8]
mov dword [ebp - 0x4d8], 3
push eax
call fcn.00444d5c
push 0x48d00c
lea eax, [ebp - 0x4dc]
mov dword [ebp - 0x4dc], 4
push eax
call fcn.00444d5c
push 0x48d00c
lea eax, [ebp - 0x4e0]
mov dword [ebp - 0x4e0], 5
push eax
call fcn.00444d5c
push 0x48d00c
lea eax, [ebp - 0x4e4]
mov dword [ebp - 0x4e4], 4
push eax
call fcn.00444d5c
call fcn.004480ba
push 0x48d00c
lea eax, [ebp - 0x4e8]
mov dword [ebp - 0x4e8], 7
push eax
call fcn.00444d5c
push 0x48d00c
lea eax, [ebp - 0x4ec]
mov dword [ebp - 0x4ec], 0xf
push eax
call fcn.00444d5c
push 0x48d00c
lea eax, [ebp - 0x4f0]
mov dword [ebp - 0x4f0], 8
push eax
call fcn.00444d5c
call fcn.004480ba
call fcn.0043a04e
push 0x48d00c
lea eax, [ebp - 0x4f4]
mov dword [ebp - 0x4f4], 6
push eax
call fcn.00444d5c
int3