Function at 0x10030330
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 [0x100b0380]
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 0x1003058a
mov edx, dword [0x100a0b54]
mov ecx, dword [0x100a0b50]
mov eax, dword [0x100a0b58]
mov dword [ebp - 0x24], edx
mov dl, byte [0x100a0b60]
mov dword [ebp - 0x28], ecx
mov ecx, dword [0x100a0b5c]
mov dword [ebp - 0x20], eax
mov eax, dword [0x100a0b64]
mov byte [ebp - 0x18], dl
mov edx, dword [0x100a0b6c]
mov dword [ebp - 0x1c], ecx
mov ecx, dword [0x100a0b68]
mov dword [ebp - 0x14], eax
mov ax, word [0x100a0b70]
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 0x100303c8
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 0x100303fa
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenA]
lea ecx, [ebp - 0x28]
push ecx
call edi
mov esi, eax
inc esi
cmp esi, 0x3fffffff
jle 0x1003045d
xor ebx, ebx
jmp 0x10030476
lea eax, [esi + esi]
call fcn.1007e4e0
mov eax, esp
push 3
push esi
lea edx, [ebp - 0x28]
push edx
push eax
call fcn.10035c60
mov ebx, eax
lea eax, [ebp - 0x14]
push eax
call edi
mov esi, eax
inc esi
cmp esi, 0x3fffffff
jle 0x1003048b
xor edi, edi
jmp 0x100304a4
lea eax, [esi + esi]
call fcn.1007e4e0
mov eax, esp
push 3
push esi
lea ecx, [ebp - 0x14]
push ecx
push eax
call fcn.10035c60
mov edi, eax
mov esi, dword [sym.imp.SHLWAPI.dll_PathAppendW]
push ebx
lea edx, [ebp - 0x230]
push edx
call esi
mov ebx, dword [sym.imp.SHLWAPI.dll_PathCombineW]
push 0x100a0b74
lea eax, [ebp - 0x230]
push eax
lea ecx, [ebp - 0x640]
push ecx
call ebx
lea edx, [ebp - 0x890]
push edx
lea eax, [ebp - 0x640]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x894], eax
cmp eax, 0xffffffff
je 0x10030584
test byte [ebp - 0x890], 0x10
je 0x10030553
cmp word [ebp - 0x864], 0x2e
jne 0x10030521
mov ax, word [ebp - 0x862]
test ax, ax
je 0x10030553
cmp ax, 0x2e
jne 0x10030521
cmp word [ebp - 0x860], 0
je 0x10030553
lea ecx, [ebp - 0x864]
push ecx
lea edx, [ebp - 0x230]
push edx
lea eax, [ebp - 0x438]
push eax
call ebx
push edi
lea ecx, [ebp - 0x438]
push ecx
call esi
lea edx, [ebp - 0x438]
push edx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x1003056d
mov ecx, dword [ebp - 0x894]
lea eax, [ebp - 0x890]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x100304f2
jmp 0x10030577
mov dword [ebp - 0x898], 1
mov edx, dword [ebp - 0x894]
push edx
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.10079a05
mov esp, ebp
pop ebp
ret