Function at 0x408220
Capabilities:
Encode data using xor

Disassembly:
mov ecx, dword [esp + 0x10]
mov edx, ecx
push ebx
mov ebx, dword [esp + 0xc]
xor edx, 0x138f
push ebp
mov ebp, dword [esp + 0xc]
push esi
lea eax, [ebx - 0x459]
add ebp, 0x6ec
push edi
mov dword [esp + 0x18], eax
lea edi, [ecx + 0x1b]
mov eax, edi
xor ebx, 0x8c9
xor eax, 0xc2b
cmp ecx, eax
je 0x408390
xor edi, 0x11e2
cmp ebp, edi
jl 0x40846e
mov esi, dword [esp + 0x28]
add ebp, 0x8d9
mov eax, dword [esi + 0x88]
sub eax, 0x3ce8fe09
mov dword [0x49c780], eax
cmp dword [esi + 0x28], 0xfa38
je 0x40829b
mov dword [esi + 0x94], 0x424260
xor edi, edi
mov eax, dword [esi + 0x7c]
xor eax, dword [0x49c75c]
xor eax, dword [0x49c73c]
xor eax, 0x741c
mov dword [0x49c73c], eax
mov eax, dword [esi + 0x10c]
xor eax, 0x11c0be
add dword [esi + 0xc0], eax
mov eax, dword [esi + 0xec]
xor eax, dword [0x49c7d0]
xor eax, 0x47
mov ecx, dword [esi + 0xa8]
or dword [esi + 0x28], eax
mov eax, dword [esi + 0xfc]
xor eax, 0x13
sub dword [esi + 0x64], eax
mov eax, dword [esi + 0x94]
mov ebx, dword [edi + eax]
add edi, 4
imul ebx, dword [esi + 0x60]
mov eax, dword [esi + 0x84]
mov edx, ebx
shr edx, 8
mov byte [ecx + eax], dl
inc dword [esi + 0x84]
mov eax, dword [0x49c7c8]
mov ecx, dword [esi + 0x84]
mov byte [ecx + eax], bl
inc dword [esi + 0x84]
mov eax, dword [0x49c80c]
add eax, 0xffffffee
imul eax, dword [esi + 0x28]
mov dword [esi + 0x28], eax
mov eax, dword [esi + 0x40]
or dword [0x49c7d0], eax
mov eax, dword [0x493c3c]
mov eax, dword [eax + 0x40]
sub dword [0x49c720], eax
xor eax, eax
inc eax
sub eax, dword [esi + 0x104]
sub eax, dword [esi + 4]
add dword [esi + 0xec], eax
mov eax, dword [0x493c3c]
mov eax, dword [eax]
xor dword [esi + 0x58], eax
mov eax, dword [esi + 0x28]
dec eax
add dword [esi], eax
cmp edi, 0x33fc0
jl 0x40829d
cmp dword [esi + 0x58], 0x4f31
jb 0x40846e
mov dword [esi + 0x60], 0xba2e8ba3
jmp 0x40846e
mov eax, dword [esp + 0x28]
push dword [esp + 0x28]
mov esi, dword [eax + 0x2c]
add esi, edx
mov edx, dword [eax + 0x30]
mov eax, dword [0x493c3c]
sub edx, dword [esp + 0x1c]
sub edx, 0x1301
mov ecx, dword [eax + 0x2c]
mov eax, dword [esp + 0x2c]
mov eax, dword [eax + 0x108]
add eax, 0xffffef91
add ecx, eax
mov eax, dword [esp + 0x24]
and eax, 0xfa2
imul eax, dword [esp + 0x24]
push eax
mov eax, ebx
push ecx
imul eax, ebx
push edx
push eax
push esi
call fcn.00408220
mov esi, dword [esp + 0x40]
add esp, 0x18
mov dword [esp + 0x20], eax
mov ecx, dword [esi + 0x20]
or ecx, ebx
push ecx
call dword [sym.imp.KERNEL32.dll_GetLocalTime]
mov ecx, dword [0x493c3c]
mov eax, dword [0x49c790]
xor eax, edi
xor eax, dword [esp + 0x20]
mov ecx, dword [ecx + 0x18]
xor ecx, dword [esi + 0x14]
push ecx
mov ecx, edi
xor ecx, dword [esp + 0x18]
xor ecx, 0x874
or ecx, ebx
push ecx
push eax
mov eax, dword [esi + 0xe8]
imul eax, dword [esi + 0x80]
push eax
call dword [sym.imp.KERNEL32.dll_SetFilePointer]
mov ebx, dword [0x49c7a0]
mov edx, dword [esp + 0x20]
or ebx, 0x865
cmp edx, ebx
jne 0x40846e
mov ecx, dword [0x49c74c]
mov eax, dword [esi + 0x28]
imul eax, edi
cmp dword [esp + 0x20], eax
jae 0x408467
lea eax, [ebp + 0x1e91]
xor ecx, eax
mov dword [0x49c74c], ecx
add edx, 2
cmp edx, ebx
je 0x40844d
pop edi
pop esi
lea eax, [ebp - 0xbf5]
pop ebp
pop ebx
ret