Function at 0x410a70
Capabilities:
Copy file
Create directory
Delete file
Get common file path
Get file attributes
Get startup folder
Set file attributes
Write file to startup folder

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4b71c0
mov eax, dword fs:[0]
push eax
push ecx
sub esp, 0xd10
mov eax, dword [0x57aa54]
xor eax, ebp
mov dword [ebp - 0x14], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x10], esp
mov dword [ebp - 0xca8], ecx
mov eax, dword [ebp - 0xca8]
mov dword [eax + 0x24], 2
lea ecx, [ebp - 0x43c]
push ecx
mov ecx, dword [ebp - 0xca8]
call fcn.00413630
mov dword [ebp - 4], 0
push 0x104
lea edx, [ebp - 0x430]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameW]
push 0x4bfa3c
lea ecx, [ebp - 0x228]
call fcn.004038f0
mov byte [ebp - 4], 1
push 0x104
lea ecx, [ebp - 0x228]
call fcn.004039d0
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
push 0xffffffffffffffff
lea ecx, [ebp - 0x228]
call fcn.0040ac70
push 0x4bfa40
lea ecx, [ebp - 0x438]
call fcn.004038f0
mov byte [ebp - 4], 2
push 0x104
lea ecx, [ebp - 0x438]
call fcn.004039d0
push eax
push 0
push 0x4bfa44
lea ecx, [ebp - 0x228]
call fcn.0040ca60
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
push 0xffffffffffffffff
lea ecx, [ebp - 0x438]
call fcn.0040ac70
lea ecx, [ebp - 0x438]
call fcn.0040ca60
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push 0
lea ecx, [ebp - 0x438]
call fcn.0040ca60
push eax
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x440]
call fcn.004038b0
mov byte [ebp - 4], 4
push 0x4bfa70
lea ecx, [ebp - 0xc48]
call fcn.004038f0
mov dword [ebp - 0xcac], eax
mov eax, dword [ebp - 0xcac]
mov dword [ebp - 0xcb0], eax
mov byte [ebp - 4], 5
mov ecx, dword [ebp - 0xcb0]
push ecx
lea edx, [ebp - 0x438]
push edx
lea eax, [ebp - 0xc4c]
push eax
call fcn.004032e0
add esp, 0xc
mov dword [ebp - 0xcb4], eax
mov ecx, dword [ebp - 0xcb4]
mov dword [ebp - 0xcb8], ecx
mov byte [ebp - 4], 6
push 0x4bfa4c
mov edx, dword [ebp - 0xcb8]
push edx
lea eax, [ebp - 0xc50]
push eax
call fcn.0040a2f0
add esp, 0xc
mov dword [ebp - 0xcbc], eax
mov ecx, dword [ebp - 0xcbc]
mov dword [ebp - 0xcc0], ecx
mov byte [ebp - 4], 7
mov edx, dword [ebp - 0xcc0]
push edx
lea ecx, [ebp - 0x440]
call fcn.00403990
mov dword [ebp - 0xcc4], eax
lea eax, [ebp - 0x430]
push eax
lea ecx, [ebp - 0xc54]
call fcn.004038f0
mov dword [ebp - 0xcc8], eax
push 0
mov ecx, dword [ebp - 0xcc4]
call fcn.0040ca60
push eax
mov ecx, dword [ebp - 0xcc8]
call fcn.0040ca60
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
lea ecx, [ebp - 0xc54]
call fcn.00403970
mov byte [ebp - 4], 6
lea ecx, [ebp - 0xc50]
call fcn.00403970
mov byte [ebp - 4], 5
lea ecx, [ebp - 0xc4c]
call fcn.00403970
mov byte [ebp - 4], 4
lea ecx, [ebp - 0xc48]
call fcn.00403970
lea ecx, [ebp - 0x440]
call fcn.0040ca60
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
and eax, 0xfffffffe
push eax
lea ecx, [ebp - 0x440]
call fcn.0040ca60
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
push 0x4bfa74
lea ecx, [ebp - 0xc58]
call fcn.004038f0
mov dword [ebp - 0xccc], eax
mov ecx, dword [ebp - 0xccc]
mov dword [ebp - 0xcd0], ecx
mov byte [ebp - 4], 8
mov edx, dword [ebp - 0xcd0]
push edx
lea eax, [ebp - 0x438]
push eax
lea ecx, [ebp - 0xc5c]
push ecx
call fcn.004032e0
add esp, 0xc
mov dword [ebp - 0xcd4], eax
mov edx, dword [ebp - 0xcd4]
mov dword [ebp - 0xcd8], edx
mov byte [ebp - 4], 9
mov eax, dword [ebp - 0xcd8]
push eax
lea ecx, [ebp - 0x440]
call fcn.00403990
mov dword [ebp - 0xcdc], eax
push 0
mov ecx, dword [ebp - 0xcdc]
call fcn.0040ca60
push eax
push str.AlbumMakerInstall.ini
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov byte [ebp - 4], 8
lea ecx, [ebp - 0xc5c]
call fcn.00403970
mov byte [ebp - 4], 4
lea ecx, [ebp - 0xc58]
call fcn.00403970
lea ecx, [ebp - 0x440]
call fcn.0040ca60
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
and eax, 0xfffffffe
push eax
lea ecx, [ebp - 0x440]
call fcn.0040ca60
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
push 0x4bfad0
lea ecx, [ebp - 0xc60]
call fcn.004038f0
mov dword [ebp - 0xce0], eax
mov ecx, dword [ebp - 0xce0]
mov dword [ebp - 0xce4], ecx
mov byte [ebp - 4], 0xa
mov edx, dword [ebp - 0xce4]
push edx
lea eax, [ebp - 0x438]
push eax
lea ecx, [ebp - 0xc64]
push ecx
call fcn.004032e0
add esp, 0xc
mov dword [ebp - 0xce8], eax
mov edx, dword [ebp - 0xce8]
mov dword [ebp - 0xcec], edx
mov byte [ebp - 4], 0xb
mov eax, dword [ebp - 0xcec]
push eax
lea ecx, [ebp - 0x440]
call fcn.00403990
mov dword [ebp - 0xcf0], eax
push 0
mov ecx, dword [ebp - 0xcf0]
call fcn.0040ca60
push eax
push str.BgImage.jpg
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov byte [ebp - 4], 0xa
lea ecx, [ebp - 0xc64]
call fcn.00403970
mov byte [ebp - 4], 4
lea ecx, [ebp - 0xc60]
call fcn.00403970
lea ecx, [ebp - 0x440]
call fcn.0040ca60
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
and eax, 0xfffffffe
push eax
lea ecx, [ebp - 0x440]
call fcn.0040ca60
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x440]
call fcn.00403970
jmp 0x410f26
mov dword [ebp - 4], 2
jmp 0x410f6a
push 0x4bfb64
lea ecx, [ebp - 0xc74]
call fcn.004038f0
mov byte [ebp - 4], 0xd
push 0x4bfb04
lea ecx, [ebp - 0xc6c]
call fcn.004038f0
mov dword [ebp - 0xcf4], eax
mov ecx, dword [ebp - 0xcf4]
mov dword [ebp - 0xcf8], ecx
mov byte [ebp - 4], 0xe
mov edx, dword [ebp - 0xcf8]
push edx
lea eax, [ebp - 0x438]
push eax
lea ecx, [ebp - 0xc70]
push ecx
call fcn.004032e0
add esp, 0xc
mov dword [ebp - 0xcfc], eax
mov edx, dword [ebp - 0xcfc]
mov dword [ebp - 0xd00], edx
mov byte [ebp - 4], 0xf
push 1
mov eax, dword [ebp - 0xd00]
push eax
lea ecx, [ebp - 0xc74]
push ecx
call fcn.0040ead0
add esp, 0xc
movzx edx, al
neg edx
sbb edx, edx
add edx, 1
mov byte [ebp - 0xc66], dl
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0xc70]
call fcn.00403970
mov byte [ebp - 4], 0xd
lea ecx, [ebp - 0xc6c]
call fcn.00403970
mov byte [ebp - 4], 2
lea ecx, [ebp - 0xc74]
call fcn.00403970
movzx eax, byte [ebp - 0xc66]
test eax, eax
je 0x411119
push 0x4bfb70
lea ecx, [ebp - 0xc78]
call fcn.004038f0
mov dword [ebp - 0xd04], eax
mov ecx, dword [ebp - 0xd04]
mov dword [ebp - 0xd08], ecx
mov byte [ebp - 4], 0x10
mov edx, dword [ebp - 0xd08]
push edx
lea eax, [ebp - 0x438]
push eax
lea ecx, [ebp - 0xc7c]
push ecx
call fcn.004032e0
add esp, 0xc
mov dword [ebp - 0xd0c], eax
mov edx, dword [ebp - 0xd0c]
mov dword [ebp - 0xd10], edx
mov byte [ebp - 4], 0x11
mov eax, dword [ebp - 0xd10]
mov ecx, dword [eax]
push ecx
push str.Lang
push str.Failed_to_copy_directory_for_uninstall:__s__s
mov edx, dword [ebp - 0xca8]
add edx, 0x20
push edx
call fcn.004044a0
add esp, 0x10
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0xc7c]
call fcn.00403970
mov byte [ebp - 4], 2
lea ecx, [ebp - 0xc78]
call fcn.00403970
mov byte [ebp - 0xc7d], 0
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x438]
call fcn.00403970
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x228]
call fcn.00403970
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x43c]
call fcn.00403970
mov al, byte [ebp - 0xc7d]
jmp 0x4114ff
push str..dll
lea ecx, [ebp - 0xc84]
call fcn.004038f0
mov byte [ebp - 4], 0x12
lea eax, [ebp - 0x438]
push eax
lea ecx, [ebp - 0xc84]
push ecx
call fcn.0040f3b0
add esp, 8
mov byte [ebp - 4], 2
lea ecx, [ebp - 0xc84]
call fcn.00403970
push str..manifest
lea ecx, [ebp - 0xc88]
call fcn.004038f0
mov byte [ebp - 4], 0x13
lea edx, [ebp - 0x438]
push edx
lea eax, [ebp - 0xc88]
push eax
call fcn.0040f3b0
add esp, 8
mov byte [ebp - 4], 2
lea ecx, [ebp - 0xc88]
call fcn.00403970
lea ecx, [ebp - 0x434]
call fcn.004038b0
mov byte [ebp - 4], 0x14
push 0x104
lea ecx, [ebp - 0x434]
call fcn.004039d0
push eax
push 0
push 0x4bfc08
lea ecx, [ebp - 0x228]
call fcn.0040ca60
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
push 0xffffffffffffffff
lea ecx, [ebp - 0x434]
call fcn.0040ac70
lea ecx, [ebp - 0x434]
call fcn.0040ca60
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
push str.mp_app_setup.exe
lea ecx, [ebp - 0xc90]
call fcn.004038f0
mov byte [ebp - 4], 0x15
lea ecx, [ebp - 0xc90]
push ecx
lea edx, [ebp - 0x434]
push edx
lea eax, [ebp - 0x438]
push eax
mov ecx, dword [ebp - 0xca8]
call fcn.004162b0
movzx ecx, al
neg ecx
sbb ecx, ecx
add ecx, 1
mov byte [ebp - 0xc89], cl
mov byte [ebp - 4], 0x14
lea ecx, [ebp - 0xc90]
call fcn.00403970
movzx edx, byte [ebp - 0xc89]
test edx, edx
je 0x4112b9
lea eax, [ebp - 0x438]
push eax
call fcn.0040e380
add esp, 4
movzx ecx, al
test ecx, ecx
je 0x411268
push 1
lea edx, [ebp - 0x438]
push edx
call fcn.0040dc80
add esp, 8
mov byte [ebp - 0xc91], 0
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x434]
call fcn.00403970
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x438]
call fcn.00403970
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x228]
call fcn.00403970
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x43c]
call fcn.00403970
mov al, byte [ebp - 0xc91]
jmp 0x4114ff
push 0
push 0x25
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.USER32.dll_GetDesktopWindow]
push eax
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
lea ecx, [ebp - 0x220]
push ecx
lea ecx, [ebp - 0xca0]
call fcn.004038f0
mov byte [ebp - 4], 0x16
push 0x4bfc34
lea ecx, [ebp - 0xc98]
call fcn.004038f0
mov dword [ebp - 0xd14], eax
mov edx, dword [ebp - 0xd14]
mov dword [ebp - 0xd18], edx
mov byte [ebp - 4], 0x17
mov eax, dword [ebp - 0xd18]
push eax
lea ecx, [ebp - 0x43c]
push ecx
lea edx, [ebp - 0xc9c]
push edx
call fcn.004032e0
add esp, 0xc
mov dword [ebp - 0xd1c], eax
mov eax, dword [ebp - 0xd1c]
mov dword [ebp - 0xd20], eax
mov byte [ebp - 4], 0x18
mov ecx, dword [ebp - 0xd20]
push ecx
lea edx, [ebp - 0xca0]
push edx
lea eax, [ebp - 0x224]
push eax
call fcn.0040f1c0
add esp, 0xc
mov byte [ebp - 4], 0x1a
lea ecx, [ebp - 0xc9c]
call fcn.00403970
mov byte [ebp - 4], 0x1b
lea ecx, [ebp - 0xc98]
call fcn.00403970
mov byte [ebp - 4], 0x1c
lea ecx, [ebp - 0xca0]
call fcn.00403970
push 0
lea ecx, [ebp - 0x224]
push ecx
lea edx, [ebp - 0x434]
push edx
call fcn.0040e910
add esp, 0xc
movzx eax, al
test eax, eax
jne 0x41146b
mov ecx, dword [ebp - 0x224]
push ecx
mov edx, dword [ebp - 0x434]
push edx
push str.Failed_to_copy_the_uninstall_file:__s__s
mov eax, dword [ebp - 0xca8]
add eax, 0x20
push eax
call fcn.004044a0
add esp, 0x10
lea ecx, [ebp - 0x438]
push ecx
call fcn.0040e380
add esp, 4
movzx edx, al
test edx, edx
je 0x4113f9
push 1
lea eax, [ebp - 0x438]
push eax
call fcn.0040dc80
add esp, 8
lea ecx, [ebp - 0x434]
call fcn.0040ca60
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov byte [ebp - 0xca1], 0
mov byte [ebp - 4], 0x14
lea ecx, [ebp - 0x224]
call fcn.00403970
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x434]
call fcn.00403970
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x438]
call fcn.00403970
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x228]
call fcn.00403970
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x43c]
call fcn.00403970
mov al, byte [ebp - 0xca1]
jmp 0x4114ff
lea ecx, [ebp - 0x438]
push ecx
call fcn.0040e380
add esp, 4
movzx edx, al
test edx, edx
je 0x411492
push 1
lea eax, [ebp - 0x438]
push eax
call fcn.0040dc80
add esp, 8
lea ecx, [ebp - 0x434]
call fcn.0040ca60
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov byte [ebp - 0xca2], 1
mov byte [ebp - 4], 0x14
lea ecx, [ebp - 0x224]
call fcn.00403970
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x434]
call fcn.00403970
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x438]
call fcn.00403970
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x228]
call fcn.00403970
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x43c]
call fcn.00403970
mov al, byte [ebp - 0xca2]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x14]
xor ecx, ebp
call fcn.0049c63c
mov esp, ebp
pop ebp
ret