Function at 0x40d039
Capabilities:
Check if file exists
Copy file
Create directory

Disassembly:
push 0x40
mov eax, 0x45eaee
call fcn.0043f2b0
mov eax, dword [ebp + 8]
mov dword [0x480f60], eax
xor edi, edi
push edi
push 0x102
call sub.msi.dll_MsiSetPropertyW
push 0x480f60
push 0x7fdf
push 0x40c4a0
call sub.msi.dll_MsiSetInternalUI
lea ecx, [ebp - 0x14]
call fcn.0040897a
mov dword [ebp - 4], edi
push dword [ebp + 0xc]
lea eax, [ebp - 0x14]
push eax
call fcn.0040c856
mov dword [ebp - 0x20], eax
push dword [ebp + 0xc]
lea eax, [ebp + 8]
push eax
call fcn.0040d563
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x30]
call fcn.004308e3
mov byte [ebp - 4], 2
mov byte [ebp - 4], 3
lea eax, [ebp - 0x1c]
push eax
call fcn.004187da
pop ecx
mov byte [ebp - 4], 4
push dword [eax]
lea eax, [ebp - 0x18]
push eax
call fcn.0040d563
mov byte [ebp - 4], 5
push eax
lea ecx, [ebp + 8]
call fcn.00401ada
mov byte [ebp - 4], 4
lea eax, [ebp - 0x18]
push eax
call fcn.00411bed
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x1c]
call fcn.00401b2a
push dword [ebp + 8]
lea eax, [ebp - 0x18]
push eax
call fcn.00418835
pop ecx
pop ecx
mov byte [ebp - 4], 6
push dword [eax]
lea eax, [ebp - 0x1c]
push eax
call fcn.0040d563
mov byte [ebp - 4], 7
push eax
lea ecx, [ebp + 8]
call fcn.00401ada
mov byte [ebp - 4], 6
lea eax, [ebp - 0x1c]
push eax
call fcn.00411bed
mov byte [ebp - 4], 3
lea ecx, [ebp - 0x18]
call fcn.00401b2a
push str.Downloaded_Installers
lea esi, [ebp + 8]
call fcn.0040d5a2
push dword [ebp + 8]
mov ebx, dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
call ebx
test eax, eax
jne 0x40d159
push edi
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
jne 0x40d159
call fcn.004092a4
push dword [ebp - 0x14]
lea esi, [ebp + 8]
call fcn.0040d5a2
push dword [ebp + 8]
call ebx
test eax, eax
jne 0x40d17b
push edi
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
test eax, eax
je 0x40d154
push str._setup.msi
lea esi, [ebp + 8]
call fcn.0040d5a2
push edi
push dword [ebp + 8]
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
je 0x40d154
mov dword [ebp - 4], 2
jmp 0x40d1e0
mov byte [ebp - 4], 1
call fcn.004308f9
xor esi, esi
cmp dword [ebp - 0x20], edi
jne 0x40d263
push dword [ebp + 0x10]
push dword [ebp + 8]
call sub.msi.dll_MsiOpenDatabaseW
mov esi, eax
push 0xa
lea ecx, [ebp - 0x4c]
call fcn.004364e0
mov byte [ebp - 4], 0xa
lea eax, [ebp + 0xc]
push eax
push 0x480fb8
call fcn.0040f4e6
mov byte [ebp - 4], 0xb
mov eax, dword [eax]
push edi
push eax
lea ecx, [ebp - 0x4c]
call fcn.00436586
mov ebx, eax
mov byte [ebp - 4], 0xa
lea ecx, [ebp + 0xc]
call fcn.00401b2a
cmp ebx, edi
je 0x40d257
push ecx
mov ecx, esp
mov dword [ebp + 0xc], esp
lea eax, [ebp - 0x14]
push eax
call fcn.004052fc
mov byte [ebp - 4], 0xc
mov byte [ebp - 4], 0xa
call fcn.0040cb1e
mov byte [ebp - 4], 1
lea ecx, [ebp - 0x4c]
call fcn.004365f7
lea eax, [ebp + 0xc]
push eax
push 0x480fb8
call fcn.0040f4e6
mov byte [ebp - 4], 0xd
push 0x4681e4
mov ecx, eax
call fcn.0040443b
mov ebx, eax
neg ebx
sbb bl, bl
inc bl
mov byte [ebp - 4], 1
lea ecx, [ebp + 0xc]
call fcn.00401b2a
test bl, bl
je 0x40d300
push ecx
mov ecx, esp
mov dword [ebp + 0x10], esp
push 0x468200
call fcn.004014ea
mov byte [ebp - 4], 0xe
lea eax, [ebp + 0xc]
push eax
mov byte [ebp - 4], 1
call fcn.00418a11
pop ecx
pop ecx
mov byte [ebp - 4], 0xf
mov eax, dword [ebp + 0xc]
cmp dword [eax - 0xc], edi
je 0x40d2f4
push str.__qn
lea ecx, [ebp + 0xc]
call fcn.004092d0
lea eax, [ebp + 0xc]
push eax
call fcn.00418611
pop ecx
mov dword [ebp + 0x10], eax
mov byte [ebp - 4], 0xf
cmp eax, edi
je 0x40d2f4
push eax
call dword [sym.imp.KERNEL32.dll_CloseHandle]
mov dword [ebp + 0x10], edi
mov byte [ebp - 4], 1
lea ecx, [ebp + 0xc]
call fcn.00401b2a
cmp esi, edi
je 0x40d36f
cmp esi, 0x103
je 0x40d36f
cmp esi, 0x642
je 0x40d393
cmp esi, 0x669
je 0x40d35c
cmp esi, 0xbc1
jbe 0x40d32c
cmp esi, 0xbc3
jbe 0x40d35c
mov eax, dword [0x480f64]
cmp eax, edi
je 0x40d346
mov dword [ebp - 0x24], eax
push 0x471688
lea eax, [ebp - 0x24]
push eax
call fcn.0043f646
cmp esi, edi
jle 0x40d356
and esi, 0xffff
or esi, 0x80070000
push esi
call fcn.00401761
push edi
push edi
push 0x8001
push dword [0x480fe8]
call dword [sym.imp.USER32.dll_PostThreadMessageW]
mov byte [ebp - 4], 0
lea eax, [ebp + 8]
push eax
call fcn.00411bed
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x14]
call fcn.00401b2a
xor eax, eax
inc eax
call fcn.0043f355
ret 0xc
mov byte [ebp - 4], 0
lea eax, [ebp + 8]
push eax
call fcn.00411bed
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x14]
call fcn.00401b2a
xor eax, eax
jmp 0x40d38b