Function at 0x409160
Capabilities:
Accept command line arguments
Check mutex on windows
Initialize winsock library

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x1ac
mov eax, dword [0x4b1784]
xor eax, esp
mov dword [esp + 0x1a8], eax
push ebx
push esi
push edi
call fcn.00435120
lea ebx, [esp + 0xc]
call fcn.00405a10
mov edx, dword [esp + 0xc]
mov eax, dword [edx - 0xc]
test eax, eax
jle 0x4091b9
lea ecx, [eax - 1]
test ecx, ecx
jl 0x4092c0
cmp ecx, eax
jg 0x4092c0
cmp word [edx + ecx*2], 0x5c
je 0x4091b9
push 0x5c
mov edi, ebx
call fcn.00416550
lea eax, [esp + 0x14]
push eax
call fcn.00405d00
mov edx, dword [esp + 0x10]
mov ecx, dword [edx - 0xc]
add esp, 4
test ecx, ecx
jle 0x4091f6
lea eax, [ecx - 1]
test eax, eax
jl 0x4092c0
cmp eax, ecx
jg 0x4092c0
cmp word [edx + eax*2], 0x5c
je 0x4091f6
push 0x5c
lea edi, [esp + 0x10]
call fcn.00416550
mov edx, dword [0x4bb38c]
mov eax, dword [edx + 0xc]
mov ecx, 0x4bb38c
call eax
lea ecx, [esp + 0x14]
push ecx
lea edx, [esp + 0x1c]
add eax, 0x10
push edx
mov ebx, str.logliveup.log
mov dword [esp + 0x18], eax
call fcn.00409750
add esp, 8
lea edi, [esp + 0x10]
call fcn.0040b8a0
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40924d
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
call fcn.00415d00
lea ecx, [esp + 0xc]
push ecx
lea edx, [esp + 0x1c]
push edx
mov ebx, str.zlib1.dll
call fcn.00409750
add esp, 8
mov esi, eax
call fcn.00447090
mov eax, dword [esp + 0x18]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409290
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp + 8]
push ecx
push 0x4bd868
call fcn.00407d10
test eax, eax
jne 0x4092ca
call fcn.00415d00
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x409457
push 0x80070057
call fcn.00416be0
call dword [sym.imp.KERNEL32.dll_GetCurrentProcessId]
mov esi, eax
call dword [sym.imp.KERNEL32.dll_GetTickCount]
xor esi, eax
push esi
call fcn.00469055
add esp, 4
call dword [sym.imp.COMCTL32.dll_InitCommonControls]
xor ebx, ebx
push ebx
call dword [sym.imp.ole32.dll_OleInitialize]
push ebx
call dword [sym.imp.ole32.dll_CoInitialize]
call fcn.00415d00
lea ecx, [esp + 0x20]
push ecx
push 0x202
call dword [sym.imp.WS2_32.dll_WSAStartup]
call fcn.00415d00
call dword [sym.imp.KERNEL32.dll_GetCommandLineW]
push eax
push 0x4bd868
call fcn.00408160
test eax, eax
jne 0x409341
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jmp 0x409457
push str.QQPinyin_Auto_Update_Tool_0D7BC8D3_4398_4974_AC1C_AFDBF143B923
push ebx
push ebx
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
mov esi, eax
mov dword [esp + 0x1c], esi
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x40940e
cmp esi, ebx
je 0x409376
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [esp + 0x1c], ebx
mov esi, ebx
cmp dword [0x4bd924], 2
jne 0x4093e0
mov edi, dword [sym.imp.USER32.dll_GetWindow]
mov dword [esp + 0x18], ebx
mov ebx, dword [sym.imp.USER32.dll_IsWindow]
nop
push 5
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call edi
mov esi, eax
push esi
call ebx
test eax, eax
je 0x4093c2
push str.Tencent_QQPinyin_LiveUp
push esi
call dword [sym.imp.USER32.dll_GetPropW]
test eax, eax
jne 0x4093ed
push 2
push esi
call edi
mov esi, eax
push esi
call ebx
test eax, eax
jne 0x4093a4
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [esp + 0x18]
add eax, 1
cmp eax, 0x64
mov dword [esp + 0x18], eax
jl 0x409390
mov esi, dword [esp + 0x1c]
xor ebx, ebx
cmp esi, ebx
je 0x409443
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x409443
push 9
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
push esi
call dword [sym.imp.USER32.dll_SetForegroundWindow]
mov eax, dword [esp + 0x1c]
test eax, eax
je 0x409443
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
jmp 0x409443
call fcn.00415d00
mov ecx, 0x4bd868
call fcn.00408b30
cmp esi, ebx
mov edi, dword [sym.imp.KERNEL32.dll_CloseHandle]
je 0x40942c
push esi
call edi
mov esi, ebx
call dword [sym.imp.ole32.dll_OleUninitialize]
call fcn.00415d00
call fcn.00447100
cmp esi, ebx
je 0x409443
push esi
call edi
mov eax, dword [esp + 0x10]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409463
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0x14]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x409483
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov eax, dword [esp + 0xc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4094a3
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [esp + 0x1b4]
pop edi
pop esi
pop ebx
xor ecx, esp
xor eax, eax
call fcn.00469efd
mov esp, ebp
pop ebp
ret 0x10