Function at 0x55d650
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x30
mov eax, ecx
mov dword [ebp - 8], edx
mov ecx, dword [ebp + 0x14]
push esi
push edi
mov esi, dword [eax]
sar esi, cl
mov dword [ebp - 0x24], eax
mov edi, esi
sar edi, 1
mov eax, esi
sar eax, 2
mov dword [ebp - 0x14], eax
lea eax, [edi*4]
mov dword [ebp - 0x10], eax
call fcn.00584260
movss xmm7, dword [0x5f4610]
mov eax, dword [ebp + 0x10]
mov ecx, dword [ebp - 8]
cvtsi2ss xmm0, esi
sar eax, 1
mov dword [ebp - 0x18], esp
mov dword [ebp - 4], 0
lea esi, [ecx + eax*4]
add eax, edi
divss xmm7, xmm0
mov edi, dword [ebp + 0xc]
sub ecx, 4
mov dword [ebp - 0x28], esi
lea edx, [ecx + eax*4]
mov ecx, esp
mov eax, dword [ebp + 0x10]
sar eax, 2
mov dword [ebp - 0x20], eax
movss dword [ebp - 0x30], xmm7
test eax, eax
jle 0x55d744
sub edi, dword [ebp - 8]
mov eax, edx
mov esi, dword [ebp - 0x20]
sub eax, dword [ebp - 0x10]
mov dword [ebp - 0x2c], edi
mov edi, dword [ebp + 0xc]
sub edi, dword [ebp - 0x10]
sub edi, dword [ebp - 8]
mov dword [ebp - 0x1c], esi
mov dword [ebp - 4], esi
mov esi, dword [ebp - 0x28]
mov dword [ebp - 0xc], edi
lea esp, [esp]
mov edi, dword [ebp - 0x10]
movss xmm0, dword [edx]
movss xmm1, dword [edi + esi]
mov edi, dword [ebp - 0xc]
mulss xmm1, dword [edi + edx]
mov edi, dword [ebp - 0x2c]
mulss xmm0, dword [edi + esi]
addss xmm1, xmm0
movss dword [ecx], xmm1
movss xmm1, dword [esi]
mulss xmm1, dword [edi + esi]
add esi, 8
mov edi, dword [ebp - 0xc]
movss xmm0, dword [edi + edx]
sub edx, 8
mulss xmm0, dword [eax]
sub eax, 8
subss xmm1, xmm0
movss dword [ecx + 4], xmm1
add ecx, 8
sub dword [ebp - 0x1c], 1
jne 0x55d6f0
mov eax, dword [ebp - 0x14]
sub eax, dword [ebp - 0x20]
mov dword [ebp - 0xc], eax
mov eax, dword [ebp - 4]
cmp eax, dword [ebp - 0xc]
jge 0x55d7e9
mov eax, dword [ebp - 0xc]
sub eax, dword [ebp - 4]
cmp eax, 4
jl 0x55d7c3
mov edi, dword [ebp - 4]
mov eax, dword [ebp - 0xc]
sub eax, edi
sub eax, 4
shr eax, 2
inc eax
lea edi, [edi + eax*4]
mov dword [ebp - 4], edi
lea esp, [esp]
fld dword [edx]
fstp dword [ecx]
fld dword [esi]
fstp dword [ecx + 4]
fld dword [edx - 8]
fstp dword [ecx + 8]
fld dword [esi + 8]
fstp dword [ecx + 0xc]
fld dword [edx - 0x10]
fstp dword [ecx + 0x10]
fld dword [esi + 0x10]
fstp dword [ecx + 0x14]
fld dword [edx - 0x18]
sub edx, 0x20
fstp dword [ecx + 0x18]
fld dword [esi + 0x18]
add esi, 0x20
fstp dword [ecx + 0x1c]
add ecx, 0x20
sub eax, 1
jne 0x55d780
mov eax, dword [ebp - 4]
cmp eax, dword [ebp - 0xc]
jge 0x55d7e9
mov eax, dword [ebp - 0xc]
sub eax, dword [ebp - 4]
mov edi, dword [ebp - 0xc]
mov dword [ebp - 4], edi
nop
fld dword [edx]
sub edx, 8
fstp dword [ecx]
fld dword [esi]
add esi, 8
fstp dword [ecx + 4]
add ecx, 8
sub eax, 1
jne 0x55d7d0
mov eax, edi
cmp eax, dword [ebp - 0x14]
jge 0x55d877
mov eax, esi
sub esi, dword [ebp + 0xc]
sub eax, dword [ebp - 0x10]
mov dword [ebp - 0x2c], eax
mov eax, dword [ebp + 0x10]
shl eax, 2
sub eax, edx
add eax, 0xfffffffc
add eax, dword [ebp + 0xc]
mov dword [ebp + 0x10], eax
mov eax, dword [ebp - 0x14]
sub eax, dword [ebp - 4]
mov dword [ebp - 0x20], eax
mov eax, dword [ebp - 0x2c]
lea ebx, [ebx]
movss xmm1, dword [edx]
mov edi, dword [ebp + 0x10]
movss xmm0, dword [eax]
add eax, 8
mulss xmm1, dword [edi + edx]
mov edi, dword [ebp + 0xc]
mulss xmm0, dword [edi]
mov edi, dword [ebp - 0x10]
subss xmm1, xmm0
movss dword [ecx], xmm1
movss xmm1, dword [edi + edx]
mov edi, dword [ebp + 0xc]
add dword [ebp + 0xc], 8
mulss xmm1, dword [edi]
movss xmm0, dword [esi + edi]
mov edi, dword [ebp + 0x10]
mulss xmm0, dword [edi + edx]
sub edx, 8
addss xmm1, xmm0
movss dword [ecx + 4], xmm1
add ecx, 8
sub dword [ebp - 0x20], 1
jne 0x55d820
mov eax, dword [ebp - 0x24]
mov esi, esp
mov edi, dword [ebp - 0x14]
mov eax, dword [eax + 0x18]
mov dword [ebp + 0x10], eax
xor eax, eax
mov dword [ebp - 0x20], eax
test edi, edi
jle 0x55d90d
movss xmm6, dword [0x5f4820]
mov dword [ebp + 0xc], edi
lea ecx, [ecx]
mov ecx, dword [ebp + 0x14]
shl eax, cl
mov ecx, dword [ebp + 0x10]
movss xmm1, dword [ecx + eax*4]
mov eax, dword [ebp + 0xc]
movaps xmm2, xmm1
mov ecx, dword [ebp + 0x14]
mulss xmm1, dword [esi + 4]
shl eax, cl
mov ecx, dword [ebp + 0x10]
mulss xmm2, dword [esi]
dec dword [ebp + 0xc]
movss xmm5, dword [ecx + eax*4]
movaps xmm0, xmm5
mov eax, dword [ebp - 0x20]
mulss xmm5, dword [esi]
xorps xmm2, xmm6
inc eax
mulss xmm0, dword [esi + 4]
mov dword [ebp - 0x20], eax
subss xmm5, xmm1
subss xmm2, xmm0
movaps xmm0, xmm5
mulss xmm0, xmm7
addss xmm0, xmm2
mulss xmm2, xmm7
subss xmm5, xmm2
movss dword [esi], xmm0
movss dword [esi + 4], xmm5
add esi, 8
cmp eax, edi
jl 0x55d8a0
mov eax, dword [ebp + 0x14]
mov esi, dword [ebp - 0x24]
push dword [ebp - 8]
mov edx, dword [ebp - 0x18]
mov ecx, dword [esi + eax*4 + 8]
call fcn.00565930
mov edx, dword [ebp - 0x10]
add esp, 4
mov eax, dword [esi + 0x18]
add edx, 0xfffffffc
imul edx, dword [ebp + 0x18]
xor esi, esi
mov dword [ebp + 0xc], eax
add edx, dword [ebp + 8]
test edi, edi
jle 0x55d9e2
movss xmm6, dword [ebp - 0x30]
mov eax, edi
mov dword [ebp + 0x10], eax
lea esp, [esp]
mov ecx, dword [ebp + 0x14]
shl eax, cl
mov ecx, dword [ebp + 0xc]
mov edi, dword [ebp + 0x18]
movss xmm2, dword [ecx + eax*4]
mov eax, dword [ebp - 8]
mov ecx, dword [ebp + 0x14]
movss xmm3, dword [eax + 4]
mov eax, esi
shl eax, cl
movaps xmm0, xmm3
mov ecx, dword [ebp + 0xc]
inc esi
mulss xmm0, xmm2
movss xmm1, dword [ecx + eax*4]
mov ecx, dword [ebp - 8]
mov eax, dword [ebp + 8]
movss xmm5, dword [ecx]
add ecx, 8
movaps xmm4, xmm5
mov dword [ebp - 8], ecx
mulss xmm4, xmm1
lea ecx, [edi*8]
mulss xmm1, xmm3
mulss xmm5, xmm2
addss xmm4, xmm0
subss xmm5, xmm1
movaps xmm0, xmm4
mulss xmm4, xmm6
movaps xmm1, xmm5
addss xmm4, xmm5
mulss xmm1, xmm6
subss xmm0, xmm1
movss dword [eax], xmm0
add eax, ecx
mov dword [ebp + 8], eax
mov eax, dword [ebp + 0x10]
movss dword [edx], xmm4
dec eax
sub edx, ecx
mov dword [ebp + 0x10], eax
cmp esi, dword [ebp - 0x14]
jl 0x55d950
lea esp, [ebp - 0x38]
pop edi
pop esi
mov esp, ebp
pop ebp
ret