Function at 0x1002f5a0
Capabilities:
Encode data using add xor sub operations
Encode data using xor

Disassembly:
push ecx
mov ecx, dword [esp + 8]
push esi
mov esi, eax
test ecx, ecx
je 0x1002f8a9
test esi, esi
je 0x1002f8a9
mov eax, dword [ecx]
push ebx
push ebp
push edi
mov edi, dword [ecx + 4]
mov ecx, edi
shr ecx, 4
xor ecx, eax
and ecx, 0xf0f0f0f
xor eax, ecx
shl ecx, 4
xor edi, ecx
mov ecx, eax
shr ecx, 0x10
xor ecx, edi
and ecx, 0xffff
xor edi, ecx
shl ecx, 0x10
xor eax, ecx
mov ecx, edi
shr ecx, 2
xor ecx, eax
and ecx, 0x33333333
xor eax, ecx
add ecx, ecx
add ecx, ecx
xor edi, ecx
mov ecx, eax
shr ecx, 8
xor ecx, edi
and ecx, 0xff00ff
xor edi, ecx
shl ecx, 8
xor eax, ecx
mov ecx, edi
shr ecx, 1
xor ecx, eax
and ecx, 0x55555555
mov edx, ecx
add ecx, ecx
xor edx, eax
xor ecx, edi
ror edx, 0x1d
ror ecx, 0x1d
add esi, 8
mov dword [esp + 0x10], 4
mov eax, dword [esi - 4]
mov edi, dword [esi - 8]
xor edi, edx
xor eax, edx
ror eax, 4
mov ebx, eax
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x100cf110]
mov ebp, eax
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cef10]
mov ebp, eax
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100ced10]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cf010]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cee10]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cec10]
shr eax, 0x1a
xor ebx, dword [eax*4 + 0x100cf310]
mov eax, dword [esi + 4]
shr edi, 0x1a
xor ebx, dword [edi*4 + 0x100cf210]
mov edi, dword [esi]
xor ecx, ebx
xor edi, ecx
xor eax, ecx
ror eax, 4
mov ebx, eax
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x100cf110]
mov ebp, eax
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cef10]
mov ebp, eax
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100ced10]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cf010]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cee10]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cec10]
shr eax, 0x1a
xor ebx, dword [eax*4 + 0x100cf310]
mov eax, dword [esi + 0xc]
shr edi, 0x1a
xor ebx, dword [edi*4 + 0x100cf210]
mov edi, dword [esi + 8]
xor edx, ebx
xor eax, edx
xor edi, edx
ror eax, 4
mov ebx, eax
shr ebx, 0x12
mov ebp, eax
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x100cf110]
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cef10]
mov ebp, eax
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100ced10]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cf010]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cee10]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cec10]
shr eax, 0x1a
xor ebx, dword [eax*4 + 0x100cf310]
mov eax, dword [esi + 0x14]
shr edi, 0x1a
xor ebx, dword [edi*4 + 0x100cf210]
mov edi, dword [esi + 0x10]
xor ecx, ebx
xor edi, ecx
xor eax, ecx
ror eax, 4
mov ebx, eax
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x100cf110]
mov ebp, eax
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cef10]
mov ebp, eax
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100ced10]
mov ebp, edi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cf010]
mov ebp, edi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cee10]
mov ebp, edi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x100cec10]
shr eax, 0x1a
xor ebx, dword [eax*4 + 0x100cf310]
shr edi, 0x1a
xor ebx, dword [edi*4 + 0x100cf210]
add esi, 0x20
xor edx, ebx
sub dword [esp + 0x10], 1
jne 0x1002f636
ror ecx, 3
ror edx, 3
mov eax, edx
shr eax, 1
xor eax, ecx
and eax, 0x55555555
xor ecx, eax
add eax, eax
xor edx, eax
mov eax, ecx
shr eax, 8
xor eax, edx
and eax, 0xff00ff
xor edx, eax
shl eax, 8
xor ecx, eax
mov eax, edx
shr eax, 2
xor eax, ecx
and eax, 0x33333333
xor ecx, eax
add eax, eax
add eax, eax
xor edx, eax
mov eax, ecx
shr eax, 0x10
xor eax, edx
and eax, 0xffff
xor edx, eax
shl eax, 0x10
xor ecx, eax
mov eax, edx
shr eax, 4
xor eax, ecx
and eax, 0xf0f0f0f
mov esi, eax
xor esi, ecx
mov ecx, dword [esp + 0x18]
pop edi
shl eax, 4
xor eax, edx
pop ebp
mov dword [ecx], esi
mov dword [ecx + 4], eax
pop ebx
pop esi
pop ecx
ret