Function at 0x40a5a0
Capabilities:
Delete directory
Delete file
Enumerate files on windows
Enumerate files recursively
Print debug messages
Set file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x470
mov eax, dword [0x42603c]
xor eax, ebp
mov dword [ebp - 8], eax
mov eax, dword [ebp + 0xc]
push ebx
mov ebx, dword [ebp + 8]
push esi
push edi
xor ecx, ecx
push 0x206
push ecx
lea edx, [ebp - 0x212]
push edx
mov dword [ebp - 0x468], eax
mov word [ebp - 0x214], cx
call fcn.00414930
add esp, 0xc
push ebx
lea eax, [ebp - 0x214]
push str._s.
push eax
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0xc
lea ecx, [ebp - 0x464]
push ecx
lea edx, [ebp - 0x214]
push edx
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x46c], eax
cmp eax, 0xffffffff
jne 0x40a641
mov esi, dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
push ebx
call esi
push str._Delete_Tree_hand__INVALID_HANDLE_VALUE
call esi
lea eax, [ebp - 0x214]
push eax
call esi
mov al, 1
pop edi
pop esi
pop ebx
mov ecx, dword [ebp - 8]
xor ecx, ebp
call fcn.0040d7f6
mov esp, ebp
pop ebp
ret
test byte [ebp - 0x464], 0x10
je 0x40a782
mov ecx, 0x42217c
lea eax, [ebp - 0x438]
lea esp, [esp]
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40a686
test dx, dx
je 0x40a682
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40a686
add eax, 4
add ecx, 4
test dx, dx
jne 0x40a660
xor eax, eax
jmp 0x40a68b
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40a891
mov ecx, 0x422180
lea eax, [ebp - 0x438]
mov edi, edi
mov dx, word [eax]
cmp dx, word [ecx]
jne 0x40a6c6
test dx, dx
je 0x40a6c2
mov dx, word [eax + 2]
cmp dx, word [ecx + 2]
jne 0x40a6c6
add eax, 4
add ecx, 4
test dx, dx
jne 0x40a6a0
xor eax, eax
jmp 0x40a6cb
sbb eax, eax
sbb eax, 0xffffffff
test eax, eax
je 0x40a891
mov edi, dword [ebp + 0x10]
xor esi, esi
test edi, edi
jle 0x40a706
lea esp, [esp]
mov ecx, dword [ebp - 0x468]
mov edx, dword [ecx + esi*4]
push edx
lea eax, [ebp - 0x438]
push eax
call fcn.0040daf6
add esp, 8
test eax, eax
je 0x40a8d9
inc esi
cmp esi, edi
jl 0x40a6e0
xor eax, eax
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
mov ecx, 0x82
lea edi, [ebp - 0x214]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x438]
push eax
push ebx
lea ecx, [ebp - 0x214]
push 0x4218ec
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
push 0x80
lea edx, [ebp - 0x214]
push edx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp - 0x468]
push eax
push ecx
lea edx, [ebp - 0x214]
push edx
call fcn.0040a5a0
add esp, 0xc
test al, al
jne 0x40a891
lea eax, [ebp - 0x214]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
jmp 0x40a891
cmp dword [ebp - 0x468], 0
jne 0x40a7f2
xor eax, eax
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
mov ecx, 0x82
lea edi, [ebp - 0x214]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x438]
push eax
push ebx
lea ecx, [ebp - 0x214]
push 0x4218ec
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
push 0x80
lea edx, [ebp - 0x214]
push edx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
lea eax, [ebp - 0x214]
push eax
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
lea ecx, [ebp - 0x214]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
jmp 0x40a891
mov edi, dword [ebp + 0x10]
xor esi, esi
test edi, edi
jle 0x40a826
jmp 0x40a800
mov edx, dword [ebp - 0x468]
mov eax, dword [edx + esi*4]
push eax
lea ecx, [ebp - 0x438]
push ecx
call fcn.0040daf6
add esp, 8
test eax, eax
je 0x40a8d9
inc esi
cmp esi, edi
jl 0x40a800
xor eax, eax
movzx edx, ax
mov eax, edx
shl edx, 0x10
or eax, edx
mov ecx, 0x82
lea edi, [ebp - 0x214]
rep stosd dword es:[edi], eax
lea eax, [ebp - 0x438]
push eax
push ebx
lea ecx, [ebp - 0x214]
push 0x4218ec
push ecx
call dword [sym.imp.USER32.dll_wsprintfW]
add esp, 0x10
push 0x80
lea edx, [ebp - 0x214]
push edx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
lea eax, [ebp - 0x214]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
mov esi, dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
lea ecx, [ebp - 0x214]
push ecx
call esi
push 0x42219c
call esi
mov eax, dword [ebp - 0x46c]
lea edx, [ebp - 0x464]
push edx
push eax
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x40a641
mov esi, dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
push ebx
call esi
mov ecx, dword [ebp - 0x46c]
push ecx
call dword [sym.imp.KERNEL32.dll_FindClose]
push ebx
call esi
mov ecx, dword [ebp - 8]
pop edi
pop esi
xor ecx, ebp
xor al, al
pop ebx
call fcn.0040d7f6
mov esp, ebp
pop ebp
ret
push str.KeepList
call dword [sym.imp.KERNEL32.dll_OutputDebugStringW]
jmp 0x40a891