Function at 0x46fc90
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x18
mov eax, dword [0x56c260]
mov edx, dword [eax + 0xc]
push ebx
push esi
mov dword [ebp - 0xc], ecx
push edi
mov ecx, 0x56c260
call edx
mov edi, dword [ebp + 8]
mov esi, dword [edi]
mov ecx, dword [edi + 4]
add eax, 0x10
mov dword [ebp - 4], eax
sub ecx, esi
mov eax, 0x271a45a7
imul ecx
sar edx, 8
mov eax, edx
xor ebx, ebx
shr eax, 0x1f
add eax, edx
mov dword [ebp - 0x10], ebx
je 0x46feaf
mov dword [ebp - 8], ebx
lea ebx, [ebx]
xor ecx, ecx
lea eax, [ebx + esi]
test eax, eax
setne cl
test ecx, ecx
je 0x47000d
mov esi, dword [ebp - 0xc]
mov ecx, dword [esi + 0x24]
push eax
push ecx
call fcn.004fe94a
add esp, 8
test eax, eax
jne 0x46fe82
mov ecx, dword [edi]
mov eax, dword [ecx + ebx + 0x44]
add ecx, ebx
cmp eax, 1
jne 0x46fed7
lea eax, [ecx + 0x448]
lea esi, [eax + 2]
mov dx, word [eax]
add eax, 2
test dx, dx
jne 0x46fd24
sub eax, esi
sar eax, 1
jne 0x46fd44
mov dword [ecx + 0x488], 2
jmp 0x46fe82
lea edx, [ecx + 0xc8]
push edx
add ecx, 0x448
push ecx
call fcn.004fe94a
add esp, 8
test eax, eax
je 0x46fd91
mov eax, dword [edi]
lea esi, [ebx + eax]
push ecx
lea edx, [esi + 0x48c]
mov ecx, esp
push edx
call fcn.0042ad10
push ecx
lea eax, [esi + 0x448]
mov ecx, esp
push eax
call fcn.0042ad10
mov ecx, dword [ebp - 0xc]
call fcn.0046db30
mov dword [esi + 0x488], eax
jmp 0x46fd9e
mov ecx, dword [edi]
mov dword [ebx + ecx + 0x488], 0
mov edx, dword [edi]
cmp dword [ebx + edx + 0x488], 2
je 0x46fe82
mov eax, dword [0x56c260]
mov edx, dword [eax + 0xc]
mov ecx, 0x56c260
call edx
add eax, 0x10
mov dword [ebp + 8], eax
mov eax, dword [edi]
add eax, ebx
add eax, 0x148
push eax
call fcn.0045f340
mov eax, dword [eax + 0x1064]
push eax
lea ecx, [ebp + 8]
push str._s_sVerComp.dat
push ecx
call fcn.00428a30
add esp, 0x10
push 0x556338
push 0x53ef5c
lea ecx, [ebp + 8]
call fcn.00423850
push 0x556338
push 0x53d38c
lea ecx, [ebp + 8]
call fcn.00423850
push 0x556338
push 0x53d38c
lea ecx, [ebp + 8]
call fcn.00423850
call fcn.0045f340
cmp dword [eax + 0x10f8], 0
mov ebx, dword [ebp + 8]
jne 0x46fe53
push 1
push ecx
lea edx, [ebx - 0x10]
mov esi, esp
push edx
call fcn.00403b50
mov ecx, dword [ebp - 0xc]
add eax, 0x10
add esp, 4
mov dword [esi], eax
call fcn.0046ef00
test eax, eax
jne 0x46fe63
mov eax, dword [edi]
mov ecx, dword [ebp - 8]
mov dword [ecx + eax + 0x488], 2
lea eax, [ebx - 0x10]
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x46fe7f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, dword [ebp - 8]
mov esi, dword [edi]
mov ecx, dword [edi + 4]
inc dword [ebp - 0x10]
sub ecx, esi
mov eax, 0x271a45a7
imul ecx
sar edx, 8
mov ecx, edx
shr ecx, 0x1f
add ebx, 0x68c
add ecx, edx
mov dword [ebp - 8], ebx
cmp dword [ebp - 0x10], ecx
jb 0x46fce0
mov eax, dword [ebp - 4]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x46fece
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 4
cmp eax, 2
jne 0x46fe82
add ecx, 0x148
push ecx
add esi, 0x20
lea ecx, [ebp - 0x18]
push esi
push ecx
call fcn.00428550
add esp, 0xc
push eax
lea ecx, [ebp - 4]
call fcn.00423fc0
mov eax, dword [ebp - 0x18]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x46ff1b
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0x556338
push 0x53ef5c
lea ecx, [ebp - 4]
call fcn.00423850
push 0x556338
push 0x53d38c
lea ecx, [ebp - 4]
call fcn.00423850
mov eax, dword [ebp - 4]
mov esi, dword [eax - 0xc]
cmp esi, 1
jg 0x46ff5e
add eax, 0xfffffff0
push eax
call fcn.00403b50
lea esi, [eax + 0x10]
add esp, 4
mov dword [ebp - 0x14], esi
jmp 0x46ff96
mov ecx, dword [eax - 0x10]
test ecx, ecx
je 0x46ff70
mov edx, dword [ecx]
mov eax, dword [edx + 0x10]
call eax
test eax, eax
jne 0x46ff80
mov edx, dword [0x56c260]
mov eax, dword [edx + 0x10]
mov ecx, 0x56c260
call eax
mov ecx, dword [ebp - 4]
push eax
lea edx, [ecx + esi*2 - 2]
push 1
push edx
lea ecx, [ebp - 0x14]
call fcn.00403330
mov esi, dword [ebp - 0x14]
push 0x556338
push esi
call fcn.004fe94a
add esp, 8
test eax, eax
lea eax, [esi - 0x10]
setne byte [ebp + 0xb]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x46ffc6
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp byte [ebp + 0xb], 0
je 0x46ffdb
push 1
push 0x556338
lea ecx, [ebp - 4]
call fcn.004034c0
mov ecx, dword [ebp - 4]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x46fffb
mov edx, dword [edi]
mov dword [ebx + edx + 0x488], 1
jmp 0x46fe82
mov eax, dword [edi]
mov dword [ebx + eax + 0x488], 0
jmp 0x46fe82
push 0x80004005
call fcn.00404190
int3