Function at 0x46e9b0
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4dad95
mov eax, dword fs:[0]
push eax
sub esp, 0x18
push ebx
push esi
push edi
mov eax, dword [0x515080]
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 0x46f16b
mov eax, dword [edi]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e2514]
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 0x46f175
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e2514]
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 0x46ea5e
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 [0x4e2514]
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 0x46eaaa
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e2514]
mov ecx, edi
call esi
mov edi, dword [ebp + 0x10]
mov eax, dword [ebp - 0x14]
cmp dword [eax - 0xc], 0
je 0x46ebb0
mov ecx, dword [ebp + 0xc]
lea esi, [ebx + 0xf4]
push esi
lea eax, [ebp - 0x14]
push eax
call fcn.00461430
mov dword [ebx + 0x10c], eax
test eax, eax
je 0x46eadf
lea eax, [ebp - 0x14]
mov ecx, esi
push eax
call fcn.00409b90
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 0x46f17f
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e2514]
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 0x46eb33
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 [0x4e2514]
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 0x46eb80
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e2514]
mov ecx, edi
call esi
mov edi, dword [ebp + 0x10]
mov ecx, dword [ebp - 0x14]
cmp dword [ecx - 0xc], 0
je 0x46eb9b
or dword [ebx + 0xf0], 2
call fcn.0040e2c0
mov dword [ebx + 0x128], eax
mov dword [ebx + 0xec], 1
lea ecx, [ebx + 0xf4]
jmp 0x46f102
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 0x46f189
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e2514]
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 0x46ec04
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 [0x4e2514]
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 0x46ec5c
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e2514]
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 0x46f102
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 0x46f193
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e2514]
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 0x46ecc8
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 [0x4e2514]
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 0x46ed14
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e2514]
mov ecx, edi
call esi
mov edi, dword [ebp + 0x10]
mov eax, dword [ebp - 0x14]
cmp dword [eax - 0xc], 0
je 0x46ee56
mov ecx, dword [ebp + 0xc]
lea esi, [ebx + 0xf4]
push esi
lea eax, [ebp - 0x14]
push eax
call fcn.00461430
mov dword [ebx + 0x10c], eax
test eax, eax
je 0x46ed49
lea eax, [ebp - 0x14]
mov ecx, esi
push eax
call fcn.00409b90
push dword [esi]
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x46ed5f
mov ebx, 0xe0000034
jmp 0x46f127
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 0x46f19d
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e2514]
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 0x46edbd
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 [0x4e2514]
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 0x46ee0c
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e2514]
mov ecx, edi
call esi
mov edi, dword [ebp + 0x10]
mov eax, dword [ebx + 0xf4]
cmp dword [eax - 0xc], 0
je 0x46eba5
lea edx, [ebp - 0xd]
mov byte [ebp - 0xd], 0
lea ecx, [ebx + 0xf4]
call fcn.004828c0
test eax, eax
jne 0x46ee3b
cmp byte [ebp - 0xd], al
je 0x46eba5
mov eax, dword [ebx + 0x94]
shr eax, 0xd
test al, 1
jne 0x46eba5
mov ebx, 0xe0000026
jmp 0x46f127
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 0x46f1a7
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e2514]
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 0x46eeaa
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 [0x4e2514]
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 0x46eef9
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e2514]
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 0x46f102
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 0x46f1b1
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e2514]
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 0x46ef60
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 [0x4e2514]
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 0x46efaf
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e2514]
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 0x46f1bb
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e2514]
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 0x46f003
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 [0x4e2514]
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 0x46f052
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e2514]
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 0x46f1c5
mov eax, dword [eax]
mov esi, dword [eax + 0xc]
mov ecx, esi
call dword [0x4e2514]
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 0x46f0a6
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 [0x4e2514]
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 0x46f0f5
mov edi, dword [ecx]
push ecx
mov eax, dword [edi]
mov esi, dword [eax + 4]
mov ecx, esi
call dword [0x4e2514]
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 0x46f11d
mov eax, dword [ebx + 0xfc]
cmp dword [eax - 0xc], 0
jne 0x46f11d
mov ebx, 0xe0000014
jmp 0x46f127
push edi
mov ecx, ebx
call fcn.0046c160
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 0x46f155
mov edi, dword [eax]
push eax
mov edx, dword [edi]
mov esi, dword [edx + 4]
mov ecx, esi
call dword [0x4e2514]
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