Function at 0x404247
Capabilities:
Check if file exists
Enumerate files on windows
Enumerate files recursively
Get file attributes
Set file attributes

Disassembly:
push ebp
lea ebp, [esp - 0x1094]
mov eax, 0x1094
call fcn.0043d080
push 0xffffffffffffffff
push 0x44314e
mov eax, dword fs:[0]
push eax
sub esp, 0x38
mov eax, dword [0x4a3028]
xor eax, ebp
mov dword [ebp + 0x1090], eax
push ebx
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
mov dword [ebp - 0x20], ecx
xor ebx, ebx
lea ecx, [ebp + 0x109c]
mov dword [ebp - 4], ebx
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::Trim]
push eax
lea ecx, [ebp + 0x109c]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_2]
lea ecx, [ebp + 0x109c]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::MakeLower]
push eax
lea ecx, [ebp + 0x109c]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_2]
mov al, byte [ebp + 0x10a8]
cmp al, 0x95
je 0x4042d4
cmp al, 0x22
je 0x4042d4
cmp al, 8
je 0x4042d4
cmp al, 0xd
jne 0x4042f7
push ecx
lea eax, [ebp + 0x109c]
mov ecx, esp
mov dword [ebp - 0x40], esp
push eax
call dword [0x474b9c]
push dword [ebp - 0x20]
call fcn.004041ab
cmp al, bl
je 0x404819
push ebx
push dword [0x4a4b5c]
lea ecx, [ebp + 0x109c]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::Find_1]
cmp eax, ebx
jge 0x404819
mov eax, dword [ebp + 0x109c]
cmp dword [eax - 0xc], ebx
je 0x404819
lea eax, [ebp + 0x109c]
push eax
call dword [sym.imp.K9PCUhelper.dll_enum_PCO_ERROR_CODES___cdecl_DoesPathExists_class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t____const__]
pop ecx
test eax, eax
je 0x404819
lea ecx, [ebp - 0x10]
call dword [0x474bb4]
lea ecx, [ebp - 0x24]
call dword [0x474bb4]
push 0x250
lea eax, [ebp + 0xe40]
push ebx
push eax
mov byte [ebp - 4], 2
call sub.MSVCR90.dll_memset
push dword [ebp + 0x109c]
lea eax, [ebp - 0x24]
push 0x478af4
push eax
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::Format]
add esp, 0x18
lea eax, [ebp + 0xe40]
push eax
push dword [ebp - 0x24]
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x3c], eax
cmp eax, 0xffffffff
je 0x404807
mov eax, dword [ebp - 0x20]
mov al, byte [eax + 0x26e]
cmp al, 1
je 0x404807
mov esi, dword [sym.imp.MSVCR90.dll_wcscmp]
lea eax, [ebp + 0xe6c]
push 0x478b00
push eax
call esi
pop ecx
pop ecx
test eax, eax
je 0x4047e6
lea eax, [ebp + 0xe6c]
push 0x478b04
push eax
call esi
pop ecx
pop ecx
test eax, eax
je 0x4047e6
lea eax, [ebp + 0xe6c]
push eax
lea ecx, [ebp - 0x14]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 3
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::MakeLower]
push dword [ebp - 0x14]
lea eax, [ebp]
push eax
call fcn.00401051
lea eax, [ebp + 0x826]
push eax
lea ecx, [ebp - 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
lea ecx, [ebp - 0x18]
mov byte [ebp - 4], 4
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::MakeLower]
lea eax, [ebp + 0x109c]
push eax
lea ecx, [ebp - 0x1c]
call dword [0x474b9c]
lea eax, [ebp - 0x14]
push eax
lea eax, [ebp - 0x1c]
push eax
mov byte [ebp - 4], 5
call dword [sym.imp.K9PCUhelper.dll_enum_PCO_ERROR_CODES___cdecl_STPathAppend_class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t______class_ATL::CStringT_wchar_t__class_StrTraitMFC_DLL_wchar_t__class_ATL::ChTraitsCRT_wchar_t____const__]
pop ecx
pop ecx
lea ecx, [ebp - 0x1c]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::MakeLower]
lea eax, [ebp - 0x1c]
push eax
lea ecx, [ebp - 0x10]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::operator_2]
push ecx
lea eax, [ebp - 0x18]
mov ecx, esp
mov dword [ebp - 0x30], esp
push eax
call dword [0x474b9c]
call fcn.00404121
pop ecx
cmp al, bl
je 0x4044b4
push str..lnk
lea ecx, [ebp - 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CompareNoCase]
test eax, eax
jne 0x4047c7
mov al, byte [ebp + 0x10a8]
cmp al, bl
je 0x4044b4
cmp al, 0x8d
je 0x4044b4
cmp al, 0xa1
je 0x4044b4
cmp al, 0xa0
je 0x4044b4
cmp al, 0x9f
je 0x4044b4
cmp al, 0x9e
je 0x4044b4
cmp al, 0xa7
je 0x4044b4
cmp al, 0xac
jne 0x4047c7
mov edi, 0x4a4ce8
xor esi, esi
push dword [ebp - 0x14]
mov ecx, edi
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::Compare]
test eax, eax
je 0x4047c7
add esi, 4
add edi, 4
cmp esi, 0x18
jb 0x4044bb
mov al, byte [ebp + 0x10a8]
cmp al, 0x1a
je 0x4044f3
cmp al, 0x90
je 0x4044f3
cmp al, 0x3c
je 0x4044f3
cmp al, 0x99
jne 0x4046e2
push ebx
push str.ig.gmodules
lea ecx, [ebp - 0x10]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::Find_1]
push ebx
push str.doubleclick
lea ecx, [ebp - 0x10]
mov esi, eax
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::Find_1]
push ebx
push str.google
lea ecx, [ebp - 0x10]
mov edi, eax
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::Find_1]
cmp esi, ebx
jg 0x4047c7
cmp edi, ebx
jg 0x4047c7
cmp eax, ebx
jg 0x4047c7
cmp byte [ebp + 0x10a8], 0x1a
je 0x404552
cmp byte [ebp + 0x10a8], 0x90
jne 0x4046ba
push ecx
lea eax, [ebp - 0x10]
mov ecx, esp
mov dword [ebp - 0x30], esp
push eax
call dword [0x474b9c]
call fcn.00405015
cmp al, bl
je 0x4046ba
push ebx
push 0x478fa4
lea ecx, [ebp - 0x10]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::Find_1]
push ebx
push 0x478fa8
lea ecx, [ebp - 0x10]
mov esi, eax
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::Find_1]
cmp esi, 0xffffffff
jne 0x4046ba
cmp eax, ebx
jl 0x4046ba
push ecx
mov ecx, esp
mov dword [ebp - 0x30], esp
mov edi, 0x479624
push edi
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
push ecx
mov byte [ebp - 4], 6
lea eax, [ebp - 0x10]
mov ecx, esp
mov dword [ebp - 0x38], esp
push eax
call dword [0x474b9c]
lea eax, [ebp - 0x28]
push eax
mov byte [ebp - 4], 5
call fcn.0042a8fc
push ecx
mov byte [ebp - 4], 7
lea eax, [ebp - 0x28]
mov ecx, esp
mov dword [ebp - 0x38], esp
push eax
call dword [0x474b9c]
mov eax, dword [0x4a46ac]
push dword [eax + 0x14dc]
call fcn.004295ec
cmp al, bl
je 0x404609
lea ecx, [ebp - 0x28]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
jmp 0x4047c7
lea eax, [ebp - 0x40]
push 0x478fb8
push eax
lea esi, [ebp - 0x10]
call fcn.0040759e
lea ecx, [ebp - 0x28]
push ecx
lea ecx, [ebp - 0x44]
push ecx
mov ecx, eax
mov byte [ebp - 4], 8
call fcn.0040730f
lea ecx, [ebp - 0x34]
push 0x478fb4
push ecx
mov esi, eax
mov byte [ebp - 4], 9
call fcn.0040759e
add esp, 0x18
lea ecx, [ebp - 0x44]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea ecx, [ebp - 0x40]
mov byte [ebp - 4], 0xc
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
fldz
sub esp, 0xc
fstp qword [esp + 4]
mov ecx, esp
mov dword [ebp - 0x38], esp
push edi
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_class]
push ebx
push ebx
push ecx
mov byte [ebp - 4], 0xd
lea eax, [ebp - 0x10]
mov ecx, esp
mov dword [ebp - 0x30], esp
push eax
call dword [0x474b9c]
push dword [ebp + 0x10a8]
lea eax, [ebp - 0x34]
push ebx
push ecx
mov ecx, esp
mov dword [ebp - 0x2c], esp
push eax
mov byte [ebp - 4], 0xe
call dword [0x474b9c]
push dword [ebp - 0x20]
mov byte [ebp - 4], 0xc
call fcn.0040491f
lea ecx, [ebp - 0x34]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
jmp 0x4045fb
push ecx
lea eax, [ebp - 0x10]
mov ecx, esp
mov dword [ebp - 0x2c], esp
push eax
call dword [0x474b9c]
mov eax, dword [0x4a46ac]
push dword [eax + 0x14dc]
call fcn.004295ec
cmp al, bl
jne 0x4047c7
test byte [ebp + 0xe40], 1
je 0x404701
and dword [ebp + 0xe40], 0xfffffffe
push dword [ebp + 0xe40]
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test byte [ebp + 0xe40], 0x10
je 0x404735
push dword [ebp + 0x10a8]
lea eax, [ebp - 0x10]
push 1
push dword [ebp + 0x10a4]
push ecx
mov ecx, esp
mov dword [ebp - 0x2c], esp
push eax
call dword [0x474b9c]
mov ecx, dword [ebp - 0x20]
call fcn.00404247
jmp 0x4047c7
lea eax, [ebp + 0xe6c]
push str.index.dat
push eax
call dword [sym.imp.MSVCR90.dll__wcsicmp]
pop ecx
pop ecx
test eax, eax
jne 0x404753
mov dword [0x4a3f08], ebx
mov esi, dword [ebp - 0x20]
call dword [esi + 0x2ec]
push dword [ebp - 0x10]
lea eax, [esi + 0x278]
add dword [eax], 1
push ebx
mov dword [0x4a3f08], ebx
adc dword [eax + 4], ebx
call sub.sfc.dll_SfcIsFileProtected
test eax, eax
jne 0x4047c7
push dword [ebp - 0x10]
call dword [sym.imp.K9PCUhelper.dll_long_int___cdecl_IsFileAlreadyOpen_wchar_t_const__]
pop ecx
test eax, eax
jne 0x4047c7
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
je 0x4047c7
cmp eax, 0x10
je 0x4047c7
push eax
push dword [ebp - 0x10]
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test eax, eax
je 0x4047c7
push dword [ebp + 0x10a8]
lea eax, [ebp - 0x10]
push ecx
mov ecx, esp
mov dword [ebp - 0x2c], esp
push eax
call dword [0x474b9c]
mov edi, esi
call fcn.00404dc8
lea ecx, [ebp - 0x1c]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea ecx, [ebp - 0x18]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea ecx, [ebp - 0x14]
mov byte [ebp - 4], 2
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea eax, [ebp + 0xe40]
push eax
push dword [ebp - 0x3c]
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x404393
push dword [ebp - 0x3c]
call dword [sym.imp.KERNEL32.dll_FindClose]
lea ecx, [ebp - 0x24]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea ecx, [ebp - 0x10]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
lea ecx, [ebp + 0x109c]
call dword [sym.imp.mfc90u.dll_ATL::CStringT_wchar_t_class_StrTraitMFC_DLL_wchar_t_class_ATL::ChTraitsCRT_wchar_t_____::CStringT_wchar_t_clas]
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebx
mov ecx, dword [ebp + 0x1090]
xor ecx, ebp
call fcn.0043c4b0
add ebp, 0x1094
leave
ret 0x10