Function at 0x1008e950
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 4]
test eax, eax
je 0x1008ebc0
push edi
mov edi, dword [esp + 0xc]
test edi, edi
je 0x1008ebbf
cmp edi, 0x10
push ebx
push esi
jb 0x1008eb90
mov ebx, edi
shr ebx, 4
push ebp
lea ebx, [ebx]
mov esi, dword [ecx + 4]
movzx ebp, byte [eax]
mov edx, esi
and edx, 0xff
xor edx, ebp
mov ebp, dword [0x1012bb64]
mov edx, dword [ebp + edx*4]
shr esi, 8
xor edx, esi
mov dword [ecx + 4], edx
movzx esi, byte [eax + 1]
mov ebp, edx
and ebp, 0xff
xor esi, ebp
mov ebp, dword [0x1012bb64]
mov esi, dword [ebp + esi*4]
shr edx, 8
xor esi, edx
mov dword [ecx + 4], esi
movzx edx, byte [eax + 2]
mov ebp, esi
and ebp, 0xff
xor edx, ebp
mov ebp, dword [0x1012bb64]
mov edx, dword [ebp + edx*4]
shr esi, 8
xor edx, esi
mov dword [ecx + 4], edx
movzx esi, byte [eax + 3]
mov ebp, edx
and ebp, 0xff
xor esi, ebp
mov ebp, dword [0x1012bb64]
mov esi, dword [ebp + esi*4]
shr edx, 8
xor esi, edx
mov dword [ecx + 4], esi
movzx edx, byte [eax + 4]
mov ebp, esi
and ebp, 0xff
xor edx, ebp
mov ebp, dword [0x1012bb64]
mov edx, dword [ebp + edx*4]
shr esi, 8
xor edx, esi
mov dword [ecx + 4], edx
movzx esi, byte [eax + 5]
mov ebp, edx
and ebp, 0xff
xor esi, ebp
mov ebp, dword [0x1012bb64]
mov esi, dword [ebp + esi*4]
shr edx, 8
xor esi, edx
mov dword [ecx + 4], esi
movzx edx, byte [eax + 6]
mov ebp, esi
and ebp, 0xff
xor edx, ebp
mov ebp, dword [0x1012bb64]
mov edx, dword [ebp + edx*4]
shr esi, 8
xor edx, esi
mov dword [ecx + 4], edx
movzx esi, byte [eax + 7]
mov ebp, edx
and ebp, 0xff
xor esi, ebp
mov ebp, dword [0x1012bb64]
mov esi, dword [ebp + esi*4]
shr edx, 8
xor esi, edx
mov dword [ecx + 4], esi
movzx edx, byte [eax + 8]
mov ebp, esi
and ebp, 0xff
xor edx, ebp
mov ebp, dword [0x1012bb64]
mov edx, dword [ebp + edx*4]
shr esi, 8
xor edx, esi
mov dword [ecx + 4], edx
movzx esi, byte [eax + 9]
mov ebp, edx
and ebp, 0xff
xor esi, ebp
mov ebp, dword [0x1012bb64]
mov esi, dword [ebp + esi*4]
shr edx, 8
xor esi, edx
mov dword [ecx + 4], esi
movzx edx, byte [eax + 0xa]
mov ebp, esi
and ebp, 0xff
xor edx, ebp
mov ebp, dword [0x1012bb64]
mov edx, dword [ebp + edx*4]
shr esi, 8
xor edx, esi
mov dword [ecx + 4], edx
movzx esi, byte [eax + 0xb]
mov ebp, edx
and ebp, 0xff
xor esi, ebp
mov ebp, dword [0x1012bb64]
mov esi, dword [ebp + esi*4]
shr edx, 8
xor esi, edx
mov dword [ecx + 4], esi
movzx edx, byte [eax + 0xc]
mov ebp, esi
and ebp, 0xff
xor edx, ebp
mov ebp, dword [0x1012bb64]
mov edx, dword [ebp + edx*4]
shr esi, 8
xor edx, esi
mov dword [ecx + 4], edx
movzx esi, byte [eax + 0xd]
mov ebp, edx
and ebp, 0xff
xor esi, ebp
mov ebp, dword [0x1012bb64]
mov esi, dword [ebp + esi*4]
shr edx, 8
xor esi, edx
mov dword [ecx + 4], esi
movzx edx, byte [eax + 0xe]
mov ebp, esi
and ebp, 0xff
xor edx, ebp
mov ebp, dword [0x1012bb64]
mov edx, dword [ebp + edx*4]
shr esi, 8
xor edx, esi
mov dword [ecx + 4], edx
movzx esi, byte [eax + 0xf]
mov ebp, edx
and ebp, 0xff
xor esi, ebp
mov ebp, dword [0x1012bb64]
shr edx, 8
xor edx, dword [ebp + esi*4]
sub edi, 0x10
add eax, 0x10
sub ebx, 1
mov dword [ecx + 4], edx
jne 0x1008e980
pop ebp
test edi, edi
je 0x1008ebbd
mov edx, dword [ecx + 4]
movzx ebx, byte [eax]
mov esi, edx
and esi, 0xff
xor esi, ebx
mov ebx, dword [0x1012bb64]
shr edx, 8
xor edx, dword [ebx + esi*4]
sub edi, 1
add eax, 1
test edi, edi
mov dword [ecx + 4], edx
jne 0x1008eb94
pop esi
pop ebx
pop edi
ret 8