Function at 0x10004393
Capabilities:
Check if file exists
Create directory
Enumerate files on windows
Enumerate files recursively
Get file attributes
Move file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xe58
push ebx
push esi
mov esi, dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
push edi
push dword [ebp + 0xc]
mov dword [ebp - 4], ecx
call esi
mov edi, dword [sym.imp.KERNEL32.dll_lstrlenA]
cmp eax, 0xffffffff
mov ebx, 0x104
jne 0x10004498
push ebx
lea eax, [ebp - 0x118]
push dword [ebp + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpynA]
cmp byte [ebp - 0x118], 0
je 0x100043ff
lea eax, [ebp - 0x118]
push eax
call edi
cmp byte [ebp + eax - 0x119], 0x5c
jne 0x100043ff
lea eax, [ebp - 0x118]
push eax
call edi
and byte [ebp + eax - 0x119], 0
lea eax, [ebp - 0x118]
push 0x5c
push eax
call fcn.100317c0
pop ecx
test eax, eax
pop ecx
je 0x10004431
and byte [eax], 0
lea eax, [ebp - 0x118]
push eax
call esi
cmp eax, 0xffffffff
jne 0x10004431
lea eax, [ebp - 0x118]
push eax
call fcn.10002fbc
pop ecx
push dword [ebp + 0xc]
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_MoveFileA]
test eax, eax
je 0x10004492
cmp dword [ebp + 0x10], 0
je 0x1000448b
push dword [ebp + 8]
call edi
inc eax
push eax
call fcn.100324de
pop ecx
mov dword [ebp - 8], eax
push dword [ebp + 0xc]
call edi
inc eax
push eax
call fcn.100324de
pop ecx
mov dword [ebp - 4], eax
push dword [ebp + 8]
push ebx
push dword [ebp - 8]
call fcn.1000180e
push dword [ebp + 0xc]
push ebx
push dword [ebp - 4]
call fcn.1000180e
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 8]
push eax
call fcn.100048db
xor eax, eax
jmp 0x10004695
call dword [sym.imp.KERNEL32.dll_GetLastError]
push dword [ebp + 8]
mov esi, 0x400
lea eax, [ebp - 0xe58]
push esi
push eax
call fcn.1000180e
push str..
lea eax, [ebp - 0xe58]
push esi
push eax
call fcn.100020b4
push 0
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.dll_CreateDirectoryA]
lea eax, [ebp - 0x258]
push eax
lea eax, [ebp - 0xe58]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
mov dword [ebp - 0xc], eax
jne 0x10004513
lea eax, [ebp - 0xe58]
push eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._ahnup.dll__SuperCopyFiles____error:_d__FindFirstFile__s_
push 1
call fcn.1000aeb9
add esp, 0x10
push 0xffffffffffffffff
call dword [sym.imp.KERNEL32.dll_FindClose]
or eax, 0xffffffff
jmp 0x10004695
lea eax, [ebp - 0x22c]
push eax
lea eax, [ebp - 0xa58]
push dword [ebp + 8]
push 0x1004a050
push esi
push eax
call fcn.100046c9
add esp, 0x14
lea eax, [ebp - 0x22c]
push eax
lea eax, [ebp - 0x658]
push dword [ebp + 0xc]
push 0x1004a050
push esi
push eax
call fcn.100046c9
add esp, 0x14
test byte [ebp - 0x258], 0x10
je 0x1000458d
cmp byte [ebp - 0x22c], 0x2e
je 0x10004670
push dword [ebp + 0x10]
mov ecx, dword [ebp - 4]
lea eax, [ebp - 0x658]
push eax
lea eax, [ebp - 0xa58]
push eax
call fcn.10004393
test eax, eax
jl 0x1000469c
jmp 0x10004670
lea eax, [ebp - 0x22c]
push str..dht_state
push eax
call fcn.10032e56
pop ecx
test eax, eax
pop ecx
je 0x1000465a
lea eax, [ebp - 0x22c]
push str..ses_state
push eax
call fcn.10032e56
pop ecx
test eax, eax
pop ecx
je 0x1000465a
lea eax, [ebp - 0x658]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesA]
cmp eax, 0xffffffff
je 0x100045e2
lea eax, [ebp - 0x658]
push eax
call fcn.100032ea
pop ecx
lea eax, [ebp - 0x658]
push eax
lea eax, [ebp - 0xa58]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileA]
test eax, eax
je 0x100046a0
cmp dword [ebp + 0x10], 0
je 0x10004670
lea eax, [ebp - 0xa58]
push eax
call edi
inc eax
push eax
call fcn.100324de
mov dword [ebp - 0x14], eax
pop ecx
lea eax, [ebp - 0x658]
push eax
call edi
inc eax
push eax
call fcn.100324de
mov dword [ebp - 0x10], eax
pop ecx
lea eax, [ebp - 0xa58]
push eax
push ebx
push dword [ebp - 0x14]
call fcn.1000180e
lea eax, [ebp - 0x658]
push eax
push ebx
push dword [ebp - 0x10]
call fcn.1000180e
mov ecx, dword [ebp + 0x10]
lea eax, [ebp - 0x14]
push eax
call fcn.100048db
jmp 0x10004670
lea eax, [ebp - 0x22c]
push eax
push str._ahnup.dll__skip__s
push 1
call fcn.1000b21a
add esp, 0xc
lea eax, [ebp - 0x258]
push eax
push dword [ebp - 0xc]
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x10004513
xor esi, esi
push dword [ebp - 0xc]
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, esi
pop edi
pop esi
pop ebx
leave
ret 0xc
mov esi, eax
jmp 0x1000468a
lea eax, [ebp - 0x658]
push eax
lea eax, [ebp - 0xa58]
push eax
call dword [sym.imp.KERNEL32.dll_GetLastError]
push eax
push str._ahnup.dll__SuperCopyFiles____error:_d__MoveFile__s___s_
push 1
call fcn.1000aeb9
add esp, 0x14
push 0xfffffffffffffffe
pop esi
jmp 0x1000468a