Function at 0x47cef0
Capabilities:
Check if file exists
Delete directory
Delete file
Move file

Disassembly:
push ebp
mov ebp, esp
push ecx
push esi
mov esi, ecx
mov ecx, dword [esi + 0x80]
mov eax, dword [ecx]
call dword [eax + 0x2c]
cmp eax, 3
ja 0x47cf10
xor al, al
pop esi
mov esp, ebp
pop ebp
ret 8
mov eax, dword [esi]
mov ecx, esi
mov eax, dword [eax + 0x34]
call eax
test al, al
jne 0x47cf26
mov al, 1
pop esi
mov esp, ebp
pop ebp
ret 8
mov eax, dword [esi]
mov ecx, esi
push edi
mov eax, dword [eax + 0x60]
call eax
mov ecx, dword [esi + 0x1c]
test al, al
mov eax, dword [ecx]
je 0x47cfec
call dword [eax + 0x2c]
test eax, eax
je 0x47cf49
mov ecx, dword [esi + 0x1c]
jmp 0x47cf4f
mov ecx, dword [esi + 0x80]
mov eax, dword [ecx]
call dword [eax + 0x50]
mov edi, dword [sym.imp.KERNEL32.dll_DeleteFileW]
push eax
call edi
test eax, eax
jne 0x47cf90
call dword [sym.imp.KERNEL32.dll_GetLastError]
cmp eax, 2
je 0x47cf90
cmp eax, 5
jne 0x47cfbf
mov eax, dword [esi]
mov ecx, esi
call dword [eax + 0xdc]
mov ecx, esi
call fcn.0047b010
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x50]
push eax
call edi
test eax, eax
je 0x47cfbf
cmp byte [ebp + 8], 0
je 0x47d0b6
mov ecx, dword [esi + 0x80]
push 0
mov eax, dword [ecx]
call dword [eax + 0x50]
push eax
push 0x1005
push 4
call dword [sym.imp.SHELL32.dll_SHChangeNotify]
pop edi
mov al, 1
pop esi
mov esp, ebp
pop ebp
ret 8
cmp byte [ebp + 0xc], 0
je 0x47d0f8
mov ecx, esi
call fcn.0047b010
push 4
push 0
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
pop edi
xor al, al
pop esi
mov esp, ebp
pop ebp
ret 8
call dword [eax + 0x2c]
test eax, eax
je 0x47cff8
mov ecx, dword [esi + 0x1c]
jmp 0x47cffe
mov ecx, dword [esi + 0x80]
mov eax, dword [ecx]
call dword [eax + 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
jne 0x47d095
mov eax, dword [esi]
mov ecx, esi
push ebx
push 0
push 0
push 1
mov byte [ebp - 1], 1
call dword [eax + 0x1a8]
mov edi, eax
xor ebx, ebx
mov ecx, edi
mov edx, dword [edi]
call dword [edx + 0x30]
test eax, eax
je 0x47d05e
mov eax, dword [edi + 0x1c]
push dword [ebp + 0xc]
push 0
mov ecx, dword [eax + ebx*4]
mov eax, dword [ecx]
mov eax, dword [eax + 0xf8]
call eax
neg al
mov ecx, edi
sbb al, al
inc ebx
and byte [ebp - 1], al
mov eax, dword [edi]
call dword [eax + 0x30]
cmp ebx, eax
jb 0x47d036
mov eax, dword [edi + 8]
lea ecx, [edi + 8]
call dword [eax + 4]
cmp byte [ebp - 1], 0
pop ebx
je 0x47d0ca
mov ecx, dword [esi + 0x1c]
mov eax, dword [ecx]
call dword [eax + 0x2c]
test eax, eax
je 0x47d07f
mov ecx, dword [esi + 0x1c]
jmp 0x47d085
mov ecx, dword [esi + 0x80]
mov eax, dword [ecx]
call dword [eax + 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryW]
test eax, eax
je 0x47d0c0
cmp byte [ebp + 8], 0
je 0x47d0b6
mov ecx, dword [esi + 0x80]
push 0
mov eax, dword [ecx]
call dword [eax + 0x50]
push eax
push 0x1005
push 0x10
call dword [sym.imp.SHELL32.dll_SHChangeNotify]
pop edi
mov al, 1
pop esi
mov esp, ebp
pop ebp
ret 8
mov eax, dword [ebp + 0xc]
test al, al
jmp 0x47cfc3
mov eax, dword [ebp + 0xc]
test al, al
je 0x47d0f8
mov ecx, dword [esi + 0x1c]
mov eax, dword [ecx]
call dword [eax + 0x2c]
test eax, eax
je 0x47d0e2
mov ecx, dword [esi + 0x1c]
jmp 0x47d0e8
mov ecx, dword [esi + 0x80]
mov eax, dword [ecx]
push 4
push 0
call dword [eax + 0x50]
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExW]
pop edi
xor al, al
pop esi
mov esp, ebp
pop ebp
ret 8