Function at 0x1022c9a0
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x34
push ebx
push esi
mov esi, ecx
mov eax, edx
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x20], esi
push edi
mov ebx, dword [esi + 8]
mov dword [ebp - 8], ebx
test eax, eax
jne 0x1022ca92
mov ebx, dword [ebp + 0xc]
lea eax, [ebx - 4]
push edx
push dword [eax]
mov dword [ebp - 0x24], eax
call fcn.1022dc40
mov edi, dword [ebx]
mov esi, eax
and esi, 0xffff00ff
mov ecx, edi
and ecx, 0xffff00ff
mov edx, edi
add esi, ecx
and edx, 0xff00
movzx ecx, ax
and edi, 0xff00ff00
add edx, ecx
and eax, 0xff00ffff
xor esi, edx
add edi, eax
and esi, 0xff00ff
add esp, 8
xor esi, edi
mov dword [ebx], esi
mov ebx, 1
cmp dword [ebp - 8], ebx
jle 0x1022ca7d
nop dword [eax]
mov eax, dword [ebp - 0x24]
push 0
push dword [eax + ebx*4]
call fcn.1022dc30
mov esi, dword [ebp + 0xc]
mov edi, eax
mov edx, edi
movzx eax, di
and edx, 0xffff00ff
and edi, 0xff00ffff
add esp, 8
mov esi, dword [esi + ebx*4]
mov ecx, esi
and ecx, 0xffff00ff
add edx, ecx
mov ecx, esi
and ecx, 0xff00
and esi, 0xff00ff00
add ecx, eax
add esi, edi
mov eax, dword [ebp + 0xc]
xor edx, ecx
and edx, 0xff00ff
xor edx, esi
mov dword [eax + ebx*4], edx
inc ebx
cmp ebx, dword [ebp - 8]
jl 0x1022ca20
jmp 0x1022ca80
mov eax, dword [ebp + 0xc]
mov ebx, dword [ebp - 8]
mov esi, dword [ebp - 0x20]
mov dword [ebp - 0xc], 1
lea edi, [eax + ebx*4]
jmp 0x1022ca95
mov edi, dword [ebp + 0xc]
mov ecx, dword [esi + 4]
mov eax, 1
mov edx, eax
mov dword [ebp - 4], edi
shl edx, cl
mov dword [ebp - 0x18], edx
dec edx
mov dword [ebp - 0x30], edx
not edx
shl eax, cl
and edx, ebx
dec eax
mov dword [ebp - 0x24], edx
mov edx, dword [ebp - 0xc]
add eax, ebx
shr eax, cl
sar edx, cl
imul edx, eax
mov dword [ebp - 0x34], eax
mov eax, dword [esi + 0x10]
lea esi, [eax + edx*4]
mov eax, dword [ebp + 8]
mov dword [ebp - 0x14], esi
cmp dword [ebp - 0xc], eax
jge 0x1022cc9c
lea ecx, [ebx*4]
mov dword [ebp - 0x2c], ecx
mov eax, edi
sub eax, ecx
push eax
push dword [edi - 4]
call fcn.1022dc20
mov edi, dword [edi]
mov ebx, eax
mov edx, edi
movzx ecx, bx
and edx, 0xff00
mov dword [ebp - 0x10], esi
add edx, ecx
and eax, 0xffff00ff
mov ecx, edi
and ebx, 0xff00ffff
and ecx, 0xffff00ff
and edi, 0xff00ff00
add ecx, eax
add edi, ebx
xor edx, ecx
mov esi, 1
and edx, 0xff00ff
add esp, 8
xor edx, edi
mov edi, dword [ebp - 4]
mov dword [edi], edx
cmp dword [ebp - 0x24], esi
jle 0x1022cbe4
mov ecx, dword [ebp - 0x10]
mov edx, esi
mov eax, dword [ecx]
add ecx, 4
shr eax, 8
and eax, 0xf
mov dword [ebp - 0x10], ecx
mov ebx, dword [eax*4 + 0x1054fae0]
mov dword [ebp - 0x28], ebx
cmp edx, dword [ebp - 0x18]
jge 0x1022cbd9
mov eax, esi
sub eax, dword [ebp - 8]
lea ecx, [edi + eax*4]
mov eax, dword [ebp - 0x18]
sub eax, edx
mov dword [ebp - 0x1c], ecx
mov dword [ebp - 0x20], eax
push ecx
push dword [edi + esi*4 - 4]
call ebx
mov ebx, eax
add esp, 8
mov eax, dword [edi + esi*4]
mov edi, eax
and edi, 0xff00
movzx ecx, bx
add edi, ecx
mov edx, eax
mov ecx, ebx
and edx, 0xffff00ff
and ecx, 0xffff00ff
and eax, 0xff00ff00
add edx, ecx
and ebx, 0xff00ffff
mov ecx, dword [ebp - 0x1c]
xor edi, edx
add eax, ebx
and edi, 0xff00ff
mov ebx, dword [ebp - 0x28]
xor edi, eax
mov eax, dword [ebp - 4]
add ecx, 4
mov dword [ebp - 0x1c], ecx
mov dword [eax + esi*4], edi
inc esi
sub dword [ebp - 0x20], 1
mov edi, eax
jne 0x1022cb76
mov ecx, dword [ebp - 0x10]
xor edx, edx
cmp esi, dword [ebp - 0x24]
jl 0x1022cb46
mov ecx, dword [ebp - 8]
cmp esi, ecx
jge 0x1022cc70
mov eax, dword [ebp - 0x10]
mov eax, dword [eax]
shr eax, 8
and eax, 0xf
mov edx, dword [eax*4 + 0x1054fae0]
mov eax, esi
sub eax, ecx
mov dword [ebp - 0x28], edx
lea eax, [edi + eax*4]
mov dword [ebp - 0x20], eax
jmp 0x1022cc13
mov edi, dword [ebp - 4]
push eax
push dword [edi + esi*4 - 4]
call edx
mov ebx, eax
add esp, 8
mov eax, dword [edi + esi*4]
mov edi, eax
and edi, 0xff00
movzx ecx, bx
add edi, ecx
mov edx, eax
mov ecx, ebx
and edx, 0xffff00ff
and ecx, 0xffff00ff
and eax, 0xff00ff00
add edx, ecx
and ebx, 0xff00ffff
xor edi, edx
add eax, ebx
mov edx, dword [ebp - 0x28]
and edi, 0xff00ff
xor edi, eax
mov eax, dword [ebp - 4]
mov dword [eax + esi*4], edi
inc esi
mov eax, dword [ebp - 0x20]
add eax, 4
mov dword [ebp - 0x20], eax
cmp esi, dword [ebp - 8]
jl 0x1022cc10
mov eax, dword [ebp - 0xc]
mov edi, dword [ebp - 4]
inc eax
mov ecx, dword [ebp - 0x2c]
add edi, ecx
mov esi, dword [ebp - 0x14]
mov dword [ebp - 4], edi
mov dword [ebp - 0xc], eax
test dword [ebp - 0x30], eax
jne 0x1022cc93
mov edx, dword [ebp - 0x34]
lea esi, [esi + edx*4]
mov dword [ebp - 0x14], esi
cmp eax, dword [ebp + 8]
jl 0x1022cae3
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret