Function at 0x435470
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x56fc62
mov eax, dword fs:[0]
push eax
sub esp, 0x2a4
mov eax, dword [0x5cc6c0]
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 dword [ebp - 0x234], 0
lea esi, [ecx + 0x88]
call fcn.004062e0
mov ecx, eax
test ecx, ecx
je 0x435f19
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x25c], eax
push 0x5805f0
lea ecx, [ebp - 0x25c]
mov dword [ebp - 4], 0
call fcn.004088d0
test al, al
jne 0x4354f8
push 0
push 0x5805f0
lea ecx, [ebp - 0x25c]
call fcn.00406810
push 0x20
push str.product_info.inst_check.reg_item
lea ecx, [ebp - 0x298]
mov dword [ebp - 4], 1
mov dword [ebp - 0x288], 0
mov dword [ebp - 0x284], 0xf
mov byte [ebp - 0x298], 0
call fcn.00406f00
push 0xfde9
lea eax, [ebp - 0x25c]
mov byte [ebp - 4], 2
push eax
lea eax, [ebp - 0x298]
mov ecx, esi
push eax
lea eax, [ebp - 0x234]
push eax
call fcn.0047b430
mov edx, dword [ebp - 0x284]
mov byte [ebp - 4], 4
cmp edx, 0x10
jb 0x43558f
mov ecx, dword [ebp - 0x298]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x435585
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x435f23
push edx
push ecx
call fcn.004f9d5c
add esp, 8
mov dword [ebp - 0x288], 0
mov dword [ebp - 0x284], 0xf
mov byte [ebp - 0x298], 0
mov edx, dword [ebp - 0x25c]
or ebx, 0xffffffff
mov byte [ebp - 4], 5
add edx, 0xfffffff0
mov eax, ebx
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4355ce
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov dword [ebp - 0x230], 0
call fcn.004062e0
mov ecx, eax
test ecx, ecx
je 0x435f28
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x254], eax
push 0x5805f0
lea ecx, [ebp - 0x254]
mov byte [ebp - 4], 6
call fcn.004088d0
test al, al
jne 0x43561f
push 0
push 0x5805f0
lea ecx, [ebp - 0x254]
call fcn.00406810
push 0x25
push str.product_info.inst_check.reg_inst_name
lea ecx, [ebp - 0x280]
mov byte [ebp - 4], 7
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x26c], 0xf
mov byte [ebp - 0x280], 0
call fcn.00406f00
push 0xfde9
lea eax, [ebp - 0x254]
mov byte [ebp - 4], 8
push eax
lea eax, [ebp - 0x280]
mov ecx, esi
push eax
lea eax, [ebp - 0x230]
push eax
call fcn.0047b430
mov edx, dword [ebp - 0x26c]
mov byte [ebp - 4], 0xa
cmp edx, 0x10
jb 0x4356b3
mov ecx, dword [ebp - 0x280]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x4356a9
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x435f32
push edx
push ecx
call fcn.004f9d5c
add esp, 8
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x26c], 0xf
mov byte [ebp - 0x280], 0
mov edx, dword [ebp - 0x254]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x4356eb
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov byte [ebp - 4], 0xc
call fcn.004062e0
mov ecx, eax
test ecx, ecx
je 0x435f37
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x25c], eax
xorps xmm0, xmm0
mov dword [ebp - 0x224], 0
movq qword [ebp - 0x22c], xmm0
mov dword [ebp - 0x22c], 0
mov dword [ebp - 0x228], 0
mov dword [ebp - 0x224], 0
mov byte [ebp - 4], 0xe
call fcn.00435f60
test eax, eax
je 0x435979
call fcn.004062e0
mov ecx, eax
test ecx, ecx
je 0x435f41
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x254], eax
push 0x5805f0
lea ecx, [ebp - 0x254]
mov byte [ebp - 4], 0xf
call fcn.004088d0
test al, al
jne 0x435797
push 0
push 0x5805f0
lea ecx, [ebp - 0x254]
call fcn.00406810
push 0x23
push str.product_info.inst_check.main_exe_64
lea ecx, [ebp - 0x280]
mov byte [ebp - 4], 0x10
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x26c], 0xf
mov byte [ebp - 0x280], 0
call fcn.00406f00
push 0xfde9
lea eax, [ebp - 0x254]
mov byte [ebp - 4], 0x11
push eax
lea eax, [ebp - 0x280]
mov ecx, esi
push eax
lea eax, [ebp - 0x268]
push eax
call fcn.0047b430
push eax
lea ecx, [ebp - 0x25c]
mov byte [ebp - 4], 0x12
call fcn.00408680
mov edx, dword [ebp - 0x268]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x43581a
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x26c]
mov byte [ebp - 4], 0x10
cmp edx, 0x10
jb 0x435858
mov ecx, dword [ebp - 0x280]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x43584e
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x435f4b
push edx
push ecx
call fcn.004f9d5c
add esp, 8
mov edx, dword [ebp - 0x254]
mov eax, ebx
mov dword [ebp - 0x270], 0
add edx, 0xfffffff0
mov dword [ebp - 0x26c], 0xf
mov byte [ebp - 0x280], 0
mov byte [ebp - 4], 0xe
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x435894
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x228]
mov dword [ebp - 0x264], 0x20219
mov dword [ebp - 0x260], reloc.OLEAUT32.dll_SysReAllocString
cmp dword [ebp - 0x224], eax
je 0x4358d4
mov dword [eax], 0x20219
mov dword [eax + 4], reloc.OLEAUT32.dll_SysReAllocString
mov eax, dword [ebp - 0x228]
add eax, 8
mov dword [ebp - 0x228], eax
jmp 0x4358ed
lea ecx, [ebp - 0x264]
push ecx
push eax
lea ecx, [ebp - 0x22c]
call fcn.0042fa30
mov eax, dword [ebp - 0x228]
mov dword [ebp - 0x264], 0x20119
mov dword [ebp - 0x260], reloc.OLEAUT32.dll_SysReAllocString
cmp dword [ebp - 0x224], eax
je 0x435927
mov dword [eax], 0x20119
mov dword [eax + 4], reloc.OLEAUT32.dll_SysReAllocString
mov eax, dword [ebp - 0x228]
add eax, 8
mov dword [ebp - 0x228], eax
jmp 0x435940
lea ecx, [ebp - 0x264]
push ecx
push eax
lea ecx, [ebp - 0x22c]
call fcn.0042fa30
mov eax, dword [ebp - 0x228]
mov dword [ebp - 0x264], 0x20119
mov dword [ebp - 0x260], SysReAllocString
cmp dword [ebp - 0x224], eax
je 0x435b48
mov dword [eax], 0x20119
mov dword [eax + 4], SysReAllocString
add dword [ebp - 0x228], 8
jmp 0x435b5b
call fcn.004062e0
mov ecx, eax
test ecx, ecx
je 0x435f50
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x254], eax
push 0x5805f0
lea ecx, [ebp - 0x254]
mov byte [ebp - 4], 0x13
call fcn.004088d0
test al, al
jne 0x4359c0
push 0
push 0x5805f0
lea ecx, [ebp - 0x254]
call fcn.00406810
push 0x23
push str.product_info.inst_check.main_exe_32
lea ecx, [ebp - 0x280]
mov byte [ebp - 4], 0x14
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x26c], 0xf
mov byte [ebp - 0x280], 0
call fcn.00406f00
push 0xfde9
lea eax, [ebp - 0x254]
mov byte [ebp - 4], 0x15
push eax
lea eax, [ebp - 0x280]
mov ecx, esi
push eax
lea eax, [ebp - 0x268]
push eax
call fcn.0047b430
push eax
lea ecx, [ebp - 0x25c]
mov byte [ebp - 4], 0x16
call fcn.00408680
mov edx, dword [ebp - 0x268]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x435a43
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x26c]
mov byte [ebp - 4], 0x14
cmp edx, 0x10
jb 0x435a81
mov ecx, dword [ebp - 0x280]
inc edx
mov eax, ecx
cmp edx, 0x1000
jb 0x435a77
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x435f5a
push edx
push ecx
call fcn.004f9d5c
add esp, 8
mov edx, dword [ebp - 0x254]
mov eax, ebx
mov dword [ebp - 0x270], 0
add edx, 0xfffffff0
mov dword [ebp - 0x26c], 0xf
mov byte [ebp - 0x280], 0
mov byte [ebp - 4], 0xe
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x435abd
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x228]
mov dword [ebp - 0x264], 0x20219
mov dword [ebp - 0x260], reloc.OLEAUT32.dll_SysReAllocString
cmp dword [ebp - 0x224], eax
je 0x435afd
mov dword [eax], 0x20219
mov dword [eax + 4], reloc.OLEAUT32.dll_SysReAllocString
mov eax, dword [ebp - 0x228]
add eax, 8
mov dword [ebp - 0x228], eax
jmp 0x435b16
lea ecx, [ebp - 0x264]
push ecx
push eax
lea ecx, [ebp - 0x22c]
call fcn.0042fa30
mov eax, dword [ebp - 0x228]
mov dword [ebp - 0x264], 0x20219
mov dword [ebp - 0x260], SysReAllocString
cmp dword [ebp - 0x224], eax
je 0x435b48
mov dword [eax], 0x20219
mov dword [eax + 4], SysReAllocString
add dword [ebp - 0x228], 8
jmp 0x435b5b
lea ecx, [ebp - 0x264]
push ecx
push eax
lea ecx, [ebp - 0x22c]
call fcn.0042fa30
mov ecx, dword [ebp - 0x22c]
mov eax, dword [ebp - 0x228]
mov esi, dword [ebp - 0x25c]
mov byte [ebp - 0x255], 0
mov dword [ebp - 0x268], ecx
mov dword [ebp - 0x260], eax
cmp ecx, eax
je 0x435e6e
mov edi, dword [ecx]
xor ebx, ebx
xorps xmm0, xmm0
mov dword [ebp - 0x284], 0
movq qword [ebp - 0x28c], xmm0
mov dword [ebp - 0x28c], ebx
mov dword [ebp - 0x288], ebx
mov dword [ebp - 0x284], ebx
lea eax, [ebp - 0x250]
mov dword [ebp - 0x250], ebx
push eax
push edi
push ebx
push dword [ebp - 0x234]
push dword [ecx + 4]
call dword [sym.imp.ADVAPI32.dll_RegOpenKeyExW]
test eax, eax
jne 0x435bed
mov ebx, dword [ebp - 0x250]
and edi, 0x300
mov dword [ebp - 0x28c], ebx
mov dword [ebp - 0x288], edi
mov byte [ebp - 4], 0x17
test eax, eax
jne 0x435df3
mov dword [ebp - 0x2a0], eax
mov word [ebp - 0x2b0], ax
mov eax, dword [ebp - 0x230]
mov edx, eax
mov dword [ebp - 0x29c], 7
lea edi, [edx + 2]
nop dword [eax + eax]
mov cx, word [edx]
add edx, 2
test cx, cx
jne 0x435c20
sub edx, edi
lea ecx, [ebp - 0x2b0]
sar edx, 1
push edx
push eax
call fcn.00406a80
xor eax, eax
mov byte [ebp - 4], 0x19
push eax
push 0x5805f0
lea ecx, [ebp - 0x280]
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x26c], 7
mov word [ebp - 0x280], ax
call fcn.00406a80
lea eax, [ebp - 0x2b0]
mov byte [ebp - 4], 0x1a
push eax
lea eax, [ebp - 0x280]
push eax
lea eax, [ebp - 0x24c]
push ebx
push eax
call fcn.0041b130
add esp, 0x10
mov edx, dword [ebp - 0x26c]
mov byte [ebp - 4], 0x1c
cmp edx, 8
jb 0x435cd4
mov ecx, dword [ebp - 0x280]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x435cca
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x435f23
push edx
push ecx
call fcn.004f9d5c
add esp, 8
xor eax, eax
mov dword [ebp - 0x270], 0
mov dword [ebp - 0x26c], 7
mov word [ebp - 0x280], ax
mov edx, dword [ebp - 0x29c]
mov byte [ebp - 4], 0x1d
cmp edx, 8
jb 0x435d35
mov ecx, dword [ebp - 0x2b0]
lea edx, [edx*2 + 2]
mov eax, ecx
cmp edx, 0x1000
jb 0x435d2b
mov ecx, dword [ecx - 4]
add edx, 0x23
sub eax, ecx
add eax, 0xfffffffc
cmp eax, 0x1f
ja 0x435f23
push edx
push ecx
call fcn.004f9d5c
add esp, 8
xor eax, eax
mov dword [ebp - 0x2a0], 0
cmp dword [ebp - 0x238], 8
lea edi, [ebp - 0x24c]
push 0x210
cmovae edi, dword [ebp - 0x24c]
push eax
mov word [ebp - 0x2b0], ax
mov dword [ebp - 0x254], eax
lea eax, [ebp - 0x220]
push eax
mov dword [ebp - 0x29c], 7
call fcn.0053efc0
add esp, 0xc
test edi, edi
je 0x435da8
xor eax, eax
cmp ax, word [edi]
je 0x435da8
test esi, esi
je 0x435dae
cmp ax, word [esi]
je 0x435dae
push esi
push edi
lea eax, [ebp - 0x220]
push eax
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
mov edi, eax
jmp 0x435dae
lea edi, [ebp - 0x220]
push edi
lea ecx, [ebp - 0x254]
call fcn.0040a2d0
push dword [ebp - 0x254]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
mov edx, dword [ebp - 0x254]
add edx, 0xfffffff0
test eax, eax
jne 0x435e33
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x435de8
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x24c]
call fcn.00406060
mov byte [ebp - 4], 0xe
test ebx, ebx
je 0x435e0c
push ebx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov dword [ebp - 0x28c], 0
mov ecx, dword [ebp - 0x268]
add ecx, 8
mov dword [ebp - 0x288], 0
mov dword [ebp - 0x268], ecx
cmp ecx, dword [ebp - 0x260]
jne 0x435b88
jmp 0x435e65
mov byte [ebp - 0x255], 1
or eax, 0xffffffff
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x435e4f
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
lea ecx, [ebp - 0x24c]
call fcn.00406060
test ebx, ebx
je 0x435e65
push ebx
call dword [sym.imp.ADVAPI32.dll_RegCloseKey]
mov ecx, dword [ebp - 0x22c]
or ebx, 0xffffffff
test ecx, ecx
je 0x435ea8
mov eax, dword [ebp - 0x224]
sub eax, ecx
sar eax, 3
push eax
push ecx
lea ecx, [ebp - 0x22c]
call fcn.0041ffb0
mov dword [ebp - 0x22c], 0
mov dword [ebp - 0x228], 0
mov dword [ebp - 0x224], 0
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x435ebf
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov edx, dword [ebp - 0x230]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x435edc
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x234]
add eax, 0xfffffff0
lock xadd dword [eax + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x435ef7
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
call dword [edx + 4]
mov al, byte [ebp - 0x255]
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.004fa004
mov esp, ebp
pop ebp
ret
push 0x80004005
call fcn.004061e0
call fcn.00542850
push 0x80004005
call fcn.004061e0
call fcn.00542850
push 0x80004005
call fcn.004061e0
push 0x80004005
call fcn.004061e0
call fcn.00542850
push 0x80004005
call fcn.004061e0
call fcn.00542850
int3