Function at 0x405bf7
Capabilities:
Delete directory
Delete file
Enumerate files on windows
Enumerate files recursively
Set file attributes

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x148
push esi
push edi
mov edi, dword [ebp + 8]
push edi
call fcn.00405ef2
test byte [ebp + 0xc], 8
mov dword [ebp - 8], eax
je 0x405c2b
push edi
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
neg eax
sbb eax, eax
inc eax
add dword [0x7d13c8], eax
jmp 0x405e0a
push ebx
mov ebx, dword [ebp + 0xc]
and ebx, 1
mov dword [ebp - 4], ebx
je 0x405c49
test eax, eax
je 0x405d8e
test byte [ebp + 0xc], 2
je 0x405d8e
mov esi, 0x7bbd10
push edi
push esi
call fcn.0040630d
test ebx, ebx
je 0x405c66
push str..
push esi
call fcn.00406330
jmp 0x405c6c
push edi
call fcn.00405e57
push 0x40a268
push edi
call fcn.00406330
push edi
call fcn.00406323
mov ebx, eax
lea eax, [ebp - 0x148]
push eax
push esi
add ebx, edi
call dword [sym.imp.KERNEL32.dll_FindFirstFileA]
cmp eax, 0xffffffff
mov dword [ebp + 8], eax
je 0x405d84
lea eax, [ebp - 0x11c]
push 0x3f
push eax
lea esi, [ebp - 0x11c]
call fcn.00405e3b
cmp byte [eax], 0
je 0x405cbd
cmp byte [ebp - 0x18], 0
je 0x405cbd
lea esi, [ebp - 0x18]
cmp byte [esi], 0x2e
jne 0x405cd5
mov al, byte [esi + 1]
cmp al, 0x2e
je 0x405d63
test al, al
je 0x405d63
push esi
push ebx
call fcn.0040630d
test byte [ebp - 0x148], 0x10
je 0x405cfa
mov eax, dword [ebp + 0xc]
and eax, 3
cmp al, 3
jne 0x405d63
push dword [ebp + 0xc]
push edi
call fcn.00405bf7
jmp 0x405d63
push edi
push str.Delete:_DeleteFile___s__
call fcn.00406799
mov eax, dword [ebp - 0x148]
pop ecx
pop ecx
and al, 0xfe
push eax
push edi
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
push edi
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
test eax, eax
jne 0x405d5b
test byte [ebp + 0xc], 4
push edi
je 0x405d47
push str.Delete:_DeleteFile_on_Reboot___s__
call fcn.00406799
pop ecx
pop ecx
push edi
push 0xfffffffffffffff1
call fcn.00405606
push 0
push edi
call fcn.00406054
jmp 0x405d63
push str.Delete:_DeleteFile_failed___s__
call fcn.00406799
inc dword [0x7d13c8]
pop ecx
pop ecx
jmp 0x405d63
push edi
push 0xfffffffffffffff2
call fcn.00405606
lea eax, [ebp - 0x148]
push eax
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_FindNextFileA]
test eax, eax
jne 0x405c9b
push dword [ebp + 8]
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp dword [ebp - 4], 0
je 0x405d8e
and byte [ebx - 1], 0
xor esi, esi
pop ebx
cmp dword [ebp - 4], esi
je 0x405e0a
cmp dword [ebp - 8], esi
push edi
jne 0x405db0
push str.RMDir:_RemoveDirectory_invalid_input___s__
call fcn.00406799
inc dword [0x7d13c8]
pop ecx
pop ecx
jmp 0x405e0a
call fcn.004067b5
test eax, eax
je 0x405e0a
push edi
call fcn.00405e10
push edi
push str.RMDir:_RemoveDirectory___s__
call fcn.00406799
pop ecx
pop ecx
push edi
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
test eax, eax
jne 0x405e02
test byte [ebp + 0xc], 4
push edi
je 0x405dfb
push str.RMDir:_RemoveDirectory_on_Reboot___s__
call fcn.00406799
pop ecx
pop ecx
push edi
push 0xfffffffffffffff1
call fcn.00405606
push esi
push edi
call fcn.00406054
jmp 0x405e0a
push str.RMDir:_RemoveDirectory_failed___s__
jmp 0x405da1
push edi
push 0xffffffffffffffe5
call fcn.00405606
pop edi
pop esi
leave
ret 8