Function at 0x43408e
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:
push ebp
mov ebp, esp
sub esp, 0x680
mov eax, dword [0x4510d0]
xor eax, ebp
mov dword [ebp - 4], eax
mov eax, dword [ebp + 0xc]
or dword [ebp - 0x670], 0xffffffff
push ebx
and eax, 1
xor ecx, ecx
push esi
push edi
xor edi, edi
cmp al, 1
mov eax, dword [ebp + 0xc]
sete cl
mov ebx, dword [ebp + 8]
and eax, 2
mov esi, 0x208
push esi
push edi
mov dword [ebp - 0x66c], ebx
mov dword [ebp - 0x67c], ecx
xor ecx, ecx
cmp al, 2
mov eax, dword [ebp + 0xc]
sete cl
and eax, 4
mov dword [ebp - 0x668], edi
mov dword [ebp - 0x680], ecx
xor ecx, ecx
cmp al, 4
sete cl
lea eax, [ebp - 0x414]
push eax
mov dword [ebp - 0x674], ecx
call fcn.00425d30
push esi
lea eax, [ebp - 0x20c]
push edi
push eax
call fcn.00425d30
add esp, 0x18
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileAttributesW]
mov dword [ebp - 0x678], eax
mov ebx, 0xffff
mov esi, 0x80070000
cmp eax, 0xffffffff
jne 0x434166
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
jne 0x434143
push 3
pop eax
test eax, eax
jle 0x43414b
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
jns 0x434166
push edi
push 0xd3
push str.dirutil.cpp
call fcn.0042fdc3
jmp 0x4344da
test byte [ebp - 0x678], 0x10
je 0x4344c0
test byte [ebp - 0x678], 1
je 0x4341b2
push 0x80
push dword [ebp - 0x66c]
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test eax, eax
jne 0x4341b2
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x43419f
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x4341aa
mov edi, 0x80004005
push edi
push 0xdc
jmp 0x434157
xor eax, eax
cmp dword [ebp - 0x67c], eax
jne 0x4341c8
cmp dword [ebp - 0x680], eax
je 0x4343d5
cmp dword [ebp - 0x674], eax
je 0x43420a
lea eax, [ebp - 0x414]
push eax
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathW]
test eax, eax
jne 0x43420a
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x4341f4
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x4341ff
mov edi, 0x80004005
push edi
push 0xe7
jmp 0x434157
lea eax, [ebp - 0x668]
push eax
push 0x444b68
push dword [ebp - 0x66c]
call fcn.0042faa7
mov edi, eax
test edi, edi
js 0x4344da
lea eax, [ebp - 0x664]
push eax
push dword [ebp - 0x668]
call dword [sym.imp.KERNEL32.dll_FindFirstFileW]
mov dword [ebp - 0x670], eax
cmp eax, 0xffffffff
jne 0x43426d
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x434257
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x434262
mov edi, 0x80004005
push edi
push 0xf2
jmp 0x434157
push 0x2e
pop eax
cmp ax, word [ebp - 0x638]
jne 0x4342a3
xor eax, eax
cmp ax, word [ebp - 0x636]
je 0x4343a7
push 0x2e
pop eax
cmp ax, word [ebp - 0x636]
jne 0x4342a3
xor eax, eax
cmp ax, word [ebp - 0x634]
je 0x4343a7
xor eax, eax
mov word [ebp - 0x432], ax
lea eax, [ebp - 0x668]
push eax
lea eax, [ebp - 0x638]
push eax
push dword [ebp - 0x66c]
call fcn.0042faa7
mov edi, eax
test edi, edi
js 0x4344c5
xor edi, edi
cmp dword [ebp - 0x680], edi
je 0x43430b
test byte [ebp - 0x664], 0x10
je 0x43430b
lea eax, [ebp - 0x668]
push eax
call fcn.0042f8b1
mov edi, eax
test edi, edi
js 0x4344c5
push dword [ebp + 0xc]
push dword [ebp - 0x668]
call fcn.0043408e
jmp 0x4343a7
cmp dword [ebp - 0x67c], edi
je 0x4343a7
test byte [ebp - 0x664], 7
je 0x434339
push 0x80
push dword [ebp - 0x668]
call dword [sym.imp.KERNEL32.dll_SetFileAttributesW]
test eax, eax
je 0x43443d
push dword [ebp - 0x668]
call dword [sym.imp.KERNEL32.dll_DeleteFileW]
test eax, eax
jne 0x4343a7
cmp dword [ebp - 0x674], edi
je 0x43447f
lea eax, [ebp - 0x20c]
push eax
push edi
push 0x44df80
lea eax, [ebp - 0x414]
push eax
call dword [sym.imp.KERNEL32.dll_GetTempFileNameW]
test eax, eax
je 0x43445e
mov edi, dword [sym.imp.KERNEL32.dll_MoveFileExW]
push 1
lea eax, [ebp - 0x20c]
push eax
push dword [ebp - 0x668]
call edi
push 4
push 0
test eax, eax
je 0x43439f
lea eax, [ebp - 0x20c]
push eax
jmp 0x4343a5
push dword [ebp - 0x668]
call edi
lea eax, [ebp - 0x664]
push eax
push dword [ebp - 0x670]
call dword [sym.imp.KERNEL32.dll_FindNextFileW]
test eax, eax
jne 0x43426d
mov edi, dword [sym.imp.KERNEL32.dll_GetLastError]
call edi
cmp eax, 0x12
jne 0x4344a0
xor edi, edi
push dword [ebp - 0x66c]
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
jne 0x4344c5
call dword [sym.imp.KERNEL32.dll_GetLastError]
test eax, eax
jle 0x4343f7
and eax, ebx
or eax, esi
mov edi, eax
cmp edi, 0x80070020
jne 0x434420
cmp dword [ebp - 0x674], 0
je 0x434428
push 4
push 0
push dword [ebp - 0x66c]
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
test eax, eax
je 0x434428
xor edi, edi
test edi, edi
jns 0x4344c5
push edi
push 0x14c
push str.dirutil.cpp
call fcn.0042fdc3
jmp 0x4344c5
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
jle 0x43444b
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x434456
mov edi, 0x80004005
push edi
push 0x116
jmp 0x43442e
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
jle 0x43446c
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x434477
mov edi, 0x80004005
push edi
push 0x120
jmp 0x43442e
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, edi
jle 0x43448d
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x434498
mov edi, 0x80004005
push edi
push 0x130
jmp 0x43442e
call edi
test eax, eax
jle 0x4344aa
and eax, ebx
or eax, esi
mov edi, eax
test edi, edi
js 0x4344b5
mov edi, 0x80004005
push edi
push 0x13d
jmp 0x43442e
mov edi, 0x8000ffff
cmp dword [ebp - 0x670], 0xffffffff
je 0x4344da
push dword [ebp - 0x670]
call dword [sym.imp.KERNEL32.dll_FindClose]
cmp dword [ebp - 0x668], 0
je 0x4344ee
push dword [ebp - 0x668]
call fcn.0042dd7e
mov ecx, dword [ebp - 4]
mov eax, edi
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.00425daa
leave
ret 8