Function at 0x401360
Capabilities:
Check if file exists
Delete directory
Delete file

Disassembly:
sub esp, 0x640
push ebx
push ebp
push esi
push edi
xor ebx, ebx
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x449]
mov byte [esp + 0x448], bl
mov byte [esp + 0x344], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x345]
mov byte [esp + 0x10], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 9
xor eax, eax
lea edi, [esp + 0x11]
mov byte [esp + 0x38], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x39]
mov byte [esp + 0x240], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x241]
mov byte [esp + 0x54c], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x54d]
mov byte [esp + 0x13c], bl
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
mov ecx, 0x40
xor eax, eax
lea edi, [esp + 0x13d]
rep stosd dword es:[edi], eax
stosw word es:[edi], ax
stosb byte es:[edi], al
lea eax, [esp + 0x38]
push eax
call fcn.004012d0
add esp, 4
test eax, eax
jne 0x401435
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x640
ret
mov edx, dword [esp + 0x654]
lea ecx, [esp + 0x38]
push ecx
push edx
call fcn.004010e0
add esp, 8
test eax, eax
jne 0x40145c
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x640
ret
lea eax, [esp + 0x10]
lea ecx, [esp + 0x38]
push eax
push ecx
call fcn.00403050
add esp, 8
test eax, eax
jne 0x401480
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x640
ret
mov edx, dword [esp + 0x65c]
lea eax, [esp + 0x10]
push edx
push eax
call fcn.00407d00
add esp, 8
test eax, eax
je 0x4014b4
push str.Error:_check_file_md5_failed._n
call fcn.00403242
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x640
ret
lea edi, [esp + 0x38]
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x240]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x5c
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x244]
push ecx
call fcn.00403310
add esp, 8
cmp eax, ebx
jne 0x401500
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x640
ret
mov byte [eax], bl
push 1
lea edx, [esp + 0x244]
push ebx
lea eax, [esp + 0x40]
push edx
push eax
call fcn.00401120
add esp, 0x10
test eax, eax
jne 0x40152c
pop edi
pop esi
pop ebp
or eax, 0xffffffff
pop ebx
add esp, 0x640
ret
mov ecx, dword [esp + 0x664]
push ecx
call fcn.00403273
push eax
call fcn.00401260
lea edi, [esp + 0x248]
or ecx, 0xffffffff
xor eax, eax
add esp, 8
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
lea edx, [esp + 0x13c]
mov eax, ecx
mov esi, edi
mov edi, edx
lea edx, [esp + 0x13c]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, str.cleanmacroupdir
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
mov edx, dword [esp + 0x658]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
dec ecx
cmp ecx, 0x104
jb 0x4015d2
push str.Error:_invalid_path._n
call fcn.00403242
add esp, 4
or eax, 0xffffffff
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x640
ret
or ecx, 0xffffffff
lea edi, [esp + 0x13c]
xor eax, eax
lea ebp, [esp + 0x448]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov eax, ecx
mov esi, edi
shr ecx, 2
mov edi, ebp
lea ebp, [esp + 0x448]
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
xor eax, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
or ecx, 0xffffffff
mov edi, str..
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov edi, ebp
mov ebp, ecx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea ebp, [esp + 0x344]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov edx, ecx
mov esi, edi
mov edi, ebp
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, edx
lea edx, [esp + 0x344]
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edi, 0x409114
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
mov esi, edi
mov ebp, ecx
mov edi, edx
or ecx, 0xffffffff
repne scasb al, byte es:[edi]
mov ecx, ebp
dec edi
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, ebp
lea eax, [esp + 0x344]
and ecx, 3
push eax
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x44c]
push ecx
call fcn.004011f0
add esp, 8
lea edx, [esp + 0x38]
push edx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
lea eax, [esp + 0x13c]
push eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
mov ebp, dword [esp + 0x660]
push ebp
call dword [sym.imp.SHLWAPI.dll_PathFileExistsA]
cmp eax, 1
jne 0x401710
mov edi, ebp
or ecx, 0xffffffff
xor eax, eax
lea edx, [esp + 0x54c]
repne scasb al, byte es:[edi]
not ecx
sub edi, ecx
push 0x5c
mov eax, ecx
mov esi, edi
mov edi, edx
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
lea ecx, [esp + 0x550]
push ecx
call fcn.00403310
push ebx
lea edx, [esp + 0x558]
push 1
push edx
push ebp
mov byte [eax], bl
call fcn.00401120
add esp, 0x18
pop edi
pop esi
pop ebp
mov eax, 1
pop ebx
add esp, 0x640
ret