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

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
sub esp, 0xa8
push esi
push edi
mov edi, dword [ebp + 0x10]
mov esi, 0x884bd0
mov dword [esp + 0x5c], 0xff7fffee
mov dword [esp + 0xc], 3
movups xmm0, xmmword [esi]
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x14]
movaps xmmword [esp + 0x24], xmm0
push eax
push edi
push dword [ebp + 0xc]
movaps xmmword [esp + 0x20], xmm0
lea esi, [esi + 0x10]
push dword [ebp + 8]
call fcn.0054f8d0
movaps xmm0, xmmword [esp + 0x34]
lea eax, [esp + 0x44]
xorps xmm0, xmmword [0x719130]
push eax
lea eax, [esp + 0x28]
movaps xmmword [esp + 0x28], xmm0
push eax
push edi
push dword [ebp + 0xc]
push dword [ebp + 8]
call fcn.0054f8d0
add esp, 0x28
sub dword [esp + 0xc], 1
jne 0x54f5a6
movss xmm2, dword [0x718824]
xorps xmm0, xmm0
mov esi, dword [ebp + 0xc]
movaps xmm6, xmm0
movss xmm0, dword [0x719764]
movaps xmm1, xmm0
movaps xmmword [esp + 0x20], xmm6
movaps xmmword [esp + 0x60], xmm1
movss xmm1, dword [0x719760]
movaps xmm0, xmm1
movaps xmmword [esp + 0x70], xmm0
nop dword [eax]
nop word [eax + eax]
movaps xmm0, xmmword [esp + 0x50]
mulss xmm2, dword [0x78670c]
movaps xmm7, xmm0
movaps xmm1, xmm0
shufps xmm7, xmm0, 0xd2
shufps xmm1, xmm0, 0xc9
movaps xmm0, xmmword [0x719330]
movaps xmm4, xmm0
movss dword [esp + 0xc], xmm2
shufps xmm4, xmm0, 0xd2
shufps xmm0, xmm0, 0xc9
mulps xmm0, xmm7
mulps xmm4, xmm1
movaps xmmword [esp + 0x10], xmm1
subps xmm4, xmm0
movaps xmm0, xmmword [0x719490]
movaps xmm3, xmm0
shufps xmm3, xmm0, 0xd2
shufps xmm0, xmm0, 0xc9
mulps xmm0, xmm7
mulps xmm3, xmm1
movaps xmm2, xmm4
mulps xmm2, xmm4
subps xmm3, xmm0
movaps xmm0, xmm2
shufps xmm0, xmm2, 0x55
addss xmm0, xmm2
shufps xmm2, xmm2, 0xaa
movaps xmm1, xmm3
mulps xmm1, xmm3
addss xmm2, xmm0
movaps xmm0, xmm1
shufps xmm0, xmm1, 0x55
addss xmm0, xmm1
shufps xmm1, xmm1, 0xaa
shufps xmm2, xmm2, 0
addss xmm1, xmm0
shufps xmm1, xmm1, 0
cmpltps xmm2, xmm1
movaps xmm1, xmmword [esp + 0x60]
movaps xmm5, xmm2
andnps xmm2, xmm4
andps xmm5, xmm3
orps xmm5, xmm2
movaps xmm3, xmm5
mulps xmm3, xmm5
movaps xmm0, xmm3
shufps xmm0, xmm3, 0x55
addss xmm0, xmm3
shufps xmm3, xmm3, 0xaa
addss xmm3, xmm0
movaps xmm0, xmmword [esp + 0x70]
shufps xmm3, xmm3, 0
movaps xmm2, xmm3
movaps xmm4, xmm3
rsqrtss xmm2, xmm2
mulss xmm3, xmm2
cmpeqss xmm4, xmm6
mulss xmm0, xmm2
mulss xmm3, xmm2
subss xmm1, xmm3
mulss xmm0, xmm1
movss xmm1, dword [esp + 0xc]
shufps xmm1, xmm1, 0
andnps xmm4, xmm0
movaps xmm6, xmm1
shufps xmm4, xmm4, 0
mulps xmm4, xmm5
movaps xmm0, xmm4
mulps xmm6, xmm4
shufps xmm0, xmm4, 0xc9
movaps xmm2, xmm4
mulps xmm7, xmm0
movaps xmm0, xmmword [esp + 0x10]
movaps xmm5, xmm6
shufps xmm2, xmm4, 0xd2
mulps xmm0, xmm2
subps xmm0, xmm7
movaps xmm7, xmmword [esp + 0x50]
mulps xmm0, xmm1
movaps xmmword [esp + 0x10], xmm0
addps xmm5, xmm7
movaps xmm1, xmmword [esp + 0x60]
lea eax, [esp + 0x30]
push eax
lea eax, [esp + 0x84]
push eax
movaps xmm3, xmm5
mulps xmm3, xmm5
push edi
push esi
push dword [ebp + 8]
movaps xmm0, xmm3
shufps xmm0, xmm3, 0x55
addss xmm0, xmm3
shufps xmm3, xmm3, 0xaa
addss xmm3, xmm0
movaps xmm0, xmmword [esp + 0x84]
shufps xmm3, xmm3, 0
movaps xmm2, xmm3
movaps xmm4, xmm3
cmpeqss xmm4, dword [esp + 0x34]
rsqrtss xmm2, xmm2
mulss xmm3, xmm2
mulss xmm0, xmm2
mulss xmm3, xmm2
subss xmm1, xmm3
mulss xmm0, xmm1
movaps xmm1, xmmword [esp + 0x24]
andnps xmm4, xmm0
shufps xmm4, xmm4, 0
movaps xmm0, xmm4
mulps xmm0, xmm5
movaps xmmword [esp + 0x94], xmm0
movaps xmm0, xmm7
subps xmm0, xmm6
mulps xmm0, xmm4
movaps xmmword [esp + 0xa4], xmm0
movaps xmm0, xmm1
addps xmm0, xmm7
subps xmm7, xmm1
mulps xmm0, xmm4
mulps xmm7, xmm4
movaps xmmword [esp + 0x24], xmm0
movaps xmmword [esp + 0xb4], xmm7
call fcn.0054f8d0
lea eax, [esp + 0x44]
push eax
lea eax, [esp + 0xa8]
push eax
push edi
push esi
push dword [ebp + 8]
call fcn.0054f8d0
lea eax, [esp + 0x58]
push eax
lea eax, [esp + 0x3c]
push eax
push edi
push esi
push dword [ebp + 8]
call fcn.0054f8d0
lea eax, [esp + 0x6c]
push eax
lea eax, [esp + 0xe0]
push eax
push edi
push esi
push dword [ebp + 8]
call fcn.0054f8d0
movss xmm2, dword [esp + 0x5c]
add esp, 0x50
mulss xmm2, dword [0x719760]
movaps xmm6, xmmword [esp + 0x20]
comiss xmm2, dword [0x718818]
ja 0x54f640
mov eax, dword [ebp + 0x14]
movaps xmm1, xmmword [esp + 0x30]
movaps xmm0, xmmword [esp + 0x40]
pop edi
movaps xmmword [eax], xmm1
mov eax, dword [ebp + 0x18]
pop esi
movaps xmmword [eax], xmm0
mov eax, dword [ebp + 0x1c]
movss xmm0, dword [esp + 0x54]
movss dword [eax + 0x20], xmm0
movaps xmm0, xmmword [esp + 0x48]
movaps xmmword [eax], xmm0
movaps xmmword [eax + 0x10], xmm1
mov esp, ebp
pop ebp
ret