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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x512589
mov eax, dword fs:[0]
push eax
sub esp, 0xc4
mov eax, dword [0x55f2b4]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
lea edi, [ecx + 0xc8]
mov eax, SysReAllocString
mov ecx, dword [edi + 0x10]
sub eax, ecx
cmp eax, 0x11
jb 0x43a5b6
cmp dword [edi + 0x14], 8
mov eax, edi
jb 0x439da0
mov eax, dword [edi]
push 0x11
push str.SetupInstup.exe
push ecx
push eax
push ecx
push dword [ebp - 0x14]
lea ecx, [ebp - 0x44]
call fcn.0041ba50
mov dword [ebp - 4], 0
lea eax, [ebp - 0x44]
cmp dword [ebp - 0x30], 8
cmovae eax, dword [ebp - 0x44]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x43a590
test al, 0x10
jne 0x43a590
cmp dword [ebp - 0x30], 8
lea edx, [ebp - 0x44]
lea ecx, [ebp - 0x18]
cmovae edx, dword [ebp - 0x44]
call fcn.00462c90
mov cx, word [ebp - 0x18]
mov dx, word [ebp - 0x12]
mov si, word [ebp - 0x14]
mov ax, word [ebp - 0x16]
test cx, cx
jne 0x439e1a
test ax, ax
jne 0x439e1a
test si, si
jne 0x439e1a
test dx, dx
je 0x43a5bb
movzx ecx, cx
shl ecx, 0x10
movzx eax, ax
or ecx, eax
mov eax, 0x22
cmp ecx, 0xa0002
jb 0x43a430
ja 0x439e54
movzx ecx, si
shl ecx, 0x10
movzx eax, dx
or ecx, eax
mov eax, 0x22
cmp ecx, 0x8a10000
jb 0x43a430
mov ecx, dword [ebp - 0x34]
mov word [ebp - 0x14], ax
cmp ecx, 0x7ffffffe
je 0x43a5dd
cmp dword [ebp - 0x30], 8
lea eax, [ebp - 0x44]
push ecx
cmovae eax, dword [ebp - 0x44]
push eax
push 1
lea eax, [ebp - 0x14]
push eax
push ecx
push dword [ebp - 0x14]
lea ecx, [ebp - 0x74]
call fcn.0041ba50
push 0x1c
push str.___instop:update_setup__wait
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 1
call fcn.0041b860
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x5c], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x4c], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
push ecx
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 2
call fcn.00457750
mov byte [ebp - 4], 1
add esp, 4
mov edx, dword [ebp - 0x48]
mov esi, eax
cmp edx, 8
jb 0x439f0d
mov ecx, dword [ebp - 0x5c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x439f03
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43a5e2
push edx
push ecx
call fcn.004d06e3
add esp, 8
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x60]
cmp edx, 8
jb 0x439f4b
mov ecx, dword [ebp - 0x74]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x439f41
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43a5e2
push edx
push ecx
call fcn.004d06e3
add esp, 8
test esi, esi
jne 0x43a5e7
xorps xmm0, xmm0
mov dword [ebp - 0x1c], esi
lea ecx, [ebp - 0x2c]
movups xmmword [ebp - 0x2c], xmm0
call fcn.0041b530
mov esi, dword [ebp - 0x2c]
lea eax, [ebp - 0x2c]
mov dword [ebp - 0x1c], 3
mov ecx, eax
push dword [esi + 4]
push eax
call fcn.00417e00
mov dword [esi + 4], esi
lea eax, [ebp - 0x24]
mov dword [esi], esi
mov ecx, eax
mov dword [esi + 8], esi
mov esi, dword [ebp - 0x24]
mov dword [ebp - 0x28], 0
push dword [esi + 4]
push eax
call fcn.00417db0
mov dword [esi + 4], esi
mov dword [esi], esi
mov dword [esi + 8], esi
mov dword [ebp - 0x20], 0
mov byte [ebp - 4], 3
mov eax, SysReAllocString
mov ecx, dword [edi + 0x10]
sub eax, ecx
cmp eax, 0x10
jb 0x43a609
cmp dword [edi + 0x14], 8
mov eax, edi
jb 0x439fcd
mov eax, dword [edi]
push 0x10
push str.Setup_setup.ini
push ecx
push eax
push ecx
push dword [ebp - 0x14]
lea ecx, [ebp - 0x5c]
call fcn.0041ba50
lea eax, [ebp - 0x5c]
mov byte [ebp - 4], 4
push eax
lea ecx, [ebp - 0x2c]
call fcn.0045d060
test al, al
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x48]
sete al
mov byte [ebp - 0x11], al
cmp edx, 8
jb 0x43a03b
mov ecx, dword [ebp - 0x5c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x43a02e
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43a60e
push edx
push ecx
call fcn.004d06e3
mov al, byte [ebp - 0x11]
add esp, 8
test al, al
jne 0x43a613
push 6
xor eax, eax
mov dword [ebp - 0x94], 0
push str.Common
lea ecx, [ebp - 0xa4]
mov dword [ebp - 0x90], 7
mov word [ebp - 0xa4], ax
call fcn.00414320
lea eax, [ebp - 0xa4]
mov byte [ebp - 4], 5
push eax
lea ecx, [ebp - 0x2c]
call fcn.00460a90
mov esi, eax
mov dword [ebp - 0x64], 0
push 3
xor eax, eax
mov dword [ebp - 0x60], 7
push 0x54149c
lea ecx, [ebp - 0x74]
mov word [ebp - 0x74], ax
call fcn.00414320
mov byte [ebp - 4], 6
lea ecx, [ebp - 0x8c]
push 0x10
xor eax, eax
mov dword [ebp - 0x7c], 0
push str.NewDirectoryName
mov dword [ebp - 0x78], 7
mov word [ebp - 0x8c], ax
call fcn.00414320
lea eax, [ebp - 0x74]
mov byte [ebp - 4], 7
push eax
lea eax, [ebp - 0x8c]
mov ecx, esi
push eax
lea eax, [ebp - 0x5c]
push eax
call fcn.00460fb0
mov byte [ebp - 4], 9
mov edx, dword [ebp - 0x78]
cmp edx, 8
jb 0x43a132
mov ecx, dword [ebp - 0x8c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x43a128
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43a63b
push edx
push ecx
call fcn.004d06e3
add esp, 8
xor eax, eax
mov dword [ebp - 0x7c], 0
mov dword [ebp - 0x78], 7
mov word [ebp - 0x8c], ax
mov byte [ebp - 4], 0xa
mov edx, dword [ebp - 0x60]
cmp edx, 8
jb 0x43a187
mov ecx, dword [ebp - 0x74]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x43a17d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43a63b
push edx
push ecx
call fcn.004d06e3
add esp, 8
mov byte [ebp - 4], 0xb
mov edx, dword [ebp - 0x90]
cmp edx, 8
jb 0x43a1cb
mov ecx, dword [ebp - 0xa4]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x43a1c1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43a63b
push edx
push ecx
call fcn.004d06e3
add esp, 8
mov ecx, dword [edi + 0x10]
xor eax, eax
mov word [ebp - 0xa4], ax
mov eax, SysReAllocString
sub eax, ecx
mov dword [ebp - 0x94], 0
mov dword [ebp - 0x90], 7
cmp eax, 7
jb 0x43a640
cmp dword [edi + 0x14], 8
jb 0x43a203
mov edi, dword [edi]
push 7
push str.Setup_
push ecx
push edi
push ecx
push dword [ebp - 0x14]
lea ecx, [ebp - 0xd0]
call fcn.0041ba50
mov byte [ebp - 4], 0xc
lea eax, [ebp - 0x5c]
cmp dword [ebp - 0x48], 8
lea ecx, [ebp - 0xd0]
push dword [ebp - 0x4c]
cmovae eax, dword [ebp - 0x5c]
push eax
call fcn.0041b860
mov dword [ebp - 0x64], 0
xor ecx, ecx
mov dword [ebp - 0x60], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x74], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x64], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
push 0xb
push str.Instup.exe
lea ecx, [ebp - 0x74]
mov byte [ebp - 4], 0xd
call fcn.0041b860
xor ecx, ecx
movups xmm0, xmmword [eax]
movq xmm1, qword [eax + 0x10]
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
mov edx, dword [ebp - 0x30]
movq qword [ebp - 0x18], xmm1
movups xmmword [ebp - 0xb4], xmm0
cmp edx, 8
jb 0x43a2eb
mov ecx, dword [ebp - 0x44]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x43a2d5
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43a645
push edx
push ecx
call fcn.004d06e3
movups xmm0, xmmword [ebp - 0xb4]
add esp, 8
movq xmm1, qword [ebp - 0x18]
mov byte [ebp - 4], 0xc
mov edx, dword [ebp - 0x60]
movq qword [ebp - 0x34], xmm1
movups xmmword [ebp - 0x44], xmm0
cmp edx, 8
jb 0x43a332
mov ecx, dword [ebp - 0x74]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x43a328
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43a645
push edx
push ecx
call fcn.004d06e3
add esp, 8
xor eax, eax
mov byte [ebp - 4], 0xb
mov edx, dword [ebp - 0xbc]
mov dword [ebp - 0x64], 0
mov dword [ebp - 0x60], 7
mov word [ebp - 0x74], ax
cmp edx, 8
jb 0x43a38a
mov ecx, dword [ebp - 0xd0]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x43a380
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43a645
push edx
push ecx
call fcn.004d06e3
add esp, 8
cmp dword [ebp - 0x30], 8
lea eax, [ebp - 0x44]
cmovae eax, dword [ebp - 0x44]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x43a654
test al, 0x10
jne 0x43a654
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x48]
cmp edx, 8
jb 0x43a3eb
mov ecx, dword [ebp - 0x5c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x43a3e1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43a64a
push edx
push ecx
call fcn.004d06e3
add esp, 8
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x24]
push dword [eax + 4]
lea eax, [ebp - 0x24]
push eax
mov ecx, eax
call fcn.00417db0
push 0x40
push dword [ebp - 0x24]
call fcn.004d06e3
mov eax, dword [ebp - 0x2c]
add esp, 8
push dword [eax + 4]
lea eax, [ebp - 0x2c]
push eax
mov ecx, eax
call fcn.00417e00
push 0x38
push dword [ebp - 0x2c]
call fcn.004d06e3
add esp, 8
mov eax, 0x22
mov ecx, dword [ebp - 0x34]
mov word [ebp - 0x14], ax
cmp ecx, 0x7ffffffe
je 0x43a64f
cmp dword [ebp - 0x30], 8
lea eax, [ebp - 0x44]
push ecx
cmovae eax, dword [ebp - 0x44]
push eax
push 1
lea eax, [ebp - 0x14]
push eax
push ecx
push dword [ebp - 0x14]
lea ecx, [ebp - 0xd0]
call fcn.0041ba50
push 0x26
push str.___instop:update_vps_and_program__wait
lea ecx, [ebp - 0xd0]
mov byte [ebp - 4], 0xe
call fcn.0041b860
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x5c], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x4c], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
push ecx
lea ecx, [ebp - 0x5c]
mov byte [ebp - 4], 0xf
call fcn.00457750
mov byte [ebp - 4], 0xe
add esp, 4
mov edx, dword [ebp - 0x48]
mov esi, eax
cmp edx, 8
jb 0x43a4ef
mov ecx, dword [ebp - 0x5c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x43a4e5
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43a680
push edx
push ecx
call fcn.004d06e3
add esp, 8
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0xbc]
cmp edx, 8
jb 0x43a533
mov ecx, dword [ebp - 0xd0]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x43a529
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43a680
push edx
push ecx
call fcn.004d06e3
add esp, 8
test esi, esi
jne 0x43a685
mov edx, dword [ebp - 0x30]
cmp edx, 8
jb 0x43a575
mov ecx, dword [ebp - 0x44]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x43a56b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43a6a1
push edx
push ecx
call fcn.004d06e3
add esp, 8
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004d0675
mov esp, ebp
pop ebp
ret
lea ecx, [ebp - 0x44]
call fcn.004146e0
push eax
push str.Unable_to_find_file__ls_
push 2
lea ecx, [ebp - 0x2c]
call fcn.00416ba0
push 0x55c1ac
lea eax, [ebp - 0x2c]
push eax
call fcn.004e81cb
call fcn.00414310
push str.Unable_to_retrieve_a_version_of_the_installer_
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0x2c]
call fcn.00468e50
push 0x55c1ac
lea eax, [ebp - 0x2c]
push eax
call fcn.004e81cb
call fcn.00414310
call fcn.004ebf29
push esi
push str.Unable_to_update_installer_with_exit_code_0x_08lx_
lea ecx, [ebp - 0xb8]
call fcn.004140c0
push 0x55c1ac
lea eax, [ebp - 0xb8]
push eax
call fcn.004e81cb
call fcn.00414310
call fcn.004ebf29
push str.Unable_to_open_setup.ini_
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
lea ecx, [ebp - 0xb8]
call fcn.00468e50
push 0x55c1ac
lea eax, [ebp - 0xb8]
push eax
call fcn.004e81cb
call fcn.004ebf29
call fcn.00414310
call fcn.004ebf29
call fcn.004ebf29
call fcn.00414310
lea ecx, [ebp - 0x44]
call fcn.004146e0
push eax
push str.Unable_to_find_file__ls_
push 2
lea ecx, [ebp - 0xb8]
call fcn.00416ba0
push 0x55c1ac
lea eax, [ebp - 0xb8]
push eax
call fcn.004e81cb
call fcn.004ebf29
push esi
push str.Unable_to_update_installation_with_exit_code_0x_08lx_
lea ecx, [ebp - 0x2c]
call fcn.004140c0
push 0x55c1ac
lea eax, [ebp - 0x2c]
push eax
call fcn.004e81cb
call fcn.004ebf29
int3