Function at 0x512be0
Capabilities:
Encode data using xor

Disassembly:
push ebx
push ebp
push esi
push edi
mov ecx, dword [esp + 0x14]
mov edx, dword [ecx + 4]
mov eax, dword [ecx]
mov ecx, edx
shr ecx, 4
xor ecx, eax
and ecx, 0xf0f0f0f
xor eax, ecx
shl ecx, 4
xor edx, ecx
mov ecx, eax
shr ecx, 0x10
xor ecx, edx
and ecx, 0xffff
xor edx, ecx
shl ecx, 0x10
xor eax, ecx
mov ecx, edx
shr ecx, 2
xor ecx, eax
and ecx, 0x33333333
xor eax, ecx
add ecx, ecx
add ecx, ecx
xor edx, ecx
mov ecx, eax
shr ecx, 8
xor ecx, edx
and ecx, 0xff00ff
xor edx, ecx
shl ecx, 8
xor eax, ecx
mov esi, edx
shr esi, 1
xor esi, eax
and esi, 0x55555555
mov ecx, esi
xor ecx, eax
lea eax, [esi + esi]
xor eax, edx
ror ecx, 0x1d
ror eax, 0x1d
cmp dword [esp + 0x1c], 0
mov edi, dword [esp + 0x18]
je 0x512d7f
add edi, 8
mov dword [esp + 0x18], 8
mov edx, dword [edi - 4]
mov esi, dword [edi - 8]
xor esi, ecx
xor edx, ecx
ror edx, 4
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x5d7110]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6f10]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6d10]
mov ebp, esi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d7010]
mov ebp, esi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6e10]
mov ebp, esi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6c10]
shr edx, 0x1a
xor ebx, dword [edx*4 + 0x5d7310]
mov edx, dword [edi + 4]
shr esi, 0x1a
xor ebx, dword [esi*4 + 0x5d7210]
mov esi, dword [edi]
xor eax, ebx
xor esi, eax
xor edx, eax
ror edx, 4
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x5d7110]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6f10]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6d10]
mov ebp, esi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d7010]
mov ebp, esi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6e10]
mov ebp, esi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6c10]
shr edx, 0x1a
xor ebx, dword [edx*4 + 0x5d7310]
shr esi, 0x1a
xor ebx, dword [esi*4 + 0x5d7210]
add edi, 0x10
xor ecx, ebx
sub dword [esp + 0x18], 1
jne 0x512c73
jmp 0x512e97
add edi, 0x70
mov dword [esp + 0x18], 8
lea ebx, [ebx]
mov edx, dword [edi + 0xc]
mov esi, dword [edi + 8]
xor esi, ecx
xor edx, ecx
ror edx, 4
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x5d7110]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6f10]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6d10]
mov ebp, esi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d7010]
mov ebp, esi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6e10]
mov ebp, esi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6c10]
shr edx, 0x1a
xor ebx, dword [edx*4 + 0x5d7310]
mov edx, dword [edi + 4]
shr esi, 0x1a
xor ebx, dword [esi*4 + 0x5d7210]
mov esi, dword [edi]
xor eax, ebx
xor esi, eax
xor edx, eax
ror edx, 4
mov ebx, edx
shr ebx, 0x12
and ebx, 0x3f
mov ebx, dword [ebx*4 + 0x5d7110]
mov ebp, edx
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6f10]
mov ebp, edx
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6d10]
mov ebp, esi
shr ebp, 0x12
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d7010]
mov ebp, esi
shr ebp, 0xa
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6e10]
mov ebp, esi
shr ebp, 2
and ebp, 0x3f
xor ebx, dword [ebp*4 + 0x5d6c10]
shr edx, 0x1a
xor ebx, dword [edx*4 + 0x5d7310]
shr esi, 0x1a
xor ebx, dword [esi*4 + 0x5d7210]
sub edi, 0x10
xor ecx, ebx
sub dword [esp + 0x18], 1
jne 0x512d90
ror eax, 3
ror ecx, 3
mov edx, ecx
shr edx, 1
xor edx, eax
and edx, 0x55555555
xor eax, edx
add edx, edx
xor ecx, edx
mov edx, eax
shr edx, 8
xor edx, ecx
and edx, 0xff00ff
xor ecx, edx
shl edx, 8
xor eax, edx
mov edx, ecx
shr edx, 2
xor edx, eax
and edx, 0x33333333
xor eax, edx
add edx, edx
add edx, edx
xor ecx, edx
mov edx, eax
shr edx, 0x10
xor edx, ecx
and edx, 0xffff
xor ecx, edx
shl edx, 0x10
xor eax, edx
mov edx, ecx
shr edx, 4
xor edx, eax
and edx, 0xf0f0f0f
mov esi, edx
xor esi, eax
mov eax, dword [esp + 0x14]
pop edi
mov dword [eax], esi
pop esi
shl edx, 4
xor edx, ecx
pop ebp
mov dword [eax + 4], edx
pop ebx
ret