Function at 0x493650
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
push ebx
sub esp, 0x4c
mov eax, dword [ebp + 0x10]
cmp dword [ebp + 0xc], eax
je 0x493899
sub esp, 0xc
mov eax, dword [ebp + 0x18]
push eax
call fcn.0041beb0
pop edi
mov esi, dword [ebp + 0x18]
push esi
call fcn.0041bd60
add esp, 0x10
mov dword [ebp - 0x48], eax
test eax, eax
je 0x493895
mov edx, dword [ebp + 0xc]
mov ecx, dword [ebp + 0x10]
mov eax, dword [edx + 4]
mov ebx, dword [ecx + 4]
add eax, ebx
lea ebx, [eax + 4]
mov eax, dword [ebp - 0x48]
cmp ebx, dword [eax + 8]
jg 0x493881
mov edx, dword [ebp - 0x48]
test ebx, ebx
mov dword [edx + 4], ebx
jle 0x4936c3
xor edx, edx
mov ecx, dword [ebp - 0x48]
mov eax, dword [ecx]
mov dword [eax + edx*4], 0
inc edx
cmp edx, ebx
jne 0x4936b2
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + 4]
test ecx, ecx
jle 0x493826
mov edx, dword [ebp + 0xc]
mov dword [ebp - 0x4c], 0
mov dword [ebp - 0x34], 0
mov esi, dword [edx + 4]
mov eax, dword [ebp + 0x10]
mov edx, dword [eax]
mov eax, dword [ebp - 0x34]
mov eax, dword [edx + eax]
mov dword [ebp - 0x44], 0
mov dword [ebp - 0x40], eax
mov eax, dword [ebp - 0x4c]
inc eax
cmp ecx, eax
je 0x49370c
mov eax, dword [ebp - 0x34]
mov edx, dword [eax + edx + 4]
mov dword [ebp - 0x44], edx
test esi, esi
jle 0x49380b
mov edx, dword [ebp - 0x44]
mov eax, dword [ebp - 0x40]
xor edx, eax
mov ecx, dword [ebp - 0x34]
mov dword [ebp - 0x3c], edx
mov dword [ebp - 0x38], ecx
mov dword [ebp - 0x30], 0
lea esi, [esi]
mov eax, dword [ebp + 0xc]
mov edx, dword [ebp - 0x30]
shl edx, 2
xor ebx, ebx
mov ecx, dword [eax]
mov eax, dword [ebp - 0x30]
inc eax
mov edi, dword [ecx + edx]
cmp esi, eax
je 0x49374c
mov ebx, dword [edx + ecx + 4]
mov eax, dword [ebp - 0x44]
mov ecx, ebx
push eax
lea edx, [ebp - 0x1c]
lea eax, [ebp - 0x18]
xor ebx, edi
call fcn.00492e20
mov eax, dword [ebp - 0x40]
push eax
mov ecx, edi
lea edx, [ebp - 0x24]
lea eax, [ebp - 0x20]
call fcn.00492e20
mov esi, dword [ebp - 0x3c]
mov ecx, ebx
lea edx, [ebp - 0x14]
lea eax, [ebp - 0x10]
push esi
call fcn.00492e20
mov ebx, dword [ebp - 0x20]
mov eax, dword [ebp - 0x1c]
mov ecx, dword [ebp - 0x10]
xor eax, ebx
mov edx, dword [ebp - 0x18]
xor eax, ecx
mov edi, dword [ebp - 0x24]
xor eax, edx
xor edx, ecx
mov esi, dword [ebp - 0x14]
xor edx, edi
xor edx, esi
mov ecx, dword [ebp - 0x48]
xor edx, eax
mov dword [ebp - 0x1c], eax
mov dword [ebp - 0x20], edx
mov edx, dword [ebp - 0x38]
mov ebx, dword [ecx]
mov eax, dword [ebp - 0x24]
add edx, ebx
add esp, 0xc
mov ebx, 2
mov ecx, dword [edx]
xor ecx, eax
mov dword [edx], ecx
mov ecx, dword [ebp - 0x38]
add ecx, 4
mov eax, dword [ebp - 0x48]
mov edx, ecx
add ecx, 4
mov edi, dword [eax]
mov eax, dword [ebp + ebx*4 - 0x28]
add edx, edi
inc ebx
mov esi, dword [edx]
xor esi, eax
cmp ebx, 5
mov dword [edx], esi
jne 0x4937c8
mov eax, dword [ebp - 0x30]
mov edx, dword [ebp + 0xc]
add eax, 2
mov dword [ebp - 0x30], eax
mov eax, dword [ebp - 0x38]
mov esi, dword [edx + 4]
add eax, 8
mov dword [ebp - 0x38], eax
cmp esi, dword [ebp - 0x30]
jg 0x493730
mov eax, dword [ebp + 0x10]
mov ecx, dword [eax + 4]
mov eax, dword [ebp - 0x4c]
mov edi, dword [ebp - 0x34]
add eax, 2
add edi, 8
mov dword [ebp - 0x4c], eax
mov dword [ebp - 0x34], edi
cmp ecx, dword [ebp - 0x4c]
jg 0x4936e5
mov edx, dword [ebp - 0x48]
mov ecx, dword [edx + 4]
test ecx, ecx
jle 0x49384a
mov eax, dword [edx]
sub eax, 4
lea edx, [eax + ecx*4]
mov eax, dword [edx]
sub edx, 4
test eax, eax
jne 0x493844
dec ecx
jne 0x493838
mov eax, dword [ebp - 0x48]
mov dword [eax + 4], ecx
push ebx
mov ebx, 1
mov ecx, dword [ebp + 0x14]
push ecx
mov edx, dword [ebp - 0x48]
push edx
mov eax, dword [ebp + 8]
push eax
call fcn.00493130
add esp, 0x10
test eax, eax
je 0x493895
sub esp, 0xc
mov eax, dword [ebp + 0x18]
push eax
call fcn.0041bc50
mov eax, ebx
add esp, 0x10
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret
push edx
push edx
push ebx
push eax
call fcn.0041cf40
add esp, 0x10
test eax, eax
jne 0x4936a6
xor ebx, ebx
jmp 0x493868
mov ecx, dword [ebp + 0x18]
push ecx
mov edx, dword [ebp + 0x14]
push edx
push eax
mov eax, dword [ebp + 8]
push eax
call fcn.00493400
mov ebx, eax
add esp, 0x10
mov eax, ebx
lea esp, [ebp - 0xc]
pop ebx
pop esi
pop edi
pop ebp
ret