Function at 0x41e0d0
Capabilities:
Check if file exists
Copy file
Create directory
Get common file path
Get program files directory
Get startup folder
Write file to startup folder

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d2b71
mov eax, dword fs:[0]
push eax
sub esp, 0x5ec
mov eax, dword [0x50f52c]
xor eax, ebp
mov dword [ebp - 0x10], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov esi, ecx
xor ebx, ebx
push 0xffffffffffffffff
xor ecx, ecx
lea eax, [esi + 0xa0]
push ebx
mov word [ebp - 0x520], cx
mov edi, 7
push eax
lea ecx, [ebp - 0x524]
mov dword [ebp - 0x584], esi
mov dword [ebp - 0x588], ebx
mov dword [ebp - 0x50c], edi
mov dword [ebp - 0x510], ebx
call fcn.00401750
mov dword [ebp - 4], ebx
push ebx
xor edx, edx
push 0x4e25d8
lea ecx, [ebp - 0x5d4]
mov dword [ebp - 0x5bc], edi
mov dword [ebp - 0x5c0], ebx
mov word [ebp - 0x5d0], dx
call fcn.00401860
mov byte [ebp - 4], 1
push ebx
push 0x4e3c64
lea ecx, [ebp - 0x590]
call fcn.004163c0
mov byte [ebp - 4], 2
push ebx
lea ecx, [ebp - 0x5d4]
push ecx
push eax
lea edx, [ebp - 0x524]
push edx
lea eax, [ebp - 0x5b8]
push eax
call fcn.0041ac80
mov byte [ebp - 4], 3
push 0xffffffffffffffff
push ebx
push eax
lea ecx, [ebp - 0x524]
call fcn.00401750
mov byte [ebp - 4], 2
mov edi, 8
cmp dword [ebp - 0x5a0], edi
jb 0x41e1ce
mov ecx, dword [ebp - 0x5b4]
push ecx
call fcn.004b29fa
add esp, 4
xor edx, edx
mov dword [ebp - 0x5a0], 7
mov dword [ebp - 0x5a4], ebx
mov word [ebp - 0x5b4], dx
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x590]
call fcn.00440de0
mov byte [ebp - 4], 0
cmp dword [ebp - 0x5bc], edi
jb 0x41e211
mov eax, dword [ebp - 0x5d0]
push eax
call fcn.004b29fa
add esp, 4
xor ecx, ecx
mov word [ebp - 0x5d0], cx
mov ebx, 7
lea ecx, [ebp - 0x580]
mov dword [ebp - 0x5bc], ebx
mov dword [ebp - 0x5c0], 0
call fcn.00433f10
mov byte [ebp - 4], 5
push 9
xor edx, edx
push str.SOFTWARE_
lea ecx, [ebp - 0x5b8]
mov dword [ebp - 0x580], reloc.OLEAUT32.dll_SysReAllocString
mov dword [ebp - 0x5a0], ebx
mov dword [ebp - 0x5a4], 0
mov word [ebp - 0x5b4], dx
call fcn.00401860
mov bl, 6
mov byte [ebp - 4], bl
lea eax, [esi + 0x164]
push eax
lea ecx, [ebp - 0x5b8]
push ecx
lea edx, [ebp - 0x5d4]
push edx
call fcn.0040a680
add esp, 0xc
mov byte [ebp - 4], 7
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x57c]
call fcn.00401750
mov byte [ebp - 4], bl
cmp dword [ebp - 0x5bc], edi
jb 0x41e2c3
mov eax, dword [ebp - 0x5d0]
push eax
call fcn.004b29fa
add esp, 4
xor ecx, ecx
mov dword [ebp - 0x5bc], 7
mov dword [ebp - 0x5c0], 0
mov word [ebp - 0x5d0], cx
mov byte [ebp - 4], 5
cmp dword [ebp - 0x5a0], edi
jb 0x41e2fb
mov edx, dword [ebp - 0x5b4]
push edx
call fcn.004b29fa
add esp, 4
push 7
xor eax, eax
push str.Version
lea ecx, [ebp - 0x560]
mov dword [ebp - 0x5a0], 7
mov dword [ebp - 0x5a4], 0
mov word [ebp - 0x5b4], ax
mov dword [ebp - 0x534], 1
call fcn.00401860
lea ebx, [esi + 0xbc]
mov dword [ebp - 0x58c], ebx
cmp dword [ebx + 0x18], edi
jb 0x41e34a
mov eax, dword [ebx + 4]
jmp 0x41e34d
lea eax, [ebx + 4]
mov ecx, dword [ebx + 0x14]
lea eax, [eax + ecx*2]
push ebx
push eax
lea ecx, [ebp - 0x5f8]
call fcn.00406e60
cmp dword [ebx + 0x18], edi
jb 0x41e36a
mov eax, dword [ebx + 4]
jmp 0x41e36d
lea eax, [ebx + 4]
push ebx
push eax
lea ecx, [ebp - 0x59c]
call fcn.00406e60
mov eax, dword [ebp - 0x58c]
mov ecx, dword [ebp - 0x5f4]
push eax
mov eax, dword [ebp - 0x598]
xor edx, edx
push ecx
mov ecx, dword [ebp - 0x59c]
mov word [ebp - 0x4cc], dx
mov edx, dword [ebp - 0x5f8]
push edx
push eax
push ecx
lea ecx, [ebp - 0x4d0]
mov dword [ebp - 0x4b8], 7
mov dword [ebp - 0x4bc], 0
call fcn.0041c1e0
mov byte [ebp - 4], 8
mov eax, dword [ebp - 0x4cc]
cmp dword [ebp - 0x4b8], edi
jae 0x41e3dd
lea eax, [ebp - 0x4cc]
push eax
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
xor ebx, ebx
mov dword [ebp - 0x53c], eax
cmp eax, ebx
jne 0x41e40b
push 0x4fbf34
lea edx, [ebp - 0x588]
push edx
mov dword [ebp - 0x588], 0x4e392c
call fcn.004b3137
lea ecx, [ebp - 0x580]
call fcn.00434640
push 0x206
lea ecx, [ebp - 0x216]
xor eax, eax
push ebx
push ecx
mov word [ebp - 0x218], ax
call fcn.004b32f0
add esp, 0xc
lea edx, [ebp - 0x594]
push edx
push 0x26
push ebx
mov dword [ebp - 0x594], ebx
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderLocation]
mov ecx, dword [ebp - 0x594]
lea eax, [ebp - 0x218]
push eax
push ecx
call dword [sym.imp.SHELL32.dll_SHGetPathFromIDListW]
mov edx, dword [ebp - 0x594]
push edx
call dword [sym.imp.ole32.dll_CoTaskMemFree]
xor eax, eax
mov word [ebp - 0x5b4], ax
lea eax, [ebp - 0x218]
mov dword [ebp - 0x5a0], 7
mov dword [ebp - 0x5a4], ebx
lea edx, [eax + 2]
lea ecx, [ecx]
mov cx, word [eax]
add eax, 2
cmp cx, bx
jne 0x41e490
sub eax, edx
sar eax, 1
push eax
lea ecx, [ebp - 0x218]
push ecx
lea ecx, [ebp - 0x5b8]
call fcn.00401860
mov byte [ebp - 4], 9
push 0x4e3448
lea edx, [ebp - 0x5b8]
push edx
lea eax, [ebp - 0x5f0]
push eax
call fcn.00401b00
mov byte [ebp - 4], 0xa
lea ecx, [esi + 0x148]
push ecx
push eax
lea edx, [ebp - 0x5d4]
push edx
call fcn.0040a680
mov byte [ebp - 4], 0xb
push 0x4e3448
push eax
lea eax, [ebp - 0x4ec]
push eax
call fcn.00401b00
add esp, 0x24
mov byte [ebp - 4], 0xd
cmp dword [ebp - 0x5bc], edi
jb 0x41e51a
mov ecx, dword [ebp - 0x5d0]
push ecx
call fcn.004b29fa
add esp, 4
xor edx, edx
mov dword [ebp - 0x5bc], 7
mov dword [ebp - 0x5c0], ebx
mov word [ebp - 0x5d0], dx
mov byte [ebp - 4], 0xe
cmp dword [ebp - 0x5d8], edi
jb 0x41e54e
mov eax, dword [ebp - 0x5ec]
push eax
call fcn.004b29fa
add esp, 4
xor ecx, ecx
mov dword [ebp - 0x5d8], 7
mov dword [ebp - 0x5dc], ebx
mov word [ebp - 0x5ec], cx
mov byte [ebp - 4], 0xf
cmp dword [ebp - 0x5a0], edi
jb 0x41e582
mov edx, dword [ebp - 0x5b4]
push edx
call fcn.004b29fa
add esp, 4
xor eax, eax
mov word [ebp - 0x5b4], ax
mov eax, dword [ebp - 0x4e8]
mov dword [ebp - 0x5a0], 7
mov dword [ebp - 0x5a4], ebx
cmp dword [ebp - 0x4d4], edi
jae 0x41e5af
lea eax, [ebp - 0x4e8]
push 0
push eax
push 0
call dword [sym.imp.SHELL32.dll_SHCreateDirectoryExW]
push str.Install.xml
lea ecx, [ebp - 0x4ec]
push ecx
lea edx, [ebp - 0x498]
push edx
call fcn.00401b00
mov byte [ebp - 4], 0x10
push 0x4e2a10
lea eax, [ebp - 0x4ec]
push eax
lea ecx, [ebp - 0x5f0]
push ecx
call fcn.00401b00
add esp, 0x18
mov byte [ebp - 4], 0x11
push 0xffffffffffffffff
lea ebx, [esi + 0xd8]
push 0
push eax
mov ecx, ebx
mov dword [ebp - 0x598], ebx
call fcn.00401750
mov byte [ebp - 4], 0x10
cmp dword [ebp - 0x5d8], edi
jb 0x41e628
mov edx, dword [ebp - 0x5ec]
push edx
call fcn.004b29fa
add esp, 4
xor eax, eax
xor ecx, ecx
mov dword [ebp - 0x5d8], 7
mov dword [ebp - 0x5dc], eax
mov word [ebp - 0x5ec], cx
mov edx, eax
inc eax
mov dword [ebp - 0x5f4], eax
cmp edx, 5
ja 0x41e6b7
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [ebp - 0x494]
cmp dword [ebp - 0x480], edi
jae 0x41e670
lea ecx, [ebp - 0x494]
cmp dword [esi + 0x10c], edi
jb 0x41e680
mov eax, dword [esi + 0xf8]
jmp 0x41e686
lea eax, [esi + 0xf8]
push 0
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
mov eax, dword [ebp - 0x494]
cmp dword [ebp - 0x480], edi
jae 0x41e6a4
lea eax, [ebp - 0x494]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x41e6c1
mov eax, dword [ebp - 0x5f4]
jmp 0x41e643
mov dword [ebp - 0x588], 0xffffffff
push 0xffffffffffffffff
push 0
lea eax, [ebp - 0x498]
push eax
lea ecx, [esi + 0xf4]
call fcn.00401750
xor esi, esi
lea esp, [esp]
mov ecx, esi
inc esi
cmp ecx, 5
ja 0x41e728
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
cmp dword [ebx + 0x18], edi
jb 0x41e6fd
mov eax, dword [ebx + 4]
jmp 0x41e700
lea eax, [ebx + 4]
push 0
push eax
push 0x4e2a10
call dword [sym.imp.KERNEL32.dll_CopyFileW]
cmp dword [ebx + 0x18], edi
jb 0x41e718
mov eax, dword [ebx + 4]
jmp 0x41e71b
lea eax, [ebx + 4]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x41e6e0
jmp 0x41e732
mov dword [ebp - 0x588], 0xffffffff
push str.Launcher.exe
lea edx, [ebp - 0x4ec]
push edx
lea eax, [ebp - 0x4b4]
push eax
call fcn.00401b00
add esp, 0xc
mov byte [ebp - 4], 0x12
mov ebx, dword [sym.imp.KERNEL32.dll_CopyFileW]
xor esi, esi
lea esp, [esp]
mov ecx, esi
inc esi
cmp ecx, 5
ja 0x41e7b2
push 0x3e8
call dword [sym.imp.KERNEL32.dll_Sleep]
mov eax, dword [ebp - 0x4b0]
cmp dword [ebp - 0x49c], edi
jae 0x41e787
lea eax, [ebp - 0x4b0]
push 0
push eax
push str.Launcher.exe
call ebx
mov eax, dword [ebp - 0x4b0]
cmp dword [ebp - 0x49c], edi
jae 0x41e7a5
lea eax, [ebp - 0x4b0]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x41e760
jmp 0x41e7bc
mov dword [ebp - 0x588], 0xffffffff
mov ebx, dword [ebp - 0x584]
mov ecx, ebx
call fcn.0041da80
lea ecx, [ebp - 0x47c]
call fcn.00433f10
mov byte [ebp - 4], 0x13
lea esi, [ebx + 0x84]
push esi
lea edx, [ebp - 0x5f0]
push str.SOFTWAREMicrosoftWindowsCurrentVersionUninstall_
push edx
mov dword [ebp - 0x47c], reloc.OLEAUT32.dll_SysReAllocString
call fcn.00401a30
add esp, 0xc
mov byte [ebp - 4], 0x14
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x478]
call fcn.00401750
mov byte [ebp - 4], 0x13
cmp dword [ebp - 0x5d8], edi
jb 0x41e82c
mov eax, dword [ebp - 0x5ec]
push eax
call fcn.004b29fa
add esp, 4
xor ecx, ecx
mov word [ebp - 0x5ec], cx
lea ecx, [ebp - 0x47c]
mov dword [ebp - 0x5d8], 7
mov dword [ebp - 0x5dc], 0
call fcn.00434640
push 0xb
push str.DisplayName
lea ecx, [ebp - 0x45c]
mov dword [ebp - 0x430], 1
call fcn.00401860
cmp dword [esi + 0x18], edi
jb 0x41e87a
mov esi, dword [esi + 4]
jmp 0x41e87d
add esi, 4
push esi
call dword [sym.imp.OLEAUT32.dll_SysReAllocString]
mov dword [ebp - 0x438], eax
test eax, eax
jne 0x41e8a9
push 0x4fbf34
lea edx, [ebp - 0x584]
push edx
mov dword [ebp - 0x584], 0x4e3c20
call fcn.004b3137
lea ecx, [ebp - 0x47c]
call fcn.00434640
xor eax, eax
push 0x206
push eax
lea ecx, [ebp - 0x41e]
push ecx
mov word [ebp - 0x420], ax
call fcn.004b32f0
add esp, 0xc
lea edx, [ebp - 0x420]
push edx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetCurrentDirectoryW]
push 0x4e3c1c
lea ecx, [ebp - 0x508]
call fcn.004019e0
mov byte [ebp - 4], 0x15
mov eax, dword [ebp - 0x598]
push 0xffffffffffffffff
push 0
push eax
lea ecx, [ebp - 0x508]
call fcn.00401500
push 0xe
push str.___s_uninstall
lea ecx, [ebp - 0x508]
call fcn.00401620
push 0xf
push str.UninstallString
lea ecx, [ebp - 0x45c]
call fcn.00401860
mov eax, dword [ebp - 0x504]
cmp dword [ebp - 0x4f0], edi
jae 0x41e946
lea eax, [ebp - 0x504]
mov esi, dword [sym.imp.OLEAUT32.dll_SysReAllocString]
push eax
call esi
mov dword [ebp - 0x438], eax
test eax, eax
jne 0x41e974
mov dword [ebp - 0x584], 0x4e3c20
push 0x4fbf34
lea ecx, [ebp - 0x584]
push ecx
call fcn.004b3137
lea ecx, [ebp - 0x47c]
call fcn.00434640
push 0xb
push str.DisplayIcon
lea ecx, [ebp - 0x45c]
call fcn.00401860
mov edx, dword [ebp - 0x598]
mov eax, edx
cmp dword [edx + 0x18], edi
jb 0x41e9a3
mov eax, dword [eax + 4]
jmp 0x41e9a6
add eax, 4
push eax
call esi
mov dword [ebp - 0x438], eax
test eax, eax
je 0x41e959
lea ecx, [ebp - 0x47c]
call fcn.00434640
push str.DisplayVersion
lea ecx, [ebp - 0x45c]
call fcn.00409f50
mov eax, dword [ebp - 0x58c]
cmp dword [eax + 0x18], edi
jb 0x41e9de
mov eax, dword [eax + 4]
jmp 0x41e9e1
add eax, 4
push eax
call esi
mov dword [ebp - 0x438], eax
test eax, eax
jne 0x41ea09
push 0x4fbf34
lea edx, [ebp - 0x58c]
mov dword [ebp - 0x58c], 0x4e3c20
push edx
jmp 0x41e96f
lea ecx, [ebp - 0x47c]
call fcn.00434640
push str.Publisher
lea ecx, [ebp - 0x45c]
call fcn.00409f50
cmp dword [ebx + 0xb8], edi
jb 0x41ea34
mov eax, dword [ebx + 0xa4]
jmp 0x41ea3a
lea eax, [ebx + 0xa4]
push eax
call esi
mov dword [ebp - 0x438], eax
test eax, eax
jne 0x41ea62
push 0x4fbf34
lea eax, [ebp - 0x58c]
mov dword [ebp - 0x58c], 0x4e3c20
push eax
jmp 0x41e96f
lea ecx, [ebp - 0x47c]
call fcn.00434640
push str.InstallLocation
lea ecx, [ebp - 0x45c]
call fcn.00409f50
cmp dword [ebx + 0x1d0], edi
jb 0x41ea8d
mov eax, dword [ebx + 0x1bc]
jmp 0x41ea93
lea eax, [ebx + 0x1bc]
push eax
call esi
mov dword [ebp - 0x438], eax
test eax, eax
jne 0x41eaba
mov dword [ebp - 0x58c], 0x4e3c20
push 0x4fbf34
lea ecx, [ebp - 0x58c]
jmp 0x41e96e
lea ecx, [ebp - 0x47c]
call fcn.00434640
push str.EstimatedSize
lea ecx, [ebp - 0x45c]
call fcn.00409f50
mov ecx, ebx
mov dword [ebp - 0x430], 4
call fcn.0041bfb0
shl eax, 0xa
lea ecx, [ebp - 0x47c]
mov dword [ebp - 0x438], eax
call fcn.00434640
push str.NoModify
lea ecx, [ebp - 0x45c]
call fcn.00409f50
mov esi, 1
lea ecx, [ebp - 0x47c]
mov dword [ebp - 0x438], esi
call fcn.00434640
push str.NoRepair
lea ecx, [ebp - 0x45c]
call fcn.00409f50
lea ecx, [ebp - 0x47c]
mov dword [ebp - 0x438], esi
call fcn.00434640
mov byte [ebp - 4], 0x13
lea ecx, [ebp - 0x508]
call fcn.00490320
mov byte [ebp - 4], 0x12
lea ecx, [ebp - 0x47c]
call fcn.00402470
mov byte [ebp - 4], 0x10
lea ecx, [ebp - 0x4b4]
call fcn.00490320
mov byte [ebp - 4], 0xf
lea ecx, [ebp - 0x498]
call fcn.00490320
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x4ec]
call fcn.00490320
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x4d0]
call fcn.00490320
mov byte [ebp - 4], 0
lea ecx, [ebp - 0x580]
call fcn.00402470
mov dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x524]
call fcn.00490320
mov eax, dword [ebp - 0x588]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004b3057
mov esp, ebp
pop ebp
ret