Function at 0x401a60
Capabilities:
Copy file
Enumerate files on windows
Enumerate files recursively
Move file

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x394
push edi
mov dword [ebp - 4], 0
mov ecx, 0x50
xor eax, eax
lea edi, [ebp - 0x148]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x148]
push eax
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov dword [ebp - 8], eax
cmp dword [ebp - 8], 0xffffffff
je 0x401af3
mov edx, dword [ebp - 0x148]
and edx, 0x10
je 0x401ada
push 0x404588
lea eax, [ebp - 0x11c]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
je 0x401ada
push 0x404584
lea ecx, [ebp - 0x11c]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
je 0x401ada
mov edx, dword [ebp - 4]
add edx, 1
mov dword [ebp - 4], edx
lea eax, [ebp - 0x148]
push eax
mov ecx, dword [ebp - 8]
push ecx
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x401af1
jmp 0x401af3
jmp 0x401a94
movzx edx, byte [ebp + 0x10]
test edx, edx
jne 0x401b05
cmp dword [ebp - 4], 0
jne 0x401bc5
lea eax, [ebp - 0x268]
push eax
call fcn.00401920
add esp, 4
mov ecx, dword [ebp + 0xc]
push ecx
lea edx, [ebp - 0x250]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [ebp + 8]
mov byte [ecx + eax - 3], 0
lea edx, [ebp - 0x268]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov ecx, dword [ebp + 8]
push ecx
mov edx, dword [ebp + 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov dword [ebp - 0x254], 0
movzx eax, byte [0x406a70]
test eax, eax
je 0x401b86
push 0
mov ecx, dword [ebp + 0xc]
push ecx
lea edx, [ebp - 0x250]
push edx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
mov dword [ebp - 0x254], eax
jmp 0x401b9d
mov eax, dword [ebp + 0xc]
push eax
lea ecx, [ebp - 0x250]
push ecx
call dword [sym.imp.KERNEL32.dll_MoveFileA]
mov dword [ebp - 0x254], eax
cmp dword [ebp - 0x254], 0
jne 0x401bbe
lea edx, [ebp - 0x250]
push edx
mov eax, dword [ebp + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
xor al, al
jmp 0x401d52
mov al, 1
jmp 0x401d52
mov ecx, dword [ebp - 4]
push ecx
call fcn.00401420
add esp, 4
mov dword [ebp - 0x26c], eax
cmp dword [ebp - 0x26c], 0
jne 0x401c69
lea edx, [ebp - 0x38c]
push edx
call fcn.00401920
add esp, 4
mov eax, dword [ebp + 0xc]
push eax
lea ecx, [ebp - 0x378]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [ebp + 8]
mov byte [ecx + eax - 3], 0
lea edx, [ebp - 0x38c]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
mov ecx, dword [ebp + 8]
push ecx
mov edx, dword [ebp + 0xc]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov eax, dword [ebp + 0xc]
push eax
lea ecx, [ebp - 0x378]
push ecx
call dword [sym.imp.KERNEL32.dll_MoveFileA]
test eax, eax
jne 0x401c62
lea edx, [ebp - 0x378]
push edx
mov eax, dword [ebp + 0xc]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
xor al, al
jmp 0x401d52
mov al, 1
jmp 0x401d52
mov dword [ebp - 0x394], 0
lea ecx, [ebp - 0x148]
push ecx
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
mov dword [ebp - 0x390], eax
cmp dword [ebp - 0x390], 0xffffffff
je 0x401d50
mov eax, dword [ebp - 0x148]
and eax, 0x10
je 0x401cdd
push 0x404588
lea ecx, [ebp - 0x11c]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
je 0x401cdd
push 0x404584
lea edx, [ebp - 0x11c]
push edx
call dword [sym.imp.KERNEL32.dll_lstrcmpA]
test eax, eax
je 0x401cdd
mov eax, dword [ebp - 0x394]
add eax, 1
mov dword [ebp - 0x394], eax
mov ecx, dword [ebp - 0x394]
cmp ecx, dword [ebp - 0x26c]
jne 0x401d31
mov edx, dword [ebp + 8]
push edx
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov ecx, dword [ebp + 8]
mov byte [ecx + eax - 3], 0
lea edx, [ebp - 0x11c]
push edx
mov eax, dword [ebp + 8]
push eax
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push str..
mov ecx, dword [ebp + 8]
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
push 0
mov edx, dword [ebp + 0xc]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00401a60
add esp, 0xc
jmp 0x401d52
lea ecx, [ebp - 0x148]
push ecx
mov edx, dword [ebp - 0x390]
push edx
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x401d4b
jmp 0x401d50
jmp 0x401c8a
xor al, al
pop edi
mov esp, ebp
pop ebp
ret