Function at 0x489430
Capabilities:
Encode data using xor

Disassembly:
mov eax, 0x5c
call fcn.00554690
mov eax, dword [0x5cab48]
xor eax, esp
mov dword [esp + 0x58], eax
mov eax, dword [esp + 0x68]
mov ecx, dword [esp + 0x7c]
push esi
mov esi, dword [esp + 0x64]
push edi
mov edi, dword [esp + 0x7c]
push edi
mov dword [esp + 0x20], eax
mov dword [esp + 0x14], ecx
mov dword [esp + 0x1c], 1
call fcn.0044dc00
add esp, 4
mov dword [esp + 0x14], eax
test eax, eax
jns 0x48948b
pop edi
xor eax, eax
pop esi
mov ecx, dword [esp + 0x58]
xor ecx, esp
call fcn.0055423a
add esp, 0x5c
ret
push ebx
call fcn.00497d20
mov ebx, eax
mov dword [esp + 0xc], ebx
test ebx, ebx
je 0x4894e0
test esi, esi
jne 0x4894a3
xor ecx, ecx
jmp 0x4894ba
mov ecx, dword [esp + 0x70]
cmp ecx, 0xffffffff
jne 0x4894ba
mov ecx, esi
lea edx, [ecx + 1]
mov al, byte [ecx]
inc ecx
test al, al
jne 0x4894b1
sub ecx, edx
push 0
push edi
push ecx
push esi
push ebx
call fcn.00497f00
add esp, 0x14
test eax, eax
je 0x4894d7
call fcn.00497d20
mov edi, eax
test edi, edi
jne 0x4894f4
push ebx
call fcn.00497cb0
add esp, 4
pop ebx
pop edi
xor eax, eax
pop esi
mov ecx, dword [esp + 0x58]
xor ecx, esp
call fcn.0055423a
add esp, 0x5c
ret
mov ecx, dword [esp + 0x84]
push ebp
test ecx, ecx
je 0x489664
mov esi, dword [esp + 0x18]
mov edx, 1
lea ecx, [ecx]
cmp ecx, dword [esp + 0x1c]
mov ebp, ecx
cmovg ebp, dword [esp + 0x1c]
mov eax, edx
shr eax, 0x18
mov byte [esp + 0x14], al
mov eax, edx
shr eax, 0x10
mov byte [esp + 0x15], al
mov eax, edx
shr eax, 8
push ebx
push edi
mov byte [esp + 0x1e], al
mov byte [esp + 0x1f], dl
call fcn.00497c00
add esp, 8
test eax, eax
je 0x4896b2
push dword [esp + 0x7c]
push dword [esp + 0x28]
push edi
call fcn.00498110
add esp, 0xc
test eax, eax
je 0x4896b2
push 4
lea eax, [esp + 0x18]
push eax
push edi
call fcn.00498110
add esp, 0xc
test eax, eax
je 0x4896b2
push 0
lea eax, [esp + 0x2c]
push eax
push edi
call fcn.00497e50
add esp, 0xc
test eax, eax
je 0x4896b2
push edi
call fcn.00497d60
push ebp
lea eax, [esp + 0x30]
push eax
push esi
call sub.MSVCR110.dll_memcpy
mov ebx, 1
add esp, 0x10
cmp dword [esp + 0x80], ebx
jle 0x489639
lea esp, [esp]
push dword [esp + 0x10]
push edi
call fcn.00497c00
add esp, 8
test eax, eax
je 0x48968b
push dword [esp + 0x1c]
lea eax, [esp + 0x2c]
push eax
push edi
call fcn.00498110
add esp, 0xc
test eax, eax
je 0x48968b
push 0
lea eax, [esp + 0x2c]
push eax
push edi
call fcn.00497e50
add esp, 0xc
test eax, eax
je 0x48968b
push edi
call fcn.00497d60
add esp, 4
test ebp, ebp
jle 0x48962f
mov eax, esi
lea esi, [esp + 0x28]
sub esi, dword [esp + 0x18]
mov edx, ebp
mov cl, byte [esi + eax]
xor byte [eax], cl
lea eax, [eax + 1]
dec edx
jne 0x489620
mov esi, dword [esp + 0x18]
inc ebx
cmp ebx, dword [esp + 0x80]
jl 0x4895c0
mov ecx, dword [esp + 0x88]
mov edx, dword [esp + 0x20]
mov ebx, dword [esp + 0x10]
sub ecx, ebp
inc edx
add esi, ebp
mov dword [esp + 0x88], ecx
mov dword [esp + 0x20], edx
mov dword [esp + 0x18], esi
test ecx, ecx
jne 0x489510
push edi
call fcn.00497cb0
push ebx
call fcn.00497cb0
add esp, 8
mov eax, 1
pop ebp
pop ebx
pop edi
pop esi
mov ecx, dword [esp + 0x58]
xor ecx, esp
call fcn.0055423a
add esp, 0x5c
ret
push edi
call fcn.00497cb0
push dword [esp + 0x14]
call fcn.00497cb0
add esp, 8
xor eax, eax
pop ebp
pop ebx
pop edi
pop esi
mov ecx, dword [esp + 0x58]
xor ecx, esp
call fcn.0055423a
add esp, 0x5c
ret
push edi
call fcn.00497cb0
push ebx
call fcn.00497cb0
mov ecx, dword [esp + 0x70]
add esp, 8
xor eax, eax
pop ebp
pop ebx
pop edi
pop esi
xor ecx, esp
call fcn.0055423a
add esp, 0x5c
ret