Function at 0x4021e0
Capabilities:
Copy file
Create directory
Delete file
Enumerate files on windows
Enumerate files recursively

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x764
push esi
push edi
push 0x208
push 0
lea eax, [ebp - 0x30c]
push eax
call fcn.004082f0
add esp, 0xc
push 0x208
push 0
lea ecx, [ebp - 0x514]
push ecx
call fcn.004082f0
add esp, 0xc
push 0x250
push 0
lea edx, [ebp - 0x764]
push edx
call fcn.004082f0
add esp, 0xc
mov eax, 0x2e
mov word [ebp - 0x94], ax
xor ecx, ecx
mov word [ebp - 0x92], cx
mov edx, 0x2e
mov word [ebp - 0x9c], dx
mov eax, 0x2e
mov word [ebp - 0x9a], ax
xor ecx, ecx
mov word [ebp - 0x98], cx
mov edx, dword [ebp + 8]
mov dword [ebp - 0x74], edx
lea eax, [ebp - 0x30c]
mov dword [ebp - 0x38], eax
mov ecx, dword [ebp - 0x38]
mov dword [ebp - 0x100], ecx
mov edx, dword [ebp - 0x74]
mov ax, word [edx]
mov word [ebp - 0xa], ax
mov ecx, dword [ebp - 0x38]
mov dx, word [ebp - 0xa]
mov word [ecx], dx
mov eax, dword [ebp - 0x74]
add eax, 2
mov dword [ebp - 0x74], eax
mov ecx, dword [ebp - 0x38]
add ecx, 2
mov dword [ebp - 0x38], ecx
cmp word [ebp - 0xa], 0
jne 0x40227b
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x78], edx
lea eax, [ebp - 0x514]
mov dword [ebp - 0x3c], eax
mov ecx, dword [ebp - 0x3c]
mov dword [ebp - 0x104], ecx
mov edx, dword [ebp - 0x78]
mov ax, word [edx]
mov word [ebp - 0xc], ax
mov ecx, dword [ebp - 0x3c]
mov dx, word [ebp - 0xc]
mov word [ecx], dx
mov eax, dword [ebp - 0x78]
add eax, 2
mov dword [ebp - 0x78], eax
mov ecx, dword [ebp - 0x3c]
add ecx, 2
mov dword [ebp - 0x3c], ecx
cmp word [ebp - 0xc], 0
jne 0x4022c0
lea edx, [ebp - 0x30c]
mov dword [ebp - 0x2c], edx
mov eax, dword [ebp - 0x2c]
add eax, 2
mov dword [ebp - 0xb0], eax
mov ecx, dword [ebp - 0x2c]
mov dx, word [ecx]
mov word [ebp - 0x7e], dx
add dword [ebp - 0x2c], 2
cmp word [ebp - 0x7e], 0
jne 0x402302
mov eax, dword [ebp - 0x2c]
sub eax, dword [ebp - 0xb0]
sar eax, 1
mov dword [ebp - 0xb4], eax
mov ecx, 0x5c
mov edx, dword [ebp - 0xb4]
mov word [ebp + edx*2 - 0x30c], cx
lea eax, [ebp - 0x30c]
mov dword [ebp - 0x30], eax
mov ecx, dword [ebp - 0x30]
add ecx, 2
mov dword [ebp - 0xb8], ecx
mov edx, dword [ebp - 0x30]
mov ax, word [edx]
mov word [ebp - 0x56], ax
add dword [ebp - 0x30], 2
cmp word [ebp - 0x56], 0
jne 0x402350
mov ecx, dword [ebp - 0x30]
sub ecx, dword [ebp - 0xb8]
sar ecx, 1
mov dword [ebp - 0xbc], ecx
mov edx, 0x2a
mov eax, dword [ebp - 0xbc]
mov word [ebp + eax*2 - 0x30c], dx
lea ecx, [ebp - 0x514]
mov dword [ebp - 0x34], ecx
mov edx, dword [ebp - 0x34]
add edx, 2
mov dword [ebp - 0xc0], edx
mov eax, dword [ebp - 0x34]
mov cx, word [eax]
mov word [ebp - 0x58], cx
add dword [ebp - 0x34], 2
cmp word [ebp - 0x58], 0
jne 0x40239e
mov edx, dword [ebp - 0x34]
sub edx, dword [ebp - 0xc0]
sar edx, 1
mov dword [ebp - 0xc4], edx
mov eax, 0x5c
mov ecx, dword [ebp - 0xc4]
mov word [ebp + ecx*2 - 0x514], ax
lea edx, [ebp - 0x764]
push edx
lea eax, [ebp - 0x30c]
push eax
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x28], eax
xorps xmm0, xmm0
movlpd qword [ebp - 8], xmm0
xor ecx, ecx
mov dword [ebp - 0xac], ecx
mov dword [ebp - 0xa8], ecx
mov dword [ebp - 0xa4], ecx
mov dword [ebp - 0xa0], ecx
cmp dword [ebp - 0x28], 0xffffffff
jne 0x40241d
xor eax, eax
jmp 0x4028ee
lea edx, [ebp - 0x30c]
mov dword [ebp - 0x10], edx
mov eax, dword [ebp - 0x10]
add eax, 2
mov dword [ebp - 0xc8], eax
mov ecx, dword [ebp - 0x10]
mov dx, word [ecx]
mov word [ebp - 0x5a], dx
add dword [ebp - 0x10], 2
cmp word [ebp - 0x5a], 0
jne 0x402432
mov eax, dword [ebp - 0x10]
sub eax, dword [ebp - 0xc8]
sar eax, 1
mov dword [ebp - 0xcc], eax
xor ecx, ecx
mov edx, dword [ebp - 0xcc]
mov word [ebp + edx*2 - 0x30e], cx
lea eax, [ebp - 0x94]
mov dword [ebp - 0x44], eax
lea ecx, [ebp - 0x738]
mov dword [ebp - 0x40], ecx
mov edx, dword [ebp - 0x40]
mov ax, word [edx]
mov word [ebp - 0x5c], ax
mov ecx, dword [ebp - 0x44]
cmp ax, word [ecx]
jne 0x4024c2
cmp word [ebp - 0x5c], 0
je 0x4024b6
mov edx, dword [ebp - 0x40]
mov ax, word [edx + 2]
mov word [ebp - 0x5e], ax
mov ecx, dword [ebp - 0x44]
cmp ax, word [ecx + 2]
jne 0x4024c2
add dword [ebp - 0x40], 4
add dword [ebp - 0x44], 4
cmp word [ebp - 0x5e], 0
jne 0x40247a
mov dword [ebp - 0x84], 0
jmp 0x4024cd
sbb edx, edx
or edx, 1
mov dword [ebp - 0x84], edx
mov eax, dword [ebp - 0x84]
mov dword [ebp - 0xd0], eax
cmp dword [ebp - 0xd0], 0
je 0x4028c6
lea ecx, [ebp - 0x9c]
mov dword [ebp - 0x4c], ecx
lea edx, [ebp - 0x738]
mov dword [ebp - 0x48], edx
mov eax, dword [ebp - 0x48]
mov cx, word [eax]
mov word [ebp - 0x60], cx
mov edx, dword [ebp - 0x4c]
cmp cx, word [edx]
jne 0x402540
cmp word [ebp - 0x60], 0
je 0x402534
mov eax, dword [ebp - 0x48]
mov cx, word [eax + 2]
mov word [ebp - 0x62], cx
mov edx, dword [ebp - 0x4c]
cmp cx, word [edx + 2]
jne 0x402540
add dword [ebp - 0x48], 4
add dword [ebp - 0x4c], 4
cmp word [ebp - 0x62], 0
jne 0x4024f8
mov dword [ebp - 0x88], 0
jmp 0x40254b
sbb eax, eax
or eax, 1
mov dword [ebp - 0x88], eax
mov ecx, dword [ebp - 0x88]
mov dword [ebp - 0xd4], ecx
cmp dword [ebp - 0xd4], 0
je 0x4028c6
lea edx, [ebp - 0x738]
mov dword [ebp - 0x14], edx
mov eax, dword [ebp - 0x14]
mov dword [ebp - 0x8c], eax
mov ecx, dword [ebp - 0x14]
mov dx, word [ecx]
mov word [ebp - 0x64], dx
add dword [ebp - 0x14], 2
cmp word [ebp - 0x64], 0
jne 0x402576
mov eax, dword [ebp - 0x14]
sub eax, dword [ebp - 0x8c]
mov ecx, dword [ebp - 0x8c]
mov dword [ebp - 0xd8], ecx
mov dword [ebp - 0xdc], eax
lea edx, [ebp - 0x30c]
add edx, 0xfffffffe
mov dword [ebp - 0x50], edx
mov eax, dword [ebp - 0x50]
mov cx, word [eax + 2]
mov word [ebp - 0x66], cx
add dword [ebp - 0x50], 2
cmp word [ebp - 0x66], 0
jne 0x4025b2
mov edi, dword [ebp - 0x50]
mov esi, dword [ebp - 0xd8]
mov edx, dword [ebp - 0xdc]
mov ecx, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea eax, [ebp - 0x738]
mov dword [ebp - 0x18], eax
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x90], ecx
mov edx, dword [ebp - 0x18]
mov ax, word [edx]
mov word [ebp - 0x68], ax
add dword [ebp - 0x18], 2
cmp word [ebp - 0x68], 0
jne 0x4025f7
mov ecx, dword [ebp - 0x18]
sub ecx, dword [ebp - 0x90]
mov edx, dword [ebp - 0x90]
mov dword [ebp - 0xe0], edx
mov dword [ebp - 0xe4], ecx
lea eax, [ebp - 0x514]
add eax, 0xfffffffe
mov dword [ebp - 0x54], eax
mov ecx, dword [ebp - 0x54]
mov dx, word [ecx + 2]
mov word [ebp - 0x6a], dx
add dword [ebp - 0x54], 2
cmp word [ebp - 0x6a], 0
jne 0x402633
mov edi, dword [ebp - 0x54]
mov esi, dword [ebp - 0xe0]
mov eax, dword [ebp - 0xe4]
mov ecx, eax
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov ecx, dword [ebp - 0x764]
and ecx, 0x10
je 0x4026ae
push 0
lea edx, [ebp - 0x514]
push edx
call dword [sym.imp.KERNEL32.dll_CreateDirectoryW]
mov eax, dword [ebp + 0x14]
push eax
mov ecx, dword [ebp + 0x10]
push ecx
lea edx, [ebp - 0x514]
push edx
lea eax, [ebp - 0x30c]
push eax
call fcn.004021e0
add esp, 0x10
test eax, eax
jne 0x4026a9
xor eax, eax
jmp 0x4028ee
jmp 0x4027cf
mov ecx, 1
test ecx, ecx
je 0x4027cf
push 1
lea edx, [ebp - 0x514]
push edx
lea eax, [ebp - 0x30c]
push eax
call dword [sym.imp.KERNEL32.dll_CopyFileW]
test eax, eax
jne 0x402723
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x20
jne 0x4026f0
mov ecx, dword [ebp + 0x10]
push ecx
call fcn.004072e0
add esp, 4
jmp 0x4026ae
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 0x50
jne 0x40270d
lea edx, [ebp - 0x514]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
nop
jmp 0x4026ae
mov eax, dword [ebp - 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
xor eax, eax
jmp 0x4028ee
xorps xmm0, xmm0
movlpd qword [ebp - 8], xmm0
mov ecx, dword [ebp - 0x748]
xor edx, edx
add ecx, dword [ebp - 8]
adc edx, dword [ebp - 4]
mov dword [ebp - 8], ecx
mov dword [ebp - 4], edx
mov eax, dword [ebp - 8]
mov edx, dword [ebp - 4]
mov cl, 0x20
call fcn.004076c0
mov dword [ebp - 8], eax
mov dword [ebp - 4], edx
mov eax, dword [ebp - 0x744]
xor ecx, ecx
add eax, dword [ebp - 8]
adc ecx, dword [ebp - 4]
mov dword [ebp - 8], eax
mov dword [ebp - 4], ecx
mov edx, 8
imul eax, edx, 0
xor ecx, ecx
mov dword [ebp + eax - 0xac], 0x89
mov dword [ebp + eax - 0xa8], ecx
mov edx, 8
shl edx, 0
mov eax, dword [ebp - 8]
mov ecx, dword [ebp - 4]
mov dword [ebp + edx - 0xac], eax
mov dword [ebp + edx - 0xa8], ecx
push 0x10
lea edx, [ebp - 0xac]
push edx
mov eax, dword [ebp + 0x14]
push eax
call fcn.00406030
add esp, 0xc
test eax, eax
jne 0x4027c8
mov ecx, dword [ebp - 0x28]
push ecx
call dword [sym.imp.KERNEL32.dll_FindClose]
xor eax, eax
jmp 0x4028ee
jmp 0x4027cf
mov dword [ebp - 0x7c], 0
jmp 0x4027e1
mov edx, dword [ebp - 0x7c]
add edx, 1
mov dword [ebp - 0x7c], edx
lea eax, [ebp - 0x738]
mov dword [ebp - 0x1c], eax
mov ecx, dword [ebp - 0x1c]
add ecx, 2
mov dword [ebp - 0xe8], ecx
mov edx, dword [ebp - 0x1c]
mov ax, word [edx]
mov word [ebp - 0x6c], ax
add dword [ebp - 0x1c], 2
cmp word [ebp - 0x6c], 0
jne 0x4027f6
mov ecx, dword [ebp - 0x1c]
sub ecx, dword [ebp - 0xe8]
sar ecx, 1
mov dword [ebp - 0xec], ecx
mov edx, dword [ebp - 0x7c]
cmp edx, dword [ebp - 0xec]
jae 0x4028c6
lea eax, [ebp - 0x30c]
mov dword [ebp - 0x20], eax
mov ecx, dword [ebp - 0x20]
add ecx, 2
mov dword [ebp - 0xf0], ecx
mov edx, dword [ebp - 0x20]
mov ax, word [edx]
mov word [ebp - 0x6e], ax
add dword [ebp - 0x20], 2
cmp word [ebp - 0x6e], 0
jne 0x402840
mov ecx, dword [ebp - 0x20]
sub ecx, dword [ebp - 0xf0]
sar ecx, 1
mov dword [ebp - 0xf4], ecx
xor edx, edx
mov eax, dword [ebp - 0xf4]
mov word [ebp + eax*2 - 0x30e], dx
lea ecx, [ebp - 0x514]
mov dword [ebp - 0x24], ecx
mov edx, dword [ebp - 0x24]
add edx, 2
mov dword [ebp - 0xf8], edx
mov eax, dword [ebp - 0x24]
mov cx, word [eax]
mov word [ebp - 0x70], cx
add dword [ebp - 0x24], 2
cmp word [ebp - 0x70], 0
jne 0x40288b
mov edx, dword [ebp - 0x24]
sub edx, dword [ebp - 0xf8]
sar edx, 1
mov dword [ebp - 0xfc], edx
xor eax, eax
mov ecx, dword [ebp - 0xfc]
mov word [ebp + ecx*2 - 0x516], ax
jmp 0x4027d8
lea edx, [ebp - 0x764]
push edx
mov eax, dword [ebp - 0x28]
push eax
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x402468
mov ecx, dword [ebp - 0x28]
push ecx
call dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, 1
pop edi
pop esi
mov esp, ebp
pop ebp
ret