Function at 0x4086a0
Capabilities:
Accept command line arguments
Check mutex on windows
Print debug messages

Disassembly:
sub esp, 0x240
mov eax, dword [0x4521d0]
xor eax, esp
mov dword [esp + 0x23c], eax
push ebx
push ebp
mov ebp, dword [esp + 0x24c]
push esi
push edi
push 0x447c58
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
mov eax, dword [0x447c50]
mov cx, word [0x447c54]
xor edi, edi
mov dword [esp + 0x3c], eax
mov word [esp + 0x40], cx
mov dword [esp + 0x18], edi
mov dword [esp + 0x1c], edi
mov dword [esp + 0x20], edi
mov dword [esp + 0x24], edi
mov dword [esp + 0x28], edi
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
lea edx, [esp + 0x3c]
mov ebx, eax
push edx
push ebx
call fcn.00405bd0
add esp, 8
push 2
push edi
mov esi, eax
call dword [sym.imp.ole32.dll_CoInitializeEx]
push edi
push edi
push edi
push 3
push 4
push edi
push edi
push 0xffffffffffffffff
push edi
call dword [sym.imp.ole32.dll_CoInitializeSecurity]
cmp esi, edi
mov edi, dword [sym.imp.KERNEL32.dll_lstrcmpiW]
je 0x408756
push str._indghmpg
push esi
call edi
test eax, eax
je 0x4088cb
lea eax, [esp + 0x3c]
push eax
push esi
call fcn.00405bd0
mov esi, eax
add esp, 8
test esi, esi
jne 0x408732
push 0x447840
push 0x64
push ebp
push 0x4535e8
mov ecx, 0x453620
call fcn.00405d50
lea eax, [esp + 0x3c]
push eax
mov ebp, 1
push ebx
mov dword [0x453858], ebp
call fcn.00405bd0
mov esi, eax
xor ebx, ebx
add esp, 8
cmp esi, ebx
je 0x4087f4
mov edi, edi
push str.UnregServer
push esi
call edi
test eax, eax
je 0x408936
push str.RegServer
push esi
call edi
test eax, eax
je 0x408950
push str.Service
push esi
call edi
test eax, eax
je 0x408963
push 0x447bf8
push esi
call edi
test eax, eax
je 0x408976
push 0x447bf0
push esi
call edi
test eax, eax
je 0x40898b
lea ecx, [esp + 0x3c]
push ecx
push esi
call fcn.00405bd0
mov esi, eax
add esp, 8
cmp esi, ebx
jne 0x408790
push str.Globaldgservice
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
je 0x4089a7
push 0x20019
push str.AppID
push SysReAllocString
lea ecx, [esp + 0x20]
mov dword [esp + 0x20], ebx
call fcn.004063b0
mov esi, eax
cmp esi, ebx
jne 0x40889c
mov edx, dword [esp + 0x14]
push 0x20019
push str.124B3515_E16D_4B21_A529_058AE6E567C1
push edx
lea ecx, [esp + 0x1c]
mov dword [esp + 0x1c], ebx
call fcn.004063b0
lea eax, [esp + 0x2c]
push eax
push str.LocalService
lea ecx, [esp + 0x4c]
push ecx
lea ecx, [esp + 0x1c]
mov dword [esp + 0x38], 0x104
call fcn.00406400
mov ecx, 0x453620
mov dword [0x453858], ebp
call fcn.00408640
push 0x989680
call dword [sym.imp.KERNEL32.dll_Sleep]
mov esi, dword [0x453844]
lea ecx, [esp + 0x10]
call fcn.00406de0
lea ecx, [esp + 0x14]
call fcn.00406de0
lea ecx, [esp + 0x18]
call fcn.00406640
mov eax, esi
mov ecx, dword [esp + 0x24c]
pop edi
pop esi
pop ebp
pop ebx
xor ecx, esp
call fcn.0041d8d0
add esp, 0x240
ret 0x10
lea ecx, [esp + 0x10]
push str.EXPLORER.EXE
push ecx
call fcn.00405c20
add esp, 8
test eax, eax
jne 0x408904
mov esi, dword [sym.imp.KERNEL32.dll_Sleep]
push 0x7d0
call esi
lea edx, [esp + 0x10]
push str.EXPLORER.EXE
push edx
call fcn.00405c20
add esp, 8
test eax, eax
je 0x4088e7
call fcn.0041a0a0
push 0
mov esi, eax
call fcn.0041d698
push 0
call fcn.0041dee2
push 0
call fcn.0041dee2
push 0
call fcn.0041dee2
push 0
call fcn.0041dee2
add esp, 0x14
jmp 0x4088ae
mov ecx, 0x453620
call fcn.00405f20
lea ecx, [esp + 0x18]
call fcn.00406640
xor eax, eax
jmp 0x4088b0
push ebx
push ebp
mov ecx, 0x453620
call fcn.00406ee0
mov esi, eax
jmp 0x4088a5
push ebp
push ebp
mov ecx, 0x453620
call fcn.00406ee0
mov esi, eax
jmp 0x4088a5
call fcn.00406140
lea ecx, [esp + 0x18]
call fcn.00406640
xor eax, eax
jmp 0x4088b0
push str.Globaldgservicefix
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x4089bf
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea ecx, [esp + 0x18]
call fcn.00406640
or eax, 0xffffffff
jmp 0x4088b0
lea ecx, [esp + 0x30]
call fcn.004089f0
lea ecx, [esp + 0x30]
call fcn.00408b20
call fcn.00406140
lea ecx, [esp + 0x30]
call fcn.00408a30
lea ecx, [esp + 0x18]
call fcn.00406640
xor eax, eax
jmp 0x4088b0