Function at 0x443754
Capabilities:
Delete directory
Delete file
Move file
Set file attributes

Disassembly:
push ebp
mov ebp, esp
xor ecx, ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ecx
push ebx
push esi
push edi
mov dword [ebp - 0x10], edx
xor eax, eax
push ebp
push 0x443c15
push dword fs:[eax]
mov dword fs:[eax], esp
xor edx, edx
push ebp
push 0x443b91
push dword fs:[edx]
mov dword fs:[edx], esp
lea eax, [ebp - 4]
push eax
mov ecx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov ecx, dword [ecx]
mov edx, 0x443c30
mov eax, dword [ebp - 0x10]
call fcn.00441260
xor ecx, ecx
mov edx, 0x443c50
mov eax, dword [ebp - 0x10]
call fcn.004411ec
mov esi, eax
xor ecx, ecx
mov edx, 0x443c6c
mov eax, dword [ebp - 0x10]
call fcn.004411ec
mov ebx, eax
mov eax, dword [ebp - 4]
mov edx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov edx, dword [edx]
call sub.rtl160.bpl__System__UStrEqual_qqrv
jne 0x4437dd
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x443bed
cmp esi, 8
ja case.0x4437e6.0
jmp dword [esi*4 + 0x4437ed]
test bl, bl
je 0x44388f
mov dl, 1
mov eax, dword [0x441ba4]
call fcn.00441fc0
mov dword [ebp - 0x14], eax
xor eax, eax
push ebp
push 0x443888
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [ebp - 4]
call sub.rtl160.bpl__System_Sysutils_FileExists_qqrx20System_UnicodeStringo
test al, al
je 0x44384e
mov eax, dword [ebp - 4]
call sub.rtl160.bpl__System__UStrToPWChar_qqrx20System_UnicodeString
push eax
call sub.kernel32.dll_DeleteFileW
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
call fcn.00442994
test al, al
jne 0x443872
mov edx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov edx, dword [edx]
mov ecx, 2
mov eax, dword [ebp - 4]
call fcn.00443394
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push case.0x4437e6.0
lea eax, [ebp - 0x14]
call sub.rtl160.bpl__System_Sysutils_FreeAndNil_qqrpv
ret
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x10]
call fcn.004412e0
mov eax, dword [ebp - 0x10]
cmp dword [eax + 0x28], 0
je case.0x4437e6.0
call sub.kernel32.dll_GetLastError_1
mov edx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov edx, dword [edx]
mov ecx, eax
mov eax, dword [ebp - 4]
call fcn.00443394
jmp case.0x4437e6.0
test bl, bl
je 0x443941
mov dl, 1
mov eax, dword [0x441ba4]
call fcn.00441fc0
mov dword [ebp - 0x14], eax
xor eax, eax
push ebp
push 0x44393a
push dword fs:[eax]
mov dword fs:[eax], esp
mov dl, 1
mov eax, dword [ebp - 4]
call sub.rtl160.bpl__System_Sysutils_FileExists_qqrx20System_UnicodeStringo
test al, al
je 0x443900
mov eax, dword [ebp - 4]
call sub.rtl160.bpl__System__UStrToPWChar_qqrx20System_UnicodeString
push eax
call sub.kernel32.dll_DeleteFileW
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x14]
call fcn.00442994
test al, al
jne 0x443924
mov edx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov edx, dword [edx]
mov ecx, 2
mov eax, dword [ebp - 4]
call fcn.00443394
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push case.0x4437e6.0
lea eax, [ebp - 0x14]
call sub.rtl160.bpl__System_Sysutils_FreeAndNil_qqrpv
ret
mov edx, dword [ebp - 4]
mov eax, dword [ebp - 0x10]
call fcn.004412e0
mov eax, dword [ebp - 0x10]
cmp dword [eax + 0x28], 0
je 0x44396c
call sub.kernel32.dll_GetLastError_1
mov edx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov edx, dword [edx]
mov ecx, eax
mov eax, dword [ebp - 4]
call fcn.00443394
or ecx, 0xffffffff
mov edx, 0x443c94
mov eax, dword [ebp - 0x10]
call fcn.004411ec
mov ebx, eax
cmp ebx, 0xffffffff
je case.0x4437e6.0
push ebx
mov eax, dword [ebp - 4]
call sub.rtl160.bpl__System__UStrToPWChar_qqrx20System_UnicodeString
push eax
call sub.kernel32.dll_SetFileAttributesW
test eax, eax
jne case.0x4437e6.0
call sub.kernel32.dll_GetLastError_1
mov edx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov edx, dword [edx]
mov ecx, eax
mov eax, dword [ebp - 4]
call fcn.00443394
jmp case.0x4437e6.0
mov eax, dword [ebp - 4]
call sub.rtl160.bpl__System__UStrToPWChar_qqrx20System_UnicodeString
mov ebx, eax
mov edx, ebx
lea eax, [ebp - 0x18]
call sub.rtl160.bpl__System__UStrFromPWChar_qqrr20System_UnicodeStringpb
mov eax, dword [ebp - 0x18]
mov dl, 1
call sub.rtl160.bpl__System_Sysutils_FileExists_qqrx20System_UnicodeStringo
test al, al
je case.0x4437e6.0
push ebx
call sub.kernel32.dll_DeleteFileW
test eax, eax
jne case.0x4437e6.0
call sub.kernel32.dll_GetLastError_1
mov edx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov edx, dword [edx]
mov ecx, eax
mov eax, dword [ebp - 4]
call fcn.00443394
jmp case.0x4437e6.0
lea eax, [ebp - 8]
push eax
mov ecx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov ecx, dword [ecx]
mov edx, 0x443cb0
mov eax, dword [ebp - 0x10]
call fcn.00441260
mov eax, dword [ebp - 8]
mov edx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov edx, dword [edx]
call sub.rtl160.bpl__System__UStrEqual_qqrv
je case.0x4437e6.0
push 1
mov eax, dword [ebp - 8]
call sub.rtl160.bpl__System__UStrToPWChar_qqrx20System_UnicodeString
push eax
mov eax, dword [ebp - 4]
call sub.rtl160.bpl__System__UStrToPWChar_qqrx20System_UnicodeString
push eax
call sub.kernel32.dll_MoveFileExW
test eax, eax
jne case.0x4437e6.0
call sub.kernel32.dll_GetLastError_1
mov ecx, eax
mov edx, dword [ebp - 8]
mov eax, dword [ebp - 4]
call fcn.00443394
jmp case.0x4437e6.0
or ecx, 0xffffffff
mov edx, 0x443c94
mov eax, dword [ebp - 0x10]
call fcn.004411ec
mov ebx, eax
cmp ebx, 0xffffffff
je case.0x4437e6.0
push ebx
mov eax, dword [ebp - 4]
call sub.rtl160.bpl__System__UStrToPWChar_qqrx20System_UnicodeString
push eax
call sub.kernel32.dll_SetFileAttributesW
test eax, eax
jne case.0x4437e6.0
call sub.kernel32.dll_GetLastError_1
mov edx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov edx, dword [edx]
mov ecx, eax
mov eax, dword [ebp - 4]
call fcn.00443394
jmp case.0x4437e6.0
mov eax, dword [ebp - 4]
call sub.rtl160.bpl__System__UStrToPWChar_qqrx20System_UnicodeString
mov ebx, eax
mov edx, ebx
lea eax, [ebp - 0x1c]
call sub.rtl160.bpl__System__UStrFromPWChar_qqrr20System_UnicodeStringpb
mov eax, dword [ebp - 0x1c]
mov dl, 1
call sub.rtl160.bpl__System_Sysutils_DirectoryExists_qqrx20System_UnicodeStringo
test al, al
je case.0x4437e6.0
push ebx
call sub.kernel32.dll_RemoveDirectoryW
test eax, eax
jne case.0x4437e6.0
call sub.kernel32.dll_GetLastError_1
mov edx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov edx, dword [edx]
mov ecx, eax
mov eax, dword [ebp - 4]
call fcn.00443394
jmp case.0x4437e6.0
mov eax, dword [ebp - 4]
call sub.rtl160.bpl__System__UStrToPWChar_qqrx20System_UnicodeString
mov edx, eax
lea eax, [ebp - 0x20]
call sub.rtl160.bpl__System__UStrFromPWChar_qqrr20System_UnicodeStringpb
mov eax, dword [ebp - 0x20]
mov dl, 1
call sub.rtl160.bpl__System_Sysutils_DirectoryExists_qqrx20System_UnicodeStringo
test al, al
jne case.0x4437e6.0
lea eax, [ebp - 0xc]
push eax
mov ecx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov ecx, dword [ecx]
mov edx, 0x443c94
mov eax, dword [ebp - 0x10]
call fcn.00441260
mov eax, dword [ebp - 0xc]
mov edx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov edx, dword [edx]
call sub.rtl160.bpl__System__UStrEqual_qqrv
je 0x443b64
mov edx, dword [ebp - 0xc]
mov eax, dword [ebp - 4]
call fcn.00443560
jmp case.0x4437e6.0
mov eax, dword [ebp - 4]
call sub.rtl160.bpl__System_Sysutils_ForceDirectories_qqr20System_UnicodeString
test al, al
jne case.0x4437e6.0
call sub.kernel32.dll_GetLastError_1
mov edx, dword [sym.imp.rtl160.bpl__System_Sysutils_EmptyStr]
mov edx, dword [edx]
mov ecx, eax
mov eax, dword [ebp - 4]
call fcn.00443394
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x443bed
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x443c1c
lea eax, [ebp - 0x20]
mov edx, 3
call sub.rtl160.bpl__System__UStrArrayClr_qqrpvi
lea eax, [ebp - 0xc]
mov edx, 3
call sub.rtl160.bpl__System__UStrArrayClr_qqrpvi
ret