Function at 0x401260
Capabilities:
Acquire debug privileges
Check mutex on windows
Get common file path
Hide graphical window
Read .ini file

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff8
sub esp, 0x864
mov eax, dword [section..data]
xor eax, esp
mov dword [esp + 0x860], eax
push ebx
mov ebx, dword [ebp + 0x10]
xor eax, eax
push esi
push edi
mov edi, dword [ebp + 8]
push 0x206
push eax
mov word [esp + 0x50], ax
lea eax, [esp + 0x52]
push eax
mov dword [0x404448], edi
call sub.MSVCR120.dll_memset
add esp, 0xc
lea eax, [esp + 0x48]
push 0
push 0x1a
push eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
mov esi, dword [sym.imp.MSVCR120.dll_wcscat_s]
lea eax, [esp + 0x48]
push 0x40318c
push 0x104
push eax
call esi
add esp, 0xc
lea eax, [esp + 0x48]
push 0x403190
push 0x104
push eax
call esi
add esp, 0xc
xor eax, eax
mov word [esp + 0x458], ax
push 0x206
push eax
lea eax, [esp + 0x462]
push eax
call sub.MSVCR120.dll_memset
add esp, 0xc
lea eax, [esp + 0x48]
push eax
lea eax, [esp + 0x45c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyW]
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatW]
lea eax, [esp + 0x458]
push str.filecache.ini
push eax
call esi
xor eax, eax
push 0x206
push eax
mov word [esp + 0x668], ax
lea eax, [esp + 0x66a]
push eax
call sub.MSVCR120.dll_memset
add esp, 0xc
lea eax, [esp + 0x458]
push eax
push 0x104
lea eax, [esp + 0x668]
push eax
push 0x403188
push str.InstallName
push str.config
call dword [sym.imp.KERNEL32.dll_GetPrivateProfileStringW]
lea ecx, [esp + 0x660]
call fcn.004010a0
push ebx
mov dword [esp + 0x14], eax
call dword [sym.imp.KERNEL32.dll_lstrlenW]
cmp eax, 1
jle 0x4013c5
lea eax, [esp + 0x48]
mov dword [0x404018], 0
push eax
push str.http:__cfg.114caijing.com:8800_2015_1.0.22.8_version.ini
push 0x1d4c0
push dword [esp + 0x1c]
push ebx
push edi
call dword [sym.imp.ftptool.dll_Ordinal_1]
add esp, 0x18
test eax, eax
jne 0x40162f
push str.FTPClient_Main_Window
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexW]
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x401496
push 0
push str.FTPClient_Main_Window
call dword [sym.imp.USER32.dll_FindWindowW]
mov esi, eax
test esi, esi
je 0x401490
lea eax, [esp + 0x10]
push eax
push 0xf01ff
call dword [sym.imp.KERNEL32.dll_GetCurrentProcess]
push eax
call dword [sym.imp.ADVAPI32.dll_OpenProcessToken]
test eax, eax
je 0x40146e
lea eax, [esp + 0x14]
push eax
push str.SeDebugPrivilege
push 0
call dword [sym.imp.ADVAPI32.dll_LookupPrivilegeValueW]
test eax, eax
je 0x401464
mov eax, dword [esp + 0x14]
push 0
push 0
mov dword [esp + 0x44], eax
mov eax, dword [esp + 0x20]
push 0
mov dword [esp + 0x4c], eax
lea eax, [esp + 0x44]
push eax
push 0
push dword [esp + 0x24]
mov dword [esp + 0x50], 1
mov dword [esp + 0x5c], 2
call dword [sym.imp.ADVAPI32.dll_AdjustTokenPrivileges]
push dword [esp + 0x10]
call dword [sym.imp.KERNEL32.dll_CloseHandle]
cmp dword [0x404018], 0
je 0x40162f
push 0
push 0
push 0x465
push esi
call dword [sym.imp.USER32.dll_SendMessageW]
jmp 0x40162f
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatW]
push str.ChangeWindowMessageFilter
push str.USER32
call dword [sym.imp.KERNEL32.dll_GetModuleHandleW]
push eax
call dword [sym.imp.KERNEL32.dll_GetProcAddress]
test eax, eax
je 0x4014ba
push 1
push 0x465
call eax
push 0x104
push 0
push 0x404450
call sub.MSVCR120.dll_memset
add esp, 0xc
xor eax, eax
mov word [esp + 0x250], ax
push 0x206
push eax
lea eax, [esp + 0x25a]
push eax
call sub.MSVCR120.dll_memset
add esp, 0xc
lea eax, [esp + 0x250]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
lea eax, [esp + 0x250]
push 0x5c
push eax
call dword [sym.imp.MSVCR120.dll_wcsrchr]
add esp, 8
test eax, eax
je 0x40152e
xor ecx, ecx
mov word [eax], cx
lea eax, [esp + 0x250]
push 0x40318c
push eax
call esi
xor ecx, ecx
movzx eax, word [esp + ecx + 0x250]
lea ecx, [ecx + 2]
mov word [ecx + 0x40444e], ax
test ax, ax
jne 0x401530
mov ecx, 0x404450
add ecx, 0xfffffffe
nop
mov ax, word [ecx + 2]
lea ecx, [ecx + 2]
test ax, ax
jne 0x401550
mov eax, dword [str.FTPTool.exe]
mov dword [ecx], eax
mov eax, dword [0x4032b4]
mov dword [ecx + 4], eax
mov eax, dword [0x4032b8]
mov dword [ecx + 8], eax
mov eax, dword [0x4032bc]
mov dword [ecx + 0xc], eax
mov eax, dword [0x4032c0]
mov dword [ecx + 0x10], eax
mov eax, dword [0x4032c4]
mov dword [ecx + 0x14], eax
mov ecx, edi
call fcn.00401650
push 0
push edi
push 0
push 0
push 0
push Ordinal_1
push 0
push Ordinal_1
push 0xcf0000
push 0x403188
push str.FTPClient_Main_Window
push 0
call dword [sym.imp.USER32.dll_CreateWindowExW]
mov esi, eax
test esi, esi
je 0x40162f
push 0
push esi
call dword [sym.imp.USER32.dll_ShowWindow]
push esi
call dword [sym.imp.USER32.dll_UpdateWindow]
push 0
push 0x1388
push 0x466
push dword [0x404444]
call dword [sym.imp.USER32.dll_SetTimer]
mov esi, dword [sym.imp.USER32.dll_GetMessageW]
lea eax, [esp + 0x1c]
push 0
push 0
push 0
push eax
call esi
test eax, eax
je 0x40162f
mov edi, dword [sym.imp.USER32.dll_TranslateMessage]
mov ebx, dword [sym.imp.USER32.dll_DispatchMessageW]
nop
lea eax, [esp + 0x1c]
push eax
call edi
lea eax, [esp + 0x1c]
push eax
call ebx
push 0
push 0
push 0
lea eax, [esp + 0x28]
push eax
call esi
test eax, eax
jne 0x401610
mov ecx, dword [esp + 0x86c]
xor eax, eax
pop edi
pop esi
pop ebx
xor ecx, esp
call fcn.00401896
mov esp, ebp
pop ebp
ret 0x10