Function at 0x4605c0
Capabilities:
Check if file exists

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x59eea2
mov eax, dword fs:[0]
push eax
sub esp, 0x44c
mov eax, dword [0x5e6468]
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
xor edi, edi
mov ebx, edx
mov esi, ecx
mov dword [ebp - 0x454], esi
mov dword [ebp - 0x440], edi
cmp ebx, edi
jne 0x460615
push 0x5c353c
call fcn.00426f30
mov eax, esi
jmp 0x4607e3
xor eax, eax
call fcn.004600f0
cmp dword [0x5f3c60], edi
jne 0x460633
push ebx
mov ecx, esi
call fcn.00426f30
mov eax, esi
jmp 0x4607e3
mov eax, dword [0x5f22b0]
mov edx, dword [eax + 0xc]
mov ecx, 0x5f22b0
call edx
add eax, 0x10
mov dword [ebp - 0x428], eax
mov dword [ebp - 4], edi
mov edi, edi
push 0x5f3a58
push ebx
xor edi, edi
call dword [sym.imp.SHLWAPI.dll_StrStrIW]
mov esi, eax
mov eax, dword [0x5f3c60]
mov dword [ebp - 0x424], eax
mov eax, dword [0x5f3e6c]
mov dword [ebp - 0x438], esi
test eax, eax
je 0x46068d
push 0x5f3c64
push ebx
call dword [sym.imp.SHLWAPI.dll_StrStrIW]
mov edi, eax
mov eax, dword [0x5f3e6c]
test esi, esi
jne 0x46069b
mov esi, edi
mov dword [ebp - 0x438], esi
jmp 0x4606ab
test edi, edi
je 0x4606b1
cmp edi, esi
jae 0x4606b1
mov esi, edi
mov dword [ebp - 0x438], edi
mov dword [ebp - 0x424], eax
test esi, esi
je 0x460c2c
mov ecx, esi
sub ecx, ebx
push 0x5f22b0
sar ecx, 1
push ecx
push ebx
lea ecx, [ebp - 0x444]
call fcn.00448530
mov byte [ebp - 4], 1
mov ebx, dword [ebp - 0x444]
mov eax, dword [ebx - 0xc]
push eax
push ebx
lea ecx, [ebp - 0x428]
call fcn.00427cf0
add ebx, 0xfffffff0
mov byte [ebp - 4], 0
lea edx, [ebx + 0xc]
or eax, 0xffffffff
lock xadd dword [edx], eax
dec eax
test eax, eax
jg 0x46070b
mov ecx, dword [ebx]
mov edx, dword [ecx]
mov eax, dword [edx + 4]
push ebx
call eax
mov ecx, dword [ebp - 0x424]
movzx eax, word [esi + ecx*2]
lea ebx, [esi + ecx*2]
test ax, ax
je 0x460798
cmp ax, 0x5c
je 0x46078c
cmp ax, 0x2f
je 0x460780
mov edx, ebx
sub edx, esi
push 0x5f22b0
sar edx, 1
push edx
push esi
lea ecx, [ebp - 0x44c]
call fcn.00448530
mov byte [ebp - 4], 2
mov esi, dword [ebp - 0x44c]
mov eax, dword [esi - 0xc]
push eax
push esi
lea ecx, [ebp - 0x428]
call fcn.00427cf0
add esi, 0xfffffff0
mov byte [ebp - 4], 0
lea eax, [esi + 0xc]
or ecx, 0xffffffff
lock xadd dword [eax], ecx
dec ecx
test ecx, ecx
jg 0x460c1f
mov ecx, dword [esi]
push esi
jmp 0x460c18
cmp ax, 0x5c
je 0x46078c
cmp ax, 0x2f
jne 0x4607ff
movzx eax, word [ebx + 2]
add ebx, 2
test ax, ax
jne 0x460780
push esi
lea ecx, [ebp - 0x428]
call fcn.00427070
mov esi, dword [ebp - 0x428]
add esi, 0xfffffff0
push esi
call fcn.00427bb0
mov edi, dword [ebp - 0x454]
add eax, 0x10
add esp, 4
mov dword [edi], eax
mov dword [ebp - 4], 0xffffffff
lea ecx, [esi + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4607e1
mov ecx, dword [esi]
mov eax, dword [ecx]
mov edx, dword [eax + 4]
push esi
call edx
mov eax, edi
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.0055e289
mov esp, ebp
pop ebp
ret
cmp word [ebx], 0
je 0x460798
mov eax, ebx
mov dword [ebp - 0x43c], 0
call fcn.00460300
mov edi, eax
mov ecx, edi
sub ecx, ebx
push 0x5f22b0
sar ecx, 1
push ecx
push ebx
lea ecx, [ebp - 0x430]
call fcn.00448530
xor edx, edx
push 0x206
push edx
lea eax, [ebp - 0x41e]
mov byte [ebp - 4], 3
push eax
mov word [ebp - 0x420], dx
call fcn.0055e2a0
mov eax, dword [ebp - 0x430]
add esp, 0xc
lea edx, [eax + 2]
jmp 0x460860
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x460860
sub eax, edx
sar eax, 1
je 0x4608af
mov ecx, dword [ebp - 0x430]
push ecx
push 0x5f3a58
lea edx, [ebp - 0x420]
push edx
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
test eax, eax
je 0x4608af
lea eax, [ebp - 0x420]
push eax
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
je 0x46094b
mov ebx, edi
mov dword [ebp - 0x43c], 1
mov edi, dword [sym.imp.SHLWAPI.dll_StrStrIW]
push 0x5f3a58
push ebx
xor esi, esi
call edi
mov dword [ebp - 0x424], eax
cmp dword [0x5f3e6c], esi
je 0x4608d7
push 0x5f3c64
push ebx
call edi
mov esi, eax
mov eax, dword [ebp - 0x424]
test eax, eax
je 0x4608e9
test esi, esi
je 0x4608ef
cmp esi, eax
jae 0x4608ef
mov dword [ebp - 0x424], esi
cmp dword [ebp - 0x43c], 0
mov dword [ebp - 0x42c], ebx
jne 0x460b5a
mov dword [ebp - 0x434], 0
lea esp, [esp]
movzx eax, word [ebx]
test ax, ax
je case.0x460944.9
mov ecx, dword [ebp - 0x424]
test ecx, ecx
je 0x46092e
cmp ebx, ecx
jae case.0x460944.9
movzx eax, ax
add eax, 0xfffffff7
cmp eax, 0x53
ja case.0x460944.11
movzx ecx, byte [eax + 0x460c50]
jmp dword [ecx*4 + 0x460c44]
lea ecx, [ebp - 0x420]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
je 0x4608af
mov edx, edi
sub edx, esi
push 0x5f22b0
sar edx, 1
push edx
push esi
lea ecx, [ebp - 0x450]
call fcn.00448530
mov byte [ebp - 4], 4
mov esi, dword [ebp - 0x450]
mov eax, dword [esi - 0xc]
push eax
push esi
lea ecx, [ebp - 0x428]
call fcn.00427cf0
lea eax, [esi - 0x10]
mov byte [ebp - 4], 3
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4609b2
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ebx, edi
jmp 0x460bf9
mov esi, dword [ebp - 0x434]
sar esi, 1
cmp dword [ebp - 0x42c], 0
jne 0x4609d2
test esi, esi
jne 0x460c32
mov edx, dword [0x5f22b0]
mov eax, dword [edx]
push 2
push esi
mov ecx, 0x5f22b0
call eax
test eax, eax
je 0x460c3c
lea edi, [eax + 0x10]
test esi, esi
jl 0x460c32
cmp esi, dword [edi - 8]
jg 0x460c32
mov edx, dword [ebp - 0x42c]
lea eax, [esi + esi]
push eax
push edx
push eax
xor ecx, ecx
mov dword [edi - 0xc], esi
push edi
mov word [eax + edi], cx
call fcn.0055e69c
xor eax, eax
push 0x206
push eax
lea ecx, [ebp - 0x216]
push ecx
mov word [ebp - 0x218], ax
call fcn.0055e2a0
mov eax, edi
add esp, 0x1c
lea edx, [eax + 2]
mov edi, edi
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x460a40
sub eax, edx
sar eax, 1
je 0x460a7d
push edi
push 0x5f3a58
lea edx, [ebp - 0x218]
push edx
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
test eax, eax
je 0x460a7d
lea eax, [ebp - 0x218]
push eax
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
test eax, eax
jne 0x460b71
lea eax, [edi - 0x10]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg case.0x460944.11
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
add dword [ebp - 0x434], 2
add ebx, 2
cmp ebx, dword [ebp - 0x424]
jne 0x460910
mov eax, dword [ebp - 0x42c]
mov ecx, ebx
sub ecx, eax
push 0x5f22b0
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x458]
call fcn.00448530
xor edx, edx
push 0x206
push edx
lea eax, [ebp - 0x216]
push eax
mov word [ebp - 0x218], dx
call fcn.0055e2a0
mov esi, dword [ebp - 0x458]
mov eax, esi
add esp, 0xc
lea edx, [eax + 2]
mov cx, word [eax]
add eax, 2
test cx, cx
jne 0x460af6
sub eax, edx
sar eax, 1
je 0x460b34
push esi
push 0x5f3a58
lea ecx, [ebp - 0x218]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathCombineW]
test eax, eax
je 0x460b34
lea edx, [ebp - 0x218]
push edx
call dword [sym.imp.SHLWAPI.dll_PathIsDirectoryW]
mov edi, 1
test eax, eax
jne 0x460b3a
mov edi, dword [ebp - 0x43c]
lea eax, [esi - 0x10]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x460b56
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test edi, edi
je case.0x460944.9
push 0xd
push str._UserProfile_
lea ecx, [ebp - 0x428]
call fcn.00427cf0
jmp 0x460bf9
lea eax, [edi - 0x10]
lea ecx, [eax + 0xc]
or edx, 0xffffffff
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x460b5a
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
push 0xd
push str._UserProfile_
lea ecx, [ebp - 0x428]
call fcn.00427cf0
jmp 0x460bf9
mov eax, dword [ebp - 0x438]
mov ecx, ebx
sub ecx, eax
push 0x5f22b0
sar ecx, 1
push ecx
push eax
lea ecx, [ebp - 0x440]
call fcn.00448530
mov byte [ebp - 4], 5
mov esi, dword [ebp - 0x440]
mov eax, dword [esi - 0xc]
push eax
push esi
lea ecx, [ebp - 0x428]
call fcn.00427cf0
lea eax, [esi - 0x10]
mov byte [ebp - 4], 3
lea edx, [eax + 0xc]
or ecx, 0xffffffff
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x460bf9
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0
mov eax, dword [ebp - 0x430]
add eax, 0xfffffff0
or edx, 0xffffffff
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x460c1f
mov ecx, dword [eax]
push eax
mov edx, dword [ecx]
mov eax, dword [edx + 4]
call eax
test ebx, ebx
jne 0x460650
jmp 0x4607a4
push ebx
jmp 0x460799
push 0x80070057
call fcn.00425c60
call fcn.00427b30
lea ecx, [ecx]
mov eax, dword [0xb900460b]
or dword [esi], eax
cdq
or al, byte [esi]
add byte [eax], al
add al, byte [edx]
add byte [edx], al
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [ecx]
add al, byte [eax]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [eax]
add al, byte [edx]
add byte [edx], al
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [eax]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [edx]
add al, byte [eax]
int3