Function at 0x435908
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 0x4359e1
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
jne 0x4359be
push 3
pop eax
test eax, eax
jle 0x4359c6
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
jns 0x4359e1
push edi
push 0xd3
push 0x44cbbe
call fcn.004315c0
jmp 0x435ce8
test byte [ebp - 0x78], 0x10
je 0x435cd4
test byte [ebp - 0x78], 1
je 0x435a24
push 0x80
push dword [ebp - 0x6c]
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test eax, eax
jne 0x435a24
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x435a11
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x435a1c
mov edi, 0x80004005
push edi
push 0xdc
jmp 0x4359d2
xor eax, eax
cmp dword [ebp - 0x7c], eax
jne 0x435a34
cmp dword [ebp - 0x80], eax
je 0x435bf2
cmp dword [ebp - 0x74], eax
je 0x435a73
lea eax, [ebp + 0x1ec]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
jne 0x435a73
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x435a5d
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x435a68
mov edi, 0x80004005
push edi
push 0xe7
jmp 0x4359d2
lea eax, [ebp - 0x68]
push eax
push 0x445454
push dword [ebp - 0x6c]
call fcn.00431306
mov edi, eax
test edi, edi
js 0x435ce8
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 0x435ac7
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x435ab1
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x435abc
mov edi, 0x80004005
push edi
push 0xf2
jmp 0x4359d2
push 0x2e
pop eax
cmp ax, word [ebp - 0x38]
jne 0x435af1
xor eax, eax
cmp ax, word [ebp - 0x36]
je 0x435bca
push 0x2e
pop eax
cmp ax, word [ebp - 0x36]
jne 0x435af1
xor eax, eax
cmp ax, word [ebp - 0x34]
je 0x435bca
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.00431306
mov edi, eax
test edi, edi
js 0x435cd9
xor edi, edi
cmp dword [ebp - 0x80], edi
je 0x435b47
test byte [ebp - 0x64], 0x10
je 0x435b47
lea eax, [ebp - 0x68]
push eax
call fcn.0043110a
mov edi, eax
test edi, edi
js 0x435cd9
push dword [ebp + 0x60c]
push dword [ebp - 0x68]
call fcn.00435908
jmp 0x435bca
cmp dword [ebp - 0x7c], edi
je 0x435bca
test byte [ebp - 0x64], 7
je 0x435b68
push 0x80
push dword [ebp - 0x68]
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test eax, eax
je 0x435c51
push dword [ebp - 0x68]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
jne 0x435bca
cmp dword [ebp - 0x74], edi
je 0x435c93
lea eax, [ebp + 0x3f4]
push eax
push edi
push 0x44cbf2
lea eax, [ebp + 0x1ec]
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
test eax, eax
je 0x435c72
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 0x435bc5
lea eax, [ebp + 0x3f4]
push eax
jmp 0x435bc8
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 0x435ac7
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
call edi
cmp eax, 0x12
jne 0x435cb4
xor edi, edi
push dword [ebp - 0x6c]
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
jne 0x435cd9
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x435c11
and eax, ebx
or eax, esi
mov edi, eax
cmp edi, 0x80070020
jne 0x435c34
cmp dword [ebp - 0x74], 0
je 0x435c3c
push 4
push 0
push dword [ebp - 0x6c]
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
je 0x435c3c
xor edi, edi
test edi, edi
jns 0x435cd9
push edi
push 0x14c
push 0x44cbbe
call fcn.004315c0
jmp 0x435cd9
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
jle 0x435c5f
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x435c6a
mov edi, 0x80004005
push edi
push 0x116
jmp 0x435c42
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
jle 0x435c80
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x435c8b
mov edi, 0x80004005
push edi
push 0x120
jmp 0x435c42
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
jle 0x435ca1
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x435cac
mov edi, 0x80004005
push edi
push 0x130
jmp 0x435c42
call edi
test eax, eax
jle 0x435cbe
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x435cc9
mov edi, 0x80004005
push edi
push 0x13d
jmp 0x435c42
mov edi, 0x8000ffff
cmp dword [ebp - 0x70], 0xffffffff
je 0x435ce8
push dword [ebp - 0x70]
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp dword [ebp - 0x68], 0
je 0x435cf6
push dword [ebp - 0x68]
call fcn.0042eb62
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