Function at 0x10029880
Capabilities:
Encode data using xor

Disassembly:
sub esp, 0x14
mov eax, dword [esp + 0x18]
push esi
xor esi, esi
mov dword [esp + 8], ecx
push edi
test eax, eax
je 0x10029895
mov esi, dword [eax]
xor edx, edx
add eax, 4
je 0x1002989e
mov edx, dword [eax]
push ebx
xor ebx, ebx
push ebp
add eax, 4
je 0x100298a9
mov ebx, dword [eax]
mov ecx, edx
lea eax, [edx + edx]
shr ecx, 1
mov edi, 0xb1b1
xor ecx, eax
mov dword [esp + 0x28], edi
and ecx, 0x55555555
lea eax, [edx + edx]
xor ecx, eax
mov edx, ecx
shr edx, 2
lea eax, [ecx*4]
xor edx, eax
lea eax, [ecx*4]
and edx, 0x33333333
mov ecx, esi
xor edx, eax
shr ecx, 1
mov ebp, edx
mov eax, edx
shl eax, 4
shr ebp, 4
xor ebp, eax
shl edx, 4
lea eax, [esi + esi]
and ebp, 0xf0f0f0f
xor ecx, eax
xor ebp, edx
and ecx, 0x55555555
lea eax, [esi + esi]
xor ecx, eax
mov esi, ecx
shr esi, 2
lea eax, [ecx*4]
xor esi, eax
lea eax, [ecx*4]
mov ecx, ebx
and esi, 0x33333333
xor esi, eax
shr ecx, 1
lea eax, [ebx + ebx]
xor ecx, eax
lea eax, [ebx + ebx]
and ecx, 0x55555555
mov ebx, esi
xor ecx, eax
shr ebx, 4
mov edx, ecx
shr edx, 2
lea eax, [ecx*4]
xor edx, eax
lea eax, [ecx*4]
and edx, 0x33333333
xor edx, eax
mov eax, edx
mov ecx, edx
shl ecx, 4
shr eax, 4
xor eax, ecx
shl edx, 4
and eax, 0xf0f0f0f
mov ecx, esi
shl ecx, 4
xor eax, edx
mov edx, dword [esp + 0x14]
xor ebx, ecx
and ebx, 0xf0f0f0f
shl esi, 4
xor ebx, esi
mov ecx, dword [edx + 8]
mov dword [esp + 0x10], ecx
test ecx, ecx
je 0x10029a6e
mov ecx, dword [edx + 0x24]
mov edx, dword [ecx]
mov esi, dword [ecx + 4]
mov ecx, dword [ecx + 8]
mov dword [esp + 0x1c], edx
mov dword [esp + 0x20], esi
mov dword [esp + 0x18], ecx
mov ecx, edi
xor ebp, esi
shl ecx, 0x10
mov esi, ebp
xor ecx, edx
shl esi, 0x10
xor eax, ecx
mov ecx, dword [esp + 0x18]
xor ecx, edi
mov edi, eax
xor ebx, ecx
shr edi, 0x10
mov ecx, ebx
xor edi, ebx
xor ecx, ebp
shr edi, 8
xor ecx, eax
xor esi, ebx
mov edx, ecx
shl esi, 8
rol ecx, 8
rol edx, 0x10
xor edx, ecx
mov ecx, eax
shl ecx, 0x10
xor ecx, ebp
shl ecx, 8
xor edi, ecx
mov ecx, ebp
shr ecx, 0x10
xor ecx, eax
shr ecx, 8
xor esi, ecx
mov ecx, esi
shl esi, 0x10
xor ecx, edx
xor ebp, ecx
mov ecx, edi
xor edi, edx
shr ecx, 0x10
xor esi, ecx
xor edi, eax
xor esi, edx
ror edi, 0xa
xor esi, ebx
mov ebx, ebp
rol esi, 1
not ebx
or ebx, edi
mov eax, esi
not eax
xor ebx, esi
or eax, ebp
ror ebx, 0xa
xor eax, edi
not edi
or edi, esi
rol eax, 1
mov esi, dword [esp + 0x20]
xor ebp, edi
mov edi, dword [esp + 0x28]
add edi, edi
mov edx, edi
mov ecx, edi
xor edi, 0x11011
and ecx, 0x10000
cmove edi, edx
sub dword [esp + 0x10], 1
mov edx, dword [esp + 0x1c]
mov dword [esp + 0x28], edi
jne 0x100299b3
mov edx, dword [esp + 0x14]
mov edx, dword [edx + 0x24]
mov ecx, edi
shl ecx, 0x10
xor ecx, dword [edx]
xor ebp, dword [edx + 4]
xor eax, ecx
mov ecx, dword [edx + 8]
xor ecx, edi
mov dword [esp + 0x20], ebp
xor ebx, ecx
mov esi, dword [esp + 0x20]
mov ecx, ebx
mov dword [esp + 0x28], ebx
xor ecx, ebp
mov edi, esi
xor ecx, eax
shl edi, 0x10
mov ebp, ecx
xor edi, dword [esp + 0x28]
rol ecx, 8
mov ebx, eax
rol ebp, 0x10
xor ebp, ecx
shr ebx, 0x10
xor ebx, dword [esp + 0x28]
mov ecx, eax
shl ecx, 0x10
xor ecx, esi
shr ebx, 8
shl ecx, 8
xor ebx, ecx
shl edi, 8
mov ecx, esi
shr ecx, 0x10
xor ecx, eax
shr ecx, 8
xor edi, ecx
mov edx, edi
xor edx, ebp
xor edx, esi
mov esi, edx
shr esi, 1
lea ecx, [edx + edx]
xor esi, ecx
lea ecx, [edx + edx]
and esi, 0x55555555
xor esi, ecx
mov edx, esi
shr edx, 2
lea ecx, [esi*4]
xor edx, ecx
lea ecx, [esi*4]
and edx, 0x33333333
xor edx, ecx
mov esi, edx
mov ecx, edx
shr esi, 4
shl ecx, 4
xor esi, ecx
shl edx, 4
and esi, 0xf0f0f0f
mov ecx, ebx
xor esi, edx
xor ecx, ebp
xor ecx, eax
mov dword [esp + 0x14], esi
mov edx, ecx
shr edx, 1
lea eax, [ecx + ecx]
xor edx, eax
lea eax, [ecx + ecx]
and edx, 0x55555555
xor edx, eax
mov esi, edx
shr esi, 2
lea eax, [edx*4]
xor esi, eax
lea eax, [edx*4]
and esi, 0x33333333
xor esi, eax
shl edi, 0x10
shr ebx, 0x10
xor edi, ebx
xor edi, ebp
xor edi, dword [esp + 0x28]
mov ecx, edi
shr ecx, 1
pop ebp
lea eax, [edi + edi]
xor ecx, eax
lea eax, [edi + edi]
and ecx, 0x55555555
mov edi, esi
xor ecx, eax
shr edi, 4
mov edx, ecx
shr edx, 2
pop ebx
lea eax, [ecx*4]
xor edx, eax
lea eax, [ecx*4]
and edx, 0x33333333
xor edx, eax
mov eax, esi
shl eax, 4
mov ecx, edx
xor edi, eax
shr ecx, 4
mov eax, edx
shl esi, 4
shl eax, 4
and edi, 0xf0f0f0f
xor ecx, eax
shl edx, 4
mov eax, dword [esp + 0x24]
and ecx, 0xf0f0f0f
xor edi, esi
xor ecx, edx
test eax, eax
je 0x10029bd8
mov eax, dword [eax]
xor ecx, eax
mov eax, dword [esp + 0x24]
mov edx, dword [esp + 0x28]
test edx, edx
je 0x10029be2
mov dword [edx], ecx
mov esi, dword [esp + 0xc]
lea ecx, [eax + 4]
add edx, 4
test eax, eax
cmove ecx, eax
test ecx, ecx
je 0x10029bf7
xor esi, dword [ecx]
test edx, edx
je 0x10029bfd
mov dword [edx], esi
add edx, 4
lea eax, [ecx + 4]
test ecx, ecx
cmove eax, ecx
test eax, eax
je 0x10029c10
mov eax, dword [eax]
xor edi, eax
test edx, edx
je 0x10029c16
mov dword [edx], edi
pop edi
pop esi
add esp, 0x14
ret 0xc