Function at 0x401ca6
Capabilities:
Accept command line arguments

Disassembly:
mov eax, 0x40e21c
call fcn.00407fb8
sub esp, 0x28
push ebx
push esi
mov ebx, 0x415558
push edi
mov ecx, ebx
mov dword [ebp - 0x10], esp
call fcn.004015f1
test al, al
je 0x401cdc
push dword [0x4155fc]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor eax, eax
jmp 0x401f5d
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
xor esi, esi
mov dword [ebp + 0x10], eax
push esi
call dword [sym.imp.ole32.dll_CoInitialize]
push 1
push 0x415554
mov dword [0x415554], esi
mov dword [0x415550], esi
call fcn.00401f6e
pop ecx
mov dword [0x415550], eax
pop ecx
mov dword [0x4155c8], 0x412180
push dword [ebp + 8]
mov dword [0x415448], ebx
mov dword [0x415558], 0x84
mov dword [0x4155bc], 0x300
push 0x4120b8
push ebx
call fcn.00404c7a
mov eax, 0x40f330
mov ecx, eax
test ecx, ecx
je 0x401d5a
push 0x10
push eax
push 0x415438
call fcn.00408380
add esp, 0xc
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
and dword [ebp - 0x18], 0
mov dword [0x4155dc], eax
mov esi, 0x412280
lea edi, [ebp - 0x14]
lea eax, [ebp - 0x14]
movsw word es:[edi], word [esi]
push eax
push dword [ebp + 0x10]
movsb byte es:[edi], byte [esi]
call fcn.00401c65
mov esi, eax
pop ecx
test esi, esi
pop ecx
je 0x401dc0
mov edi, dword [sym.imp.KERNEL32.dll_lstrcmpiA]
push str.UnregServer
push esi
call edi
test eax, eax
je 0x401e20
push str.RegServer
push esi
call edi
test eax, eax
je 0x401e40
lea eax, [ebp - 0x14]
push eax
push esi
call fcn.00401c65
mov esi, eax
pop ecx
test esi, esi
pop ecx
jne 0x401d8e
push 1
push 4
push ebx
call fcn.00404cfd
push str.KDTransSvc9x
mov ecx, ebx
call fcn.0040161b
xor esi, esi
mov ecx, 0x4155e8
push esi
push dword [ebp + 8]
call fcn.00406137
mov ecx, 0x4155ec
call fcn.0040637d
mov dword [ebp - 4], esi
push esi
push esi
lea eax, [ebp - 0x34]
push esi
push eax
call dword [sym.imp.USER32.dll_GetMessageA]
test eax, eax
je 0x401eb3
cmp dword [ebp - 0x30], 0x40b
jne 0x401e5b
push dword [ebp - 0x28]
mov ecx, ebx
push dword [ebp - 0x2c]
call fcn.004016df
jmp 0x401df3
xor esi, esi
push esi
push esi
push 0xe9
push ebx
call fcn.00403808
push esi
push 1
push ebx
call fcn.00404ff7
mov dword [ebp - 0x18], eax
jmp 0x401ec8
push 0
push 1
push 0xe9
push ebx
call fcn.00403808
push 0
push 1
push ebx
call fcn.00404e7e
jmp 0x401e38
cmp dword [ebp - 0x30], 0x40c
jne 0x401e73
push dword [ebp - 0x28]
mov ecx, ebx
push dword [ebp - 0x2c]
call fcn.004019c4
jmp 0x401df3
cmp dword [ebp - 0x30], 0x40d
jne 0x401e9f
push dword [ebp - 0x28]
mov ecx, ebx
push dword [ebp - 0x2c]
call fcn.00401b2c
jmp 0x401df3
lea eax, [ebp - 0x34]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
jmp 0x401df3
or dword [ebp - 4], 0xffffffff
push ebx
call fcn.00404d92
push 0x1f4
call dword [sym.imp.KERNEL32.dll_Sleep]
push dword [0x4155fc]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
xor edi, edi
xor esi, esi
cmp dword [0x415610], edi
jle 0x401efd
mov eax, dword [0x41560c]
mov eax, dword [eax + esi*4]
cmp eax, 0xffffffff
je 0x401ef4
push eax
call dword [sym.imp.WSOCK32.dll_closesocket]
inc esi
cmp esi, dword [0x415610]
jl 0x401ee0
xor esi, esi
cmp dword [0x41561c], edi
jle 0x401f24
mov eax, dword [0x415618]
mov eax, dword [eax + esi*4]
cmp eax, 0xffffffff
je 0x401f1b
push eax
call dword [sym.imp.WSOCK32.dll_closesocket]
inc esi
cmp esi, dword [0x41561c]
jl 0x401f07
mov ecx, 0x41560c
call fcn.0040264a
mov ecx, 0x415618
call fcn.0040264a
mov eax, dword [0x415554]
cmp eax, edi
je 0x401f4e
push eax
call dword [sym.imp.KERNEL32.dll_FreeLibrary]
mov dword [0x415554], edi
push ebx
call fcn.00404dce
call dword [sym.imp.ole32.dll_CoUninitialize]
mov eax, dword [ebp - 0x18]
mov ecx, dword [ebp - 0xc]
pop edi
pop esi
mov dword fs:[0], ecx
pop ebx
leave
ret 0x10