Function at 0x4357c2
Capabilities:
Check if file exists
Delete directory
Delete file
Enumerate files on windows
Enumerate files recursively
Get common file path
Get file attributes
Move file
Set file attributes

Disassembly:
mov edi, edi
push ebp
lea ebp, [esp - 0x600]
sub esp, 0x680
mov eax, dword [0x44f9f8]
xor eax, ebp
mov dword [ebp + 0x5fc], eax
mov eax, dword [ebp + 0x60c]
or dword [ebp - 0x70], 0xffffffff
push ebx
and eax, 1
xor ecx, ecx
push esi
push edi
xor edi, edi
cmp al, 1
mov eax, dword [ebp + 0x60c]
sete cl
mov ebx, dword [ebp + 0x608]
and eax, 2
mov esi, 0x208
push esi
push edi
mov dword [ebp - 0x6c], ebx
mov dword [ebp - 0x7c], ecx
xor ecx, ecx
cmp al, 2
mov eax, dword [ebp + 0x60c]
sete cl
and eax, 4
mov dword [ebp - 0x68], edi
mov dword [ebp - 0x80], ecx
xor ecx, ecx
cmp al, 4
sete cl
lea eax, [ebp + 0x1ec]
push eax
mov dword [ebp - 0x74], ecx
call fcn.00408720
push esi
lea eax, [ebp + 0x3f4]
push edi
push eax
call fcn.00408720
add esp, 0x18
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [ebp - 0x78], eax
mov ebx, 0xffff
mov esi, 0x80070000
cmp eax, 0xffffffff
jne 0x43589b
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
jne 0x435878
push 3
pop eax
test eax, eax
jle 0x435880
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
jns 0x43589b
push edi
push 0xd0
push 0x44ca5a
call fcn.00431468
jmp 0x435ba2
test byte [ebp - 0x78], 0x10
je 0x435b8e
test byte [ebp - 0x78], 1
je 0x4358de
push 0x80
push dword [ebp - 0x6c]
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test eax, eax
jne 0x4358de
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x4358cb
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x4358d6
mov edi, 0x80004005
push edi
push 0xd9
jmp 0x43588c
xor eax, eax
cmp dword [ebp - 0x7c], eax
jne 0x4358ee
cmp dword [ebp - 0x80], eax
je 0x435aac
cmp dword [ebp - 0x74], eax
je 0x43592d
lea eax, [ebp + 0x1ec]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
jne 0x43592d
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x435917
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x435922
mov edi, 0x80004005
push edi
push 0xe4
jmp 0x43588c
lea eax, [ebp - 0x68]
push eax
push 0x446a28
push dword [ebp - 0x6c]
call fcn.004307ea
mov edi, eax
test edi, edi
js 0x435ba2
lea eax, [ebp - 0x64]
push eax
push dword [ebp - 0x68]
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x70], eax
cmp eax, 0xffffffff
jne 0x435981
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x43596b
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x435976
mov edi, 0x80004005
push edi
push 0xef
jmp 0x43588c
push 0x2e
pop eax
cmp ax, word [ebp - 0x38]
jne 0x4359ab
xor eax, eax
cmp ax, word [ebp - 0x36]
je 0x435a84
push 0x2e
pop eax
cmp ax, word [ebp - 0x36]
jne 0x4359ab
xor eax, eax
cmp ax, word [ebp - 0x34]
je 0x435a84
xor eax, eax
mov word [ebp + 0x1ce], ax
lea eax, [ebp - 0x68]
push eax
lea eax, [ebp - 0x38]
push eax
push dword [ebp - 0x6c]
call fcn.004307ea
mov edi, eax
test edi, edi
js 0x435b93
xor edi, edi
cmp dword [ebp - 0x80], edi
je 0x435a01
test byte [ebp - 0x64], 0x10
je 0x435a01
lea eax, [ebp - 0x68]
push eax
call fcn.004305ee
mov edi, eax
test edi, edi
js 0x435b93
push dword [ebp + 0x60c]
push dword [ebp - 0x68]
call fcn.004357c2
jmp 0x435a84
cmp dword [ebp - 0x7c], edi
je 0x435a84
test byte [ebp - 0x64], 7
je 0x435a22
push 0x80
push dword [ebp - 0x68]
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test eax, eax
je 0x435b0b
push dword [ebp - 0x68]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
jne 0x435a84
cmp dword [ebp - 0x74], edi
je 0x435b4d
lea eax, [ebp + 0x3f4]
push eax
push edi
push 0x44ca8c
lea eax, [ebp + 0x1ec]
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
test eax, eax
je 0x435b2c
mov edi, dword [sym.imp.KERNEL32.dll_MoveFileExW]
push 1
lea eax, [ebp + 0x3f4]
push eax
push dword [ebp - 0x68]
call edi
push 4
push 0
test eax, eax
je 0x435a7f
lea eax, [ebp + 0x3f4]
push eax
jmp 0x435a82
push dword [ebp - 0x68]
call edi
lea eax, [ebp - 0x64]
push eax
push dword [ebp - 0x70]
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x435981
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
call edi
cmp eax, 0x12
jne 0x435b6e
xor edi, edi
push dword [ebp - 0x6c]
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
jne 0x435b93
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x435acb
and eax, ebx
or eax, esi
mov edi, eax
cmp edi, 0x80070020
jne 0x435aee
cmp dword [ebp - 0x74], 0
je 0x435af6
push 4
push 0
push dword [ebp - 0x6c]
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
je 0x435af6
xor edi, edi
test edi, edi
jns 0x435b93
push edi
push 0x149
push 0x44ca5a
call fcn.00431468
jmp 0x435b93
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
jle 0x435b19
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x435b24
mov edi, 0x80004005
push edi
push 0x113
jmp 0x435afc
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
jle 0x435b3a
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x435b45
mov edi, 0x80004005
push edi
push 0x11d
jmp 0x435afc
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
jle 0x435b5b
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x435b66
mov edi, 0x80004005
push edi
push 0x12d
jmp 0x435afc
call edi
test eax, eax
jle 0x435b78
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x435b83
mov edi, 0x80004005
push edi
push 0x13a
jmp 0x435afc
mov edi, 0x8000ffff
cmp dword [ebp - 0x70], 0xffffffff
je 0x435ba2
push dword [ebp - 0x70]
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp dword [ebp - 0x68], 0
je 0x435bb0
push dword [ebp - 0x68]
call fcn.0042ea70
mov ecx, dword [ebp + 0x5fc]
mov eax, edi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00408498
add ebp, 0x600
leave
ret 8