Function at 0x43a6eb
Capabilities:
Check if file exists
Get file attributes

Disassembly:
push 0x3ac
mov eax, 0x5aa216
call fcn.00588aeb
mov dword [ebp - 0x364], ecx
mov eax, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
mov dword [ebp - 0x34c], eax
mov eax, dword [ebp + 0x10]
mov dword [ebp - 0x35c], eax
mov eax, dword [ebp + 0x18]
lea ecx, [ebp - 0x3b8]
mov dword [ebp - 0x370], esi
mov dword [ebp - 0x354], eax
call fcn.00472e6b
and dword [ebp - 4], 0
push esi
lea ecx, [ebp - 0x350]
call fcn.00405c1a
xor ebx, ebx
inc ebx
push esi
lea ecx, [ebp - 0x358]
mov dword [ebp - 0x340], ebx
mov byte [ebp - 4], bl
call fcn.00405c1a
lea ecx, [ebp - 0x338]
mov byte [ebp - 4], 2
call sym.SETUP.exe_public:_void___thiscall_CDeviceInfSection::constructor_void_
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
and dword [ebp - 0x360], 0
push esi
mov byte [ebp - 4], 3
call edi
cmp eax, 0xffffffff
je 0x43a7d5
push esi
call edi
test al, 0x10
je 0x43a7d5
push 0x5c
lea ecx, [ebp - 0x350]
mov dword [ebp - 0x360], ebx
call fcn.0041e001
lea eax, [ebp - 0x350]
push eax
call fcn.004080e0
lea ecx, [ebp - 0x350]
mov dword [esp], 0x5ca3a4
call fcn.00408133
lea eax, [ebp - 0x358]
push eax
call fcn.004080e0
lea ecx, [ebp - 0x358]
mov dword [esp], 0x5c9e78
call fcn.00408133
push esi
lea ecx, [ebp - 0x33c]
call fcn.00405c1a
mov eax, dword [ebp - 0x33c]
push 0x5c
mov esi, dword [eax - 0xc]
push eax
mov byte [ebp - 4], 4
call fcn.0058b1ea
pop ecx
pop ecx
test eax, eax
jne 0x43a801
or eax, 0xffffffff
jmp 0x43a809
sub eax, dword [ebp - 0x33c]
sar eax, 1
sub esi, eax
push esi
lea eax, [ebp - 0x344]
push eax
lea ecx, [ebp - 0x33c]
call fcn.0041cbb9
push eax
lea ecx, [ebp - 0x33c]
mov byte [ebp - 4], 5
call fcn.0040726a
mov ecx, dword [ebp - 0x344]
mov byte [ebp - 4], 4
lea ecx, [ecx - 0x10]
call fcn.0041c730
lea ecx, [ebp - 0x390]
call fcn.0046c48f
push 0x5c
push dword [ebp - 0x33c]
lea ecx, [ebp - 0x390]
mov byte [ebp - 4], 6
call fcn.0046d9ee
lea ecx, [ebp - 0x390]
xor esi, esi
call fcn.0046c815
test eax, eax
je 0x43a8bd
push esi
lea ecx, [ebp - 0x390]
call fcn.0046caa8
push eax
push 0x5bfebc
call fcn.0058b073
pop ecx
pop ecx
test eax, eax
je 0x43a8ad
push esi
lea ecx, [ebp - 0x390]
call fcn.0046caa8
push eax
push 0x5bfcec
call fcn.0058b073
pop ecx
pop ecx
test eax, eax
jne 0x43a8bd
lea ecx, [ebp - 0x390]
inc esi
call fcn.0046c815
cmp esi, eax
jb 0x43a873
push dword [ebp - 0x34c]
lea ecx, [ebp - 0x33c]
call fcn.0041ddd6
jmp 0x43a92b
lea eax, [ebp - 0x33c]
push eax
call fcn.004080e0
pop ecx
push esi
lea ecx, [ebp - 0x390]
call fcn.0046cb38
inc eax
push esi
lea ecx, [ebp - 0x390]
mov dword [ebp - 0x34c], eax
call fcn.0046caa8
test eax, eax
je 0x43a92a
push dword [ebp - 0x34c]
push eax
call fcn.0058b10d
pop ecx
pop ecx
test eax, eax
je 0x43a92a
push esi
lea ecx, [ebp - 0x390]
call fcn.0046caa8
push eax
lea ecx, [ebp - 0x33c]
call fcn.00408133
inc esi
lea ecx, [ebp - 0x390]
call fcn.0046c815
cmp esi, eax
jb 0x43a8d0
lea ecx, [ebp - 0x390]
mov byte [ebp - 4], 4
call fcn.0046c546
push dword [ebp - 0x33c]
push str.strTargetDirectory____1_s___n
push str.CInstallAction::CopyDirectory
push 4
call fcn.00423f75
add esp, 0x10
cmp dword [ebp - 0x360], 0
je 0x43a9f6
push dword [ebp - 0x33c]
call edi
cmp eax, 0xffffffff
je 0x43a989
push dword [ebp - 0x33c]
call edi
test al, 0x10
jne 0x43a99f
mov eax, dword [ebp - 0x33c]
push 0
mov ecx, dword [eax - 0xc]
inc ecx
push ecx
push eax
call fcn.00409465
add esp, 0xc
call fcn.00473832
mov esi, dword [eax + 4]
call fcn.00473832
mov edi, dword [eax + 4]
mov eax, dword [ebp - 0x358]
lea ecx, [esi + 0xcc]
mov ebx, dword [eax - 0xc]
mov dword [ebp - 0x34c], eax
call fcn.00412fee
movzx eax, ax
push eax
lea eax, [ebp - 0x338]
push eax
lea eax, [edi + 0xd0]
push eax
lea eax, [ebx + 1]
push eax
push dword [ebp - 0x34c]
call fcn.00411652
mov edi, dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
xor ebx, ebx
add esp, 0x14
inc ebx
push 0
push dword [ebp - 0x350]
lea ecx, [ebp - 0x3b8]
call fcn.00472f87
test eax, eax
je 0x43ae81
push dword [ebp - 0x350]
push str.findfile__1_s___succeeded._n
push str.CInstallAction::CopyDirectory
push 4
call fcn.00423f75
add esp, 0x10
jmp 0x43aa33
mov ebx, dword [ebp - 0x340]
push dword [ebp - 0x370]
lea ecx, [ebp - 0x344]
call fcn.00405c1a
lea ecx, [ebp - 0x3b8]
mov byte [ebp - 4], 7
call fcn.0047312d
lea ecx, [ebp - 0x3b8]
mov dword [ebp - 0x374], eax
call fcn.004734e3
test eax, eax
je 0x43aa85
mov ecx, dword [ebp - 0x344]
mov byte [ebp - 4], 4
lea ecx, [ecx - 0x10]
call fcn.0041c730
mov esi, dword [ebp - 0x340]
jmp 0x43ae67
push 0x5c
lea ecx, [ebp - 0x344]
call fcn.0041e001
mov esi, dword [ebp - 0x360]
test esi, esi
je 0x43aafc
lea eax, [ebp - 0x398]
push eax
lea ecx, [ebp - 0x3b8]
call fcn.004731f7
push eax
lea eax, [ebp - 0x34c]
push 0x5bef0c
push eax
mov byte [ebp - 4], 8
call fcn.00407a5b
add esp, 0xc
mov eax, dword [eax]
lea ecx, [ebp - 0x344]
push dword [eax - 0xc]
mov byte [ebp - 4], 9
push eax
call fcn.0040815c
mov ecx, dword [ebp - 0x34c]
lea ecx, [ecx - 0x10]
call fcn.0041c730
mov ecx, dword [ebp - 0x398]
mov byte [ebp - 4], 7
lea ecx, [ecx - 0x10]
call fcn.0041c730
mov eax, dword [ebp - 0x3b8]
push 0x10
lea ecx, [ebp - 0x3b8]
call dword [eax + 0x38]
test eax, eax
je 0x43ac43
lea eax, [ebp - 0x368]
push eax
lea ecx, [ebp - 0x3b8]
call fcn.004731f7
push dword [eax]
mov byte [ebp - 4], 0xa
push str.Directory___1_s__._n
push str.CInstallAction::CopyDirectory
push 4
call fcn.00423f75
mov ecx, dword [ebp - 0x368]
add esp, 0x10
lea ecx, [ecx - 0x10]
mov byte [ebp - 4], 7
call fcn.0041c730
lea ecx, [ebp - 0x338]
call sym.SETUP.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
test eax, eax
je 0x43ac10
lea ecx, [ebp - 0x338]
xor esi, esi
call sym.SETUP.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
test eax, eax
je 0x43ae4f
lea eax, [ebp - 0x394]
push eax
lea ecx, [ebp - 0x3b8]
call fcn.004731f7
push dword [eax]
lea ecx, [ebp - 0x338]
push esi
mov byte [ebp - 4], 0xb
call sym.SETUP.exe_public:_wchar_t_const____thiscall_CDeviceInfSection::GetValue_unsigned_long_int_
push eax
call fcn.0058b527
pop ecx
pop ecx
mov ecx, dword [ebp - 0x394]
test eax, eax
lea ecx, [ecx - 0x10]
setne bl
mov byte [ebp - 4], 7
call fcn.0041c730
test bl, bl
je 0x43abd7
lea ecx, [ebp - 0x338]
inc esi
call sym.SETUP.exe_public:_unsigned_long_int___thiscall_CDeviceInfSection::Count_void_
cmp esi, eax
jb 0x43ab7b
jmp 0x43ae4f
push dword [ebp - 0x354]
mov ecx, dword [ebp - 0x364]
push dword [ebp + 0x14]
push dword [ebp - 0x35c]
push dword [ebp - 0x33c]
push dword [ebp - 0x344]
call fcn.0043a6eb
mov esi, dword [ebp - 0x340]
and esi, eax
mov dword [ebp - 0x340], esi
jmp 0x43ae55
push dword [ebp - 0x354]
mov ecx, dword [ebp - 0x364]
push dword [ebp + 0x14]
push dword [ebp - 0x35c]
push dword [ebp - 0x33c]
push dword [ebp - 0x344]
call fcn.0043a6eb
and ebx, eax
mov dword [ebp - 0x340], ebx
jmp 0x43ae4f
mov eax, dword [ebp - 0x33c]
add eax, 0xfffffff0
push eax
call fcn.0040886a
add eax, 0x10
pop ecx
mov dword [ebp - 0x348], eax
mov byte [ebp - 4], 0xc
test esi, esi
je 0x43acaa
lea eax, [ebp - 0x348]
push eax
call fcn.004080e0
pop ecx
lea eax, [ebp - 0x378]
push eax
lea ecx, [ebp - 0x3b8]
call fcn.004731f7
mov eax, dword [eax]
lea ecx, [ebp - 0x348]
push dword [eax - 0xc]
mov byte [ebp - 4], 0xd
push eax
call fcn.0040815c
mov ecx, dword [ebp - 0x378]
mov byte [ebp - 4], 0xc
lea ecx, [ecx - 0x10]
call fcn.0041c730
lea eax, [ebp - 0x39c]
push eax
lea ecx, [ebp - 0x3b8]
call fcn.004731f7
push dword [eax]
mov esi, str.CInstallAction::CopyDirectory
push str.File___1_s__._n
push esi
push 4
mov byte [ebp - 4], 0xe
call fcn.00423f75
mov ecx, dword [ebp - 0x39c]
add esp, 0x10
lea ecx, [ecx - 0x10]
mov byte [ebp - 4], 0xc
call fcn.0041c730
push dword [ebp - 0x348]
call edi
cmp eax, 0xffffffff
je 0x43ad07
push 0x80
push dword [ebp - 0x348]
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
push dword [ebp - 0x344]
push str.strCopyFile___1_s__n
push esi
push 4
call fcn.00423f75
push dword [ebp - 0x348]
push str.strCopyFile___1_s__n
push esi
push 4
call fcn.00423f75
add esp, 0x20
push 0
push dword [ebp - 0x348]
push dword [ebp - 0x344]
call dword [sym.imp.KERNEL32.dll_CopyFileW]
and ebx, eax
mov dword [ebp - 0x340], ebx
jne 0x43ad65
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str.CopyFile_Error_0x_1_lx___n
push esi
push 4
call fcn.00423f75
add esp, 0x10
push dword [ebp - 0x348]
call edi
cmp eax, 0xffffffff
je 0x43ad83
push 0x80
push dword [ebp - 0x348]
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov eax, dword [ebp - 0x35c]
test eax, eax
je 0x43ae41
inc dword [eax]
mov ebx, dword [ebp - 0x354]
mov esi, dword [eax]
test ebx, ebx
je 0x43ae39
mov eax, dword [ebp + 0x14]
mov edx, eax
movzx ecx, ax
shr edx, 0x10
shr eax, 0x18
and edx, 0xff
movd xmm1, eax
cvtdq2pd xmm1, xmm1
movd xmm0, edx
cvtdq2pd xmm0, xmm0
push 0
subsd xmm1, xmm0
movd xmm0, ecx
cvtdq2pd xmm0, xmm0
mov ecx, ebx
divsd xmm1, xmm0
movd xmm0, esi
cvtdq2pd xmm0, xmm0
shr esi, 0x1f
addsd xmm0, qword [esi*8 + 0x5c51e0]
mulsd xmm1, xmm0
cvttsd2si eax, xmm1
add eax, edx
push eax
call fcn.00462b28
lea eax, [ebp - 0x36c]
push eax
mov ecx, ebx
call fcn.00461fcc
mov eax, dword [eax]
mov ecx, dword [ebp - 0x36c]
cmp dword [eax - 0xc], 0
lea ecx, [ecx - 0x10]
sete bl
call fcn.0041c730
test bl, bl
je 0x43ae39
push dword [ebp - 0x348]
mov ecx, dword [ebp - 0x354]
call fcn.00462971
push 5
call dword [sym.imp.KERNEL32.dll_Sleep]
mov ecx, dword [ebp - 0x348]
lea ecx, [ecx - 0x10]
call fcn.0041c730
mov esi, dword [ebp - 0x340]
mov ecx, dword [ebp - 0x344]
mov byte [ebp - 4], 4
lea ecx, [ecx - 0x10]
call fcn.0041c730
cmp dword [ebp - 0x374], 0
jne 0x43aa2d
lea ecx, [ebp - 0x3b8]
call fcn.00472f3b
jmp 0x43ae84
xor esi, esi
inc esi
mov ecx, dword [ebp - 0x33c]
lea ecx, [ecx - 0x10]
call fcn.0041c730
lea ecx, [ebp - 0x338]
mov byte [ebp - 4], 2
call sym.SETUP.exe_public_virtual:_void___thiscall_CDeviceInfSection::destructor_void_
mov ecx, dword [ebp - 0x358]
lea ecx, [ecx - 0x10]
call fcn.0041c730
mov ecx, dword [ebp - 0x350]
add ecx, 0xfffffff0
call fcn.0041c730
or dword [ebp - 4], 0xffffffff
lea ecx, [ebp - 0x3b8]
call fcn.00472e9b
mov eax, esi
call fcn.00588a9a
ret 0x14