Function at 0x403a70
Capabilities:
Check http status code
Create http request
Get http content length
Read data from internet
Receive data

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x436328
mov eax, dword fs:[0]
push eax
mov eax, 0x10d8
call fcn.00416070
mov eax, dword [0x445080]
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 dword [ebp - 0x10e4], edx
mov ebx, ecx
push 0
push 0
push 0
push 0
push str.i_like_seo_good
mov dword [ebp - 0x10dc], 0
call dword [sym.imp.WININET.dll_InternetOpenA]
mov ecx, eax
mov dword [ebp - 0x10d8], ecx
test ecx, ecx
je 0x403be4
cmp dword [ebx + 0x14], 0xf
mov edx, ebx
mov dword [ebp - 0x10e0], ebx
jbe 0x403aed
mov edx, dword [ebx]
mov dword [ebp - 0x10e0], edx
mov eax, dword [ebx + 0x10]
cmp eax, 8
jb 0x403b91
add eax, 0xfffffff9
add eax, edx
mov dword [ebp - 0x10dc], eax
sub eax, edx
push eax
push 0x68
push edx
call fcn.004185b0
mov edi, eax
add esp, 0xc
test edi, edi
je 0x403b8b
nop dword [eax + eax]
mov edx, edi
mov ecx, str.https:__
mov esi, 4
nop dword [eax]
mov eax, dword [edx]
cmp eax, dword [ecx]
jne 0x403b45
add edx, 4
add ecx, 4
sub esi, 4
jae 0x403b30
xor eax, eax
jmp 0x403b6c
mov al, byte [edx]
cmp al, byte [ecx]
jne 0x403b67
mov al, byte [edx + 1]
cmp al, byte [ecx + 1]
jne 0x403b67
mov al, byte [edx + 2]
cmp al, byte [ecx + 2]
jne 0x403b67
mov al, byte [edx + 3]
cmp al, byte [ecx + 3]
jne 0x403b67
xor eax, eax
jmp 0x403b6c
sbb eax, eax
or eax, 1
test eax, eax
je 0x403beb
mov eax, dword [ebp - 0x10dc]
inc edi
sub eax, edi
push eax
push 0x68
push edi
call fcn.004185b0
mov edi, eax
add esp, 0xc
test edi, edi
jne 0x403b20
mov ecx, dword [ebp - 0x10d8]
or edi, 0xffffffff
test edi, edi
mov eax, 0x4003000
mov edx, 0x4000000
cmovne eax, edx
cmp dword [ebx + 0x14], 0xf
jbe 0x403bab
mov ebx, dword [ebx]
push 0
push eax
push 0
push 0
push ebx
push ecx
call dword [sym.imp.WININET.dll_InternetOpenUrlA]
mov esi, eax
test esi, esi
jne 0x403bf9
mov edx, str.Failed_to_open_URL
mov ecx, 0x446410
call fcn.0040a870
push eax
call fcn.0040ab20
add esp, 4
push dword [ebp - 0x10d8]
call dword [sym.imp.WININET.dll_InternetCloseHandle]
xor al, al
jmp 0x403eb8
sub edi, dword [ebp - 0x10e0]
mov ecx, dword [ebp - 0x10d8]
jmp 0x403b94
mov edi, dword [sym.imp.WININET.dll_HttpQueryInfoA]
lea eax, [ebp - 0x101c]
push 0
push eax
lea eax, [ebp - 0x1024]
mov dword [ebp - 0x1024], 0
push eax
push 0x20000013
push esi
mov dword [ebp - 0x101c], 4
call edi
mov eax, dword [ebp - 0x1024]
cmp eax, 0xc8
je 0x403c70
push eax
mov edx, str.Downloading_Failed
mov ecx, 0x446410
call fcn.0040a870
mov ecx, eax
call fcn.00406b30
push eax
call fcn.0040ab20
add esp, 4
push esi
mov esi, dword [sym.imp.WININET.dll_InternetCloseHandle]
call esi
push dword [ebp - 0x10d8]
call esi
xor al, al
jmp 0x403eb8
push 0xb0
lea eax, [ebp - 0x10d4]
push 0
push eax
call fcn.00418450
mov ebx, dword [ebp - 0x10e4]
add esp, 0xc
cmp dword [ebx + 0x14], 0xf
jbe 0x403c94
mov ebx, dword [ebx]
lea ecx, [ebp - 0x106c]
mov dword [ebp - 0x10d4], 0x440edc
call fcn.0040a3b0
mov dword [ebp - 4], 0
mov eax, dword [ebp - 0x10d4]
push 0
mov dword [ebp - 0x10dc], 1
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ostream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x10d4]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ebp + ecx - 0x10d8], eax
lea eax, [ebp - 0x10d0]
push eax
mov eax, dword [ebp - 0x10d4]
lea ecx, [ebp - 0x10d4]
add ecx, dword [eax + 4]
call fcn.0040a540
mov dword [ebp - 4], 2
mov eax, dword [ebp - 0x10d4]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ofstream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ofstream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x10d4]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x10d8], eax
lea ecx, [ebp - 0x10d0]
call fcn.0040a1f0
push ecx
push 0x22
push ebx
lea ecx, [ebp - 0x10d0]
mov byte [ebp - 4], 3
call fcn.0040a070
test eax, eax
jne 0x403d77
mov eax, dword [ebp - 0x10d4]
lea ecx, [ebp - 0x10d4]
push 0
add ecx, dword [eax + 4]
xor eax, eax
cmp dword [ecx + 0x38], eax
sete al
lea eax, [eax*4 + 2]
or eax, dword [ecx + 0xc]
push eax
call fcn.00401ff0
mov eax, dword [ebp - 0x10d4]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ofstream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ofstream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x10d4]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x10d8], eax
mov dword [ebp - 4], 4
mov eax, dword [ebp - 0x10d4]
mov eax, dword [eax + 4]
test byte [ebp + eax - 0x10c8], 6
jne 0x403e2a
xor ebx, ebx
mov dword [ebp - 0x1014], 0
push ebx
lea eax, [ebp - 0x1020]
mov dword [ebp - 0x1018], ebx
push eax
lea eax, [ebp - 0x1018]
mov dword [ebp - 0x1020], 4
push eax
push 0x20000005
push esi
call edi
test eax, eax
jne 0x403ed4
lea ecx, [ebp - 0x10d0]
call fcn.004094f0
test eax, eax
jne 0x403e2a
mov eax, dword [ebp - 0x10d4]
lea ecx, [ebp - 0x10d4]
push ebx
add ecx, dword [eax + 4]
xor eax, eax
cmp dword [ecx + 0x38], eax
sete al
lea eax, [eax*4 + 2]
or eax, dword [ecx + 0xc]
push eax
call fcn.00401ff0
push esi
mov esi, dword [sym.imp.WININET.dll_InternetCloseHandle]
call esi
push dword [ebp - 0x10d8]
call esi
xor bl, bl
mov eax, dword [ebp - 0x10d4]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ofstream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ofstream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x10d4]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x10d8], eax
lea ecx, [ebp - 0x10d0]
call fcn.00407af0
mov eax, dword [ebp - 0x10d4]
mov eax, dword [eax + 4]
mov dword [ebp + eax - method.std::basic_ostream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ostream_char__struct_std::char_traits_char__.0
mov eax, dword [ebp - 0x10d4]
mov edx, dword [eax + 4]
lea ecx, [edx - 8]
mov dword [ebp + edx - 0x10d8], ecx
lea eax, [ebp - 0x106c]
mov dword [ebp - 4], 5
push eax
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.00414730
add esp, 4
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.00415188
mov esp, ebp
pop ebp
ret
mov edi, dword [sym.imp.WININET.dll_InternetReadFile]
lea eax, [ebp - 0x1014]
push eax
push 0x1000
lea eax, [ebp - 0x1010]
push eax
push esi
call edi
test eax, eax
je 0x403f80
nop dword [eax + eax]
mov eax, dword [ebp - 0x1014]
test eax, eax
je 0x403f80
push 0
push eax
lea eax, [ebp - 0x1010]
push eax
lea ecx, [ebp - 0x10d4]
call fcn.004069c0
add ebx, dword [ebp - 0x1014]
xor edx, edx
imul eax, ebx, 0x64
mov ecx, 0x446328
div dword [ebp - 0x1018]
mov edx, str.Downloading:
push eax
call fcn.0040a870
mov ecx, eax
call fcn.00406cf0
mov edx, 0x440450
mov ecx, eax
call fcn.0040a870
mov edx, 0x44044c
mov ecx, eax
call fcn.0040a870
mov ecx, eax
call fcn.00409db0
lea eax, [ebp - 0x1014]
push eax
push 0x1000
lea eax, [ebp - 0x1010]
push eax
push esi
call edi
test eax, eax
jne 0x403f00
push 0x446328
call fcn.0040ab20
add esp, 4
lea ecx, [ebp - 0x10d0]
call fcn.004094f0
test eax, eax
jne 0x403fc5
mov eax, dword [ebp - 0x10d4]
lea ecx, [ebp - 0x10d4]
push 0
add ecx, dword [eax + 4]
xor eax, eax
cmp dword [ecx + 0x38], eax
sete al
lea eax, [eax*4 + 2]
or eax, dword [ecx + 0xc]
push eax
call fcn.00401ff0
push esi
mov esi, dword [sym.imp.WININET.dll_InternetCloseHandle]
call esi
push dword [ebp - 0x10d8]
call esi
mov bl, 1
jmp 0x403e3d