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

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x668
push ebx
push 0
push dword [0x1000329c]
xor ebx, ebx
inc ebx
mov dword [ebp - 4], ebx
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
je 0x100016a3
xor eax, eax
jmp 0x100017be
push esi
mov esi, dword [sym.imp.KERNEL32.dll_lstrcpyW]
push edi
mov edi, dword [ebp + 8]
lea eax, [ebp - 0x418]
cmp edi, 0x100
jae 0x100016cd
push 0x10002378
push eax
call esi
add word [ebp - 0x418], di
jmp 0x100016d1
push edi
push eax
call esi
lea eax, [ebp - 0x418]
push eax
lea eax, [ebp - 0x210]
push eax
call esi
mov edi, dword [sym.imp.SHLWAPI.dll_PathAppendW]
push 0x10002374
lea eax, [ebp - 0x418]
push eax
call edi
lea eax, [ebp - 0x668]
push eax
lea eax, [ebp - 0x418]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 8], eax
cmp eax, 0xffffffff
jne 0x10001718
mov eax, ebx
jmp 0x100017bc
lea eax, [ebp - 0x210]
push eax
lea eax, [ebp - 0x418]
push eax
call esi
mov ebx, dword [sym.imp.KERNEL32.dll_lstrcmpiW]
push 0x10002370
lea eax, [ebp - 0x63c]
push eax
call ebx
test eax, eax
je 0x100018b5
push 0x10002368
lea eax, [ebp - 0x63c]
push eax
call ebx
test eax, eax
je 0x100018b5
test byte [ebp - 0x668], 0x10
je 0x100017c3
push 0x14
push dword [0x1000329c]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x100017ac
lea eax, [ebp - 0x418]
push eax
lea eax, [ebp - 0x210]
push eax
call esi
lea eax, [ebp - 0x63c]
push eax
lea eax, [ebp - 0x210]
push eax
call edi
lea eax, [ebp - 0x210]
push eax
call fcn.10001677
test eax, eax
jne 0x100018b5
and dword [ebp - 4], 0
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [ebp - 4]
pop edi
pop esi
pop ebx
leave
ret 4
lea eax, [ebp - 0x63c]
push eax
call dword [sym.imp.SHLWAPI.dll_PathFindExtensionW]
mov dword [ebp + 8], eax
test eax, eax
je 0x1000189c
push 0x1000235c
push eax
call ebx
test eax, eax
jne 0x1000183e
lea eax, [ebp - 0x418]
push eax
lea eax, [ebp - 0x210]
push eax
call esi
push 0x100021cc
lea eax, [ebp - 0x210]
push eax
call edi
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
cmp eax, 0xffffffff
jne 0x100018b5
push 1
lea eax, [ebp - 0x210]
push eax
push 0x10003018
call dword [sym.imp.KERNEL32.dll_CopyFileW]
push 7
lea eax, [ebp - 0x210]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
push 0x10002350
push dword [ebp + 8]
call ebx
test eax, eax
je 0x1000185a
push 0x10002344
push dword [ebp + 8]
call ebx
test eax, eax
jne 0x1000189c
cmp dword [ebp - 0x64c], 0
jne 0x1000189c
cmp dword [ebp - 0x648], 0x3200000
jae 0x1000189c
lea eax, [ebp - 0x418]
push eax
lea eax, [ebp - 0x210]
push eax
call esi
lea eax, [ebp - 0x63c]
push eax
lea eax, [ebp - 0x210]
push eax
call edi
lea eax, [ebp - 0x210]
push eax
call fcn.1000142b
pop ecx
push 0x14
push dword [0x1000329c]
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
cmp eax, 0x102
jne 0x100017ac
lea eax, [ebp - 0x668]
push eax
push dword [ebp - 8]
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
cmp eax, 1
je 0x1000172e
jmp 0x100017b0