Function at 0x40c3b0
Capabilities:
Check http status code
Connect to http server
Create http request
Parse url
Query remote server for available data
Read data from internet
Receive data
Send data
Send http request

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x54d6f9
mov eax, dword fs:[0]
push eax
push ecx
mov eax, 0x10b4
call fcn.00522770
mov eax, dword [0x5a68a0]
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 ebx, dword [ebp + 0x10]
mov esi, ecx
lea ecx, [ebp - 0x1088]
mov edi, edx
mov dword [ebp - 0x1044], 0
call fcn.00421da3
mov dword [ebp - 4], 0
call fcn.0041f7c9
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40c423
push 0x80004005
call fcn.0040a9a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x1030], eax
mov byte [ebp - 4], 1
call fcn.0041f7c9
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40c453
push 0x80004005
call fcn.0040a9a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x102c], eax
mov byte [ebp - 4], 2
call fcn.0041f7c9
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40c483
push 0x80004005
call fcn.0040a9a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x1034], eax
mov byte [ebp - 4], 3
call fcn.0041f7c9
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40c4b3
push 0x80004005
call fcn.0040a9a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x1028], eax
mov byte [ebp - 4], 4
call fcn.0041f7c9
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40c4e3
push 0x80004005
call fcn.0040a9a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x1068], eax
mov byte [ebp - 4], 5
call fcn.0041f7c9
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40c513
push 0x80004005
call fcn.0040a9a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x1040], eax
mov byte [ebp - 4], 6
call fcn.0041f7c9
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40c543
push 0x80004005
call fcn.0040a9a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x1038], eax
mov byte [ebp - 4], 7
call fcn.0041f7c9
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40c573
push 0x80004005
call fcn.0040a9a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x103c], eax
mov byte [ebp - 4], 8
call fcn.0041f7c9
xor ecx, ecx
test eax, eax
setne cl
test ecx, ecx
jne 0x40c5a3
push 0x80004005
call fcn.0040a9a0
mov edx, dword [eax]
mov ecx, eax
mov eax, dword [edx + 0xc]
call eax
add eax, 0x10
mov dword [ebp - 0x1020], eax
mov dword [ebp - method.CRegistryManager.virtual_0], vtable.CRegistryManager.0
mov byte [ebp - 4], 0xa
call fcn.0041c930
test al, al
je 0x40c9c9
call fcn.004023a0
test eax, eax
je 0x40c9c9
mov ecx, dword [ebp + 0xc]
mov edx, dword [ebp + 8]
push ebx
push edi
push ecx
push edx
lea eax, [ebp - 0x1020]
push eax
push esi
call fcn.0040cb60
mov ecx, dword [ebp - 0x1020]
push ecx
mov esi, eax
push str.___GAOutput_:___S__r_n
mov eax, 0x5af198
call fcn.00416a20
add esp, 8
test esi, esi
je 0x40c9c9
push str.https:__www.google_analytics.com_collect
lea ecx, [ebp - 0x1040]
call fcn.0040aae0
push 0x3c
lea edx, [ebp - 0x10c4]
push 0
push edx
call fcn.0051fb60
add esp, 0xc
push 0x800
lea eax, [ebp - 0x81c]
push 0
push eax
mov dword [ebp - 0x10c4], 0x3c
call fcn.0051fb60
add esp, 0xc
push 0x800
lea ecx, [ebp - 0x101c]
push 0
push ecx
call fcn.0051fb60
mov ecx, dword [ebp - 0x1040]
add esp, 0xc
lea edx, [ebp - 0x81c]
mov dword [ebp - 0x10b4], edx
lea eax, [ebp - 0x101c]
mov dword [ebp - 0x1098], eax
mov eax, 0x400
lea edx, [ebp - 0x10c4]
push edx
mov dword [ebp - 0x10b0], eax
mov dword [ebp - 0x1094], eax
mov eax, dword [ecx - 0xc]
push 0
push eax
push ecx
call dword [sym.imp.WININET.dll_InternetCrackUrlW]
test eax, eax
je 0x40c9c9
mov eax, dword [ebp - 0x10b4]
push eax
lea ecx, [ebp - 0x1030]
call fcn.0040aae0
mov ecx, dword [ebp - 0x1098]
push ecx
lea ecx, [ebp - 0x102c]
call fcn.0040aae0
mov eax, dword [ebp - 0x10b8]
movzx esi, word [ebp - 0x10ac]
cmp eax, 3
jne 0x40c6f8
mov edi, 0x84200000
jmp 0x40c706
cmp eax, 4
jne 0x40c9c9
mov edi, 0x84a03000
push str.POST
lea ecx, [ebp - 0x1034]
call fcn.0040aae0
push 0x57e170
lea ecx, [ebp - 0x1028]
call fcn.0040aae0
mov edx, dword [ebp - 0x1038]
cmp dword [edx - 0xc], 0
jne 0x40c9c9
push 0
push 0
push 0
push 0
push str.Epson_Software_Updater
call dword [sym.imp.WININET.dll_InternetOpenW]
mov dword [ebp - 0x105c], eax
test eax, eax
je 0x40c9c9
mov ecx, dword [ebp - 0x1030]
push 0
push 0
push 3
push 0
push 0
push esi
push ecx
push eax
call dword [sym.imp.WININET.dll_InternetConnectW]
mov ebx, eax
mov dword [ebp - 0x106c], ebx
test ebx, ebx
je 0x40c9bc
push 0x57e3a0
push 0x57da30
lea ecx, [ebp - 0x1020]
call fcn.00404bf0
push 0x57e3a8
push 0x57da3c
lea ecx, [ebp - 0x1020]
call fcn.00404bf0
push 0x57e3b0
push 0x57e3b8
lea ecx, [ebp - 0x1020]
call fcn.00404bf0
push 0x57e3bc
push 0x57e0ac
lea ecx, [ebp - 0x1020]
call fcn.00404bf0
push 0x57e3c4
push 0x57e3cc
lea ecx, [ebp - 0x1020]
call fcn.00404bf0
mov edx, dword [ebp - 0x102c]
mov eax, dword [ebp - 0x1034]
push 0
push edi
push 0
push 0
push 0
push edx
push eax
push ebx
call dword [sym.imp.WININET.dll_HttpOpenRequestW]
mov esi, eax
mov dword [ebp - 0x1064], esi
test esi, esi
je 0x40c9b5
mov ecx, dword [ebp - 0x1038]
cmp dword [ecx - 0xc], 0
je 0x40c863
xor eax, eax
mov dword [ebp - 0x1054], eax
push 0xc
mov dword [ebp - 0x1054], ecx
lea ecx, [ebp - 0x1058]
push ecx
push 0x26
mov dword [ebp - 0x1058], eax
mov dword [ebp - 0x1050], eax
push esi
mov dword [ebp - 0x1058], 3
mov dword [ebp - 0x1050], 0x57e170
call dword [sym.imp.WININET.dll_InternetSetOptionW]
lea edx, [ebp - 0x1020]
push edx
lea ecx, [ebp - 0x103c]
call fcn.0040a4c0
push ecx
lea eax, [ebp - 0x103c]
mov ecx, esp
mov dword [ebp - 0x1074], esp
push eax
lea edi, [ebp - 0x1088]
call fcn.0040a2c0
mov ecx, edi
call fcn.0040d080
mov eax, dword [ebp - 0x1080]
mov edx, dword [ebp - 0x1028]
mov ecx, dword [edx - 0xc]
add esp, 4
dec eax
push eax
mov eax, dword [ebp - 0x1084]
push eax
push ecx
push edx
push esi
call dword [sym.imp.WININET.dll_HttpSendRequestW]
xor edi, edi
cmp eax, edi
je 0x40c9ae
push edi
lea ecx, [ebp - 0x1060]
push ecx
lea edx, [ebp - 0x1048]
push edx
push 0x20000013
push esi
mov dword [ebp - 0x1048], edi
mov dword [ebp - 0x104c], edi
mov dword [ebp - 0x1060], 4
call dword [sym.imp.WININET.dll_HttpQueryInfoW]
mov eax, dword [ebp - 0x1048]
cmp eax, 0xc8
je 0x40c90e
cmp eax, 0xca
jne 0x40c9ae
push edi
push edi
lea eax, [ebp - 0x1024]
push eax
push esi
mov dword [ebp - 0x1024], edi
call dword [sym.imp.WININET.dll_InternetQueryDataAvailable]
cmp eax, edi
je 0x40c9ae
mov byte [ebp - 4], 0xb
mov ecx, dword [ebp - 0x1024]
inc ecx
push ecx
call fcn.0041ebc6
mov edi, eax
add esp, 4
mov dword [ebp - 4], 0xa
test edi, edi
je 0x40c9ae
mov edx, dword [ebp - 0x1024]
inc edx
push edx
push 0
push edi
call fcn.0051fb60
mov ecx, dword [ebp - 0x1024]
add esp, 0xc
lea eax, [ebp - 0x104c]
push eax
push ecx
push edi
push esi
call dword [sym.imp.WININET.dll_InternetReadFile]
mov dword [ebp - 0x1044], eax
test eax, eax
je 0x40c98a
mov edx, dword [ebp - 0x104c]
mov byte [edx + edi], 0
push edi
call fcn.0041ebbb
add esp, 4
jmp 0x40c9ae
push esi
call dword [sym.imp.WININET.dll_InternetCloseHandle]
push ebx
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov eax, dword [ebp - 0x105c]
push eax
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x1020]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40c9ef
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 7
mov eax, dword [ebp - 0x103c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ca15
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 6
mov eax, dword [ebp - 0x1038]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ca3b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x1040]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ca61
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 4
mov eax, dword [ebp - 0x1068]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40ca87
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 3
mov eax, dword [ebp - 0x1028]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40caad
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x1034]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40cad3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x102c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40caf9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x1030]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40cb1f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
lea ecx, [ebp - 0x1088]
mov dword [ebp - 4], 0xffffffff
call fcn.00421dba
mov eax, dword [ebp - 0x1044]
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.0051c801
mov esp, ebp
pop ebp
ret 0xc