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

Disassembly:
push ebp
mov ebp, esp
mov eax, 0x1c
call fcn.00663af0
push ebx
mov ebx, dword [ebp + 8]
push ebx
call fcn.0051df70
add esp, 4
test eax, eax
jne 0x51eda1
mov eax, dword [ebx + 0x110]
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
shl eax, 4
add eax, ebx
push esi
mov esi, dword [ebx + 8]
push edi
movups xmm0, xmmword [eax]
mov edi, dword [ebx + 0xc]
movups xmmword [ebx], xmm0
mov dword [eax + 8], esi
lea esi, [ebx + 0x10]
mov dword [eax], ecx
mov dword [eax + 4], edx
mov dword [eax + 0xc], edi
sub eax, 0x10
mov dword [ebp - 0x10], esi
cmp esi, eax
jae 0x51ece7
nop dword [eax]
mov edx, dword [esi]
ror edx, 8
mov ebx, edx
mov ecx, dword [esi + 0xc]
xor ebx, dword [esi]
rol ebx, 0x10
xor ebx, edx
mov edx, dword [esi + 4]
ror edx, 8
mov dword [ebp - 4], ebx
mov ebx, edx
xor ebx, dword [esi + 4]
rol ebx, 0x10
xor ebx, edx
mov edx, dword [esi + 8]
ror edx, 8
mov edi, edx
xor edi, dword [esi + 8]
rol edi, 0x10
xor edi, edx
mov edx, ecx
ror edx, 8
xor ebx, edi
mov esi, edx
xor esi, ecx
mov ecx, dword [ebp - 4]
xor ecx, ebx
rol esi, 0x10
xor esi, edx
mov dword [ebp - 4], ecx
xor edi, esi
xor esi, ebx
xor edi, ecx
mov edx, esi
and edx, 0xff0000
mov ecx, esi
shr ecx, 0x10
xor ebx, edi
xor edx, ecx
rol edi, 0x10
shr edx, 8
mov ecx, esi
and ecx, 0xff00
shl esi, 0x10
xor ecx, esi
mov esi, dword [ebp - 4]
shl ecx, 8
xor edx, ecx
mov ecx, ebx
mov dword [ebp - 0xc], edx
mov edx, ebx
shr edx, 8
shl ecx, 8
xor edx, ecx
shl ebx, 8
and edx, 0xff00ff
xor edx, ebx
mov ebx, dword [ebp - 0xc]
xor edx, edi
mov ecx, ebx
xor esi, edx
xor ecx, edi
xor ebx, edx
mov dword [ebp - 4], esi
xor ecx, esi
mov dword [ebp - 0xc], ebx
mov dword [ebp - 0x1c], ecx
xor ecx, edx
mov edx, dword [eax]
ror edx, 8
mov ebx, edx
mov dword [ebp - 0x18], ecx
xor ebx, dword [eax]
rol ebx, 0x10
xor ebx, edx
mov edx, dword [eax + 4]
ror edx, 8
mov edi, edx
mov dword [ebp - 8], ebx
xor edi, dword [eax + 4]
rol edi, 0x10
xor edi, edx
mov ecx, dword [ebp - 8]
mov edx, dword [eax + 8]
ror edx, 8
mov ebx, edx
xor ebx, dword [eax + 8]
rol ebx, 0x10
xor ebx, edx
mov edx, dword [eax + 0xc]
ror edx, 8
xor edi, ebx
xor ecx, edi
mov esi, edx
xor esi, dword [eax + 0xc]
rol esi, 0x10
xor esi, edx
mov dword [ebp - 8], ecx
xor ebx, esi
xor esi, edi
xor ebx, ecx
mov ecx, esi
shr ecx, 0x10
xor edi, ebx
mov dword [ebp - 0x14], edi
mov edi, esi
mov edx, dword [ebp - 0x14]
and edi, 0xff0000
xor edi, ecx
rol ebx, 0x10
mov ecx, esi
shr edi, 8
and ecx, 0xff00
shl esi, 0x10
xor ecx, esi
mov esi, edx
shl ecx, 8
xor edi, ecx
shr esi, 8
mov ecx, edx
shl edx, 8
shl ecx, 8
xor esi, ecx
mov ecx, dword [ebp - 8]
and esi, 0xff00ff
xor esi, edx
mov edx, edi
xor esi, ebx
xor edx, ebx
mov ebx, dword [ebp - 0x10]
xor ecx, esi
xor edx, ecx
xor edi, esi
mov dword [ebx], ecx
mov ecx, edx
xor ecx, esi
mov dword [ebx + 8], edx
mov dword [ebx + 4], ecx
mov esi, ebx
mov ecx, dword [ebp - 4]
mov dword [esi + 0xc], edi
add esi, 0x10
mov dword [eax], ecx
mov ecx, dword [ebp - 0x18]
mov dword [eax + 4], ecx
mov ecx, dword [ebp - 0x1c]
mov dword [eax + 8], ecx
mov ecx, dword [ebp - 0xc]
mov dword [eax + 0xc], ecx
sub eax, 0x10
mov dword [ebp - 0x10], esi
cmp esi, eax
jb 0x51eb50
mov edx, dword [esi]
mov ecx, dword [esi + 0xc]
ror edx, 8
mov ebx, edx
xor ebx, dword [esi]
rol ebx, 0x10
xor ebx, edx
mov edx, dword [esi + 4]
ror edx, 8
mov edi, edx
mov dword [ebp - 0x10], ebx
xor edi, dword [esi + 4]
rol edi, 0x10
xor edi, edx
mov edx, dword [esi + 8]
ror edx, 8
mov ebx, edx
xor ebx, dword [esi + 8]
rol ebx, 0x10
xor ebx, edx
mov edx, ecx
ror edx, 8
xor edi, ebx
mov esi, edx
xor esi, ecx
mov ecx, dword [ebp - 0x10]
xor ecx, edi
rol esi, 0x10
xor esi, edx
mov dword [ebp - 0x10], ecx
xor ebx, esi
xor esi, edi
xor ebx, ecx
mov ecx, esi
xor edi, ebx
shr ecx, 0x10
mov dword [ebp - 0x1c], edi
mov edi, esi
mov edx, dword [ebp - 0x1c]
and edi, 0xff0000
xor edi, ecx
rol ebx, 0x10
mov ecx, esi
shr edi, 8
and ecx, 0xff00
shl esi, 0x10
xor ecx, esi
mov esi, edx
shl ecx, 8
xor edi, ecx
shr esi, 8
mov ecx, edx
shl edx, 8
shl ecx, 8
xor esi, ecx
mov ecx, dword [ebp - 0x10]
and esi, 0xff00ff
xor esi, edx
mov edx, edi
xor esi, ebx
xor edx, ebx
xor ecx, esi
xor edi, esi
xor edx, ecx
mov dword [eax], ecx
mov ecx, edx
mov dword [eax + 0xc], edi
xor ecx, esi
mov dword [eax + 8], edx
pop edi
mov dword [eax + 4], ecx
xor eax, eax
pop esi
pop ebx
mov esp, ebp
pop ebp
ret