Function at 0x402500
Capabilities:
Check if file exists
Copy file
Create directory
Delete directory
Enumerate files on windows
Enumerate files recursively
Move file

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x5414e4
mov eax, dword fs:[0]
push eax
sub esp, 0x29c
mov eax, dword [0x594ca8]
xor eax, ebp
mov dword [ebp - 0x10], eax
push esi
push edi
push eax
lea eax, [ebp - 0xc]
mov dword fs:[0], eax
push 0x570574
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x294]
push ecx
mov dword [ebp - 4], 1
call fcn.00404260
mov eax, dword [eax]
add esp, 0xc
lea edx, [ebp - 0x260]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov esi, eax
mov eax, dword [ebp - 0x294]
add eax, 0xfffffff0
or edi, 0xffffffff
mov dword [ebp - 0x298], esi
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x402588
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
cmp esi, edi
jne 0x4025b0
mov byte [ebp - 4], 0
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jmp 0x402a48
test byte [ebp - 0x260], 0x10
je 0x402809
lea ecx, [ebp - 0x234]
push ecx
lea ecx, [ebp - 0x264]
call fcn.004040f0
mov byte [ebp - 4], 2
mov esi, dword [ebp - 0x264]
mov ecx, 0x570580
mov eax, esi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x402606
test dx, dx
je 0x402602
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x402606
add eax, 4
add ecx, 4
test dx, dx
jne 0x4025e0
xor eax, eax
jmp 0x40260a
sbb eax, eax
sbb eax, edi
test eax, eax
setne al
test al, al
je 0x4027fa
mov ecx, 0x570584
mov eax, esi
mov edi, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x402646
test dx, dx
je 0x402642
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x402646
add eax, 4
add ecx, 4
test dx, dx
jne 0x402620
xor eax, eax
jmp 0x40264a
sbb eax, eax
sbb eax, edi
test eax, eax
setne al
test al, al
je 0x4027fa
push 0x57058c
lea edx, [ebp + 0xc]
push edx
lea eax, [ebp - 0x2a4]
push eax
call fcn.00404260
lea ecx, [ebp - 0x264]
push ecx
push eax
lea edx, [ebp - 0x268]
push edx
mov byte [ebp - 4], 3
call fcn.00403830
add esp, 0x18
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x2a4]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4026ac
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0x268]
push ecx
call dword [sym.imp.SHLWAPI.dll_PathFileExistsW]
test eax, eax
jne 0x4026cb
mov edx, dword [ebp - 0x268]
push eax
push edx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov esi, dword [ebp + 0x10]
push esi
push ecx
lea eax, [ebp - 0x268]
mov dword [ebp - 0x26c], esp
mov ecx, esp
push eax
call fcn.00404900
push 0x57058c
lea ecx, [ebp + 8]
push ecx
lea edx, [ebp - 0x2a0]
push edx
mov byte [ebp - 4], 6
call fcn.00404260
add esp, 8
mov ecx, esp
mov dword [ebp - 0x2a8], esp
lea edx, [ebp - 0x264]
push edx
push eax
push ecx
mov byte [ebp - 4], 7
call fcn.00403830
add esp, 0xc
mov byte [ebp - 4], 8
call fcn.00402500
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x2a0]
add eax, 0xfffffff0
add esp, 0xc
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x40274e
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
test esi, esi
jne 0x4027d5
push 0x57058c
lea ecx, [ebp + 8]
push ecx
lea edx, [ebp - 0x27c]
push edx
call fcn.00404260
lea ecx, [ebp - 0x264]
push ecx
push eax
lea edx, [ebp - 0x29c]
push edx
mov byte [ebp - 4], 9
call fcn.00403830
mov eax, dword [eax]
add esp, 0x18
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
mov eax, dword [ebp - 0x29c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4027b0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 5
mov eax, dword [ebp - 0x27c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4027d5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 2
mov eax, dword [ebp - 0x268]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4027fa
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x264]
jmp 0x4029f4
cmp dword [ebp + 0x10], 0
push 0x57058c
lea ecx, [ebp + 0xc]
push ecx
je 0x402913
lea edx, [ebp - 0x274]
push edx
mov dword [ebp - 0x26c], 0
call fcn.00404260
lea ecx, [ebp - 0x234]
push ecx
push eax
lea edx, [ebp - 0x28c]
push edx
mov byte [ebp - 4], 0xa
call fcn.00404260
mov esi, eax
push 0x57058c
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x270]
push ecx
mov byte [ebp - 4], 0xb
call fcn.00404260
lea edx, [ebp - 0x234]
push edx
push eax
lea eax, [ebp - 0x284]
push eax
mov byte [ebp - 4], 0xc
call fcn.00404260
mov esi, dword [esi]
mov eax, dword [eax]
add esp, 0x30
push 0
lea ecx, [ebp - 0x26c]
push ecx
push 0
push 0
push esi
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileExW]
mov eax, dword [ebp - 0x284]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
mov ecx, edi
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x4028ba
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0xb
mov eax, dword [ebp - 0x270]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4028df
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0xa
mov eax, dword [ebp - 0x28c]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x402904
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x274]
jmp 0x4029f4
lea edx, [ebp - 0x290]
push edx
call fcn.00404260
lea ecx, [ebp - 0x234]
push ecx
push eax
lea edx, [ebp - 0x288]
push edx
mov byte [ebp - 4], 0xd
call fcn.00404260
mov esi, eax
push 0x57058c
lea eax, [ebp + 8]
push eax
lea ecx, [ebp - 0x280]
push ecx
mov byte [ebp - 4], 0xe
call fcn.00404260
lea edx, [ebp - 0x234]
push edx
push eax
lea eax, [ebp - 0x278]
push eax
mov byte [ebp - 4], 0xf
call fcn.00404260
mov esi, dword [esi]
mov eax, dword [eax]
add esp, 0x30
push 0xb
push 0
push 0
push esi
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileWithProgressW]
mov eax, dword [ebp - 0x278]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4029a0
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0xe
mov eax, dword [ebp - 0x280]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4029c5
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 0xd
mov eax, dword [ebp - 0x288]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x4029ea
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov byte [ebp - 4], 1
mov eax, dword [ebp - 0x290]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
mov edx, edi
lock xadd dword [ecx], edx
dec edx
test edx, edx
jg 0x402a0f
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov esi, dword [ebp - 0x298]
lea ecx, [ebp - 0x260]
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x4025b0
push esi
call dword [sym.imp.KERNEL32.dll_FindClose]
mov byte [ebp - 4], 0
mov eax, dword [ebp + 8]
add eax, 0xfffffff0
lea edx, [eax + 0xc]
mov ecx, edi
lock xadd dword [edx], ecx
dec ecx
test ecx, ecx
jg 0x402a54
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov dword [ebp - 4], edi
mov eax, dword [ebp + 0xc]
add eax, 0xfffffff0
lea ecx, [eax + 0xc]
lock xadd dword [ecx], edi
dec edi
test edi, edi
jg 0x402a73
mov ecx, dword [eax]
mov edx, dword [ecx]
push eax
mov eax, dword [edx + 4]
call eax
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0051553d
mov esp, ebp
pop ebp
ret