Function at 0x401a10
Capabilities:
Delete directory
Delete file
Set current directory

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x11c
mov eax, dword [0x416040]
xor eax, ebp
mov dword [ebp - 4], eax
push ebx
push esi
mov esi, dword [ebp + 0x10]
push edi
call fcn.00401390
mov ecx, eax
test ecx, ecx
je 0x401d8c
mov eax, dword [ecx]
call dword [eax + 0xc]
add eax, 0x10
mov dword [ebp - 0x10c], eax
test esi, esi
je 0x401a73
test esi, 0xffff0000
jne 0x401a63
movzx eax, si
lea ecx, [ebp - 0x10c]
push eax
call fcn.004015c0
jmp 0x401a82
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x401a68
sub ecx, edx
jmp 0x401a75
xor ecx, ecx
push ecx
push esi
lea ecx, [ebp - 0x10c]
call fcn.00401830
mov edi, dword [ebp - 0x10c]
or ebx, 0xffffffff
cmp dword [edi - 0xc], 0
jle 0x401d58
push 0x20
push edi
call fcn.00405807
mov esi, eax
add esp, 8
test esi, esi
je 0x401d58
sub esi, edi
mov dword [ebp - 0x114], esi
test esi, esi
jle 0x401d58
push 0x104
lea eax, [ebp - 0x108]
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
lea eax, [ebp - 0x108]
push 0x5c
push eax
call fcn.00402ce0
add esp, 8
test eax, eax
je 0x401ae6
mov byte [eax], 0
lea eax, [ebp - 0x108]
push eax
call dword [sym.imp.KERNEL32.dll_SetCurrentDirectoryA]
push esi
lea eax, [ebp - 0x110]
push eax
lea ecx, [ebp - 0x10c]
call fcn.004014c0
push 0xa
push 0
push dword [eax]
call fcn.0040573f
mov edx, dword [ebp - 0x110]
add esp, 0xc
mov esi, eax
add edx, 0xfffffff0
mov ecx, ebx
lock xadd dword [edx + 0xc], ecx
dec ecx
test ecx, ecx
jg 0x401b33
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
push esi
push 0
push 0x100000
call dword [sym.imp.KERNEL32.dll_OpenProcess]
mov esi, eax
test esi, esi
je 0x401b62
push 0xffffffffffffffff
push esi
call dword [sym.imp.KERNEL32.dll_WaitForSingleObject]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
push 0xbb8
call dword [sym.imp.KERNEL32.dll_Sleep]
call fcn.00401390
test eax, eax
je 0x401d8c
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
add eax, 0x10
mov dword [ebp - 0x10c], eax
call fcn.00401390
test eax, eax
je 0x401d8c
mov edx, dword [eax]
mov ecx, eax
call dword [edx + 0xc]
mov esi, dword [edi - 0xc]
add eax, 0x10
mov dword [ebp - 0x110], eax
xor ebx, ebx
mov dword [ebp - 0x11c], eax
mov eax, esi
sub eax, dword [ebp - 0x114]
add eax, 0xffffffff
cmovns ebx, eax
cmp ebx, esi
jl 0x401bd3
lea eax, [edi - 0x10]
push eax
call fcn.004011f0
add esp, 4
lea esi, [eax + 0x10]
mov dword [ebp - 0x114], esi
jmp 0x401c87
mov ecx, dword [edi - 0x10]
test ecx, ecx
je 0x401bf1
mov eax, dword [ecx]
call dword [eax + 0x10]
mov ecx, eax
test ecx, ecx
je 0x401bf1
sub esi, ebx
add esi, edi
mov dword [ebp - 0x118], esi
jmp 0x401c11
call fcn.00401390
mov ecx, eax
mov edx, dword [eax]
call dword [edx + 0x10]
sub esi, ebx
mov ecx, eax
add esi, edi
mov dword [ebp - 0x118], esi
test ecx, ecx
je 0x401d8c
test esi, esi
jne 0x401c1d
test ebx, ebx
jne 0x401d82
mov eax, dword [ecx]
push 1
push ebx
call dword [eax]
test eax, eax
je 0x401d96
lea esi, [eax + 0x10]
mov dword [ebp - 0x114], esi
test ebx, ebx
js 0x401d82
cmp ebx, dword [esi - 8]
jg 0x401d82
mov dword [esi - 0xc], ebx
mov byte [esi + ebx], 0
test ebx, ebx
je 0x401c87
test esi, esi
je 0x401c77
mov eax, dword [ebp - 0x118]
push ebx
test eax, eax
je 0x401c6c
push eax
push esi
call fcn.00403240
add esp, 0xc
jmp 0x401c87
push 0
push esi
call fcn.004037c0
add esp, 0xc
call fcn.00405360
mov dword [eax], 0x16
call fcn.0040527f
lea eax, [ebp - 0x114]
push eax
lea ecx, [ebp - 0x10c]
call fcn.00401050
or ebx, 0xffffffff
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x401cb3
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
mov esi, dword [ebp - 0x10c]
push esi
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
push 0x5c
push esi
call fcn.004058bb
add esp, 8
test eax, eax
je 0x401d24
sub eax, esi
test eax, eax
jle 0x401d24
push eax
lea eax, [ebp - 0x110]
push eax
lea ecx, [ebp - 0x10c]
call fcn.004014c0
push eax
lea ecx, [ebp - 0x11c]
call fcn.00401050
mov edx, dword [ebp - 0x110]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x401d11
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
mov eax, dword [ebp - 0x11c]
push eax
mov dword [ebp - 0x110], eax
call dword [sym.imp.KERNEL32.dll_RemoveDirectoryA]
mov edx, dword [ebp - 0x110]
mov eax, ebx
add edx, 0xfffffff0
lock xadd dword [edx + 0xc], eax
dec eax
test eax, eax
jg 0x401d41
mov ecx, dword [edx]
push edx
mov eax, dword [ecx]
call dword [eax + 4]
add esi, 0xfffffff0
mov eax, ebx
lock xadd dword [esi + 0xc], eax
dec eax
test eax, eax
jg 0x401d58
mov ecx, dword [esi]
push esi
mov eax, dword [ecx]
call dword [eax + 4]
add edi, 0xfffffff0
lock xadd dword [edi + 0xc], ebx
dec ebx
test ebx, ebx
jg 0x401d6d
mov ecx, dword [edi]
push edi
mov eax, dword [ecx]
call dword [eax + 4]
mov ecx, dword [ebp - 4]
xor eax, eax
pop edi
pop esi
xor ecx, ebp
pop ebx
call fcn.004021ec
mov esp, ebp
pop ebp
ret 0x10
push 0x80070057
call fcn.004011c0
push 0x80004005
call fcn.004011c0
call fcn.00401980
int3