Function at 0x5790e8
Capabilities:
Encode data using xor

Disassembly:
push ebx
push esi
push edi
add esp, 0xfffffff4
mov dword [esp + 4], ecx
mov dword [esp], edx
mov esi, 0x59d210
mov edx, eax
mov ecx, dword [edx]
add edx, 4
mov edx, dword [edx]
mov eax, edx
shr eax, 4
xor eax, ecx
and eax, 0xf0f0f0f
xor ecx, eax
shl eax, 4
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, 2
xor eax, ecx
and eax, 0x33333333
xor ecx, eax
add eax, 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, 1
xor eax, ecx
and eax, 0x55555555
xor ecx, eax
add eax, eax
xor edx, eax
mov eax, ecx
shr eax, 0x1d
add ecx, ecx
add ecx, ecx
add ecx, ecx
or eax, ecx
mov ecx, eax
mov eax, edx
shr eax, 0x1d
add edx, edx
add edx, edx
add edx, edx
or eax, edx
mov edx, eax
xor eax, eax
mov dword [esp + 8], eax
cmp dword [esp + 8], 0x20
jge 0x5793ff
mov eax, dword [esp + 4]
mov ebx, dword [esp + 8]
mov ebx, dword [eax + ebx*4]
xor ebx, ecx
mov eax, dword [esp + 4]
mov edi, dword [esp + 8]
mov eax, dword [eax + edi*4 + 4]
xor eax, ecx
mov edi, eax
shr edi, 4
shl eax, 0x1c
or edi, eax
mov eax, edi
mov edi, ebx
shr edi, 2
and edi, 0x3f
xor edx, dword [esi + edi*4]
mov edi, ebx
shr edi, 0xa
and edi, 0x3f
xor edx, dword [esi + edi*4 + 0x200]
mov edi, ebx
shr edi, 0x12
and edi, 0x3f
xor edx, dword [esi + edi*4 + 0x400]
shr ebx, 0x1a
and ebx, 0x3f
xor edx, dword [esi + ebx*4 + 0x600]
mov ebx, eax
shr ebx, 2
and ebx, 0x3f
xor edx, dword [esi + ebx*4 + 0x100]
mov ebx, eax
shr ebx, 0xa
and ebx, 0x3f
xor edx, dword [esi + ebx*4 + 0x300]
mov ebx, eax
shr ebx, 0x12
and ebx, 0x3f
xor edx, dword [esi + ebx*4 + 0x500]
shr eax, 0x1a
and eax, 0x3f
xor edx, dword [esi + eax*4 + 0x700]
mov eax, dword [esp + 4]
mov ebx, dword [esp + 8]
mov ebx, dword [eax + ebx*4 + 8]
xor ebx, edx
mov eax, dword [esp + 4]
mov edi, dword [esp + 8]
mov eax, dword [eax + edi*4 + 0xc]
xor eax, edx
mov edi, eax
shr edi, 4
shl eax, 0x1c
or edi, eax
mov eax, edi
mov edi, ebx
shr edi, 2
and edi, 0x3f
xor ecx, dword [esi + edi*4]
mov edi, ebx
shr edi, 0xa
and edi, 0x3f
xor ecx, dword [esi + edi*4 + 0x200]
mov edi, ebx
shr edi, 0x12
and edi, 0x3f
xor ecx, dword [esi + edi*4 + 0x400]
shr ebx, 0x1a
and ebx, 0x3f
xor ecx, dword [esi + ebx*4 + 0x600]
mov ebx, eax
shr ebx, 2
and ebx, 0x3f
xor ecx, dword [esi + ebx*4 + 0x100]
mov ebx, eax
shr ebx, 0xa
and ebx, 0x3f
xor ecx, dword [esi + ebx*4 + 0x300]
mov ebx, eax
shr ebx, 0x12
and ebx, 0x3f
xor ecx, dword [esi + ebx*4 + 0x500]
shr eax, 0x1a
and eax, 0x3f
xor ecx, dword [esi + eax*4 + 0x700]
mov eax, dword [esp + 4]
mov ebx, dword [esp + 8]
mov ebx, dword [eax + ebx*4 + 0x10]
xor ebx, ecx
mov eax, dword [esp + 4]
mov edi, dword [esp + 8]
mov eax, dword [eax + edi*4 + 0x14]
xor eax, ecx
mov edi, eax
shr edi, 4
shl eax, 0x1c
or edi, eax
mov eax, edi
mov edi, ebx
shr edi, 2
and edi, 0x3f
xor edx, dword [esi + edi*4]
mov edi, ebx
shr edi, 0xa
and edi, 0x3f
xor edx, dword [esi + edi*4 + 0x200]
mov edi, ebx
shr edi, 0x12
and edi, 0x3f
xor edx, dword [esi + edi*4 + 0x400]
shr ebx, 0x1a
and ebx, 0x3f
xor edx, dword [esi + ebx*4 + 0x600]
mov ebx, eax
shr ebx, 2
and ebx, 0x3f
xor edx, dword [esi + ebx*4 + 0x100]
mov ebx, eax
shr ebx, 0xa
and ebx, 0x3f
xor edx, dword [esi + ebx*4 + 0x300]
mov ebx, eax
shr ebx, 0x12
and ebx, 0x3f
xor edx, dword [esi + ebx*4 + 0x500]
shr eax, 0x1a
and eax, 0x3f
xor edx, dword [esi + eax*4 + 0x700]
mov eax, dword [esp + 4]
mov ebx, dword [esp + 8]
mov ebx, dword [eax + ebx*4 + 0x18]
xor ebx, edx
mov eax, dword [esp + 4]
mov edi, dword [esp + 8]
mov eax, dword [eax + edi*4 + 0x1c]
xor eax, edx
mov edi, eax
shr edi, 4
shl eax, 0x1c
or edi, eax
mov eax, edi
mov edi, ebx
shr edi, 2
and edi, 0x3f
xor ecx, dword [esi + edi*4]
mov edi, ebx
shr edi, 0xa
and edi, 0x3f
xor ecx, dword [esi + edi*4 + 0x200]
mov edi, ebx
shr edi, 0x12
and edi, 0x3f
xor ecx, dword [esi + edi*4 + 0x400]
shr ebx, 0x1a
and ebx, 0x3f
xor ecx, dword [esi + ebx*4 + 0x600]
mov ebx, eax
shr ebx, 2
and ebx, 0x3f
xor ecx, dword [esi + ebx*4 + 0x100]
mov ebx, eax
shr ebx, 0xa
and ebx, 0x3f
xor ecx, dword [esi + ebx*4 + 0x300]
mov ebx, eax
shr ebx, 0x12
and ebx, 0x3f
xor ecx, dword [esi + ebx*4 + 0x500]
shr eax, 0x1a
and eax, 0x3f
xor ecx, dword [esi + eax*4 + 0x700]
add dword [esp + 8], 8
cmp dword [esp + 8], 0x20
jl 0x579190
mov eax, ecx
shr eax, 3
shl ecx, 0x1d
or eax, ecx
mov ecx, eax
mov eax, edx
shr eax, 3
shl edx, 0x1d
or eax, edx
mov edx, eax
mov eax, ecx
shr eax, 1
xor eax, edx
and eax, 0x55555555
xor edx, eax
add eax, eax
xor ecx, eax
mov eax, edx
shr eax, 8
xor eax, ecx
and eax, 0xff00ff
xor ecx, eax
shl eax, 8
xor edx, eax
mov eax, ecx
shr eax, 2
xor eax, edx
and eax, 0x33333333
xor edx, eax
add eax, eax
add eax, eax
xor ecx, eax
mov eax, edx
shr eax, 0x10
xor eax, ecx
and eax, 0xffff
xor ecx, eax
shl eax, 0x10
xor edx, eax
mov eax, ecx
shr eax, 4
xor eax, edx
and eax, 0xf0f0f0f
xor edx, eax
shl eax, 4
xor ecx, eax
mov eax, dword [esp]
mov dword [eax], edx
mov eax, dword [esp]
add eax, 4
mov dword [eax], ecx
add esp, 0xc
pop edi
pop esi
pop ebx
ret