Function at 0x406dc0
Capabilities:
Check if file exists
Delete directory
Enumerate files on windows
Enumerate files recursively
Get file attributes
Resolve function by parsing pe exports
Set file attributes

Disassembly:
push 0xffffffffffffffff
push 0x41bf8c
mov eax, dword fs:[0]
push eax
sub esp, 0x2ec
mov eax, dword [0x426008]
xor eax, esp
mov dword [esp + 0x2e8], eax
push ebx
push ebp
push esi
push edi
mov eax, dword [0x426008]
xor eax, esp
push eax
lea eax, [esp + 0x300]
mov dword fs:[0], eax
xor eax, eax
mov dword [esp + 0x48], 0
push 0xffffffffffffffff
push eax
xorps xmm0, xmm0
mov dword [esp + 0x54], 0
push ecx
lea ecx, [esp + 0x44]
movlpd qword [esp + 0x20], xmm0
mov dword [esp + 0x58], 7
mov dword [esp + 0x54], 0
mov word [esp + 0x44], ax
call fcn.00402d50
mov dword [esp + 0x308], 0
lea ecx, [esp + 0x38]
call fcn.004065e0
cmp dword [esp + 0x48], 0
je 0x406e5f
push 0x5c
push ecx
lea ecx, [esp + 0x40]
call fcn.00405400
xorps xmm0, xmm0
mov dword [esp + 0xa4], 0
xor eax, eax
mov dword [esp + 0xa8], 0
movlpd qword [esp + 0x6c], xmm0
mov dword [esp + 0x74], 0
mov dword [esp + 0x78], 0
mov dword [esp + 0x7c], 0
mov dword [esp + 0x80], 0
mov dword [esp + 0x84], 0
mov dword [esp + 0x88], 0
movlpd qword [esp + 0x8c], xmm0
mov dword [esp + 0xa8], 7
mov dword [esp + 0xa4], 0
mov word [esp + 0x94], ax
mov byte [esp + 0x308], 3
push 4
call fcn.0040ef46
mov esi, eax
add esp, 4
mov dword [esp + 0x68], esi
mov byte [esp + 0x308], 4
test esi, esi
je 0x406f12
mov dword [esi], 0
mov dword [esi], 0xffffffff
jmp 0x406f14
xor esi, esi
mov byte [esp + 0x308], 3
mov dword [esp + 0x68], esi
mov byte [esp + 0x308], 5
lea edx, [esp + 0x38]
push 0x422b48
lea ecx, [esp + 0x54]
call fcn.00405b20
add esp, 4
mov edi, eax
mov byte [esp + 0x308], 6
mov eax, dword [esi]
mov ebp, dword [sym.imp.KERNEL32.dll_FindClose]
cmp eax, 0xffffffff
je 0x406f61
push eax
call ebp
test eax, eax
je 0x406f7f
mov dword [esi], 0xffffffff
cmp dword [edi + 0x14], 8
jb 0x406f69
mov edi, dword [edi]
lea eax, [esp + 0xac]
push eax
push edi
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [esi], eax
cmp eax, 0xffffffff
jne 0x406f83
xor bl, bl
jmp 0x406f97
lea eax, [esp + 0x6c]
push eax
lea eax, [esp + 0xb0]
push eax
call fcn.0040b950
mov bl, 1
mov byte [esp + 0x308], 5
cmp dword [esp + 0x64], 8
jb 0x406fb2
push dword [esp + 0x50]
call fcn.0040eef6
add esp, 4
xor eax, eax
mov dword [esp + 0x64], 7
mov dword [esp + 0x60], 0
mov word [esp + 0x50], ax
test bl, bl
je 0x4071e2
mov ecx, dword [esp + 0x8c]
and ecx, 0x10
mov eax, ecx
or eax, 0
je 0x407036
mov edx, dword [esp + 0xa4]
test edx, edx
je 0x407036
mov edi, dword [esp + 0xa8]
lea eax, [esp + 0x94]
mov ebx, dword [esp + 0x94]
cmp edi, 8
cmovae eax, ebx
cmp word [eax], 0x2e
jne 0x407036
cmp edx, 1
je 0x40702c
cmp edi, 8
lea eax, [esp + 0x94]
cmovae eax, ebx
cmp word [eax + 2], 0x2e
jne 0x407036
cmp edx, 2
jne 0x407036
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
jmp 0x4070b3
lea eax, [esp + 0x94]
or ecx, 0
lea edx, [esp + 0x38]
push eax
lea ecx, [esp + 0x54]
je 0x407064
call fcn.00405c20
add esp, 4
mov byte [esp + 0x308], 7
mov ecx, eax
call fcn.00406dc0
jmp 0x407081
call fcn.00405c20
add esp, 4
mov byte [esp + 0x308], 8
lea ecx, [esp + 0x50]
call fcn.0040ccc0
movzx eax, al
cdq
mov edi, edx
mov ebx, eax
mov byte [esp + 0x308], 5
cmp dword [esp + 0x64], 8
jb 0x4070a0
push dword [esp + 0x50]
call fcn.0040eef6
add esp, 4
xor eax, eax
mov dword [esp + 0x64], 7
mov dword [esp + 0x60], eax
mov word [esp + 0x50], ax
lea eax, [esp + 0xac]
push eax
push dword [esi]
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
setne al
test al, al
je 0x4071ec
lea eax, [esp + 0x6c]
push eax
lea eax, [esp + 0xb0]
push eax
call fcn.0040b950
mov ecx, dword [esp + 0x8c]
and ecx, 0x10
mov eax, ecx
or eax, 0
je 0x407144
mov edx, dword [esp + 0xa4]
test edx, edx
je 0x407144
mov ebp, dword [esp + 0xa8]
lea eax, [esp + 0x94]
cmp ebp, 8
cmovae eax, dword [esp + 0x94]
cmp word [eax], 0x2e
jne 0x407144
cmp edx, 1
je 0x4070b3
cmp ebp, 8
lea eax, [esp + 0x94]
cmovae eax, dword [esp + 0x94]
cmp word [eax + 2], 0x2e
jne 0x407144
cmp edx, 2
je 0x4070b3
or ecx, 0
je 0x407150
mov eax, 1
jmp 0x407152
xor eax, eax
test al, al
lea edx, [esp + 0x38]
lea eax, [esp + 0x94]
push eax
je 0x4071b8
lea ecx, [esp + 0x24]
call fcn.00405c20
add esp, 4
mov byte [esp + 0x308], 9
mov ecx, eax
call fcn.00406dc0
add ebx, eax
adc edi, edx
mov byte [esp + 0x308], 5
cmp dword [esp + 0x34], 8
jb 0x40719c
push dword [esp + 0x20]
call fcn.0040eef6
add esp, 4
xor eax, eax
mov dword [esp + 0x34], 7
mov dword [esp + 0x30], 0
mov word [esp + 0x20], ax
jmp 0x4070b3
lea ecx, [esp + 0x54]
call fcn.00405c20
add esp, 4
mov byte [esp + 0x308], 0xa
lea ecx, [esp + 0x50]
call fcn.0040ccc0
movzx eax, al
cdq
add ebx, eax
adc edi, edx
jmp 0x407085
mov edi, dword [esp + 0x18]
mov ebx, dword [esp + 0x14]
jmp 0x4071f2
mov ebp, dword [sym.imp.KERNEL32.dll_FindClose]
mov eax, dword [esi]
cmp eax, 0xffffffff
je 0x407206
push eax
call ebp
test eax, eax
je 0x407206
mov dword [esi], 0xffffffff
cmp dword [esp + 0x4c], 8
lea eax, [esp + 0x38]
cmovae eax, dword [esp + 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
je 0x407227
add ebx, 1
adc edi, 0
jmp 0x4072a0
lea ecx, [esp + 0x38]
call fcn.004065e0
cmp dword [esp + 0x4c], 8
lea eax, [esp + 0x38]
cmovae eax, dword [esp + 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov ebp, eax
cmp ebp, 0xffffffff
je 0x4072a0
cmp dword [esp + 0x4c], 8
lea ecx, [esp + 0x38]
push 0
cmovae ecx, dword [esp + 0x3c]
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
cmp dword [esp + 0x4c], 8
lea eax, [esp + 0x38]
cmovae eax, dword [esp + 0x38]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
je 0x407284
add ebx, 1
adc edi, 0
jmp 0x4072a0
and ebp, 0xffffb1af
lea eax, [esp + 0x38]
cmp dword [esp + 0x4c], 8
push ebp
cmovae eax, dword [esp + 0x3c]
push eax
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
mov byte [esp + 0x308], 3
mov eax, dword [esi]
cmp eax, 0xffffffff
je 0x4072c0
push eax
call dword [sym.imp.KERNEL32.dll_FindClose]
test eax, eax
je 0x4072c0
mov dword [esi], 0xffffffff
push esi
call fcn.0040eef6
add esp, 4
mov dword [esp + 0x68], 0
mov byte [esp + 0x308], 0
cmp dword [esp + 0xa8], 8
jb 0x4072f2
push dword [esp + 0x94]
call fcn.0040eef6
add esp, 4
xor eax, eax
mov dword [esp + 0xa8], 7
mov dword [esp + 0xa4], 0
mov word [esp + 0x94], ax
mov dword [esp + 0x308], 0xffffffff
cmp dword [esp + 0x4c], 8
jb 0x407330
push dword [esp + 0x38]
call fcn.0040eef6
add esp, 4
xor eax, eax
mov dword [esp + 0x4c], 7
mov word [esp + 0x38], ax
mov edx, edi
mov dword [esp + 0x48], 0
mov eax, ebx
mov ecx, dword [esp + 0x300]
mov dword fs:[0], ecx
pop ecx
pop edi
pop esi
pop ebp
pop ebx
mov ecx, dword [esp + 0x2e8]
xor ecx, esp
call fcn.0040e73a
add esp, 0x2f8
ret