Function at 0x46de00
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d9b55
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.00404710
mov edi, eax
test edi, edi
je 0x46e5bb
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.00404710
mov dword [ebp - 0x20], eax
test eax, eax
je 0x46e5c5
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.00403720
test al, al
jne 0x46deae
push 8
push str.FilePath
lea ecx, [ebp - 0x18]
call fcn.004038b0
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 0x46defa
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 0x46e000
mov ecx, dword [ebp + 0xc]
lea esi, [ebx + 0xf4]
push esi
lea eax, [ebp - 0x14]
push eax
call fcn.00460870
mov dword [ebx + 0x10c], eax
test eax, eax
je 0x46df2f
lea eax, [ebp - 0x14]
mov ecx, esi
push eax
call fcn.00409970
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x1c], eax
call fcn.00404710
mov dword [ebp - 0x20], eax
test eax, eax
je 0x46e5cf
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.00403720
test al, al
jne 0x46df83
push 8
push str.FileSize
lea ecx, [ebp - 0x18]
call fcn.004038b0
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 0x46dfd0
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 0x46dfeb
or dword [ebx + 0xf0], 2
call fcn.0040e0a0
mov dword [ebx + 0x128], eax
mov dword [ebx + 0xec], 1
lea ecx, [ebx + 0xf4]
jmp 0x46e552
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x1c], eax
call fcn.00404710
mov dword [ebp - 0x20], eax
test eax, eax
je 0x46e5d9
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.00403720
test al, al
jne 0x46e054
push 0xb
push str.RegistryKey
lea ecx, [ebp - 0x18]
call fcn.004038b0
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 0x46e0ac
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 0x46e552
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x24], eax
call fcn.00404710
mov dword [ebp - 0x1c], eax
test eax, eax
je 0x46e5e3
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.00403720
test al, al
jne 0x46e118
push 0xf
push str.CustomDetection
lea ecx, [ebp - 0x18]
call fcn.004038b0
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 0x46e164
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 0x46e2a6
mov ecx, dword [ebp + 0xc]
lea esi, [ebx + 0xf4]
push esi
lea eax, [ebp - 0x14]
push eax
call fcn.00460870
mov dword [ebx + 0x10c], eax
test eax, eax
je 0x46e199
lea eax, [ebp - 0x14]
mov ecx, esi
push eax
call fcn.00409970
push dword [esi]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x46e1af
mov ebx, 0xe0000034
jmp 0x46e577
mov dword [ebx + 0xec], 3
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x20], eax
call fcn.00404710
mov dword [ebp - 0x24], eax
test eax, eax
je 0x46e5ed
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.00403720
test al, al
jne 0x46e20d
push 0x15
push str.CustomDetectionParams
lea ecx, [ebp - 0x18]
call fcn.004038b0
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 0x46e25c
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 0x46dff5
lea edx, [ebp - 0xd]
mov byte [ebp - 0xd], 0
lea ecx, [ebx + 0xf4]
call fcn.00481d10
test eax, eax
jne 0x46e28b
cmp byte [ebp - 0xd], al
je 0x46dff5
mov eax, dword [ebx + 0x94]
shr eax, 0xd
test al, 1
jne 0x46dff5
mov ebx, 0xe0000026
jmp 0x46e577
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x1c], eax
call fcn.00404710
mov dword [ebp - 0x24], eax
test eax, eax
je 0x46e5f7
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.00403720
test al, al
jne 0x46e2fa
push 9
push str.AppIdName
lea ecx, [ebp - 0x18]
call fcn.004038b0
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 0x46e349
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 0x46e552
mov eax, dword [edi]
mov eax, dword [eax + 0x14]
mov dword [ebp - 0x1c], eax
call fcn.00404710
mov dword [ebp - 0x24], eax
test eax, eax
je 0x46e601
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.00403720
test al, al
jne 0x46e3b0
push 9
push str.AppIdArch
lea ecx, [ebp - 0x18]
call fcn.004038b0
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 0x46e3ff
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.00404710
mov dword [ebp - 0x24], eax
test eax, eax
je 0x46e60b
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.00403720
test al, al
jne 0x46e453
push 0xf
push str.AppIdResourceId
lea ecx, [ebp - 0x18]
call fcn.004038b0
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 0x46e4a2
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.00404710
mov dword [ebp - 0x24], eax
test eax, eax
je 0x46e615
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.00403720
test al, al
jne 0x46e4f6
push 0x10
push str.AppIdPublisherId
lea ecx, [ebp - 0x18]
call fcn.004038b0
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 0x46e545
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 0x46e56d
mov eax, dword [ebx + 0xfc]
cmp dword [eax - 0xc], 0
jne 0x46e56d
mov ebx, 0xe0000014
jmp 0x46e577
push edi
mov ecx, ebx
call fcn.0046b5b0
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 0x46e5a5
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.00402740
push 0x80004005
call fcn.00402740
push 0x80004005
call fcn.00402740
push 0x80004005
call fcn.00402740
push 0x80004005
call fcn.00402740
push 0x80004005
call fcn.00402740
push 0x80004005
call fcn.00402740
push 0x80004005
call fcn.00402740
push 0x80004005
call fcn.00402740
push 0x80004005
call fcn.00402740
int3