Function at 0x4a6830
Capabilities:
Encode data using xor

Disassembly:
push ebp
push ebx
push edi
push esi
sub esp, 0x24
mov ebp, dword [ecx + 0x4804]
mov dword [ecx + edx*4 + 0x4808], ebp
movzx eax, word [ecx]
shr eax, 4
mov esi, dword [0x6b81d4]
mov edi, eax
mov dword [esp], eax
xor eax, 0x7f
movzx eax, byte [esi + eax]
mov dword [esp + 0x18], eax
movzx eax, word [ecx + 2]
shr eax, 4
movzx edi, byte [esi + eax]
mov dword [esp + 0x10], edi
xor eax, 0x7f
movzx eax, byte [esi + eax]
mov dword [esp + 0x20], eax
mov dword [esp + 0x1c], edx
imul eax, edx, 0x440
add eax, ecx
add eax, 0x404
mov dword [esp + 8], eax
cmp ebp, 8
mov ebx, 8
mov dword [esp + 0x14], ebp
cmovb ebx, ebp
mov eax, 8
test ebx, ebx
je 0x4a6b43
mov dword [esp + 4], ebx
mov edx, dword [esp]
movzx edx, byte [esi + edx]
mov dword [esp], edx
mov edx, dword [esp + 0x1c]
shl edx, 4
lea ebp, [ecx + edx]
add ebp, 4
xor edi, edi
mov edx, 8
nop dword [eax]
mov ebx, eax
and ebx, 1
neg ebx
shr edx, 1
and eax, 0xfffffffe
movzx eax, word [ebp + eax]
and ebx, 0x7f0
xor ebx, eax
shr ebx, 4
movzx eax, byte [esi + ebx]
add edi, eax
mov eax, edx
cmp edx, 1
jne 0x4a68d0
mov dword [esp + 0xc], ebp
add edi, dword [esp]
mov eax, dword [esp + 8]
mov dword [eax], edi
mov ebx, dword [esp + 4]
cmp ebx, 1
je 0x4a6b43
mov ebx, 9
xor edi, edi
mov eax, 9
mov ebp, dword [esp + 0xc]
nop word cs:[eax + eax]
mov edx, ebx
and edx, 1
neg edx
shr eax, 1
and ebx, 0xfffffffe
movzx ebx, word [ebp + ebx]
and edx, 0x7f0
xor edx, ebx
shr edx, 4
movzx edx, byte [esi + edx]
add edi, edx
mov ebx, eax
cmp eax, 1
jne 0x4a6930
add edi, dword [esp]
mov eax, dword [esp + 8]
mov dword [eax + 4], edi
mov ebx, dword [esp + 4]
cmp ebx, 2
je 0x4a6b43
mov ebx, 0xa
xor edi, edi
mov eax, 0xa
mov ebp, dword [esp + 0xc]
mov edx, ebx
and edx, 1
neg edx
shr eax, 1
and ebx, 0xfffffffe
movzx ebx, word [ebp + ebx]
and edx, 0x7f0
xor edx, ebx
shr edx, 4
movzx edx, byte [esi + edx]
add edi, edx
mov ebx, eax
cmp eax, 1
jne 0x4a6980
add edi, dword [esp]
mov eax, dword [esp + 8]
mov dword [eax + 8], edi
mov ebx, dword [esp + 4]
cmp ebx, 3
je 0x4a6b43
mov ebx, 0xb
xor edi, edi
mov eax, 0xb
mov ebp, dword [esp + 0xc]
mov edx, ebx
and edx, 1
neg edx
shr eax, 1
and ebx, 0xfffffffe
movzx ebx, word [ebp + ebx]
and edx, 0x7f0
xor edx, ebx
shr edx, 4
movzx edx, byte [esi + edx]
add edi, edx
mov ebx, eax
cmp eax, 1
jne 0x4a69d0
add edi, dword [esp]
mov eax, dword [esp + 8]
mov dword [eax + 0xc], edi
mov ebx, dword [esp + 4]
cmp ebx, 4
je 0x4a6b43
mov ebx, 0xc
xor edi, edi
mov eax, 0xc
mov ebp, dword [esp + 0xc]
mov edx, ebx
and edx, 1
neg edx
shr eax, 1
and ebx, 0xfffffffe
movzx ebx, word [ebp + ebx]
and edx, 0x7f0
xor edx, ebx
shr edx, 4
movzx edx, byte [esi + edx]
add edi, edx
mov ebx, eax
cmp eax, 1
jne 0x4a6a20
add edi, dword [esp]
mov eax, dword [esp + 8]
mov dword [eax + 0x10], edi
mov ebx, dword [esp + 4]
cmp ebx, 5
je 0x4a6b43
mov ebx, 0xd
xor edi, edi
mov eax, 0xd
mov ebp, dword [esp + 0xc]
mov edx, ebx
and edx, 1
neg edx
shr eax, 1
and ebx, 0xfffffffe
movzx ebx, word [ebp + ebx]
and edx, 0x7f0
xor edx, ebx
shr edx, 4
movzx edx, byte [esi + edx]
add edi, edx
mov ebx, eax
cmp eax, 1
jne 0x4a6a70
add edi, dword [esp]
mov eax, dword [esp + 8]
mov dword [eax + 0x14], edi
mov ebx, dword [esp + 4]
cmp ebx, 6
je 0x4a6b43
mov ebx, 0xe
xor edi, edi
mov eax, 0xe
mov ebp, dword [esp + 0xc]
mov edx, ebx
and edx, 1
neg edx
shr eax, 1
and ebx, 0xfffffffe
movzx ebx, word [ebp + ebx]
and edx, 0x7f0
xor edx, ebx
shr edx, 4
movzx edx, byte [esi + edx]
add edi, edx
mov ebx, eax
cmp eax, 1
jne 0x4a6ac0
add edi, dword [esp]
mov eax, dword [esp + 8]
mov dword [eax + 0x18], edi
mov ebx, dword [esp + 4]
cmp ebx, 7
je 0x4a6b43
mov ebx, 0xf
xor edi, edi
mov eax, 0xf
mov ebp, dword [esp + 0xc]
mov edx, ebx
and edx, 1
neg edx
shr eax, 1
and ebx, 0xfffffffe
movzx ebx, word [ebp + ebx]
and edx, 0x7f0
xor edx, ebx
shr edx, 4
movzx edx, byte [esi + edx]
add edi, edx
mov ebx, eax
cmp eax, 1
jne 0x4a6b0c
add edi, dword [esp]
mov eax, dword [esp + 8]
mov dword [eax + 0x1c], edi
mov ebx, dword [esp + 4]
mov edx, dword [esp + 0x14]
cmp edx, 0x10
mov eax, 0x10
cmovb eax, edx
mov dword [esp], eax
cmp ebx, eax
jae 0x4a6bd4
mov eax, dword [esp + 0x10]
add eax, dword [esp + 0x18]
mov dword [esp + 0x10], eax
mov eax, dword [esp + 0x1c]
shl eax, 4
lea edi, [ecx + eax]
add edi, 0x104
nop word cs:[eax + eax]
xor eax, eax
mov dword [esp + 4], ebx
mov ebp, ebx
nop dword [eax + eax]
mov edx, ebx
and edx, 1
neg edx
shr ebp, 1
and ebx, 0xfffffffe
movzx ebx, word [edi + ebx]
and edx, 0x7f0
xor edx, ebx
shr edx, 4
movzx edx, byte [esi + edx]
add eax, edx
mov ebx, ebp
cmp ebp, 1
jne 0x4a6b90
add eax, dword [esp + 0x10]
mov edx, dword [esp + 8]
mov ebx, dword [esp + 4]
mov dword [edx + ebx*4], eax
inc ebx
cmp ebx, dword [esp]
jne 0x4a6b80
mov ebx, dword [esp]
mov edx, dword [esp + 0x14]
cmp ebx, edx
jae 0x4a6c32
mov eax, dword [esp + 0x18]
add dword [esp + 0x20], eax
mov ebp, ebx
lea edi, [ebx + 0xf0]
xor eax, eax
mov edx, edi
nop dword [eax]
mov ebx, edi
and ebx, 1
neg ebx
shr edx, 1
and edi, 0xfffffffe
movzx edi, word [ecx + edi + 0x204]
and ebx, 0x7f0
xor ebx, edi
shr ebx, 4
movzx edi, byte [esi + ebx]
add eax, edi
mov edi, edx
cmp edx, 1
jne 0x4a6bf0
add eax, dword [esp + 0x20]
mov edx, dword [esp + 8]
mov ebx, ebp
mov dword [edx + ebp*4], eax
inc ebx
mov edx, dword [esp + 0x14]
cmp ebx, edx
jne 0x4a6be0
add esp, 0x24
pop esi
pop edi
pop ebx
pop ebp
ret