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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x51248c
mov eax, dword fs:[0]
push eax
sub esp, 0xd4
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 0x4397bd
cmp dword [edi + 0x14], 8
mov eax, edi
jb 0x438e60
mov eax, dword [edi]
push 0x11
push str.SetupInstup.exe
push ecx
push eax
push ecx
push dword [ebp - 0x5c]
lea ecx, [ebp - 0x40]
call fcn.0041ba50
mov dword [ebp - 4], 0
lea eax, [ebp - 0x40]
cmp dword [ebp - 0x2c], 8
cmovae eax, dword [ebp - 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4397a0
test al, 0x10
jne 0x4397a0
cmp dword [ebp - 0x2c], 8
lea edx, [ebp - 0x40]
lea ecx, [ebp - 0x64]
cmovae edx, dword [ebp - 0x40]
call fcn.00462c90
mov cx, word [ebp - 0x64]
mov ax, word [ebp - 0x62]
mov dx, word [ebp - 0x5e]
test cx, cx
jne 0x438ed7
test ax, ax
jne 0x438ed7
cmp word [ebp - 0x60], ax
jne 0x438ed7
test dx, dx
je 0x4397c2
movzx esi, cx
shl esi, 0x10
movzx eax, ax
or esi, eax
mov eax, 0x22
mov dword [ebp - 0x5c], esi
cmp esi, 0xa0002
jb 0x439508
ja 0x438f15
movzx ecx, word [ebp - 0x60]
shl ecx, 0x10
movzx eax, dx
or ecx, eax
mov eax, 0x22
cmp ecx, 0x8a10000
jb 0x439508
mov ecx, dword [ebp - 0x30]
mov word [ebp - 0x14], ax
cmp ecx, 0x7ffffffe
je 0x4397e4
cmp dword [ebp - 0x2c], 8
lea eax, [ebp - 0x40]
push ecx
cmovae eax, dword [ebp - 0x40]
push eax
push 1
lea eax, [ebp - 0x14]
push eax
push ecx
push dword [ebp - 0x5c]
lea ecx, [ebp - 0x7c]
call fcn.0041ba50
push 0x1c
push str.___instop:repair_setup__wait
lea ecx, [ebp - 0x7c]
mov byte [ebp - 4], 1
call fcn.0041b860
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x58], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x48], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
push ecx
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 2
call fcn.00457750
mov byte [ebp - 4], 1
add esp, 4
mov edx, dword [ebp - 0x44]
mov esi, eax
cmp edx, 8
jb 0x438fce
mov ecx, dword [ebp - 0x58]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x438fc4
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4397e9
push edx
push ecx
call fcn.004d06e3
add esp, 8
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x68]
cmp edx, 8
jb 0x43900c
mov ecx, dword [ebp - 0x7c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x439002
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4397e9
push edx
push ecx
call fcn.004d06e3
add esp, 8
test esi, esi
jne 0x4397ee
xorps xmm0, xmm0
mov dword [ebp - 0x18], esi
lea ecx, [ebp - 0x28]
movups xmmword [ebp - 0x28], xmm0
call fcn.0041b530
mov esi, dword [ebp - 0x28]
lea eax, [ebp - 0x28]
mov dword [ebp - 0x18], 3
mov ecx, eax
push dword [esi + 4]
push eax
call fcn.00417e00
mov dword [esi + 4], esi
lea eax, [ebp - 0x20]
mov dword [esi], esi
mov ecx, eax
mov dword [esi + 8], esi
mov esi, dword [ebp - 0x20]
mov dword [ebp - 0x24], 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 - 0x1c], 0
mov byte [ebp - 4], 3
mov eax, SysReAllocString
mov ecx, dword [edi + 0x10]
sub eax, ecx
cmp eax, 0x10
jb 0x439810
cmp dword [edi + 0x14], 8
mov eax, edi
jb 0x43908e
mov eax, dword [edi]
push 0x10
push str.Setup_setup.ini
push ecx
push eax
push ecx
push dword [ebp - 0x5c]
lea ecx, [ebp - 0x58]
call fcn.0041ba50
lea eax, [ebp - 0x58]
mov byte [ebp - 4], 4
push eax
lea ecx, [ebp - 0x28]
call fcn.0045d060
test al, al
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x44]
sete al
mov byte [ebp - 0x13], al
cmp edx, 8
jb 0x4390fc
mov ecx, dword [ebp - 0x58]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4390ef
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x439815
push edx
push ecx
call fcn.004d06e3
mov al, byte [ebp - 0x13]
add esp, 8
test al, al
jne 0x43981a
push 6
xor eax, eax
mov dword [ebp - 0xb4], 0
push str.Common
lea ecx, [ebp - 0xc4]
mov dword [ebp - 0xb0], 7
mov word [ebp - 0xc4], ax
call fcn.00414320
lea eax, [ebp - 0xc4]
mov byte [ebp - 4], 5
push eax
lea ecx, [ebp - 0x28]
call fcn.00460a90
mov esi, eax
mov dword [ebp - 0x6c], 0
push 3
xor eax, eax
mov dword [ebp - 0x68], 7
push 0x54149c
lea ecx, [ebp - 0x7c]
mov word [ebp - 0x7c], ax
call fcn.00414320
mov byte [ebp - 4], 6
lea ecx, [ebp - 0xac]
push 0x10
xor eax, eax
mov dword [ebp - 0x9c], 0
push str.NewDirectoryName
mov dword [ebp - 0x98], 7
mov word [ebp - 0xac], ax
call fcn.00414320
lea eax, [ebp - 0x7c]
mov byte [ebp - 4], 7
push eax
lea eax, [ebp - 0xac]
mov ecx, esi
push eax
lea eax, [ebp - 0x58]
push eax
call fcn.00460fb0
mov byte [ebp - 4], 9
mov edx, dword [ebp - 0x98]
cmp edx, 8
jb 0x4391fc
mov ecx, dword [ebp - 0xac]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4391f2
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x439842
push edx
push ecx
call fcn.004d06e3
add esp, 8
xor eax, eax
mov dword [ebp - 0x9c], 0
mov dword [ebp - 0x98], 7
mov word [ebp - 0xac], ax
mov byte [ebp - 4], 0xa
mov edx, dword [ebp - 0x68]
cmp edx, 8
jb 0x439257
mov ecx, dword [ebp - 0x7c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x43924d
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x439842
push edx
push ecx
call fcn.004d06e3
add esp, 8
mov byte [ebp - 4], 0xb
mov edx, dword [ebp - 0xb0]
cmp edx, 8
jb 0x43929b
mov ecx, dword [ebp - 0xc4]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x439291
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x439842
push edx
push ecx
call fcn.004d06e3
add esp, 8
mov ecx, dword [edi + 0x10]
xor eax, eax
mov word [ebp - 0xc4], ax
mov eax, SysReAllocString
sub eax, ecx
mov dword [ebp - 0xb4], 0
mov dword [ebp - 0xb0], 7
cmp eax, 7
jb 0x439847
cmp dword [edi + 0x14], 8
mov eax, edi
jb 0x4392d5
mov eax, dword [edi]
push 7
push str.Setup_
push ecx
push eax
push ecx
push dword [ebp - 0x5c]
lea ecx, [ebp - 0x94]
call fcn.0041ba50
mov byte [ebp - 4], 0xc
lea eax, [ebp - 0x58]
cmp dword [ebp - 0x44], 8
lea ecx, [ebp - 0x94]
push dword [ebp - 0x48]
cmovae eax, dword [ebp - 0x58]
push eax
call fcn.0041b860
mov dword [ebp - 0x6c], 0
xor ecx, ecx
mov dword [ebp - 0x68], 0
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x7c], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x6c], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
push 0xb
push str.Instup.exe
lea ecx, [ebp - 0x7c]
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 - 0x2c]
movq qword [ebp - 0xe0], xmm1
movups xmmword [ebp - 0xd4], xmm0
cmp edx, 8
jb 0x4393c3
mov ecx, dword [ebp - 0x40]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4393aa
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43984c
push edx
push ecx
call fcn.004d06e3
movups xmm0, xmmword [ebp - 0xd4]
add esp, 8
movq xmm1, qword [ebp - 0xe0]
mov byte [ebp - 4], 0xc
mov edx, dword [ebp - 0x68]
movq qword [ebp - 0x30], xmm1
movups xmmword [ebp - 0x40], xmm0
cmp edx, 8
jb 0x43940a
mov ecx, dword [ebp - 0x7c]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x439400
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43984c
push edx
push ecx
call fcn.004d06e3
add esp, 8
xor eax, eax
mov byte [ebp - 4], 0xb
mov edx, dword [ebp - 0x80]
mov dword [ebp - 0x6c], 0
mov dword [ebp - 0x68], 7
mov word [ebp - 0x7c], ax
cmp edx, 8
jb 0x43945f
mov ecx, dword [ebp - 0x94]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x439455
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x43984c
push edx
push ecx
call fcn.004d06e3
add esp, 8
cmp dword [ebp - 0x2c], 8
lea eax, [ebp - 0x40]
cmovae eax, dword [ebp - 0x40]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x43985b
test al, 0x10
jne 0x43985b
mov byte [ebp - 4], 3
mov edx, dword [ebp - 0x44]
cmp edx, 8
jb 0x4394c0
mov ecx, dword [ebp - 0x58]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4394b6
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x439851
push edx
push ecx
call fcn.004d06e3
add esp, 8
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x20]
push dword [eax + 4]
lea eax, [ebp - 0x20]
push eax
mov ecx, eax
call fcn.00417db0
push 0x40
push dword [ebp - 0x20]
call fcn.004d06e3
mov eax, dword [ebp - 0x28]
add esp, 8
push dword [eax + 4]
lea eax, [ebp - 0x28]
push eax
mov ecx, eax
call fcn.00417e00
push 0x38
push dword [ebp - 0x28]
call fcn.004d06e3
mov esi, dword [ebp - 0x5c]
add esp, 8
mov eax, 0x22
mov ecx, dword [ebp - 0x30]
mov word [ebp - 0x14], ax
cmp ecx, 0x7ffffffe
je 0x439856
cmp dword [ebp - 0x2c], 8
lea eax, [ebp - 0x40]
push ecx
cmovae eax, dword [ebp - 0x40]
push eax
push 1
lea eax, [ebp - 0x14]
push eax
push ecx
push dword [ebp - 0x5c]
lea ecx, [ebp - 0x94]
call fcn.0041ba50
push 0x16
push str.___instop:repair__wait
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 0xe
call fcn.0041b860
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x58], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x48], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
push ecx
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 0xf
call fcn.00457750
mov byte [ebp - 4], 0xe
add esp, 4
mov edx, dword [ebp - 0x44]
mov dword [ebp - 0x5c], eax
cmp edx, 8
jb 0x4395c8
mov ecx, dword [ebp - 0x58]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4395be
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x439887
push edx
push ecx
call fcn.004d06e3
add esp, 8
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x80]
cmp edx, 8
jb 0x439609
mov ecx, dword [ebp - 0x94]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4395ff
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x439887
push edx
push ecx
call fcn.004d06e3
add esp, 8
mov eax, dword [ebp - 0x5c]
test eax, eax
jne 0x43988c
cmp esi, 0xa0002
jb 0x43963b
ja 0x43974b
movzx ecx, word [ebp - 0x60]
movzx eax, word [ebp - 0x5e]
shl ecx, 0x10
or ecx, eax
cmp ecx, 0x8a10000
jae 0x43974b
mov eax, 0x22
mov word [ebp - 0x14], ax
mov eax, dword [edi + 0x10]
cmp eax, 0x7ffffffe
je 0x4398a8
cmp dword [edi + 0x14], 8
jb 0x43965a
mov edi, dword [edi]
push eax
push edi
push 1
lea eax, [ebp - 0x14]
push eax
push ecx
push dword [ebp - 0x5c]
lea ecx, [ebp - 0x94]
call fcn.0041ba50
push 0x2f
push str.SetupNewInstup.exe___instop:copy_setup__wait
lea ecx, [ebp - 0x94]
mov byte [ebp - 4], 0x10
call fcn.0041b860
xor ecx, ecx
movups xmm0, xmmword [eax]
movups xmmword [ebp - 0x58], xmm0
movq xmm0, qword [eax + 0x10]
movq qword [ebp - 0x48], xmm0
mov dword [eax + 0x10], 0
mov dword [eax + 0x14], 7
mov word [eax], cx
push ecx
lea ecx, [ebp - 0x58]
mov byte [ebp - 4], 0x11
call fcn.00457750
mov byte [ebp - 4], 0x10
add esp, 4
mov edx, dword [ebp - 0x44]
mov esi, eax
cmp edx, 8
jb 0x4396fb
mov ecx, dword [ebp - 0x58]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x4396f1
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4398ad
push edx
push ecx
call fcn.004d06e3
add esp, 8
mov byte [ebp - 4], 0
mov edx, dword [ebp - 0x80]
cmp edx, 8
jb 0x43973c
mov ecx, dword [ebp - 0x94]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x439732
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4398ad
push edx
push ecx
call fcn.004d06e3
add esp, 8
test esi, esi
je 0x43974b
push esi
push str.Unable_to_copy_installer_with_exit_code_0x_08lx_
jmp 0x439892
mov edx, dword [ebp - 0x2c]
cmp edx, 8
jb 0x439785
mov ecx, dword [ebp - 0x40]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x43977b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x4398b2
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 - 0x40]
call fcn.004146e0
push eax
push str.Unable_to_find_file__ls_
push 2
lea ecx, [ebp - 0x28]
call fcn.00416ba0
jmp 0x43989a
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 - 0x28]
call fcn.00468e50
push 0x55c1ac
lea eax, [ebp - 0x28]
push eax
call fcn.004e81cb
call fcn.00414310
call fcn.004ebf29
push esi
push str.Unable_to_repair_installer_with_exit_code_0x_08lx_
lea ecx, [ebp - 0xd8]
call fcn.004140c0
push 0x55c1ac
lea eax, [ebp - 0xd8]
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 - 0xd8]
call fcn.00468e50
push 0x55c1ac
lea eax, [ebp - 0xd8]
push eax
call fcn.004e81cb
call fcn.004ebf29
call fcn.00414310
call fcn.004ebf29
call fcn.004ebf29
call fcn.00414310
lea ecx, [ebp - 0x40]
call fcn.004146e0
push eax
push str.Unable_to_find_file__ls_
push 2
lea ecx, [ebp - 0xd8]
call fcn.00416ba0
push 0x55c1ac
lea eax, [ebp - 0xd8]
push eax
call fcn.004e81cb
call fcn.004ebf29
push eax
push str.Unable_to_repair_installation_with_exit_code_0x_08lx_
lea ecx, [ebp - 0x28]
call fcn.004140c0
push 0x55c1ac
lea eax, [ebp - 0x28]
push eax
call fcn.004e81cb
call fcn.00414310
call fcn.004ebf29
call fcn.004ebf29
int3