Function at 0x1002a560
Capabilities:
Encode data using xor

Disassembly:
mov eax, dword [esp + 4]
sub esp, 0x18
push ebx
push esi
xor esi, esi
push edi
test eax, eax
je 0x1002a572
mov esi, dword [eax]
xor edi, edi
add eax, 4
je 0x1002a57b
mov edi, dword [eax]
mov eax, dword [ecx + 0x3c]
push ebp
mov ebp, 3
mov ecx, dword [eax + 4]
mov ebx, dword [eax]
mov dword [esp + 0x24], ecx
mov ecx, dword [eax + 8]
mov dword [esp + 0x20], ecx
mov ecx, dword [eax + 0xc]
mov dword [esp + 0x1c], ecx
mov ecx, dword [eax + 0x10]
mov dword [esp + 0x18], ecx
mov ecx, dword [eax + 0x14]
mov dword [esp + 0x14], ecx
mov ecx, dword [eax + 0x18]
mov eax, dword [eax + 0x1c]
mov dword [esp + 0x10], ecx
mov dword [esp + 0x2c], eax
lea edx, [ebx + esi]
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
mov edx, dword [esp + 0x24]
xor ecx, dword [eax*4 + 0x1009eaf8]
xor edi, ecx
add edx, edi
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
mov edx, dword [esp + 0x20]
xor ecx, dword [eax*4 + 0x1009eaf8]
xor esi, ecx
add edx, esi
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
mov edx, dword [esp + 0x1c]
xor ecx, dword [eax*4 + 0x1009eaf8]
xor edi, ecx
add edx, edi
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
mov edx, dword [esp + 0x18]
xor ecx, dword [eax*4 + 0x1009eaf8]
xor esi, ecx
add edx, esi
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
mov edx, dword [esp + 0x14]
xor ecx, dword [eax*4 + 0x1009eaf8]
xor edi, ecx
add edx, edi
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
mov edx, dword [esp + 0x10]
xor ecx, dword [eax*4 + 0x1009eaf8]
xor esi, ecx
add edx, esi
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
mov edx, dword [esp + 0x2c]
xor ecx, dword [eax*4 + 0x1009eaf8]
xor edi, ecx
add edx, edi
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
xor ecx, dword [eax*4 + 0x1009eaf8]
xor esi, ecx
sub ebp, 1
jne 0x1002a5b7
mov edx, dword [esp + 0x2c]
add edx, esi
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
mov edx, dword [esp + 0x10]
xor ecx, dword [eax*4 + 0x1009eaf8]
xor edi, ecx
add edx, edi
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
mov edx, dword [esp + 0x14]
xor ecx, dword [eax*4 + 0x1009eaf8]
xor esi, ecx
add edx, esi
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
mov edx, dword [esp + 0x18]
xor ecx, dword [eax*4 + 0x1009eaf8]
xor edi, ecx
add edx, edi
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
mov edx, dword [esp + 0x1c]
xor ecx, dword [eax*4 + 0x1009eaf8]
xor esi, ecx
add edx, esi
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
mov edx, dword [esp + 0x20]
xor ecx, dword [eax*4 + 0x1009eaf8]
xor edi, ecx
add edx, edi
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
pop ebp
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
mov edx, dword [esp + 0x20]
xor ecx, dword [eax*4 + 0x1009eaf8]
xor esi, ecx
add edx, esi
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
xor ecx, dword [eax*4 + 0x1009eaf8]
xor edi, ecx
lea edx, [ebx + edi]
mov ebx, dword [esp + 0x2c]
mov eax, edx
shr eax, 0x10
movzx ecx, al
mov eax, edx
shr eax, 8
movzx eax, al
mov ecx, dword [ecx*4 + 0x1009f2f8]
xor ecx, dword [eax*4 + 0x1009eef8]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f6f8]
movzx eax, dl
xor ecx, dword [eax*4 + 0x1009eaf8]
xor esi, ecx
test ebx, ebx
je 0x1002a985
xor edi, dword [ebx]
mov eax, dword [esp + 0x30]
test eax, eax
je 0x1002a98f
mov dword [eax], edi
lea ecx, [eax + 4]
test ebx, ebx
lea eax, [ebx + 4]
cmove eax, ebx
test eax, eax
je 0x1002a9a2
mov eax, dword [eax]
xor esi, eax
test ecx, ecx
je 0x1002a9a8
mov dword [ecx], esi
pop edi
pop esi
pop ebx
add esp, 0x18
ret 0xc