Function at 0x10155da0
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [ecx + 0x18]
push ebx
mov ebx, dword [esp + 8]
push esi
mov esi, dword [esp + 0x10]
lea eax, [ecx + eax*4]
sub esi, 2
push edi
mov edi, edx
cmp esi, 8
jae 0x10155de0
mov dword [eax + 0x20], 0
lea edx, [edi + 4]
mov eax, dword [ecx + 0x18]
mov dword [ecx + eax*4 + 0x108], edi
mov eax, ebx
inc dword [ecx + 0x18]
shl eax, 4
add edx, eax
mov eax, 3
jmp 0x10155e4f
mov dword [eax + 0x20], 1
lea edx, [edi + 2]
mov eax, dword [ecx + 0x18]
sub esi, 8
mov dword [ecx + eax*4 + 0x108], edi
inc dword [ecx + 0x18]
mov eax, dword [ecx + 0x18]
lea eax, [ecx + eax*4]
cmp esi, 8
jae 0x10155e2d
mov dword [eax + 0x20], 0
mov eax, dword [ecx + 0x18]
mov dword [ecx + eax*4 + 0x108], edx
mov eax, ebx
inc dword [ecx + 0x18]
lea edx, [edi + 0x104]
shl eax, 4
add edx, eax
mov eax, 3
jmp 0x10155e4f
mov dword [eax + 0x20], 1
mov eax, dword [ecx + 0x18]
mov dword [ecx + eax*4 + 0x108], edx
lea edx, [edi + 0x204]
inc dword [ecx + 0x18]
mov eax, 8
add esi, 0xfffffff8
push esi
push eax
call fcn.10156610
add esp, 8
cmp byte [esp + 0x18], 0
jne 0x10155e76
add dword [edi + ebx*4 + 0x4808], 0xffffffff
jne 0x10155e76
mov ecx, edi
mov edx, ebx
pop edi
pop esi
pop ebx
jmp 0x10155e80
pop edi
pop esi
pop ebx
ret
sub esp, 0x18
push ebx
push ebp
push esi
mov ebx, ecx
push edi
mov edi, edx
mov dword [esp + 0x14], edi
mov ebp, dword [ebx + 0x4804]
mov dword [esp + 0x18], ebp
mov dword [ebx + edi*4 + 0x4808], ebp
movzx esi, word [ebx]
movzx ecx, word [ebx + 2]
mov eax, esi
shr eax, 4
xor esi, 0x7f0
shr esi, 4
movzx eax, byte [eax + 0x10192d20]
movzx edx, byte [esi + 0x10192d20]
xor esi, esi
mov dword [esp + 0x1c], eax
mov eax, ecx
shr eax, 4
xor ecx, 0x7f0
shr ecx, 4
movzx eax, byte [eax + 0x10192d20]
add eax, edx
mov dword [esp + 0x20], eax
movzx eax, byte [ecx + 0x10192d20]
add eax, edx
mov dword [esp + 0x24], eax
imul eax, edi, 0x440
add eax, 0x404
add eax, ebx
mov dword [esp + 0x10], eax
test ebp, ebp
je 0x10156004
nop word [eax + eax]
cmp esi, 8
jae 0x10155f68
mov ebp, dword [esp + 0x14]
lea edx, [esi + 8]
xor edi, edi
nop
mov ecx, edx
shr edx, 1
and ecx, 1
neg ecx
shr ecx, 4
lea eax, [edx + ebp*8]
and ecx, 0x7f
movzx eax, word [ebx + eax*2 + 4]
shr eax, 4
xor eax, ecx
movzx eax, byte [eax + 0x10192d20]
add edi, eax
cmp edx, 1
jne 0x10155f20
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x1c]
mov ebp, dword [esp + 0x18]
add eax, edi
mov dword [ecx + esi*4], eax
inc esi
cmp esi, ebp
jb 0x10155f10
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
cmp esi, 0x10
jae 0x10155fc0
mov ebp, dword [esp + 0x14]
xor edi, edi
mov edx, esi
mov ecx, edx
shr edx, 1
and ecx, 1
neg ecx
shr ecx, 4
lea eax, [edx + ebp*8]
and ecx, 0x7f
movzx eax, word [ebx + eax*2 + 0x104]
shr eax, 4
xor eax, ecx
movzx eax, byte [eax + 0x10192d20]
add edi, eax
cmp edx, 1
jne 0x10155f75
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x20]
mov ebp, dword [esp + 0x18]
add eax, edi
mov dword [ecx + esi*4], eax
inc esi
cmp esi, ebp
jb 0x10155f68
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret
xor edi, edi
lea eax, [esi + 0xf0]
mov edx, eax
shr eax, 1
and edx, 1
neg edx
shr edx, 4
movzx ecx, word [ebx + eax*2 + 0x204]
and edx, 0x7f
shr ecx, 4
xor ecx, edx
movzx ecx, byte [ecx + 0x10192d20]
add edi, ecx
cmp eax, 1
jne 0x10155fc8
mov ecx, dword [esp + 0x10]
mov eax, dword [esp + 0x24]
add eax, edi
mov dword [ecx + esi*4], eax
inc esi
cmp esi, ebp
jb 0x10155fc0
pop edi
pop esi
pop ebp
pop ebx
add esp, 0x18
ret