Function at 0x484fb0
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0xc
push ebx
xor edx, edx
push ebp
push edi
cmp byte [esi + 0x17], dl
jne 0x48505f
cmp dword [esi + 4], edx
jle 0x4850db
xor edi, edi
lea esp, [esp]
cmp byte [esi + 0x17], 0
mov eax, dword [esp + 0x1c]
mov al, byte [edx + eax]
jne 0x484fe5
cmp al, 0xff
je 0x485053
cmp al, 0xa
jbe 0x485053
mov ecx, dword [esi + 0x20]
mov eax, dword [ecx + edx*4]
mov ecx, eax
lea ebx, [eax + eax]
shr ecx, 1
xor ecx, ebx
add eax, eax
and ecx, 0x55555555
xor ecx, eax
mov eax, ecx
shr eax, 2
lea ebx, [ecx*4]
xor eax, ebx
add ecx, ecx
add ecx, ecx
and eax, 0x33333333
xor eax, ecx
mov ecx, eax
mov ebx, eax
shr ecx, 4
shl ebx, 4
xor ecx, ebx
shl eax, 4
and ecx, 0xf0f0f0f
xor ecx, eax
mov eax, ecx
shr eax, 8
mov ebx, ecx
shl ebx, 8
xor eax, ebx
shl ecx, 8
and eax, 0xff00ff
xor eax, ecx
mov ecx, dword [esi + 0x824]
rol eax, 0x10
mov dword [edi + ecx], eax
add edi, 4
inc edx
cmp edx, dword [esi + 4]
jl 0x484fd0
jmp 0x4850db
cmp dword [esi + 0x82c], edx
jle 0x4850db
mov eax, dword [esi + 0x20]
mov eax, dword [eax + edx*4]
mov ecx, eax
lea edi, [eax + eax]
shr ecx, 1
xor ecx, edi
add eax, eax
and ecx, 0x55555555
xor ecx, eax
mov eax, ecx
shr eax, 2
lea edi, [ecx*4]
xor eax, edi
add ecx, ecx
add ecx, ecx
and eax, 0x33333333
xor eax, ecx
mov ecx, eax
mov edi, eax
shr ecx, 4
shl edi, 4
xor ecx, edi
shl eax, 4
and ecx, 0xf0f0f0f
xor ecx, eax
mov eax, ecx
shr eax, 8
mov edi, ecx
shl edi, 8
xor eax, edi
shl ecx, 8
and eax, 0xff00ff
xor eax, ecx
mov ecx, dword [esi + 0x824]
rol eax, 0x10
mov dword [ecx + edx*4], eax
inc edx
cmp edx, dword [esi + 0x82c]
jl 0x485067
mov edx, dword [esi + 0x82c]
mov eax, dword [esi + 0x824]
push 0x484f90
push 4
push edx
push eax
call fcn.0048db50
mov ecx, dword [esi + 0x82c]
mov edx, dword [esi + 0x824]
add esp, 0x10
mov dword [edx + ecx*4], 0xffffffff
cmp byte [esi + 0x17], 0
je 0x485119
mov ebp, dword [esi + 0x82c]
jmp 0x48511c
mov ebp, dword [esi + 4]
xor edx, edx
mov dword [esp + 0xc], ebp
mov dword [esp + 0x14], edx
test ebp, ebp
jle 0x48523a
mov edi, edi
mov al, byte [esi + 0x17]
test al, al
je 0x485148
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx + edx*4]
mov edi, dword [esp + 0x1c]
movzx ebx, byte [ecx + edi]
jmp 0x485150
mov ecx, dword [esp + 0x1c]
movzx ebx, byte [edx + ecx]
mov dword [esp + 0x10], ebx
test al, al
jne 0x48516a
cmp bl, 0xff
je 0x48522d
cmp bl, 0xa
jbe 0x48522d
mov eax, dword [esi + 0x20]
mov eax, dword [eax + edx*4]
mov ecx, eax
lea edi, [eax + eax]
shr ecx, 1
xor ecx, edi
add eax, eax
and ecx, 0x55555555
xor ecx, eax
mov eax, ecx
shr eax, 2
lea edi, [ecx*4]
xor eax, edi
add ecx, ecx
add ecx, ecx
and eax, 0x33333333
xor eax, ecx
mov ecx, eax
mov edi, eax
shr ecx, 4
shl edi, 4
xor ecx, edi
shl eax, 4
and ecx, 0xf0f0f0f
xor ecx, eax
mov eax, ecx
shr eax, 8
mov edi, ecx
shl edi, 8
xor eax, edi
shl ecx, 8
and eax, 0xff00ff
xor eax, ecx
mov ecx, dword [esi + 0x82c]
rol eax, 0x10
xor edi, edi
cmp ecx, 1
jle 0x485206
mov ebp, dword [esi + 0x824]
nop
mov edx, ecx
sar edx, 1
lea ebx, [edx + edi]
cmp dword [ebp + ebx*4], eax
ja 0x4851f3
mov edi, ebx
sub ecx, edx
jmp 0x4851f5
mov ecx, edx
cmp ecx, 1
jg 0x4851e0
mov edx, dword [esp + 0x14]
mov ebp, dword [esp + 0xc]
mov ebx, dword [esp + 0x10]
cmp byte [esi + 0x17], 0
je 0x485224
mov eax, dword [esi + 0x828]
mov ecx, dword [esp + 0x20]
mov ecx, dword [ecx + edx*4]
mov dword [eax + edi*4], ecx
mov eax, dword [esi + 8]
mov byte [edi + eax], bl
jmp 0x48522d
mov ecx, dword [esi + 0x828]
mov dword [ecx + edi*4], edx
inc edx
mov dword [esp + 0x14], edx
cmp edx, ebp
jl 0x485130
pop edi
pop ebp
pop ebx
add esp, 0xc
ret