Function at 0x54f250
Capabilities:
Encode data using xor

Disassembly:
push ebx
mov ebx, esp
sub esp, 8
and esp, 0xfffffff0
add esp, 4
push ebp
mov ebp, dword [ebx + 4]
mov dword [esp + 4], ebp
mov ebp, esp
sub esp, 0x98
cmp dword [ebx + 8], 0
xorps xmm0, xmm0
mov eax, dword [ebx + 0xc]
movss dword [ebp - 0xc], xmm0
movss xmm0, dword [0x5eeaf4]
push esi
push edi
mov dword [ebp - 4], ecx
mov dword [ebp - 0x18], eax
movss dword [ebp - 0x10], xmm0
jbe 0x54f5bb
nop word [eax + eax]
movups xmm3, xmmword [eax]
movaps xmm7, xmmword [0x606150]
cvttps2dq xmm0, xmm3
movaps xmm6, xmmword [0x606130]
cvtdq2ps xmm1, xmm0
movaps xmm0, xmm3
cmpltps xmm0, xmm1
cvtdq2ps xmm2, xmm0
addps xmm2, xmm1
subps xmm3, xmm2
cvttps2dq xmm1, xmm2
pand xmm1, xmmword [0x606180]
pshufd xmm0, xmm1, 0x55
movd edx, xmm0
movd esi, xmm1
pshufd xmm0, xmm1, 0xaa
movaps xmm1, xmm3
mulps xmm1, xmmword [0x6061f0]
movd edi, xmm0
movaps xmm0, xmm3
mulps xmm0, xmm3
movzx eax, byte [esi + ecx]
subps xmm1, xmmword [0x606220]
add eax, edx
mov dword [ebp - 8], edi
mulps xmm0, xmm3
movzx ecx, byte [eax + ecx]
mulps xmm1, xmm3
add ecx, edi
mov edi, dword [ebp - 4]
movzx edi, byte [eax + edi + 1]
addps xmm1, xmmword [0x606210]
mov eax, dword [ebp - 4]
add edi, dword [ebp - 8]
movzx eax, byte [esi + eax + 1]
mulps xmm1, xmm0
add eax, edx
mov edx, dword [ebp - 4]
movzx esi, byte [eax + edx]
movaps xmm0, xmm1
mov edx, dword [ebp - 8]
add esi, edx
shufps xmm0, xmm1, 0x55
movups xmmword [ebp - 0x80], xmm0
mov dword [ebp - 8], esi
mov esi, dword [ebp - 4]
movaps xmm0, xmm1
shufps xmm0, xmm1, 0xaa
movups xmmword [ebp - 0x90], xmm0
movzx eax, byte [eax + esi + 1]
movaps xmm0, xmm3
shufps xmm0, xmm3, 0
add eax, edx
movups xmmword [ebp - 0x30], xmm0
mov dword [ebp - 0x14], eax
mov eax, esi
subps xmm0, xmmword [0x5eebc0]
movups xmmword [ebp - 0x70], xmm1
movzx esi, byte [ecx + eax]
movzx edx, byte [edi + eax]
movzx ecx, byte [ecx + eax + 1]
movzx eax, byte [edi + eax + 1]
movups xmmword [ebp - 0x60], xmm0
movaps xmm0, xmm3
movd xmm1, edx
shufps xmm0, xmm3, 0x55
subps xmm0, xmmword [0x5f84b0]
movd xmm2, eax
shufps xmm3, xmm3, 0xaa
subps xmm3, xmmword [0x606040]
movd xmm5, esi
movups xmmword [ebp - 0x50], xmm0
movd xmm0, ecx
punpckldq xmm5, xmm0
punpckldq xmm1, xmm2
movaps xmm2, xmmword [str._f_f_f_f]
punpckldq xmm5, xmm1
pand xmm5, xmmword [0x606170]
movaps xmmword [ebp - 0x40], xmm3
pcmpgtd xmm7, xmm5
pcmpgtd xmm6, xmm5
movaps xmm0, xmmword [0x606160]
pcmpeqd xmm2, xmm5
movaps xmm3, xmmword [0x5feb50]
pcmpeqd xmm0, xmm5
movaps xmm4, xmmword [0x601da0]
por xmm2, xmm0
pand xmm3, xmm5
mov edi, dword [ebp - 4]
pand xmm4, xmm5
mov ecx, dword [ebp - 8]
movups xmm5, xmmword [ebp - 0x30]
mov eax, dword [ebp - 0x14]
movaps xmm1, xmm2
pslld xmm3, 0x1e
andnps xmm1, xmmword [ebp - 0x40]
movaps xmm0, xmm5
andps xmm0, xmm2
movzx esi, byte [ecx + edi]
orps xmm1, xmm0
movzx edx, byte [eax + edi]
movups xmm0, xmmword [ebp - 0x50]
movzx ecx, byte [ecx + edi + 1]
movzx eax, byte [eax + edi + 1]
andps xmm5, xmm7
andps xmm0, xmm6
pslld xmm4, 0x1f
movaps xmm2, xmm6
movaps xmm6, xmmword [0x606130]
andnps xmm2, xmm1
movd xmm1, edx
orps xmm2, xmm0
movaps xmm0, xmm7
andnps xmm0, xmmword [ebp - 0x50]
xorps xmm2, xmm3
orps xmm0, xmm5
movaps xmm7, xmmword [0x606150]
xorps xmm0, xmm4
movaps xmm3, xmmword [0x5feb50]
addps xmm2, xmm0
movaps xmm4, xmmword [0x601da0]
movd xmm0, ecx
movd xmm5, esi
punpckldq xmm5, xmm0
movaps xmm0, xmmword [0x606160]
movups xmmword [ebp - 0x30], xmm2
movd xmm2, eax
punpckldq xmm1, xmm2
movaps xmm2, xmmword [str._f_f_f_f]
punpckldq xmm5, xmm1
pand xmm5, xmmword [0x606170]
pcmpeqd xmm0, xmm5
pcmpeqd xmm2, xmm5
por xmm2, xmm0
pcmpgtd xmm7, xmm5
movaps xmm0, xmmword [ebp - 0x60]
pcmpgtd xmm6, xmm5
andps xmm0, xmm2
pand xmm3, xmm5
pand xmm4, xmm5
pslld xmm3, 0x1e
movaps xmm1, xmm2
pslld xmm4, 0x1f
andnps xmm1, xmmword [ebp - 0x40]
movaps xmm5, xmm6
orps xmm1, xmm0
movups xmm0, xmmword [ebp - 0x50]
andnps xmm5, xmm1
movups xmm1, xmmword [ebp - 0x60]
andps xmm0, xmm6
orps xmm5, xmm0
andps xmm1, xmm7
movaps xmm0, xmm7
xorps xmm5, xmm3
andnps xmm0, xmmword [ebp - 0x50]
orps xmm0, xmm1
movups xmm1, xmmword [ebp - 0x70]
xorps xmm0, xmm4
addps xmm5, xmm0
shufps xmm1, xmm1, 0
subps xmm5, xmmword [ebp - 0x30]
mulps xmm5, xmm1
sub dword [ebx + 8], 1
mov ecx, edi
addps xmm5, xmmword [ebp - 0x30]
movups xmm3, xmmword [ebp - 0x80]
mov eax, dword [ebp - 0x18]
movaps xmm2, xmm5
movaps xmm1, xmm5
shufps xmm2, xmm5, 0xff
movaps xmm0, xmm5
shufps xmm0, xmm5, 0x55
shufps xmm1, xmm5, 0xaa
subss xmm0, xmm5
subss xmm2, xmm1
mulss xmm0, xmm3
mulss xmm2, xmm3
addss xmm0, xmm5
addss xmm2, xmm1
movss xmm1, dword [ebp - 0x10]
subss xmm2, xmm0
mulss xmm2, dword [ebp - 0x90]
addss xmm2, xmm0
movss xmm0, dword [ebp - 0xc]
mulss xmm2, xmm1
mulss xmm1, dword [0x5eeacc]
addss xmm0, xmm2
movss dword [ebp - 0x10], xmm1
movss dword [ebp - 0xc], xmm0
movaps xmm0, xmmword [0x6061e0]
mulps xmm0, xmmword [eax]
movups xmmword [eax], xmm0
jne 0x54f2a0
fld dword [ebp - 0xc]
fld dword [0x5eeacc]
fmul st(1), st(0)
pop edi
pop esi
faddp st(1)
mov esp, ebp
pop ebp
mov esp, ebx
pop ebx
ret 8