Function at 0x403580
Capabilities:
Check http status code
Connect to http server
Create http request
Parse url
Read data from internet
Receive data
Send data
Send http request

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x41ed5b
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x3314
call fcn.00408ef0
mov eax, dword [0x42e050]
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 edi, dword [ebp + 8]
lea eax, [ebp - 0x32d0]
mov esi, dword [ebp + 0xc]
push 0xb0
push 0
push eax
mov dword [ebp - 0x321c], 0
mov dword [ebp - 0x3318], 0
mov dword [ebp - 0x3314], 0
mov dword [ebp - 0x3310], 0
call fcn.00409b30
add esp, 8
lea ecx, [ebp - 0x32d0]
call fcn.00404ee0
mov dword [ebp - 4], 0
mov byte [ebp - 4], 1
cmp dword [esi + 0x14], 8
jb 0x403618
mov esi, dword [esi]
cmp dword [ebp - 0x3280], 0
jne 0x4036bc
push 0x40
push 0x22
push esi
call fcn.00407a76
add esp, 0xc
test eax, eax
je 0x4036bc
push 1
push eax
lea ecx, [ebp - 0x32cc]
call fcn.00405d60
mov eax, dword [ebp - 0x3298]
mov ecx, dword [eax + 4]
mov dword [ebp - 0x331c], ecx
mov eax, dword [ecx]
call dword [eax + 4]
lea eax, [ebp - 0x3320]
mov byte [ebp - 4], 2
push eax
call fcn.00406780
add esp, 4
lea ecx, [ebp - 0x32cc]
push eax
call fcn.00405c00
mov byte [ebp - 4], 1
mov ecx, dword [ebp - 0x331c]
test ecx, ecx
je 0x40369c
mov eax, dword [ecx]
call dword [eax + 8]
test eax, eax
je 0x40369c
mov ecx, dword [eax]
push 1
mov edx, dword [ecx]
mov ecx, eax
call edx
mov eax, dword [ebp - 0x32d0]
lea ecx, [ebp - 0x32d0]
xor edx, edx
mov eax, dword [eax + 4]
add ecx, eax
mov eax, 4
cmp dword [ecx + 0x38], edx
cmovne eax, edx
jmp 0x4036df
mov eax, dword [ebp - 0x32d0]
lea ecx, [ebp - 0x32d0]
mov eax, dword [eax + 4]
add ecx, eax
xor eax, eax
cmp dword [ecx + 0x38], eax
sete al
lea eax, [eax*4 + 2]
or eax, dword [ecx + 0xc]
push 0
push eax
call fcn.00401da0
mov eax, dword [ebp - 0x32d0]
mov eax, dword [eax + 4]
test byte [ebp + eax - 0x32c4], 6
je 0x403756
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x32d4], eax
lea ecx, [ebp - 0x32cc]
call fcn.00404b30
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ebp + ecx - 0x32d4], eax
mov dword [ebp - 4], 3
jmp 0x403b57
cmp dword [edi + 0x14], 8
lea eax, [ebp - 0x214]
xorps xmm0, xmm0
mov dword [ebp - 0x32fc], eax
lea eax, [ebp - 0x1214]
movlpd qword [ebp - 0x3308], xmm0
mov dword [ebp - 0x32e0], eax
mov eax, dword [edi + 0x10]
mov dword [ebp - 0x3300], 0
movlpd qword [ebp - 0x32f4], xmm0
movlpd qword [ebp - 0x32ec], xmm0
mov dword [ebp - 0x32e4], 0
movlpd qword [ebp - 0x32d8], xmm0
mov dword [ebp - 0x330c], 0x3c
mov dword [ebp - 0x32f8], pe_nt_image_headers32
mov dword [ebp - 0x32dc], 0x800
jb 0x4037ce
mov edi, dword [edi]
lea ecx, [ebp - 0x330c]
push ecx
push 0
push eax
push edi
call dword [sym.imp.WININET.dll_InternetCrackUrlW]
test eax, eax
jne 0x403848
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x32d4], eax
lea ecx, [ebp - 0x32cc]
call fcn.00404b30
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ebp + ecx - 0x32d4], eax
mov dword [ebp - 4], 4
jmp 0x403b57
push 0
push 0
push 0
push 1
push str.WebBundle_1.0
call dword [sym.imp.WININET.dll_InternetOpenW]
mov edi, eax
mov dword [ebp - 0x3318], edi
test edi, edi
jne 0x4038cc
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x32d4], eax
lea ecx, [ebp - 0x32cc]
call fcn.00404b30
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ebp + ecx - 0x32d4], eax
mov dword [ebp - 4], 5
jmp 0x403b57
push 0
push 0
push 3
push 0
push 0
push dword [ebp - 0x32f4]
push dword [ebp - 0x32fc]
push edi
call dword [sym.imp.WININET.dll_InternetConnectW]
mov ebx, eax
mov dword [ebp - 0x3314], ebx
test ebx, ebx
jne 0x403961
push edi
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x32d4], eax
lea ecx, [ebp - 0x32cc]
call fcn.00404b30
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ebp + ecx - 0x32d4], eax
mov dword [ebp - 4], 6
jmp 0x403b57
push 0
xor eax, eax
mov ecx, 0x800000
cmp dword [ebp - 0x3300], 4
cmove eax, ecx
push eax
push 0
push 0
push 0
push dword [ebp - 0x32e0]
push 0x42a86c
push ebx
call dword [sym.imp.WININET.dll_HttpOpenRequestW]
mov esi, eax
mov dword [ebp - 0x3310], esi
test esi, esi
jne 0x403a0a
mov esi, dword [sym.imp.WININET.dll_InternetCloseHandle]
push ebx
call esi
push edi
call esi
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x32d4], eax
lea ecx, [ebp - 0x32cc]
call fcn.00404b30
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ebp + ecx - 0x32d4], eax
mov dword [ebp - 4], 7
jmp 0x403b57
push 0
push 0
push 0
push 0
push esi
call dword [sym.imp.WININET.dll_HttpSendRequestW]
test eax, eax
jne 0x403a91
push esi
mov esi, dword [sym.imp.WININET.dll_InternetCloseHandle]
call esi
push ebx
call esi
push edi
call esi
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x32d4], eax
lea ecx, [ebp - 0x32cc]
call fcn.00404b30
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ebp + ecx - 0x32d4], eax
mov dword [ebp - 4], 8
jmp 0x403b57
push 0
lea eax, [ebp - 0x3220]
mov dword [ebp - 0x3218], 0
push eax
lea eax, [ebp - 0x3218]
mov dword [ebp - 0x3220], 4
push eax
push 0x20000013
push esi
call dword [sym.imp.WININET.dll_HttpQueryInfoW]
test eax, eax
je 0x403b80
mov eax, dword [ebp - 0x3218]
cmp eax, 0x193
je 0x403ae8
cmp eax, 0x194
je 0x403ae8
cmp eax, 0x19a
jne 0x403b80
push esi
mov esi, dword [sym.imp.WININET.dll_InternetCloseHandle]
call esi
push ebx
call esi
push edi
call esi
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x32d4], eax
lea ecx, [ebp - 0x32cc]
call fcn.00404b30
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ebp + ecx - 0x32d4], eax
mov dword [ebp - 4], 9
lea eax, [ebp - 0x3268]
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
push eax
call fcn.004078ce
add esp, 4
jmp 0x403cd5
lea eax, [ebp - 0x321c]
push eax
push 0x2000
lea eax, [ebp - 0x3214]
push eax
push esi
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
je 0x403bbf
mov eax, dword [ebp - 0x321c]
test eax, eax
je 0x403bbf
push 0
push eax
lea eax, [ebp - 0x3214]
push eax
lea ecx, [ebp - 0x32d0]
call fcn.00405120
jmp 0x403b80
mov dword [ebp - 4], 0
push esi
mov esi, dword [sym.imp.WININET.dll_InternetCloseHandle]
call esi
push ebx
call esi
push edi
call esi
lea ecx, [ebp - 0x32cc]
call fcn.00405e70
test eax, eax
jne 0x403c0f
mov eax, dword [ebp - 0x32d0]
lea ecx, [ebp - 0x32d0]
push 0
mov eax, dword [eax + 4]
add ecx, eax
xor eax, eax
cmp dword [ecx + 0x38], eax
sete al
lea eax, [eax*4 + 2]
or eax, dword [ecx + 0xc]
push eax
call fcn.00401da0
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 0x68]
mov dword [ebp + ecx - 0x32d4], eax
lea ecx, [ebp - 0x32cc]
call fcn.00404b30
mov eax, dword [ebp - 0x32d0]
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 - 0x32d0]
mov ecx, dword [eax + 4]
lea eax, [ecx - 8]
mov dword [ebp + ecx - 0x32d4], eax
lea eax, [ebp - 0x3268]
mov dword [ebp - 4], 0xb
push eax
mov dword [ebp - method.std::ios_base.virtual_0], vtable.std::ios_base.0
call fcn.004078ce
add esp, 4
mov al, 1
jmp 0x403cd7
xor al, al
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.00408139
mov esp, ebp
pop ebp
ret 8