Function at 0x421c4f
Capabilities:
Check if file exists
Enumerate files on windows
Get common file path
Get program files directory

Disassembly:
push ebp
lea ebp, [esp - 0xc18]
sub esp, 0xc98
mov eax, dword [0x4be8a0]
xor eax, ebp
mov dword [ebp + 0xc14], eax
mov eax, dword [ebp + 0xc20]
push ebx
push esi
push edi
mov dword [ebp - 0x74], eax
mov eax, dword [ebp + 0xc24]
mov esi, 0x208
xor edi, edi
push esi
mov dword [ebp - 0x6c], eax
lea eax, [ebp + 0xa0c]
push edi
push eax
mov dword [ebp - 0x7c], ecx
mov dword [ebp - 0x70], edi
call fcn.004670a0
mov ebx, dword [sym.imp.SHELL32.dll_SHGetFolderPathW]
add esp, 0xc
lea eax, [ebp + 0xa0c]
push eax
push edi
push edi
push 0x1a
push edi
call ebx
test eax, eax
jne 0x421ea9
push str.MicrosoftInternet_ExplorerQuick_LaunchUser_PinnedTaskBar_
lea eax, [ebp + 0xa0c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea eax, [ebp + 0xa0c]
push eax
call fcn.004673c7
lea eax, [ebp + eax*2 + 0xa0c]
mov dword [ebp - 0x80], eax
mov dword [esp], 0x20a
lea eax, [ebp + 0x800]
push edi
push eax
call fcn.004670a0
push esi
lea eax, [ebp + 0x3f0]
push edi
push eax
call fcn.004670a0
lea eax, [ebp + 0xa0c]
push eax
lea eax, [ebp + 0x3f0]
push eax
call fcn.004689b2
lea eax, [ebp + 0x3f0]
push 0x491454
push eax
call fcn.00468984
add esp, 0x28
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp + 0x3f0]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x78], eax
cmp eax, 0xffffffff
je 0x421ea9
lea eax, [ebp - 0x3c]
push eax
push dword [ebp - 0x80]
call fcn.004689b2
pop ecx
pop ecx
mov ecx, dword [ebp - 0x7c]
push 0x104
lea eax, [ebp + 0x800]
push eax
lea eax, [ebp + 0xa0c]
push eax
call fcn.004219dc
test eax, eax
je 0x421e58
lea eax, [ebp + 0x800]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
push dword [ebp - 0x74]
lea eax, [ebp + 0x800]
push eax
call fcn.00467c8a
pop ecx
pop ecx
test eax, eax
je 0x421e6f
push esi
lea eax, [ebp + 0x5f8]
push edi
push eax
call fcn.004670a0
add esp, 0xc
lea eax, [ebp + 0x5f8]
push eax
push edi
push edi
push 0x26
push edi
call ebx
test eax, eax
jne 0x421e58
lea eax, [ebp + 0x5f8]
push eax
call fcn.004673c7
push eax
lea eax, [ebp + 0x5f8]
push eax
lea eax, [ebp + 0x800]
push eax
call fcn.004688de
add esp, 0x10
test eax, eax
jne 0x421e58
push esi
lea eax, [ebp + 0x1e8]
push edi
push eax
call fcn.004670a0
push str.C:Program_Files
call fcn.004673c7
push eax
lea eax, [ebp + 0x800]
push eax
lea eax, [ebp + 0x1e8]
push 0x104
push eax
call fcn.00468721
lea eax, [ebp + 0x5f8]
push eax
call fcn.004673c7
lea eax, [ebp + eax*2 + 0x800]
push eax
lea eax, [ebp + 0x1e8]
push 0xf4
push eax
call fcn.00467a3e
push dword [ebp - 0x74]
lea eax, [ebp + 0x1e8]
push eax
call fcn.00467c8a
add esp, 0x38
test eax, eax
je 0x421e6f
lea eax, [ebp - 0x68]
push eax
push dword [ebp - 0x78]
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x421d47
jmp 0x421ea0
mov dword [ebp - 0x70], 1
cmp dword [ebp - 0x6c], edi
je 0x421ea0
lea eax, [ebp + 0xa0c]
push eax
call fcn.004673c7
push eax
lea eax, [ebp + 0xa0c]
push eax
push dword [ebp + 0xc28]
push dword [ebp - 0x6c]
call fcn.00468721
add esp, 0x14
push dword [ebp - 0x78]
call dword [sym.imp.KERNEL32.dll_FindClose]
mov ecx, dword [ebp + 0xc14]
mov eax, dword [ebp - 0x70]
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.0046711a
add ebp, 0xc18
leave
ret 0xc