Function at 0x10029170
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 0x10029182
mov esi, dword [eax]
xor edi, edi
add eax, 4
je 0x1002918b
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
mov edx, dword [esp + 0x24]
xor ecx, dword [eax*4 + 0x1009e910]
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
mov edx, dword [esp + 0x20]
xor ecx, dword [eax*4 + 0x1009e910]
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
mov edx, dword [esp + 0x1c]
xor ecx, dword [eax*4 + 0x1009e910]
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
mov edx, dword [esp + 0x18]
xor ecx, dword [eax*4 + 0x1009e910]
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
mov edx, dword [esp + 0x14]
xor ecx, dword [eax*4 + 0x1009e910]
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
mov edx, dword [esp + 0x10]
xor ecx, dword [eax*4 + 0x1009e910]
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
mov edx, dword [esp + 0x2c]
xor ecx, dword [eax*4 + 0x1009e910]
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
xor ecx, dword [eax*4 + 0x1009e910]
xor esi, ecx
sub ebp, 1
jne 0x100291c7
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
mov edx, dword [esp + 0x10]
xor ecx, dword [eax*4 + 0x1009e910]
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
mov edx, dword [esp + 0x14]
xor ecx, dword [eax*4 + 0x1009e910]
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
mov edx, dword [esp + 0x18]
xor ecx, dword [eax*4 + 0x1009e910]
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
mov edx, dword [esp + 0x1c]
xor ecx, dword [eax*4 + 0x1009e910]
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
mov edx, dword [esp + 0x20]
xor ecx, dword [eax*4 + 0x1009e910]
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
mov edx, dword [esp + 0x20]
xor ecx, dword [eax*4 + 0x1009e910]
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
xor ecx, dword [eax*4 + 0x1009e910]
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 + 0x1009f110]
xor ecx, dword [eax*4 + 0x1009ed10]
mov eax, edx
shr eax, 0x18
xor ecx, dword [eax*4 + 0x1009f510]
movzx eax, dl
xor ecx, dword [eax*4 + 0x1009e910]
xor esi, ecx
test ebx, ebx
je 0x10029595
xor edi, dword [ebx]
mov eax, dword [esp + 0x30]
test eax, eax
je 0x1002959f
mov dword [eax], edi
lea ecx, [eax + 4]
test ebx, ebx
lea eax, [ebx + 4]
cmove eax, ebx
test eax, eax
je 0x100295b2
mov eax, dword [eax]
xor esi, eax
test ecx, ecx
je 0x100295b8
mov dword [ecx], esi
pop edi
pop esi
pop ebx
add esp, 0x18
ret 0xc