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

Disassembly:
mov eax, 0x18
call fcn.005e0210
push ebx
mov ebx, dword [esp + 0x28]
push ebx
push dword [esp + 0x28]
push dword [esp + 0x28]
call fcn.00524c20
add esp, 0xc
test eax, eax
jne 0x524c1a
mov eax, dword [ebx + 0x110]
mov ecx, dword [ebx]
mov edx, dword [ebx + 4]
shl eax, 4
add eax, ebx
push ebp
push esi
mov esi, dword [ebx + 8]
lea ebp, [ebx + 0x10]
movups xmm0, xmmword [eax]
push edi
mov edi, dword [ebx + 0xc]
movups xmmword [ebx], xmm0
mov dword [eax], ecx
mov dword [eax + 4], edx
mov dword [eax + 8], esi
mov dword [eax + 0xc], edi
sub eax, 0x10
mov dword [esp + 0x10], ebp
cmp ebp, eax
jae 0x524b58
mov edx, dword [ebp]
mov esi, edx
mov edi, dword [esp + 0x10]
mov ecx, edx
shr ecx, 8
shl esi, 0x18
or esi, ecx
mov ebp, esi
xor ebp, edx
mov edx, dword [edi + 4]
ror ebp, 0x10
mov ecx, edx
xor ebp, esi
shr ecx, 8
mov esi, edx
shl esi, 0x18
or esi, ecx
mov ebx, esi
xor ebx, edx
mov edx, dword [edi + 8]
ror ebx, 0x10
mov ecx, edx
xor ebx, esi
shr ecx, 8
mov esi, edx
shl esi, 0x18
or esi, ecx
mov edi, esi
xor edi, edx
mov edx, dword [esp + 0x10]
ror edi, 0x10
xor edi, esi
xor ebx, edi
mov edx, dword [edx + 0xc]
xor ebp, ebx
mov esi, edx
mov dword [esp + 0x14], ebp
shl esi, 0x18
mov ecx, edx
shr ecx, 8
or esi, ecx
mov ecx, esi
xor ecx, edx
ror ecx, 0x10
xor ecx, esi
mov esi, dword [esp + 0x14]
mov ebp, ecx
xor ecx, edi
xor ecx, esi
xor ebp, ebx
xor ebx, ecx
mov edx, ecx
shl ecx, 0x10
shr edx, 0x10
or edx, ecx
mov ecx, ebx
shr ebx, 8
and ecx, 0xffff00ff
and ebx, 0xff00ff
shl ecx, 8
xor ecx, ebx
xor ecx, edx
xor esi, ecx
bswap ebp
mov ebx, ebp
mov dword [esp + 0x14], esi
xor ebx, edx
xor ebp, ecx
mov edx, dword [eax]
xor ebx, esi
mov dword [esp + 0x20], ebx
mov esi, edx
xor ebx, ecx
shl esi, 0x18
mov ecx, edx
mov dword [esp + 0x1c], ebx
shr ecx, 8
or esi, ecx
mov dword [esp + 0x24], ebp
mov ebx, esi
xor ebx, edx
mov edx, dword [eax + 4]
mov ecx, edx
shr ecx, 8
ror ebx, 0x10
xor ebx, esi
mov esi, edx
shl esi, 0x18
or esi, ecx
mov ebp, esi
xor ebp, edx
mov edx, dword [eax + 8]
ror ebp, 0x10
mov ecx, edx
xor ebp, esi
shr ecx, 8
mov esi, edx
shl esi, 0x18
or esi, ecx
mov edi, esi
xor edi, edx
mov edx, dword [eax + 0xc]
ror edi, 0x10
mov ecx, edx
xor edi, esi
shr ecx, 8
mov esi, edx
xor ebp, edi
shl esi, 0x18
xor ebx, ebp
or esi, ecx
mov dword [esp + 0x18], ebx
mov ecx, esi
xor ecx, edx
ror ecx, 0x10
xor ecx, esi
mov ebx, ecx
xor ecx, edi
xor ecx, dword [esp + 0x18]
xor ebx, ebp
xor ebp, ecx
mov esi, ecx
shl ecx, 0x10
mov edi, ebp
and edi, 0xffff00ff
shr ebp, 8
and ebp, 0xff00ff
shl edi, 8
shr esi, 0x10
xor edi, ebp
mov ebp, dword [esp + 0x10]
or esi, ecx
mov ecx, dword [esp + 0x18]
xor edi, esi
xor ecx, edi
bswap ebx
mov dword [ebp], ecx
mov edx, ebx
xor edx, esi
xor ebx, edi
xor edx, ecx
mov dword [ebp + 0xc], ebx
mov ecx, edx
mov dword [ebp + 8], edx
xor ecx, edi
mov dword [ebp + 4], ecx
add ebp, 0x10
mov ecx, dword [esp + 0x14]
mov dword [eax], ecx
mov ecx, dword [esp + 0x1c]
mov dword [eax + 4], ecx
mov ecx, dword [esp + 0x20]
mov dword [eax + 8], ecx
mov ecx, dword [esp + 0x24]
mov dword [eax + 0xc], ecx
sub eax, 0x10
mov dword [esp + 0x10], ebp
cmp ebp, eax
jb 0x5249b4
mov edx, dword [ebp]
mov esi, edx
shl esi, 0x18
mov ecx, edx
shr ecx, 8
or esi, ecx
mov ebx, esi
xor ebx, edx
mov edx, dword [ebp + 4]
ror ebx, 0x10
mov ecx, edx
xor ebx, esi
shr ecx, 8
mov esi, edx
shl esi, 0x18
or esi, ecx
mov ebp, esi
xor ebp, edx
mov edx, dword [esp + 0x10]
ror ebp, 0x10
xor ebp, esi
mov edx, dword [edx + 8]
mov esi, edx
shl esi, 0x18
mov ecx, edx
shr ecx, 8
or esi, ecx
mov ecx, dword [esp + 0x10]
mov edi, esi
xor edi, edx
ror edi, 0x10
mov edx, dword [ecx + 0xc]
xor edi, esi
mov esi, edx
mov ecx, edx
shr ecx, 8
xor ebp, edi
shl esi, 0x18
xor ebx, ebp
or esi, ecx
mov dword [esp + 0x18], ebx
mov ecx, esi
xor ecx, edx
ror ecx, 0x10
xor ecx, esi
mov ebx, ecx
xor ecx, edi
xor ecx, dword [esp + 0x18]
xor ebx, ebp
xor ebp, ecx
mov esi, ecx
mov edi, ebp
shl ecx, 0x10
and edi, 0xffff00ff
shr ebp, 8
shl edi, 8
and ebp, 0xff00ff
shr esi, 0x10
xor edi, ebp
or esi, ecx
mov ecx, dword [esp + 0x18]
xor edi, esi
bswap ebx
xor ecx, edi
mov edx, ebx
xor edx, esi
mov dword [eax], ecx
xor edx, ecx
xor ebx, edi
mov ecx, edx
mov dword [eax + 8], edx
xor ecx, edi
mov dword [eax + 0xc], ebx
pop edi
pop esi
mov dword [eax + 4], ecx
xor eax, eax
pop ebp
pop ebx
add esp, 0x18
ret