Function at 0x403380
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x40fdc4
mov eax, dword fs:[0]
push eax
sub esp, 0x80
mov eax, dword [0x415134]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
xor edi, edi
cmp eax, edi
je 0x4036ac
push eax
lea ecx, [ebp - 0x64]
call fcn.004030c0
mov ecx, dword [ebp - 0x64]
mov dword [ebp - 4], edi
cmp dword [ecx - 0xc], edi
jl 0x403651
push str._Embedding
push ecx
call fcn.0040532f
add esp, 8
cmp eax, edi
je 0x403651
sub eax, dword [ebp - 0x64]
sar eax, 1
js 0x403651
push 0x4018d0
push 0x401990
push 3
push 4
lea eax, [ebp - 0x1c]
push eax
call 0x405e6b
push 0x4018d0
push 0x401990
push 3
push 4
lea ecx, [ebp - 0x28]
push ecx
mov byte [ebp - 4], 1
call 0x405e6b
push edi
push edi
mov byte [ebp - 4], 2
call dword [sym.imp.ole32.dll_CoInitializeEx]
push edi
push edi
push edi
push edi
call dword [sym.imp.KERNEL32.dll_CreateEventW]
mov ebx, dword [sym.imp.ole32.dll_CoRegisterClassObject]
mov dword [0x416068], eax
lea ebx, [ebx]
push 0xc
call fcn.00405dbf
mov esi, eax
add esp, 4
mov dword [ebp - 0x6c], esi
mov byte [ebp - 4], 3
test esi, esi
je 0x403484
mov edx, dword [edi + section..data]
push ecx
mov ecx, esp
mov dword [ebp - 0x68], esp
push edx
call fcn.004030c0
mov ecx, esi
call fcn.00402b20
mov esi, eax
jmp 0x403486
xor esi, esi
mov byte [ebp - 4], 2
cmp dword [ebp + edi - 0x1c], esi
je 0x4034b0
test esi, esi
je 0x40349c
mov eax, dword [esi]
mov ecx, dword [eax + 4]
push esi
call ecx
mov eax, dword [ebp + edi - 0x1c]
test eax, eax
je 0x4034ac
mov edx, dword [eax]
push eax
mov eax, dword [edx + 8]
call eax
mov dword [ebp + edi - 0x1c], esi
mov edx, dword [edi + section..data]
push ecx
mov ecx, esp
mov dword [ebp - 0x68], esp
push edx
call fcn.004030c0
lea esi, [ebp - 0x7c]
call fcn.00401b80
mov ecx, dword [eax]
mov dword [ebp - 0x50], ecx
mov edx, dword [eax + 4]
mov dword [ebp - 0x4c], edx
mov ecx, dword [eax + 8]
add esp, 4
mov dword [ebp - 0x48], ecx
mov edx, dword [eax + 0xc]
mov eax, dword [ebp + edi - 0x1c]
lea ecx, [ebp + edi - 0x34]
push ecx
push 5
push 4
mov dword [ebp - 0x44], edx
push eax
lea edx, [ebp - 0x50]
push edx
call ebx
push 0xc
call fcn.00405dbf
mov esi, eax
add esp, 4
mov dword [ebp - 0x68], esi
mov byte [ebp - 4], 4
test esi, esi
je 0x40352c
mov eax, dword [edi + 0x41500c]
push ecx
mov ecx, esp
mov dword [ebp - 0x6c], esp
push eax
call fcn.004030c0
mov ecx, esi
call fcn.00402b20
mov esi, eax
jmp 0x40352e
xor esi, esi
mov byte [ebp - 4], 2
cmp dword [ebp + edi - 0x28], esi
je 0x403558
test esi, esi
je 0x403544
mov ecx, dword [esi]
mov edx, dword [ecx + 4]
push esi
call edx
mov eax, dword [ebp + edi - 0x28]
test eax, eax
je 0x403554
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov dword [ebp + edi - 0x28], esi
mov eax, dword [edi + 0x41500c]
push ecx
mov ecx, esp
mov dword [ebp - 0x68], esp
push eax
call fcn.004030c0
lea esi, [ebp - 0x8c]
call fcn.00401b80
mov ecx, dword [eax]
mov dword [ebp - 0x60], ecx
mov edx, dword [eax + 4]
mov dword [ebp - 0x5c], edx
mov ecx, dword [eax + 8]
add esp, 4
mov dword [ebp - 0x58], ecx
mov edx, dword [eax + 0xc]
mov eax, dword [ebp + edi - 0x28]
lea ecx, [ebp + edi - 0x40]
push ecx
push 5
push 4
mov dword [ebp - 0x54], edx
push eax
lea edx, [ebp - 0x60]
push edx
call ebx
add edi, 4
cmp edi, 0xc
jl 0x403450
call dword [sym.imp.ole32.dll_CoResumeClassObjects]
mov eax, dword [0x416068]
push 0x7530
push eax
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
mov ecx, dword [0x416068]
push ecx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov edi, dword [sym.imp.ole32.dll_CoRevokeClassObject]
xor ebx, ebx
xor esi, esi
lea ecx, [ecx]
mov edx, dword [ebp + esi - 0x34]
push edx
call edi
mov eax, dword [ebp + esi - 0x1c]
cmp eax, ebx
je 0x4035fb
mov dword [ebp + esi - 0x1c], ebx
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
mov eax, dword [ebp + esi - 0x40]
push eax
call edi
mov eax, dword [ebp + esi - 0x28]
cmp eax, ebx
je 0x403616
mov dword [ebp + esi - 0x28], ebx
mov ecx, dword [eax]
mov edx, dword [ecx + 8]
push eax
call edx
add esi, 4
cmp esi, 0xc
jl 0x4035e0
call dword [sym.imp.ole32.dll_CoUninitialize]
push 0x4018d0
push 3
push 4
lea eax, [ebp - 0x28]
push eax
mov byte [ebp - 4], 1
call 0x405929
push 0x4018d0
push 3
push 4
lea ecx, [ebp - 0x1c]
push ecx
mov byte [ebp - 4], bl
call 0x405929
jmp 0x403686
lea ecx, [ebp - 0x64]
call fcn.00402730
mov eax, dword [ebp - 0x64]
cmp dword [eax - 0xc], edi
jl 0x403681
push str._unregserver
push eax
call fcn.0040532f
add esp, 8
cmp eax, edi
je 0x403681
sub eax, dword [ebp - 0x64]
sar eax, 1
js 0x403681
call fcn.00403270
jmp 0x403686
call fcn.00403170
mov eax, dword [ebp - 0x64]
add eax, 0xfffffff0
mov dword [ebp - 4], 0xffffffff
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4036ac
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, 1
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call 0x4058bc
mov esp, ebp
pop ebp
ret