Function at 0x46e350
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4da4e5
mov eax, dword fs:[0]
push eax
sub esp, 0x18
push ebx
push esi
push edi
mov eax, dword [0x514080]
xor eax, ebp
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov ebx, ecx
call fcn.004046f0
mov edi, eax
test edi, edi
je 0x46eb0b
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e1514]
mov ecx, edi
call esi
add eax, 0x10
mov dword [ebp - 0x14], eax
mov dword [ebp - 4], 1
mov edi, dword [ebp + 0x10]
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x1c], eax
call fcn.004046f0
mov dword [ebp - 0x20], eax
test eax, eax
je 0x46eb15
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e1514]
mov ecx, dword [ebp - 0x20]
call esi
add eax, 0x10
mov dword [ebp - 0x18], eax
mov byte [ebp - 4], 2
lea ecx, [ebp - 0x18]
push str.FilePath
call fcn.00403700
test al, al
jne 0x46e3fe
push 8
push str.FilePath
lea ecx, [ebp - 0x18]
call fcn.00403890
mov byte [ebp - 4], 3
lea eax, [ebp - 0x14]
mov esi, dword [ebp - 0x1c]
mov ecx, esi
push eax
lea eax, [ebp - 0x18]
push eax
push dword [ebp + 8]
call dword [0x4e1514]
mov ecx, edi
call esi
mov byte [ebp - 4], 1
or eax, 0xffffffff
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46e44a
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e1514]
mov ecx, edi
call esi
mov edi, dword [ebp + 0x10]
mov eax, dword [ebp - 0x14]
cmp dword [eax - 0xc], 0
je 0x46e550
mov ecx, dword [ebp + 0xc]
lea esi, [ebx + 0xf4]
push esi
lea eax, [ebp - 0x14]
push eax
call fcn.00460dd0
mov dword [ebx + 0x10c], eax
test eax, eax
je 0x46e47f
lea eax, [ebp - 0x14]
mov ecx, esi
push eax
call fcn.00409950
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x1c], eax
call fcn.004046f0
mov dword [ebp - 0x20], eax
test eax, eax
je 0x46eb1f
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e1514]
mov ecx, dword [ebp - 0x20]
call esi
add eax, 0x10
mov dword [ebp - 0x18], eax
mov byte [ebp - 4], 5
lea ecx, [ebp - 0x18]
push str.FileSize
call fcn.00403700
test al, al
jne 0x46e4d3
push 8
push str.FileSize
lea ecx, [ebp - 0x18]
call fcn.00403890
mov byte [ebp - 4], 6
lea eax, [ebp - 0x14]
mov esi, dword [ebp - 0x1c]
mov ecx, esi
push eax
lea eax, [ebp - 0x18]
push eax
mov eax, dword [ebp + 8]
push eax
call dword [0x4e1514]
mov ecx, edi
call esi
mov byte [ebp - 4], 1
or eax, 0xffffffff
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46e520
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e1514]
mov ecx, edi
call esi
mov edi, dword [ebp + 0x10]
mov ecx, dword [ebp - 0x14]
cmp dword [ecx - 0xc], 0
je 0x46e53b
or dword [ebx + 0xf0], 2
call fcn.0040e090
mov dword [ebx + 0x128], eax
mov dword [ebx + 0xec], 1
lea ecx, [ebx + 0xf4]
jmp 0x46eaa2
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x1c], eax
call fcn.004046f0
mov dword [ebp - 0x20], eax
test eax, eax
je 0x46eb29
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e1514]
mov ecx, dword [ebp - 0x20]
call esi
add eax, 0x10
mov dword [ebp - 0x18], eax
mov byte [ebp - 4], 8
lea ecx, [ebp - 0x18]
push str.RegistryKey
call fcn.00403700
test al, al
jne 0x46e5a4
push 0xb
push str.RegistryKey
lea ecx, [ebp - 0x18]
call fcn.00403890
mov byte [ebp - 4], 9
lea esi, [ebx + 0xf4]
mov ecx, dword [ebp - 0x1c]
lea eax, [ebp - 0x18]
push esi
push eax
mov eax, dword [ebp + 8]
push eax
mov dword [ebp - 0x20], esi
call dword [0x4e1514]
mov ecx, edi
call dword [ebp - 0x1c]
mov byte [ebp - 4], 1
or eax, 0xffffffff
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46e5fc
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e1514]
mov ecx, edi
call esi
mov edi, dword [ebp + 0x10]
lea esi, [ebx + 0xf4]
mov eax, dword [esi]
mov ecx, esi
mov dword [ebx + 0xec], 0
cmp dword [eax - 0xc], 0
jne 0x46eaa2
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x24], eax
call fcn.004046f0
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x46eb33
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e1514]
mov ecx, dword [ebp - 0x1c]
call esi
add eax, 0x10
mov dword [ebp - 0x18], eax
mov byte [ebp - 4], 0xb
lea ecx, [ebp - 0x18]
push str.CustomDetection
call fcn.00403700
test al, al
jne 0x46e668
push 0xf
push str.CustomDetection
lea ecx, [ebp - 0x18]
call fcn.00403890
mov byte [ebp - 4], 0xc
lea eax, [ebp - 0x14]
mov esi, dword [ebp - 0x24]
mov ecx, esi
push eax
lea eax, [ebp - 0x18]
push eax
push dword [ebp + 8]
call dword [0x4e1514]
mov ecx, edi
call esi
mov byte [ebp - 4], 1
or eax, 0xffffffff
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46e6b4
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e1514]
mov ecx, edi
call esi
mov edi, dword [ebp + 0x10]
mov eax, dword [ebp - 0x14]
cmp dword [eax - 0xc], 0
je 0x46e7f6
mov ecx, dword [ebp + 0xc]
lea esi, [ebx + 0xf4]
push esi
lea eax, [ebp - 0x14]
push eax
call fcn.00460dd0
mov dword [ebx + 0x10c], eax
test eax, eax
je 0x46e6e9
lea eax, [ebp - 0x14]
mov ecx, esi
push eax
call fcn.00409950
push dword [esi]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x46e6ff
mov ebx, 0xe0000034
jmp 0x46eac7
mov dword [ebx + 0xec], 3
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x20], eax
call fcn.004046f0
mov dword [ebp - 0x24], eax
test eax, eax
je 0x46eb3d
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e1514]
mov ecx, dword [ebp - 0x24]
call esi
add eax, 0x10
mov dword [ebp - 0x18], eax
mov byte [ebp - 4], 0xe
lea ecx, [ebp - 0x18]
push str.CustomDetectionParams
call fcn.00403700
test al, al
jne 0x46e75d
push 0x15
push str.CustomDetectionParams
lea ecx, [ebp - 0x18]
call fcn.00403890
mov byte [ebp - 4], 0xf
lea eax, [ebx + 0xf8]
mov esi, dword [ebp - 0x20]
mov ecx, esi
push eax
lea eax, [ebp - 0x18]
push eax
push dword [ebp + 8]
call dword [0x4e1514]
mov ecx, edi
call esi
mov byte [ebp - 4], 1
or eax, 0xffffffff
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46e7ac
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e1514]
mov ecx, edi
call esi
mov edi, dword [ebp + 0x10]
mov eax, dword [ebx + 0xf4]
cmp dword [eax - 0xc], 0
je 0x46e545
lea edx, [ebp - 0xd]
mov byte [ebp - 0xd], 0
lea ecx, [ebx + 0xf4]
call fcn.00482280
test eax, eax
jne 0x46e7db
cmp byte [ebp - 0xd], al
je 0x46e545
mov eax, dword [ebx + 0x94]
shr eax, 0xd
test al, 1
jne 0x46e545
mov ebx, 0xe0000026
jmp 0x46eac7
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x1c], eax
call fcn.004046f0
mov dword [ebp - 0x24], eax
test eax, eax
je 0x46eb47
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e1514]
mov ecx, dword [ebp - 0x24]
call esi
add eax, 0x10
mov dword [ebp - 0x18], eax
mov byte [ebp - 4], 0x11
lea ecx, [ebp - 0x18]
push str.AppIdName
call fcn.00403700
test al, al
jne 0x46e84a
push 9
push str.AppIdName
lea ecx, [ebp - 0x18]
call fcn.00403890
mov byte [ebp - 4], 0x12
lea eax, [ebx + 0xfc]
mov esi, dword [ebp - 0x1c]
mov ecx, esi
push eax
lea eax, [ebp - 0x18]
push eax
push dword [ebp + 8]
call dword [0x4e1514]
mov ecx, edi
call esi
mov byte [ebp - 4], 1
or eax, 0xffffffff
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46e899
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e1514]
mov ecx, edi
call esi
mov edi, dword [ebp + 0x10]
mov eax, dword [ebx + 0xfc]
mov ecx, dword [ebp - 0x20]
cmp dword [eax - 0xc], 0
je 0x46eaa2
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x1c], eax
call fcn.004046f0
mov dword [ebp - 0x24], eax
test eax, eax
je 0x46eb51
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e1514]
mov ecx, dword [ebp - 0x24]
call esi
add eax, 0x10
mov dword [ebp - 0x18], eax
mov byte [ebp - 4], 0x14
lea ecx, [ebp - 0x18]
push str.AppIdArch
call fcn.00403700
test al, al
jne 0x46e900
push 9
push str.AppIdArch
lea ecx, [ebp - 0x18]
call fcn.00403890
mov byte [ebp - 4], 0x15
lea eax, [ebx + 0x100]
mov esi, dword [ebp - 0x1c]
mov ecx, esi
push eax
lea eax, [ebp - 0x18]
push eax
push dword [ebp + 8]
call dword [0x4e1514]
mov ecx, edi
call esi
mov byte [ebp - 4], 1
or eax, 0xffffffff
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46e94f
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e1514]
mov ecx, edi
call esi
mov edi, dword [ebp + 0x10]
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x1c], eax
call fcn.004046f0
mov dword [ebp - 0x24], eax
test eax, eax
je 0x46eb5b
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e1514]
mov ecx, dword [ebp - 0x24]
call esi
add eax, 0x10
mov dword [ebp - 0x18], eax
mov byte [ebp - 4], 0x17
lea ecx, [ebp - 0x18]
push str.AppIdResourceId
call fcn.00403700
test al, al
jne 0x46e9a3
push 0xf
push str.AppIdResourceId
lea ecx, [ebp - 0x18]
call fcn.00403890
mov byte [ebp - 4], 0x18
lea eax, [ebx + 0x104]
mov esi, dword [ebp - 0x1c]
mov ecx, esi
push eax
lea eax, [ebp - 0x18]
push eax
push dword [ebp + 8]
call dword [0x4e1514]
mov ecx, edi
call esi
mov byte [ebp - 4], 1
or eax, 0xffffffff
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46e9f2
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e1514]
mov ecx, edi
call esi
mov edi, dword [ebp + 0x10]
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x1c], eax
call fcn.004046f0
mov dword [ebp - 0x24], eax
test eax, eax
je 0x46eb65
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e1514]
mov ecx, dword [ebp - 0x24]
call esi
add eax, 0x10
mov dword [ebp - 0x18], eax
mov byte [ebp - 4], 0x1a
lea ecx, [ebp - 0x18]
push str.AppIdPublisherId
call fcn.00403700
test al, al
jne 0x46ea46
push 0x10
push str.AppIdPublisherId
lea ecx, [ebp - 0x18]
call fcn.00403890
mov byte [ebp - 4], 0x1b
lea eax, [ebx + 0x108]
mov esi, dword [ebp - 0x1c]
mov ecx, esi
push eax
lea eax, [ebp - 0x18]
push eax
push dword [ebp + 8]
call dword [0x4e1514]
mov ecx, edi
call esi
mov byte [ebp - 4], 1
or eax, 0xffffffff
mov ecx, dword [ebp - 0x18]
add ecx, 0xfffffff0
lock xadd dword [ecx + 0xc], eax
dec eax
test eax, eax
jg 0x46ea95
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e1514]
mov ecx, edi
call esi
mov edi, dword [ebp + 0x10]
mov ecx, dword [ebp - 0x20]
mov dword [ebx + 0xec], 4
mov eax, dword [ecx]
cmp dword [eax - 0xc], 0
jne 0x46eabd
mov eax, dword [ebx + 0xfc]
cmp dword [eax - 0xc], 0
jne 0x46eabd
mov ebx, 0xe0000014
jmp 0x46eac7
push edi
mov ecx, ebx
call fcn.0046bb00
xor ebx, ebx
mov dword [ebp - 4], 0xffffffff
or ecx, 0xffffffff
mov eax, dword [ebp - 0x14]
add eax, 0xfffffff0
lock xadd dword [eax + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x46eaf5
mov edi, dword [eax]
push eax
mov edx, dword [edi]
mov esi, dword [edx + 4]
mov ecx, esi
call dword [0x4e1514]
mov ecx, edi
call esi
mov eax, ebx
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 0xc
push 0x80004005
call fcn.00402720
push 0x80004005
call fcn.00402720
push 0x80004005
call fcn.00402720
push 0x80004005
call fcn.00402720
push 0x80004005
call fcn.00402720
push 0x80004005
call fcn.00402720
push 0x80004005
call fcn.00402720
push 0x80004005
call fcn.00402720
push 0x80004005
call fcn.00402720
push 0x80004005
call fcn.00402720
int3