Function at 0x401856
Capabilities:
Accept command line arguments

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x168
push ebx
push esi
push edi
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
xor ebx, ebx
mov dword [ebp + 0x10], eax
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
mov al, byte [ebp + 0xb]
push ebx
lea ecx, [ebp - 0x1c]
mov dword [ebp - 8], ebx
mov byte [ebp - 0x1c], al
call fcn.004035ee
mov esi, 0x426578
push esi
call fcn.00412470
pop ecx
push eax
push esi
lea ecx, [ebp - 0x1c]
call fcn.004036d5
push dword [ebp + 8]
mov esi, 0x426590
mov dword [0x426600], 0x4210d8
mov dword [0x426574], esi
push 0x426620
push esi
mov dword [0x426590], 0x84
mov dword [0x4265f4], 0x300
call fcn.00402edc
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
mov edi, 0x421140
mov dword [0x426614], eax
push edi
mov dword [ebp - 0xc], ebx
push dword [ebp + 0x10]
mov dword [ebp - 4], 1
call fcn.004015c5
pop ecx
cmp eax, ebx
pop ecx
mov dword [ebp + 0x10], eax
je 0x401959
push str.UnregServer
push eax
call fcn.00412886
pop ecx
test eax, eax
pop ecx
je 0x401929
push str.RegServer
push dword [ebp + 0x10]
call fcn.00412886
pop ecx
test eax, eax
pop ecx
je 0x40193d
push edi
push dword [ebp + 0x10]
jmp 0x4018f1
push ebx
push ebx
push 0x64
push esi
call fcn.00401b6e
push ebx
push ebx
push esi
call fcn.004031a9
jmp 0x401951
push ebx
push 1
push 0x64
push esi
call fcn.00401b6e
push ebx
push 1
push esi
call fcn.00403030
mov dword [ebp - 0xc], eax
jmp 0x401a08
call fcn.0040ffa4
cmp al, 1
jne 0x401988
lea eax, [ebp + 0x13]
mov byte [ebp + 0x13], bl
push eax
call fcn.0041003a
cmp al, 1
pop ecx
jne 0x401a08
test byte [ebp + 0x13], 6
jne 0x401a08
mov dword [ebp - 4], 1
mov edi, str.igfxtraymutext
push edi
call fcn.00412470
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.004036d5
mov eax, dword [ebp - 0x18]
cmp eax, ebx
jne 0x4019aa
mov eax, 0x41d6b8
push 0x104
push eax
lea eax, [ebp - 0x168]
push eax
call fcn.004127ec
lea eax, [ebp - 0x168]
push eax
call fcn.0040f11c
mov edi, eax
push edi
call fcn.00412470
add esp, 0x14
lea ecx, [ebp - 0x1c]
push eax
push edi
call fcn.004036d5
mov eax, dword [ebp - 0x18]
cmp eax, ebx
jne 0x4019e9
mov eax, 0x41d6b8
push eax
push 1
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [ebp - 8], eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp dword [ebp - 8], ebx
je 0x401a08
cmp eax, 0xb7
jne 0x401a0b
mov dword [ebp - 4], ebx
push str.Uninited
push 0x426580
call fcn.00403c2c
pop ecx
test al, al
pop ecx
je 0x401a91
cmp dword [ebp - 4], ebx
je 0x401b46
push 0x114
call fcn.00411ea7
cmp eax, ebx
pop ecx
je 0x401a43
mov ecx, eax
call fcn.0040d403
mov edi, eax
jmp 0x401a45
xor edi, edi
cmp dword [edi + 0x10c], ebx
jle 0x401a82
push ebx
mov ecx, edi
call fcn.0040354a
push eax
call fcn.00412470
test eax, eax
pop ecx
jbe 0x401a82
push ebx
mov ecx, edi
call fcn.0040354a
push eax
mov dword [ebp + 0x10], eax
call fcn.00412470
pop ecx
push eax
mov ecx, 0x426580
push dword [ebp + 0x10]
call fcn.004036d5
jmp 0x401a85
mov dword [ebp - 4], ebx
cmp edi, ebx
je 0x401a91
mov eax, dword [edi]
push 1
mov ecx, edi
call dword [eax]
cmp dword [ebp - 4], ebx
je 0x401b46
push 1
push 4
push esi
call fcn.00402f5f
push 0x28
lea eax, [ebp - 0x44]
push ebx
push eax
call fcn.004126a0
mov eax, dword [ebp + 8]
add esp, 0xc
mov dword [ebp - 0x34], eax
lea eax, [ebp - 0x44]
push eax
mov dword [ebp - 0x40], 0x4015fd
mov dword [ebp - 0x20], str.igfxtrayClass
call dword [sym.imp.USER32.dll_RegisterClassA]
mov edi, str.igfxtrayWindow
push edi
call fcn.00412470
pop ecx
push eax
push edi
lea ecx, [ebp - 0x1c]
call fcn.004036d5
mov eax, dword [ebp - 0x18]
cmp eax, ebx
jne 0x401af3
mov eax, 0x41d6b8
push ebx
push dword [ebp + 8]
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push ebx
push eax
push str.igfxtrayClass
push ebx
call dword [sym.imp.USER32.dll_CreateWindowExA]
push ebx
push ebx
push dword [0x42666c]
push eax
call dword [sym.imp.USER32.dll_PostMessageA]
mov edi, dword [sym.imp.USER32.dll_GetMessageA]
push ebx
push ebx
lea eax, [ebp - 0x60]
push ebx
push eax
call edi
test eax, eax
je 0x401b40
lea eax, [ebp - 0x60]
push eax
call dword [sym.imp.USER32.dll_DispatchMessageA]
push ebx
push ebx
lea eax, [ebp - 0x60]
push ebx
push eax
jmp 0x401b27
push esi
call fcn.00402ff4
cmp dword [ebp - 8], ebx
pop edi
pop esi
pop ebx
je 0x401b57
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
call dword [sym.imp.ole32.dll_CoUninitialize]
push 1
lea ecx, [ebp - 0x1c]
call fcn.004035ee
mov eax, dword [ebp - 0xc]
leave
ret 0x10