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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4203aa
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x13a4
call fcn.0041d320
mov eax, dword [0x445060]
xor eax, ebp
mov dword [ebp - 0x18], 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 dword [ebp - 0x1388], esi
mov edi, dword [ebp + 0x10]
mov eax, dword [ebp + 0x14]
mov dword [ebp - 0x13b0], eax
mov eax, dword [ebp + 0x18]
mov dword [ebp - 0x1378], eax
mov eax, dword [ebp + 0x1c]
mov dword [ebp - 0x1368], eax
mov eax, dword [ebp + 0x20]
mov dword [ebp - 0x13a0], eax
mov eax, dword [ebp + 0x28]
mov dword [ebp - 0x137c], eax
mov dword [ebp - 0x1394], eax
mov eax, dword [ebp + 0x2c]
mov dword [ebp - 0x138c], eax
mov dword [ebp - 0x139c], eax
mov ebx, 0x426bfa
push ebx
lea ecx, [ebp - 0x125c]
call fcn.00401f3f
push ebx
lea ecx, [ebp - 0x1244]
call fcn.00401f3f
push ebx
lea ecx, [ebp - 0x122c]
call fcn.00401f3f
push ebx
lea ecx, [ebp - 0x12bc]
call fcn.00401f3f
push ebx
lea ecx, [ebp - 0x12a4]
call fcn.00401f3f
push ebx
lea ecx, [ebp - 0x128c]
call fcn.00401f3f
push ebx
lea ecx, [ebp - 0x12d4]
call fcn.00401f3f
test edi, edi
je 0x40424d
push 0xa
push str.PROXYAUTO
push edi
call fcn.0041a26f
add esp, 0xc
test eax, eax
je 0x40424d
mov ecx, edi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404201
sub ecx, edx
je 0x40424d
push 0xa
push str.NONEPROXY
push edi
call fcn.0041a26f
add esp, 0xc
test eax, eax
jne 0x40422d
xor ebx, ebx
inc ebx
mov dword [ebp - 0x136c], ebx
xor edi, edi
jmp 0x404257
lea eax, [ebp - 0x122c]
push eax
lea eax, [ebp - 0x1244]
push eax
lea eax, [ebp - 0x125c]
push eax
push edi
call fcn.00404b7b
push 2
pop ebx
jmp 0x404223
xor edi, edi
mov ebx, edi
mov dword [ebp - 0x136c], edi
mov eax, 0x426bfa
mov ecx, dword [ebp - 0x1368]
test ecx, ecx
cmovne eax, ecx
push eax
lea ecx, [ebp - 0x1274]
call fcn.00401f3f
push dword [ebp - 0x1378]
call fcn.0040d6eb
pop ecx
movzx eax, ax
mov dword [ebp - 0x13ac], eax
mov eax, 0x84000000
mov ecx, 0x84802000
cmp dword [ebp + 8], 0
cmovne eax, ecx
mov dword [ebp - 0x13a4], eax
test ebx, ebx
je 0x40430a
cmp ebx, 2
jne 0x4042ef
mov dword [ebp - 0x1380], 3
push 0x80
call fcn.0040c015
mov ebx, eax
push 0x80
push edi
push ebx
call fcn.00413ea0
add esp, 0x10
lea ecx, [ebp - 0x125c]
cmp dword [ebp - 0x1248], 0x10
cmovae ecx, dword [ebp - 0x125c]
mov edx, ebx
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x4042e3
jmp 0x404312
cmp ebx, 1
mov ebx, edi
jne 0x404302
mov dword [ebp - 0x1380], 1
jmp 0x404312
mov dword [ebp - 0x136c], edi
jmp 0x40430c
mov ebx, edi
mov dword [ebp - 0x1380], edi
mov dword [ebp - 4], edi
mov edx, edi
mov dword [ebp - 0x1378], edx
test ebx, ebx
je 0x40438c
mov ecx, ebx
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404326
sub ecx, edx
lea eax, [ecx + 1]
xor ecx, ecx
push 2
pop edx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0040c015
pop ecx
mov edx, eax
mov dword [ebp - 0x1378], edx
mov eax, ebx
lea ecx, [eax + 1]
mov dword [ebp - 0x1398], ecx
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x40435a
sub eax, dword [ebp - 0x1398]
lea eax, [eax*2 + 2]
push eax
push edi
push edx
call fcn.00413ea0
mov edx, dword [ebp - 0x1378]
mov ecx, ebx
call fcn.0040a52c
push ebx
call fcn.0040c8a4
add esp, 0x10
push 0x4000000
push edi
mov ebx, dword [ebp - 0x1378]
push ebx
push dword [ebp - 0x1380]
push edi
call dword [sym.imp.WININET.dll_InternetOpenW]
mov dword [esi + 4], eax
test ebx, ebx
je 0x4043b4
push ebx
call fcn.0040c8a4
pop ecx
cmp dword [esi + 4], edi
jne 0x4043ec
push str.InternetOpen
lea ecx, [ebp - 0x1214]
call fcn.00401f3f
lea eax, [ebp - 0x1214]
push eax
lea ecx, [ebp - 0x1304]
call fcn.00408924
push 0x429298
lea eax, [ebp - 0x1304]
push eax
call fcn.0040f3c8
xor eax, eax
mov word [ebp - 0x1f4], ax
push 0xc6
push edi
lea eax, [ebp - 0x1f2]
push eax
call fcn.00413ea0
add esp, 0xc
lea edx, [ebp - 0x1f4]
mov ecx, dword [ebp - 0x13b0]
call fcn.0040a52c
push 1
push edi
push 3
push edi
push edi
push dword [ebp - 0x13ac]
lea eax, [ebp - 0x1f4]
push eax
push dword [esi + 4]
call dword [sym.imp.WININET.dll_InternetConnectW]
mov dword [esi + 8], eax
test eax, eax
jne 0x404471
push str.InternetConnect
lea ecx, [ebp - 0x1214]
call fcn.00401f3f
lea eax, [ebp - 0x1214]
push eax
lea ecx, [ebp - 0x134c]
call fcn.00408924
push 0x429298
lea eax, [ebp - 0x134c]
jmp 0x4043e6
mov esi, dword [ebp - 0x1368]
lea ecx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x40447a
sub esi, ecx
inc esi
xor ecx, ecx
mov eax, esi
push 2
pop edx
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
call fcn.0040c015
mov ebx, eax
lea edx, [esi + esi]
push edx
push edi
push ebx
call fcn.00413ea0
mov edx, ebx
mov ecx, dword [ebp - 0x1368]
call fcn.0040a52c
xor eax, eax
mov word [ebp - 0x2c], ax
lea edi, [ebp - 0x2a]
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosd dword es:[edi], eax
stosw word es:[edi], ax
push str.POST
lea eax, [ebp - 0x2c]
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x18
xor edi, edi
inc edi
push edi
push dword [ebp - 0x13a4]
xor esi, esi
push esi
push esi
push esi
push ebx
lea eax, [ebp - 0x2c]
push eax
mov esi, dword [ebp - 0x1388]
push dword [esi + 8]
call dword [sym.imp.WININET.dll_HttpOpenRequestW]
mov dword [esi + 0xc], eax
push ebx
call fcn.0040c8a4
pop ecx
cmp dword [esi + 0xc], 0
jne 0x40453a
push str.HttpOpenRequest
lea ecx, [ebp - 0x1214]
call fcn.00401f3f
lea eax, [ebp - 0x1214]
push eax
lea ecx, [ebp - 0x1364]
call fcn.00408924
push 0x429298
lea eax, [ebp - 0x1364]
jmp 0x4043e6
cmp dword [ebp + 8], 0
je 0x40457f
push 4
pop ebx
mov dword [ebp - 0x1388], ebx
lea eax, [ebp - 0x1388]
push eax
lea eax, [ebp - 0x1368]
push eax
push 0x1f
push dword [esi + 0xc]
call dword [sym.imp.WININET.dll_InternetQueryOptionW]
or dword [ebp - 0x1368], 0x80
push ebx
lea eax, [ebp - 0x1368]
push eax
push 0x1f
push dword [esi + 0xc]
call dword [sym.imp.WININET.dll_InternetSetOptionW]
xor ebx, ebx
cmp dword [ebp - 0x136c], 2
jne 0x4046b8
mov byte [ebp - 0x12c], bl
push 0xff
push ebx
lea eax, [ebp - 0x12b]
push eax
call fcn.00413ea0
push 0x426bfa
call fcn.00401f22
add esp, 0x10
push eax
push 0x426bfa
push dword [ebp - 0x1234]
push ecx
lea ecx, [ebp - 0x1244]
call fcn.00403bf2
test eax, eax
je 0x404630
push 0x100
push ebx
lea eax, [ebp - 0x12c]
push eax
call fcn.00413ea0
add esp, 0xc
lea ecx, [ebp - 0x1244]
cmp dword [ebp - 0x1230], 0x10
cmovae ecx, dword [ebp - 0x1244]
lea edx, [ebp - 0x12c]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x4045fe
lea ecx, [ebp - 0x12c]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404611
sub ecx, edx
lea eax, [ecx + 1]
push eax
lea eax, [ebp - 0x12c]
push eax
push 0x2b
push dword [esi + 0xc]
call dword [sym.imp.WININET.dll_InternetSetOptionW]
push 0x426bfa
call fcn.00401f22
pop ecx
push eax
push 0x426bfa
push dword [ebp - 0x121c]
push ecx
lea ecx, [ebp - 0x122c]
call fcn.00403bf2
test eax, eax
je 0x4046b8
push 0x100
push ebx
lea eax, [ebp - 0x12c]
push eax
call fcn.00413ea0
add esp, 0xc
lea ecx, [ebp - 0x122c]
cmp dword [ebp - 0x1218], 0x10
cmovae ecx, dword [ebp - 0x122c]
lea edx, [ebp - 0x12c]
mov al, byte [ecx]
mov byte [edx], al
inc ecx
inc edx
test al, al
jne 0x404686
lea ecx, [ebp - 0x12c]
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x404699
sub ecx, edx
lea eax, [ecx + 1]
push eax
lea eax, [ebp - 0x12c]
push eax
push 0x2c
push dword [esi + 0xc]
call dword [sym.imp.WININET.dll_InternetSetOptionW]
push str.Content_Type:_application_x_www_form_urlencoded_r_n
call dword [sym.imp.KERNEL32.dll_lstrlenW]
push 0x20000000
push eax
push str.Content_Type:_application_x_www_form_urlencoded_r_n
push dword [esi + 0xc]
call dword [sym.imp.WININET.dll_HttpAddRequestHeadersW]
mov dword [ebp - 0x1374], 0x1388
push 4
lea eax, [ebp - 0x1374]
push eax
push 2
push dword [esi + 0xc]
call dword [sym.imp.WININET.dll_InternetSetOptionW]
push 4
lea eax, [ebp - 0x1374]
push eax
push 6
push dword [esi + 0xc]
call dword [sym.imp.WININET.dll_InternetSetOptionW]
push 4
lea eax, [ebp - 0x1374]
push eax
push 5
push dword [esi + 0xc]
call dword [sym.imp.WININET.dll_InternetSetOptionW]
push 4
lea eax, [ebp - 0x1374]
push eax
push 8
push dword [esi + 0xc]
call dword [sym.imp.WININET.dll_InternetSetOptionW]
push 4
lea eax, [ebp - 0x1374]
push eax
push 7
push dword [esi + 0xc]
call dword [sym.imp.WININET.dll_InternetSetOptionW]
push dword [ebp + 0x24]
push dword [ebp - 0x13a0]
push ebx
push ebx
push dword [esi + 0xc]
call dword [sym.imp.WININET.dll_HttpSendRequestW]
test eax, eax
jne 0x40478f
push str.HttpSendRequest
lea ecx, [ebp - 0x1214]
call fcn.00401f3f
lea eax, [ebp - 0x1214]
push eax
lea ecx, [ebp - 0x1334]
call fcn.00408924
push 0x429298
lea eax, [ebp - 0x1334]
jmp 0x4043e6
call dword [sym.imp.KERNEL32.dll_GetLastError]
mov dword [ebp - 0x13a8], 4
push ebx
lea eax, [ebp - 0x13a8]
push eax
lea eax, [ebp - 0x1390]
push eax
push 0x20000013
push dword [esi + 0xc]
call dword [sym.imp.WININET.dll_HttpQueryInfoW]
test eax, eax
jne 0x4047f2
push str.HttpQueryInfo
lea ecx, [ebp - 0x1214]
call fcn.00401f3f
lea eax, [ebp - 0x1214]
push eax
lea ecx, [ebp - 0x131c]
call fcn.00408924
push 0x429298
lea eax, [ebp - 0x131c]
jmp 0x4043e6
cmp dword [ebp - 0x1390], 0xc8
je 0x404830
push str.dwStatusCode
lea ecx, [ebp - 0x1214]
call fcn.00401f3f
lea eax, [ebp - 0x1214]
push eax
lea ecx, [ebp - 0x12ec]
call fcn.00408924
push 0x429298
lea eax, [ebp - 0x12ec]
jmp 0x4043e6
mov dword [ebp - 0x1384], ebx
mov dword [ebp - 0x136c], ebx
mov dword [ebp - 0x1368], ebx
mov byte [ebp - 0x11fc], bl
push 0x1000
push ebx
lea eax, [ebp - 0x11fb]
push eax
call fcn.00413ea0
add esp, 0xc
lea eax, [ebp - 0x1370]
push eax
push 0x1000
lea eax, [ebp - 0x11fc]
push eax
push dword [esi + 0xc]
call dword [sym.imp.WININET.dll_InternetReadFile]
cmp dword [ebp - 0x1370], 0
jbe 0x404991
mov eax, dword [ebp - 0x1384]
add eax, dword [ebp - 0x1370]
mov dword [ebp - 0x1384], eax
push eax
push dword [ebp - 0x1368]
call fcn.0040d708
pop ecx
pop ecx
mov dword [ebp - 0x136c], eax
test eax, eax
jne 0x404952
mov eax, dword [ebp - 0x1368]
test eax, eax
je 0x4048c5
push eax
call fcn.0040d7b3
pop ecx
push 0x12
pop eax
mov ecx, dword [ebp - 0x138c]
mov dword [ecx], eax
push eax
call fcn.0040c015
pop ecx
mov ecx, dword [ebp - 0x137c]
mov dword [ecx], eax
mov edx, str.No_enough_memory.
sub eax, edx
mov cl, byte [edx]
mov byte [edx + eax], cl
inc edx
test cl, cl
jne 0x4048e6
push ebx
push edi
lea ecx, [ebp - 0x1274]
call fcn.00402153
push ebx
push edi
lea ecx, [ebp - 0x12d4]
call fcn.00402153
push ebx
push edi
lea ecx, [ebp - 0x128c]
call fcn.00402153
push ebx
push edi
lea ecx, [ebp - 0x12a4]
call fcn.00402153
push ebx
push edi
lea ecx, [ebp - 0x12bc]
call fcn.00402153
push ebx
push edi
lea ecx, [ebp - 0x122c]
call fcn.00402153
push ebx
push edi
lea ecx, [ebp - 0x1244]
call fcn.00402153
push ebx
push edi
jmp 0x404b50
mov dword [ebp - 0x1368], eax
push dword [ebp - 0x1370]
lea ecx, [ebp - 0x11fc]
push ecx
sub eax, dword [ebp - 0x1370]
add eax, dword [ebp - 0x1384]
push eax
call fcn.0040ebc0
push 0x1001
push ebx
lea eax, [ebp - 0x11fc]
push eax
call fcn.00413ea0
add esp, 0x18
jmp 0x40485d
mov esi, dword [ebp - 0x1384]
lea eax, [esi + 1]
push eax
call fcn.0040c015
pop ecx
mov ecx, dword [ebp - 0x137c]
mov dword [ecx], eax
test eax, eax
je 0x404a59
lea ecx, [esi + 1]
push ecx
push ebx
push eax
call fcn.00413ea0
push esi
push dword [ebp - 0x136c]
mov eax, dword [ebp - 0x137c]
push dword [eax]
call fcn.0040ebc0
push dword [ebp - 0x136c]
call fcn.0040d7b3
add esp, 0x1c
mov ecx, dword [ebp - 0x138c]
mov dword [ecx], esi
or dword [ebp - 4], 0xffffffff
push ebx
push edi
lea ecx, [ebp - 0x1274]
call fcn.00402153
push ebx
push edi
lea ecx, [ebp - 0x12d4]
call fcn.00402153
push ebx
push edi
lea ecx, [ebp - 0x128c]
call fcn.00402153
push ebx
push edi
lea ecx, [ebp - 0x12a4]
call fcn.00402153
push ebx
push edi
lea ecx, [ebp - 0x12bc]
call fcn.00402153
push ebx
push edi
lea ecx, [ebp - 0x122c]
call fcn.00402153
push ebx
push edi
lea ecx, [ebp - 0x1244]
call fcn.00402153
push ebx
push edi
lea ecx, [ebp - 0x125c]
call fcn.00402153
mov eax, edi
jmp 0x404b5d
push dword [ebp - 0x136c]
call fcn.0040d7b3
push 0x12
pop eax
mov ecx, dword [ebp - 0x138c]
mov dword [ecx], eax
push eax
call fcn.0040c015
pop ecx
pop ecx
mov ecx, dword [ebp - 0x137c]
mov dword [ecx], eax
mov edx, str.No_enough_memory.
sub eax, edx
mov cl, byte [edx]
mov byte [edx + eax], cl
inc edx
test cl, cl
jne 0x404a86
jmp 0x4048f0
lea ecx, [ebp - 0x125c]
call fcn.00402153
xor eax, eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x18]
xor ecx, ebp
call fcn.0040c1f3
mov esp, ebp
pop ebp
ret 0x2c