Function at 0x10150da0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x20
mov eax, dword [ebp + 8]
push ebx
mov ebx, dword [ebp + 0xc]
push esi
mov esi, dword [eax + 8]
mov dword [ebp - 8], esi
push edi
test ebx, ebx
jne 0x10150e4d
mov edx, dword [ebp + 0x14]
mov ebx, 1
mov ecx, dword [edx]
mov eax, ecx
and eax, 0xff00
add eax, 0xff
xor eax, ecx
and ecx, 0xff00ff00
and eax, 0xff00ff
sub ecx, 0xffff01
xor eax, ecx
mov dword [edx], eax
cmp esi, ebx
jle 0x10150e3d
mov edi, edi
mov esi, dword [edx + ebx*4]
mov eax, esi
mov edi, dword [edx + ebx*4 - 4]
and eax, 0xffff00ff
mov edx, edi
mov ecx, esi
and edx, 0xffff00ff
and ecx, 0xff00
add edx, eax
and esi, 0xff00ff00
movzx eax, di
and edi, 0xff00ffff
add ecx, eax
add esi, edi
mov eax, dword [ebp + 0x14]
xor edx, ecx
and edx, 0xff00ff
xor edx, esi
mov esi, dword [ebp - 8]
mov dword [eax + ebx*4], edx
inc ebx
mov edx, eax
cmp ebx, esi
jl 0x10150df0
mov eax, dword [ebp + 8]
lea edi, [edx + esi*4]
mov ebx, 1
mov dword [ebp + 0xc], ebx
jmp 0x10150e50
mov edi, dword [ebp + 0x14]
mov ecx, dword [eax + 4]
mov eax, 1
mov edx, eax
mov dword [ebp - 4], edi
shl eax, cl
shl edx, cl
dec eax
dec edx
add eax, esi
mov dword [ebp - 0x18], edx
mov edx, ebx
shr eax, cl
sar edx, cl
imul edx, eax
mov dword [ebp - 0x20], eax
mov eax, dword [ebp + 8]
mov eax, dword [eax + 0x10]
lea eax, [eax + edx*4]
mov dword [ebp - 0xc], eax
cmp ebx, dword [ebp + 0x10]
jge 0x10150fbf
lea ecx, [esi*4]
mov dword [ebp - 0x1c], ecx
mov eax, edi
mov edi, dword [edi]
sub eax, ecx
mov ecx, edi
mov dword [ebp - 0x10], eax
and ecx, 0xff00
mov edx, dword [eax]
mov eax, edi
and eax, 0xffff00ff
mov esi, edx
and esi, 0xffff00ff
and edi, 0xff00ff00
add esi, eax
movzx eax, dx
add ecx, eax
and edx, 0xff00ffff
xor esi, ecx
add edi, edx
mov edx, dword [ebp - 0xc]
and esi, 0xff00ff
xor esi, edi
mov ecx, 1
mov edi, dword [ebp - 4]
mov dword [ebp + 8], ecx
mov dword [edi], esi
lea esi, [edx + 4]
mov eax, dword [edx]
shr eax, 8
and eax, 0xf
mov eax, dword [eax*4 + 0x1022d6f8]
mov dword [ebp - 0x14], eax
cmp dword [ebp - 8], ecx
jle 0x10150f9c
mov ebx, dword [ebp - 0x10]
add ebx, 4
mov dword [ebp - 0x10], ebx
jmp 0x10150f10
test dword [ebp - 0x18], ecx
jne 0x10150f2a
mov eax, dword [esi]
shr eax, 8
and eax, 0xf
add esi, 4
mov eax, dword [eax*4 + 0x1022d6f8]
mov dword [ebp - 0x14], eax
push ebx
push dword [edi + ecx*4 - 4]
call eax
mov ebx, eax
add esp, 8
mov eax, dword [ebp + 8]
movzx ecx, bx
mov eax, dword [edi + eax*4]
mov edi, eax
and edi, 0xff00
mov edx, eax
add edi, ecx
and edx, 0xffff00ff
mov ecx, ebx
and eax, 0xff00ff00
and ecx, 0xffff00ff
and ebx, 0xff00ffff
add edx, ecx
add eax, ebx
mov ecx, dword [ebp + 8]
xor edi, edx
mov ebx, dword [ebp - 0x10]
and edi, 0xff00ff
xor edi, eax
add ebx, 4
mov eax, dword [ebp - 4]
mov dword [ebp - 0x10], ebx
mov dword [eax + ecx*4], edi
inc ecx
mov edi, eax
mov eax, dword [ebp - 0x14]
mov dword [ebp + 8], ecx
cmp ecx, dword [ebp - 8]
jl 0x10150f10
mov ebx, dword [ebp + 0xc]
mov edx, dword [ebp - 0xc]
mov ecx, dword [ebp - 0x1c]
inc ebx
add edi, ecx
mov dword [ebp + 0xc], ebx
mov dword [ebp - 4], edi
test dword [ebp - 0x18], ebx
jne 0x10150fb6
mov eax, dword [ebp - 0x20]
lea edx, [edx + eax*4]
mov dword [ebp - 0xc], edx
cmp ebx, dword [ebp + 0x10]
jl 0x10150e93
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret