Function at 0x401b30
Capabilities:
Copy file
Delete file
Set file attributes

Disassembly:
mov ecx, dword [0x40ef10]
sub esp, 0x208
lea eax, [esp + 0x104]
push ebx
push esi
push edi
push 0x104
push eax
push ecx
xor esi, esi
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
mov edi, dword [esp + 0x218]
push 0x40e0e8
push edi
call fcn.00406220
add esp, 8
test eax, eax
jne 0x401ba8
push 0x40e0e4
push edi
call fcn.00406220
add esp, 8
test eax, eax
jne 0x401ba8
push 0x40e0e0
push edi
call fcn.00406220
add esp, 8
test eax, eax
jne 0x401ba8
push 0x40e0dc
push edi
call fcn.00406220
add esp, 8
test eax, eax
je 0x401c9e
mov cl, byte [eax + 3]
add eax, 3
cmp cl, 0x22
jne 0x401bb4
inc eax
lea edx, [esp + 0xc]
push eax
push edx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
lea eax, [esp + 0xc]
push eax
call ebx
xor ecx, ecx
test eax, eax
jle 0x401bfb
mov dl, byte [esp + ecx + 0xc]
cmp dl, 0x22
je 0x401bf6
cmp dl, 0x20
jne 0x401bef
mov dl, byte [esp + ecx + 0xd]
cmp dl, 0x2d
je 0x401bf6
cmp dl, 0x5c
je 0x401bf6
inc ecx
cmp ecx, eax
jl 0x401bd3
jmp 0x401bfb
mov byte [esp + ecx + 0xc], 0
lea ecx, [esp + 0xc]
push ecx
call ebx
test eax, eax
jle 0x401c97
push ebp
push 2
call fcn.00401b00
add esp, 4
call dword [sym.imp.KERNEL32.dll_GetTickCount]
mov esi, dword [sym.imp.KERNEL32.dll_CopyFileA]
mov ebx, dword [sym.imp.KERNEL32.dll_GetLastError]
mov ebp, eax
lea edx, [esp + 0x10]
push 0x80
push edx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
lea eax, [esp + 0x10]
push 0
lea ecx, [esp + 0x118]
push eax
push ecx
call esi
test eax, eax
jne 0x401c60
call ebx
call dword [sym.imp.KERNEL32.dll_GetTickCount]
lea edx, [ebp + 0x2710]
cmp eax, edx
jbe 0x401c29
mov esi, dword [sym.imp.KERNEL32.dll_lstrcatA]
lea eax, [esp + 0x10]
push str.__y:
push eax
call esi
lea ecx, [esp + 0x114]
lea edx, [esp + 0x10]
push ecx
push edx
call esi
lea eax, [esp + 0x10]
push 5
push eax
call fcn.00401a80
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
add esp, 8
pop ebp
mov esi, 1
jmp 0x401ca4
mov ebx, dword [sym.imp.KERNEL32.dll_lstrlenA]
push 0x40e0d0
push edi
call fcn.00406220
add esp, 8
test eax, eax
jne 0x401cf0
push 0x40e0cc
push edi
call fcn.00406220
add esp, 8
test eax, eax
jne 0x401cf0
push 0x40e0c8
push edi
call fcn.00406220
add esp, 8
test eax, eax
jne 0x401cf0
push 0x40e0c4
push edi
call fcn.00406220
add esp, 8
test eax, eax
je 0x401d95
mov cl, byte [eax + 3]
add eax, 3
cmp cl, 0x22
jne 0x401cfc
inc eax
lea ecx, [esp + 0xc]
push eax
push ecx
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea edx, [esp + 0xc]
push edx
call ebx
xor ecx, ecx
test eax, eax
jle 0x401d3d
mov dl, byte [esp + ecx + 0xc]
cmp dl, 0x22
je 0x401d38
cmp dl, 0x20
jne 0x401d31
mov dl, byte [esp + ecx + 0xd]
cmp dl, 0x2d
je 0x401d38
cmp dl, 0x5c
je 0x401d38
inc ecx
cmp ecx, eax
jl 0x401d15
jmp 0x401d3d
mov byte [esp + ecx + 0xc], 0
lea eax, [esp + 0xc]
push eax
call ebx
test eax, eax
jle 0x401d89
push 2
call fcn.00401b00
add esp, 4
lea ecx, [esp + 0xc]
push 0x80
push ecx
call dword [sym.imp.KERNEL32.dll_SetFileAttributesA]
mov edi, dword [sym.imp.KERNEL32.dll_GetTickCount]
call edi
mov ebx, dword [sym.imp.KERNEL32.dll_DeleteFileA]
mov esi, eax
lea edx, [esp + 0xc]
push edx
call ebx
test eax, eax
jne 0x401d89
call edi
lea ecx, [esi + 0x2710]
cmp eax, ecx
jbe 0x401d72
pop edi
pop esi
xor eax, eax
pop ebx
add esp, 0x208
ret
mov eax, esi
pop edi
pop esi
pop ebx
add esp, 0x208
ret