Function at 0x4d15f4
Capabilities:
Check if file exists
Create process on windows
Delete directory
Delete file
Get file attributes

Disassembly:
push ebp
mov ebp, esp
add esp, 0xffffffdc
push ebx
push esi
push edi
xor edx, edx
mov dword [ebp - 0x24], edx
mov dword [ebp - 0x20], edx
mov dword [ebp - 0x1c], edx
mov dword [ebp - 0x18], edx
mov dword [ebp - 4], eax
xor eax, eax
push ebp
push 0x4d1af9
push dword fs:[eax]
mov dword fs:[eax], esp
mov edx, 0x320
mov eax, dword [ebp - 4]
call fcn.004d0750
mov eax, dword [ebp - 4]
mov byte [eax + 0x3b0], 0
mov eax, dword [ebp - 4]
mov byte [eax + 0x3b1], 0
mov byte [ebp - 5], 0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3a0]
mov eax, dword [eax + 0x2a0]
mov edx, 0x4d1b14
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x398]
mov edx, 0x4d1b14
call fcn.004741f0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x39c]
mov edx, 0xa
call fcn.004ad888
mov edx, 0x258
mov eax, dword [ebp - 4]
call fcn.004d0750
mov dl, 1
mov eax, 0x4d1b48
call fcn.0041cbfc
test al, al
je 0x4d183c
mov dl, 1
mov eax, 0x4d1b6c
call fcn.0041cbfc
test al, al
je 0x4d183c
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3a0]
mov eax, dword [eax + 0x2a0]
mov edx, 0x4d1ba4
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x398]
mov edx, 0x4d1ba4
call fcn.004741f0
mov edx, 0x258
mov eax, dword [ebp - 4]
call fcn.004d0750
mov dl, 1
mov eax, 0x4d1c08
call fcn.0041cb64
test al, al
je 0x4d176e
mov eax, 0x4d1c08
call fcn.004072dc
push eax
call sub.kernel32.dll_DeleteFileW
cmp eax, 1
sbb eax, eax
inc eax
mov byte [ebp - 6], al
cmp byte [ebp - 6], 0
jne 0x4d176e
call sub.kernel32.dll_GetLastError_1
mov dword [ebp - 0x10], eax
mov eax, 0x4d1c08
call fcn.004072dc
push eax
call sub.kernel32.dll_GetFileAttributesW
mov dword [ebp - 0xc], eax
cmp dword [ebp - 0xc], 0xffffffff
je 0x4d1765
test byte [ebp - 0xb], 4
je 0x4d1765
test byte [ebp - 0xc], 0x10
je 0x4d1765
mov eax, 0x4d1c08
call fcn.004072dc
push eax
call sub.kernel32.dll_RemoveDirectoryW
cmp eax, 1
sbb eax, eax
inc eax
mov byte [ebp - 6], al
jmp 0x4d176e
mov eax, dword [ebp - 0x10]
push eax
call sub.kernel32.dll_SetLastError
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x39c]
mov edx, 0xa
call fcn.004ad888
mov edx, 0x4d1c4c
mov eax, dword [ebp - 4]
call fcn.004d0830
mov edx, 0x64
mov eax, dword [ebp - 4]
call fcn.004d0750
xor eax, eax
push ebp
push 0x4d17d0
push dword fs:[eax]
mov dword fs:[eax], esp
push 5
push 0x4d1c78
push 0x4d1ca4
push 0x4d1ca8
push 0x4d1cec
push 0
call sub.shell32.dll_ShellExecuteW
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4d17da
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3a0]
mov eax, dword [eax + 0x2a0]
mov edx, 0x4d1d04
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x398]
mov edx, 0x4d1d04
call fcn.004741f0
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x39c]
mov edx, 0x64
call fcn.004ad888
mov edx, 0xfa0
mov eax, dword [ebp - 4]
call fcn.004d0750
mov eax, dword [ebp - 4]
mov byte [eax + 0x3b1], 1
mov eax, dword [0x4ddbac]
mov eax, dword [eax]
call fcn.004c1f1c
xor eax, eax
push ebp
push 0x4d197f
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 4]
cmp byte [eax + 0x3b1], 0
jne 0x4d1975
mov dl, 1
mov eax, 0x4d1b48
call fcn.0041cbfc
test al, al
jne 0x4d188d
mov eax, 0x4d1b48
call fcn.0041ccc8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3a0]
mov eax, dword [eax + 0x2a0]
mov edx, 0x4d1d4c
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov dl, 1
mov eax, 0x4d1d94
call fcn.0041cbfc
test al, al
jne 0x4d18c0
mov eax, 0x4d1d94
call fcn.0041ccc8
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3a0]
mov eax, dword [eax + 0x2a0]
mov edx, 0x4d1dcc
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov dl, 1
mov eax, 0x4d1d94
call fcn.0041cbfc
test al, al
je 0x4d1975
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3a0]
mov eax, dword [eax + 0x2a0]
mov edx, 0x4d1ba4
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov edx, 0x4d1e24
mov eax, dword [ebp - 4]
call fcn.004d0830
xor eax, eax
push ebp
push 0x4d192f
push dword fs:[eax]
mov dword fs:[eax], esp
push 5
push 0x4d1c78
push 0x4d1ca4
push 0x4d1e50
push 0x4d1cec
push 0
call sub.shell32.dll_ShellExecuteW
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4d1939
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3a0]
mov eax, dword [eax + 0x2a0]
mov edx, 0x4d1d04
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov edx, 0x7d0
mov eax, dword [ebp - 4]
call fcn.004d0750
mov eax, dword [ebp - 4]
mov byte [eax + 0x3b1], 1
mov eax, dword [0x4ddbac]
mov eax, dword [eax]
call fcn.004c1f1c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4d19a6
cmp byte [ebp - 5], 0
je 0x4d1ade
lea edx, [ebp - 0x18]
mov eax, 0x4d1f48
call fcn.00423754
mov edx, dword [ebp - 0x18]
mov eax, dword [ebp - 4]
add eax, 0x3a8
call fcn.00406d04
lea edx, [ebp - 0x1c]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3a8]
call fcn.004225a4
mov edx, dword [ebp - 0x1c]
mov eax, dword [ebp - 4]
add eax, 0x3a8
call fcn.00406d04
mov eax, dword [ebp - 4]
add eax, 0x3a8
mov edx, 0x4d1f60
call fcn.004074d8
mov eax, dword [ebp - 4]
mov ecx, dword [eax + 0x3a8]
lea eax, [ebp - 0x20]
mov edx, 0x4d1f80
call fcn.00407530
mov edx, dword [ebp - 0x20]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3a0]
mov eax, dword [eax + 0x2a0]
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3a8]
call fcn.0041ccc8
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x3a8]
mov eax, dword [ebp - 4]
call fcn.004d0830
xor eax, eax
push ebp
push 0x4d1a98
push dword fs:[eax]
mov dword fs:[eax], esp
push 5
push 0
push 0x4d1ca4
mov eax, dword [ebp - 4]
mov edx, dword [eax + 0x3a8]
lea eax, [ebp - 0x24]
mov ecx, 0x4d1fb8
call fcn.00407530
mov eax, dword [ebp - 0x24]
call fcn.004072dc
push eax
push 0x4d1cec
push 0
call sub.shell32.dll_ShellExecuteW
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
jmp 0x4d1aa2
mov eax, dword [ebp - 4]
mov eax, dword [eax + 0x3a0]
mov eax, dword [eax + 0x2a0]
mov edx, 0x4d1d04
mov ecx, dword [eax]
call dword [ecx + 0x38]
mov edx, 0x1388
mov eax, dword [ebp - 4]
call fcn.004d0750
mov eax, dword [ebp - 4]
mov byte [eax + 0x3b1], 1
mov eax, dword [0x4ddbac]
mov eax, dword [eax]
call fcn.004c1f1c
xor eax, eax
pop edx
pop ecx
pop ecx
mov dword fs:[eax], edx
push 0x4d1b00
lea eax, [ebp - 0x24]
mov edx, 4
call fcn.004069a4
ret