Function at 0x403514
Capabilities:
Encode data using xor
Get file size
Timestomp file

Disassembly:
enter 0x44, 0
push ebx
push esi
push edi
push 0x40a6e9
push 0x403783
call fcn.004081d8
mov eax, dword [ebp - 0x40]
and eax, 0
mov dword [ebp - 0x40], eax
mov eax, dword [ebp + 0xc]
inc eax
push eax
push 0
call fcn.004072bf
mov edi, eax
push 2
mov eax, dword [ebp + 8]
push eax
call sub.kernel32.dll__lopen
mov dword [ebp - 0x44], eax
mov eax, dword [ebp - 0x44]
cmp eax, 0xffffffff
jne 0x40356f
push 0x10
push 0
mov eax, dword [0x40b54c]
push dword [eax + 0x3c]
push 0
call sub.user32.dll_MessageBoxA
jmp 0x40375c
lea eax, [ebp - 0x2a]
push eax
lea eax, [ebp - 0x32]
push eax
lea eax, [ebp - 0x22]
push eax
mov eax, dword [ebp - 0x44]
push eax
call sub.kernel32.dll_GetFileTime
push 0
mov eax, dword [ebp - 0x44]
push eax
call sub.kernel32.dll_GetFileSize
mov dword [ebp - 0x18], eax
push dword [ebp + 0xc]
push edi
mov eax, dword [ebp - 0x44]
push eax
call sub.kernel32.dll__lread
cmp eax, 0xffffffff
jne 0x4035a9
jmp 0x40376b
cmp byte [0x40fd51], 4
jb 0x4035bb
mov dword [ebp - 0x14], 2
jmp 0x4035bf
and dword [ebp - 0x14], 0
mov esi, 1
mov eax, dword [ebp - 0x14]
add eax, 0x2ac
add eax, esi
mov al, byte [eax + edi]
mov byte [esi + 0x40b72a], al
inc esi
cmp esi, 0xa
jle 0x4035c4
push 0
push 0x300
mov eax, dword [ebp - 0x44]
push eax
call sub.kernel32.dll__llseek
cmp eax, 0xffffffff
jne 0x4035f7
jmp 0x40375c
push 2
lea eax, [ebp - 0x1a]
push eax
mov eax, dword [ebp - 0x44]
push eax
call sub.kernel32.dll__lread
cmp eax, 0xffffffff
jne 0x403610
jmp 0x40375c
push 0
mov ecx, dword [ebp - 0x18]
sub ecx, dword [ebp + 0xc]
movzx eax, word [ebp - 0x1a]
sub ecx, eax
push ecx
mov eax, dword [ebp - 0x44]
push eax
call sub.kernel32.dll__llseek
cmp eax, 0xffffffff
jne 0x403632
jmp 0x40375c
push dword [ebp + 0xc]
push dword [0x40b745]
mov eax, dword [ebp - 0x44]
push eax
call sub.kernel32.dll__lread
cmp eax, 0xffffffff
jne 0x40364e
jmp 0x40375c
mov eax, dword [ebp - 0x44]
push eax
mov ecx, dword [ebp - 0x18]
sub ecx, dword [ebp + 0xc]
movzx eax, word [ebp - 0x1a]
sub ecx, eax
push ecx
call fcn.00406a00
and dword [ebp - 0x10], 0
mov esi, 1
movzx eax, byte [esi + 0x40b72a]
add eax, dword [ebp - 0x10]
inc eax
mov dword [ebp - 0x10], eax
inc esi
cmp esi, 0xa
jle 0x40366d
mov eax, dword [ebp + 0xc]
mov dword [ebp - 0x3c], eax
mov eax, dword [ebp - 0x3c]
dec eax
mov dword [ebp - 0x3c], eax
and esi, 0
jmp 0x4036c0
mov eax, dword [0x40b745]
mov bl, byte [esi + eax]
mov eax, esi
dec eax
mov ecx, 0xa
cdq
idiv ecx
inc edx
xor bl, byte [edx + 0x40b72a]
movzx ebx, bl
mov eax, dword [ebp - 0x10]
imul esi
xor ebx, eax
mov eax, dword [0x40b745]
mov byte [esi + eax], bl
inc esi
mov eax, dword [ebp - 0x3c]
cmp eax, esi
jge 0x403693
mov eax, dword [0x40b745]
mov byte [eax], 0x4d
mov eax, dword [0x40b745]
mov byte [eax + 1], 0x5a
mov esi, 1
mov eax, dword [ebp - 0x14]
add eax, 0x261
add eax, esi
mov bl, byte [eax + edi]
mov eax, esi
dec eax
mov ecx, 0xa
cdq
idiv ecx
inc edx
xor bl, byte [edx + 0x40b72a]
mov ecx, dword [0x40b745]
mov eax, esi
add eax, 0xbb8
mov byte [eax + ecx], bl
inc esi
cmp esi, 0x14
jle 0x4036dd
push 0
push 0
mov eax, dword [ebp - 0x44]
push eax
call sub.kernel32.dll__llseek
cmp eax, 0xffffffff
jne 0x403726
jmp 0x40375c
push dword [ebp + 0xc]
push dword [0x40b745]
mov eax, dword [ebp - 0x44]
push eax
call sub.kernel32.dll__lwrite
cmp eax, 0xffffffff
jne 0x40373f
jmp 0x40375c
lea eax, [ebp - 0x2a]
push eax
lea eax, [ebp - 0x32]
push eax
lea eax, [ebp - 0x22]
push eax
mov eax, dword [ebp - 0x44]
push eax
call sub.kernel32.dll_SetFileTime
mov eax, 1
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x44]
push eax
call sub.kernel32.dll__lclose
push edi
call fcn.00407302
xor eax, eax
pop dword fs:[eax]
add esp, 8
push 0x40378a
push 0x40a6e9
call fcn.0040822c
ret