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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x89c
mov eax, dword [0x4832f0]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
push edi
push 0
push 0x26
lea eax, [ebp - 0x230]
push eax
push 0
mov dword [ebp - 0x898], 0
call dword [sym.imp.SHELL32.dll_SHGetSpecialFolderPathW]
test eax, eax
je 0x41bfc8
mov edx, dword [0x475694]
mov ecx, dword [0x475690]
mov eax, dword [0x475698]
mov dword [ebp - 0x24], edx
mov dl, byte [0x4756a0]
mov dword [ebp - 0x28], ecx
mov ecx, dword [0x47569c]
mov dword [ebp - 0x20], eax
mov eax, dword [0x4756a4]
mov byte [ebp - 0x18], dl
mov edx, dword [0x4756ac]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [0x4756a8]
mov dword [ebp - 0x14], eax
mov ax, word [0x4756b0]
mov dword [ebp - 0xc], edx
mov dword [ebp - 0x10], ecx
mov word [ebp - 8], ax
lea edx, [ebp - 0x28]
mov esi, 0xd3e
mov edi, 0x11
mov cl, byte [edx]
imul esi, esi, 0x343fd
add esi, 0x269ec3
mov eax, esi
shr eax, 0x10
and eax, 0x7fff
movzx ebx, cl
sub cl, al
mov byte [edx], cl
inc edx
sub edi, 1
jne 0x41bdd8
lea esi, [ebp - 0x14]
mov ecx, 0xd3e
mov edi, 7
mov dl, byte [esi]
imul ecx, ecx, 0x343fd
add ecx, 0x269ec3
mov eax, ecx
imul ecx, ecx, 0x343fd
shr eax, 0x10
and eax, 0x7fff
movzx ebx, dl
sub dl, al
add ecx, 0x269ec3
mov byte [esi], dl
mov dl, byte [esi + 1]
mov eax, ecx
shr eax, 0x10
and eax, 0x7fff
movzx ebx, dl
sub dl, al
mov byte [esi + 1], dl
add esi, 2
sub edi, 1
jne 0x41be0a
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ecx, [ebp - 0x28]
push ecx
call edi
mov esi, eax
inc esi
cmp esi, 0x3fffffff
jg 0x41be97
lea eax, [esi + esi]
call fcn.00457700
mov ebx, esp
test ebx, ebx
je 0x41be97
push esi
push ebx
push 0xffffffffffffffff
lea eax, [ebp - 0x28]
xor edx, edx
push eax
push edx
push 3
mov word [ebx], dx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov esi, eax
neg esi
sbb esi, esi
and esi, ebx
jmp 0x41be99
xor esi, esi
lea ecx, [ebp - 0x14]
push ecx
call edi
mov edi, eax
inc edi
cmp edi, 0x3fffffff
jg 0x41bed8
lea eax, [edi + edi]
call fcn.00457700
mov ebx, esp
test ebx, ebx
je 0x41bed8
push edi
push ebx
push 0xffffffffffffffff
lea eax, [ebp - 0x14]
xor edx, edx
push eax
push edx
push 3
mov word [ebx], dx
call dword [sym.imp.KERNEL32.dll_MultiByteToWideChar]
mov edi, eax
neg edi
sbb edi, edi
and edi, ebx
jmp 0x41beda
xor edi, edi
push esi
mov esi, dword [sym.imp.SHLWAPI.dll_PathAppendW]
lea ecx, [ebp - 0x230]
push ecx
call esi
mov ebx, dword [sym.imp.SHLWAPI.dll_PathCombineW]
push 0x4755e8
lea edx, [ebp - 0x230]
push edx
lea eax, [ebp - 0x640]
push eax
call ebx
lea ecx, [ebp - 0x890]
push ecx
lea edx, [ebp - 0x640]
push edx
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x894], eax
cmp eax, 0xffffffff
je 0x41bfc2
jmp 0x41bf30
test byte [ebp - 0x890], 0x10
je 0x41bf91
cmp word [ebp - 0x864], 0x2e
jne 0x41bf5f
mov ax, word [ebp - 0x862]
test ax, ax
je 0x41bf91
cmp ax, 0x2e
jne 0x41bf5f
cmp word [ebp - 0x860], 0
je 0x41bf91
lea eax, [ebp - 0x864]
push eax
lea ecx, [ebp - 0x230]
push ecx
lea edx, [ebp - 0x438]
push edx
call ebx
push edi
lea eax, [ebp - 0x438]
push eax
call esi
lea ecx, [ebp - 0x438]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x41bfab
mov eax, dword [ebp - 0x894]
lea edx, [ebp - 0x890]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x41bf30
jmp 0x41bfb5
mov dword [ebp - 0x898], 1
mov ecx, dword [ebp - 0x894]
push ecx
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [ebp - 0x898]
lea esp, [ebp - 0x8a8]
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 4]
xor ecx, ebp
call fcn.0044b6ee
mov esp, ebp
pop ebp
ret