Function at 0x403870
Capabilities:
Initialize winsock library

Disassembly:
push ebp
mov eax, sym.___gxx_personality_sj0
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0xaec
mov dword [ebp - 0xa44], eax
mov eax, 0x4b2670
mov dword [ebp - 0xa40], eax
lea eax, [ebp - 0x18]
mov dword [ebp - 0xa3c], eax
mov eax, 0x403ce0
mov dword [ebp - 0xa38], eax
lea eax, [ebp - 0xa5c]
mov dword [esp], eax
mov dword [ebp - 0xa34], esp
call sym.__Unwind_SjLj_Register
mov eax, 0xffffffff
mov dword [ebp - 0xa58], eax
call sym.getLaunchPath__
mov dword [ebp - 0xa64], eax
mov dword [esp], 0x284
call sym.operator_new_unsigned_int_
mov dword [ebp - 0xa68], eax
mov edx, dword [ebp - 0xa64]
mov dword [esp], eax
mov eax, 0x1a
mov dword [esp + 4], edx
mov dword [ebp - 0xa58], eax
call method.IMConfig.IMConfig_char_const_
mov eax, dword [ebp - 0xa68]
mov dword [0x4bf014], eax
mov dword [esp], eax
mov eax, 0xffffffff
mov dword [ebp - 0xa58], eax
call method.IMConfig.loadLanMonitor__
mov eax, dword [0x4bf014]
mov dword [esp], eax
call method.IMConfig.loadLocalKit__
lea edx, [ebp - 0x28]
mov dword [esp], edx
call fcn.00401350
cmp byte [ebp - 0x28], 0
je 0x403a70
mov edx, dword [0x4bf014]
mov edi, str.PROCESSSTARTED
lea eax, [ebp - 0x38]
mov dword [esp + 8], edi
mov esi, 0x19
mov edx, dword [edx + 0x18]
mov dword [esp], eax
mov dword [ebp - 0xa58], esi
mov dword [esp + 4], edx
call method.LocalKit.findstr_char_const_
mov eax, dword [ebp - 0x38]
sub esp, 4
mov ebx, 0x18
mov dword [ebp - 0xa58], ebx
mov dword [esp], eax
call sym.UTF8ToAnsi1_char_const_
mov dword [ebp - 0xa70], eax
test eax, eax
mov dword [ebp - 0x48], 0x4b620c
je 0x4039cf
mov dword [esp], eax
call sym._strlen
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xa70]
lea edx, [ebp - 0x48]
mov dword [esp], edx
mov ecx, 0x17
mov dword [ebp - 0xa58], ecx
mov dword [esp + 4], eax
call method.std::string.assign_char_const__unsigned_int_
mov eax, dword [ebp - 0xa70]
mov dword [esp], eax
call sym._free
mov dword [esp], 0
mov eax, dword [ebp - 0x48]
xor edx, edx
mov dword [esp + 0xc], edx
mov dword [esp + 8], eax
mov dword [esp + 4], eax
mov eax, 0x17
mov dword [ebp - 0xa58], eax
call sym._MessageBoxA_16
mov edx, dword [ebp - 0x48]
sub esp, 0x10
lea eax, [edx - 0xc]
mov dword [ebp - 0xa84], eax
mov eax, 0x4b6200
cmp eax, dword [ebp - 0xa84]
jne 0x404433
mov eax, dword [ebp - 0x38]
lea edx, [eax - 0xc]
cmp edx, 0x4b6200
mov dword [ebp - 0xa88], edx
je 0x403c9d
mov edi, 0xffffffff
sub eax, 4
mov esi, 0x13
mov dword [esp + 4], edi
mov dword [esp], eax
mov dword [ebp - 0xa58], esi
call method.__gnu_cxx.__exchange_and_add_int_volatile__int_
test eax, eax
jg 0x403c9d
mov edx, dword [ebp - 0xa88]
lea eax, [ebp - 0x58]
mov dword [esp + 4], eax
mov dword [esp], edx
call method.std::string::_Rep._M_destroy_std::allocator_char__const_
jmp 0x403c9d
mov eax, 0x400
lea edx, [ebp - 0x458]
mov edi, 0x19
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
mov dword [esp], edx
call sym._memset
mov dword [ebp - 0xa58], edi
call sym.getLaunchPath__
mov dword [esp + 8], eax
mov esi, str.installinprocess.txt
mov ebx, 0x4b706b
mov dword [esp + 0xc], esi
lea eax, [ebp - 0x458]
mov dword [esp + 4], ebx
mov dword [esp], eax
call sym._sprintf
mov ecx, 6
lea edx, [ebp - 0x458]
mov dword [esp + 4], ecx
mov dword [esp], edx
call sym.__access
inc eax
je 0x403e4c
mov edx, str.LAUNCHERSETUPWAIT
lea eax, [ebp - 0x48]
mov dword [esp + 8], edx
mov edx, dword [0x4bf014]
mov edx, dword [edx + 0x18]
mov dword [esp], eax
mov dword [esp + 4], edx
call method.LocalKit.findstr_char_const_
mov eax, dword [ebp - 0x48]
sub esp, 4
mov dword [esp], eax
mov eax, 0x12
mov dword [ebp - 0xa58], eax
call sym.UTF8ToAnsi1_char_const_
mov dword [ebp - 0xa8c], eax
test eax, eax
mov dword [ebp - 0x38], 0x4b620c
je 0x403b64
mov dword [esp], eax
mov edi, 0x11
call sym._strlen
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xa8c]
lea edx, [ebp - 0x38]
mov dword [esp], edx
mov dword [esp + 4], eax
mov dword [ebp - 0xa58], edi
call method.std::string.assign_char_const__unsigned_int_
mov eax, dword [ebp - 0xa8c]
mov dword [esp], eax
call sym._free
mov edx, dword [0x4bf014]
mov esi, str.LAUNCHERSETUP
lea eax, [ebp - 0x468]
mov dword [esp + 8], esi
mov ebx, 0x11
mov edx, dword [edx + 0x18]
mov dword [esp], eax
mov dword [ebp - 0xa58], ebx
mov dword [esp + 4], edx
call method.LocalKit.findstr_char_const_
mov eax, dword [ebp - 0x468]
sub esp, 4
mov ecx, 0x10
mov dword [ebp - 0xa58], ecx
mov dword [esp], eax
call sym.UTF8ToAnsi1_char_const_
mov dword [ebp - 0xa90], eax
mov edx, 0x4b620c
test eax, eax
mov dword [ebp - 0x478], edx
je 0x403c01
mov dword [esp], eax
call sym._strlen
mov dword [esp + 8], eax
mov edx, dword [ebp - 0xa90]
lea eax, [ebp - 0x478]
mov dword [esp], eax
mov eax, 0xf
mov dword [esp + 4], edx
mov dword [ebp - 0xa58], eax
call method.std::string.assign_char_const__unsigned_int_
mov edx, dword [ebp - 0xa90]
mov dword [esp], edx
call sym._free
mov dword [esp], 0
mov eax, dword [ebp - 0x478]
xor edi, edi
mov dword [esp + 0xc], edi
mov edx, dword [ebp - 0x38]
mov esi, 0xf
mov dword [ebp - 0xa58], esi
mov dword [esp + 8], eax
mov dword [esp + 4], edx
call sym._MessageBoxA_16
mov edx, dword [ebp - 0x478]
sub esp, 0x10
lea eax, [edx - 0xc]
mov dword [ebp - 0xab4], eax
mov eax, 0x4b6200
cmp eax, dword [ebp - 0xab4]
jne 0x4047eb
mov eax, dword [ebp - 0x468]
lea edx, [eax - 0xc]
cmp edx, 0x4b6200
mov dword [ebp - 0xab8], edx
jne 0x4047aa
mov eax, dword [ebp - 0x38]
lea edx, [eax - 0xc]
cmp edx, 0x4b6200
mov dword [ebp - 0xabc], edx
jne 0x404769
mov eax, dword [ebp - 0x48]
lea edx, [eax - 0xc]
cmp edx, 0x4b6200
mov dword [ebp - 0xac0], edx
jne 0x404730
lea eax, [ebp - 0x28]
mov dword [esp], eax
mov edx, 0xffffffff
mov dword [ebp - 0xa58], edx
call sym.AppExists::AppExists__
mov eax, 0xffffffff
mov dword [ebp - 0xa60], eax
lea eax, [ebp - 0xa5c]
mov dword [esp], eax
call sym.__Unwind_SjLj_Unregister
mov eax, dword [ebp - 0xa60]
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret 0x10
cld
mov esi, dword [ebp + 0x10]
mov edi, str._restart
mov ecx, 9
repe cmpsb byte [esi], byte es:[edi]
je 0x404050
cld
mov esi, dword [ebp + 0x10]
mov edi, str._restart2
mov ecx, 0xa
repe cmpsb byte [esi], byte es:[edi]
jne 0x403fca
mov dword [esp], 0
mov esi, 0xf003f
xor ebx, ebx
mov dword [esp + 8], esi
mov ecx, 0x19
mov dword [esp + 4], ebx
mov dword [ebp - 0xa58], ecx
call sym._OpenSCManagerA_12
mov dword [ebp - 0xae4], eax
sub esp, 0xc
mov dword [esp], eax
call sym.restartDriver_SC_HANDLE___
test al, al
jne 0x404133
mov eax, dword [ebp - 0xae4]
mov dword [esp], eax
call sym._CloseServiceHandle_4
sub esp, 4
lea edx, [ebp - 0x28]
mov dword [esp], edx
jmp 0x403ca3
mov dword [esp], 0x202
lea eax, [ebp - 0x608]
mov dword [esp + 4], eax
mov eax, 0x19
mov dword [ebp - 0xa58], eax
call sym._WSAStartup_8
sub esp, 8
mov dword [esp], 7
call sym._SetErrorMode_4
sub esp, 4
mov dword [esp], sym.__Z15ExceptionFilterP19_EXCEPTION_POINTERS_4
call sym._SetUnhandledExceptionFilter_4
mov eax, dword [0x4bf014]
sub esp, 4
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x460]
test eax, eax
jle 0x4043c3
call sym.checkServiceState__
test al, al
jne 0x404474
lea eax, [ebp - 0x28]
mov esi, 0xffffffff
mov dword [esp], eax
mov dword [ebp - 0xa58], esi
call sym.AppExists::AppExists__
jmp 0x403cbe
mov dword [esp], 1
mov eax, 0x19
mov dword [ebp - 0xa58], eax
call sym.restartService_bool_
test al, al
je 0x404150
mov eax, str.RESTARTSUCCESS
lea edx, [ebp - 0x478]
mov dword [esp + 8], eax
mov eax, dword [0x4bf014]
mov eax, dword [eax + 0x18]
mov dword [esp], edx
mov dword [esp + 4], eax
call method.LocalKit.findstr_char_const_
mov eax, dword [ebp - 0x478]
sub esp, 4
mov dword [esp], eax
mov eax, 6
mov dword [ebp - 0xa58], eax
call sym.UTF8ToAnsi1_char_const_
mov dword [ebp - 0xac4], eax
test eax, eax
je 0x4040ea
mov dword [esp], eax
call sym._strlen
mov dword [esp + 8], eax
mov eax, dword [ebp - 0xac4]
lea edx, [ebp - 0x478]
mov dword [esp], edx
mov dword [esp + 4], eax
call method.std::string.assign_char_const__unsigned_int_
mov eax, dword [ebp - 0xac4]
mov dword [esp], eax
call sym._free
mov dword [esp], 0
mov eax, dword [ebp - 0x478]
xor edi, edi
mov dword [esp + 0xc], edi
mov esi, 6
mov dword [ebp - 0xa58], esi
mov dword [esp + 8], eax
mov dword [esp + 4], eax
call sym._MessageBoxA_16
mov eax, dword [ebp - 0x478]
sub esp, 0x10
lea edx, [eax - 0xc]
mov dword [ebp - 0xad0], edx
cmp edx, 0x4b6200
jne 0x404636
lea eax, [ebp - 0x28]
mov dword [esp], eax
mov eax, 0xffffffff
mov dword [ebp - 0xa58], eax
call sym.AppExists::AppExists__
xor eax, eax
jmp 0x403cb8
mov eax, str.RESTARTFAIL
mov dword [esp + 8], eax
mov eax, dword [0x4bf014]
mov eax, dword [eax + 0x18]
mov dword [esp + 4], eax
lea eax, [ebp - 0x478]
mov dword [esp], eax
mov eax, 0x19
mov dword [ebp - 0xa58], eax
call method.LocalKit.findstr_char_const_
mov eax, dword [ebp - 0x478]
sub esp, 4
mov dword [esp], eax
mov eax, 3
mov dword [ebp - 0xa58], eax
call sym.UTF8ToAnsi1_char_const_
mov dword [ebp - 0xad4], eax
test eax, eax
je 0x4041d6
mov dword [esp], eax
call sym._strlen
mov dword [esp + 8], eax
mov edx, dword [ebp - 0xad4]
lea eax, [ebp - 0x478]
mov dword [esp], eax
mov dword [esp + 4], edx
call method.std::string.assign_char_const__unsigned_int_
mov edx, dword [ebp - 0xad4]
mov dword [esp], edx
call sym._free
mov dword [esp], 0
mov eax, dword [ebp - 0x478]
xor edi, edi
mov dword [esp + 0xc], edi
mov esi, 3
mov dword [ebp - 0xa58], esi
mov dword [esp + 8], eax
mov dword [esp + 4], eax
call sym._MessageBoxA_16
mov eax, dword [ebp - 0x478]
sub esp, 0x10
lea edx, [eax - 0xc]
mov dword [ebp - 0xae0], edx
cmp edx, 0x4b6200
je 0x404133
mov edx, 0xffffffff
sub eax, 4
mov edi, 1
mov dword [esp + 4], edx
mov dword [esp], eax
mov dword [ebp - 0xa58], edi
call method.__gnu_cxx.__exchange_and_add_int_volatile__int_
test eax, eax
jg 0x404133
mov edx, dword [ebp - 0xae0]
lea eax, [ebp - 0x58]
mov dword [esp + 4], eax
mov dword [esp], edx
call method.std::string::_Rep._M_destroy_std::allocator_char__const_
jmp 0x404133
lea edx, [ebp - 0xa28]
mov esi, 0x400
xor ebx, ebx
mov dword [esp + 8], esi
mov dword [esp + 4], ebx
mov dword [esp], edx
call sym._memset
mov dword [esp], str.noservice
mov ecx, 0x19
mov dword [ebp - 0xa58], ecx
call sym.createErrorPage_char_const_
call sym.getLaunchPath__
mov dword [esp + 8], eax
mov eax, 0x4b706b
mov edx, str.wwwDocerror.htm
mov dword [esp + 4], eax
lea eax, [ebp - 0xa28]
mov dword [esp + 0xc], edx
mov dword [esp], eax
call sym._sprintf
lea edx, [ebp - 0xa28]
mov dword [esp], edx
call sym.mainShellExecute_char_const_
jmp 0x40402f
mov eax, 0xffffffff
mov dword [esp + 4], eax
lea eax, [edx - 4]
mov dword [esp], eax
mov eax, 0x14
mov dword [ebp - 0xa58], eax
call method.__gnu_cxx.__exchange_and_add_int_volatile__int_
test eax, eax
jg 0x403a17
mov eax, dword [ebp - 0xa84]
lea edx, [ebp - 0x58]
mov dword [esp + 4], edx
mov dword [esp], eax
call method.std::string::_Rep._M_destroy_std::allocator_char__const_
jmp 0x403a17
call sym.checkWebService__
test eax, eax
je 0x404496
mov dword [esp], 0
call sym.restartService_bool_
call sym.checkWebService__
test eax, eax
jne 0x4045b3
cld
xor eax, eax
lea edi, [ebp - 0x628]
mov ecx, 7
lea edx, [ebp - 0x628]
rep stosd dword es:[edi], eax
mov word [edi], 0
mov eax, dword [0x4bf014]
mov edi, 0x19
mov eax, dword [eax + 0x14]
mov eax, dword [eax + 0x460]
mov dword [esp], edx
mov dword [ebp - 0xa58], edi
mov dword [esp + 8], eax
mov eax, str.http:__127.0.0.1:_d
mov dword [esp + 4], eax
call sym._sprintf
lea eax, [ebp - 0x628]
mov dword [esp], eax
jmp 0x404429
cmp eax, 0xffffffff
je 0x4046c6
cmp eax, 1
je 0x40466f
cmp eax, 2
jne 0x40402f
mov eax, 0x400
mov edi, 0x19
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
lea eax, [ebp - 0xa28]
mov dword [esp], eax
call sym._memset
mov dword [esp], str.cannotStart
mov dword [ebp - 0xa58], edi
call sym.createErrorPage_char_const_
call sym.getLaunchPath__
mov dword [esp + 8], eax
mov edx, str.wwwDocerror.htm
mov eax, 0x4b706b
mov dword [esp + 0xc], edx
lea edx, [ebp - 0xa28]
mov dword [esp + 4], eax
mov dword [esp], edx
call sym._sprintf
lea eax, [ebp - 0xa28]
jmp 0x4044e5
sub eax, 4
mov edx, 0xffffffff
mov dword [esp], eax
mov eax, 4
mov dword [esp + 4], edx
mov dword [ebp - 0xa58], eax
call method.__gnu_cxx.__exchange_and_add_int_volatile__int_
test eax, eax
jg 0x404133
mov edx, dword [ebp - 0xad0]
lea eax, [ebp - 0x58]
mov dword [esp + 4], eax
jmp 0x404253
mov eax, dword [0x4bf014]
mov esi, 0x19
mov eax, dword [eax + 0x14]
movzx eax, word [eax + 0x460]
mov dword [ebp - 0xa58], esi
mov dword [esp], eax
call sym.getListeningPid_unsigned_short_
mov dword [esp], eax
call sym.checkPid0_int_
test al, al
jne 0x4046c6
xor ecx, ecx
lea eax, [ebp - 0xa28]
mov ebx, 0x400
mov dword [esp + 8], ebx
mov dword [esp + 4], ecx
mov dword [esp], eax
call sym._memset
mov dword [esp], str.portOccupied
jmp 0x4045fd
mov eax, 0x400
lea edx, [ebp - 0xa28]
mov dword [esp + 8], eax
xor eax, eax
mov dword [esp + 4], eax
mov dword [esp], edx
call sym._memset
mov dword [esp], str.portBlock
jmp 0x4043e7
mov ebx, 0xffffffff
sub eax, 4
mov ecx, 7
mov dword [esp + 4], ebx
mov dword [esp], eax
mov dword [ebp - 0xa58], ecx
call method.__gnu_cxx.__exchange_and_add_int_volatile__int_
test eax, eax
jg 0x403c9d
mov edx, dword [ebp - 0xac0]
lea eax, [ebp - 0x58]
mov dword [esp + 4], eax
jmp 0x403a63
mov edi, 0xffffffff
sub eax, 4
mov esi, 8
mov dword [esp + 4], edi
mov dword [esp], eax
mov dword [ebp - 0xa58], esi
call method.__gnu_cxx.__exchange_and_add_int_volatile__int_
test eax, eax
jg 0x403c85
mov edx, dword [ebp - 0xabc]
lea eax, [ebp - 0x58]
mov dword [esp + 4], eax
mov dword [esp], edx
call method.std::string::_Rep._M_destroy_std::allocator_char__const_
jmp 0x403c85
sub eax, 4
mov edx, 0xffffffff
mov dword [esp], eax
mov eax, 9
mov dword [esp + 4], edx
mov dword [ebp - 0xa58], eax
call method.__gnu_cxx.__exchange_and_add_int_volatile__int_
test eax, eax
jg 0x403c6d
mov edx, dword [ebp - 0xab8]
lea eax, [ebp - 0x58]
mov dword [esp + 4], eax
mov dword [esp], edx
call method.std::string::_Rep._M_destroy_std::allocator_char__const_
jmp 0x403c6d
mov ebx, 0xffffffff
lea eax, [edx - 4]
mov ecx, 0xa
mov dword [esp + 4], ebx
mov dword [esp], eax
mov dword [ebp - 0xa58], ecx
call method.__gnu_cxx.__exchange_and_add_int_volatile__int_
test eax, eax
jg 0x403c52
mov eax, dword [ebp - 0xab4]
lea edx, [ebp - 0x58]
mov dword [esp + 4], edx
mov dword [esp], eax
call method.std::string::_Rep._M_destroy_std::allocator_char__const_
jmp 0x403c52