Function at 0x56ef00
Capabilities:
Encode data using xor

Disassembly:
push ebp
mov ebp, esp
and esp, 0xfffffff0
push esi
push edi
push ebx
sub esp, 0x64
mov eax, dword [ebp + 8]
mov edx, dword [eax]
mov dword [esp + 0x58], edx
test edx, edx
jle 0x56f156
mov ebx, dword [ebp + 0x10]
mov esi, dword [0x6c6ed4]
neg esi
mov ebx, dword [ebx]
add esi, ebx
imul esi, dword [0x6c6ed0]
mov edx, dword [0x6c6ec8]
shl edx, 4
mov eax, dword [0x6c6ea8]
sub eax, edx
sub ebx, dword [0x6c6e4c]
add esi, eax
mov eax, dword [ebp + 0xc]
imul ebx, dword [0x6c6e48]
movsd xmm2, qword [eax]
unpcklpd xmm2, xmm2
movups xmmword [esp + 0x40], xmm2
mov ecx, dword [0x6c6e40]
shl ecx, 3
mov edi, dword [0x6c6e20]
mov dword [esp + 0x20], 0
sub edi, ecx
add ebx, edi
mov edi, dword [esp + 0x20]
mov eax, edi
lea edx, [esp + 0x30]
shl eax, 4
movups xmm0, xmmword [esi + eax + 0x10]
mulpd xmm0, xmmword [edx + 0x10]
movups xmmword [edx - 0x10], xmm0
mov dword [esp], edx
movups xmmword [esp + 4], xmm0
call fcn.0061fed0
fld qword [0x68ef78]
wait
fld qword [0x68ef78]
wait
pxor xmm4, xmm4
movups xmm2, xmmword [esp + 0x20]
movaps xmm3, xmm2
movsd qword [esp + 0x50], xmm3
fld qword [esp + 0x50]
wait
unpckhpd xmm2, xmm2
fld st(0)
movsd qword [esp + 0x50], xmm2
fmul st(1)
wait
fxch st(1)
fmul st(3), st(0)
wait
movups xmm5, xmmword [0x68ef78]
fld qword [esp + 0x50]
wait
fld st(0)
fmul st(1)
wait
movsd qword [esp + 0x50], xmm4
faddp st(3)
wait
fmul st(3), st(0)
wait
fld qword [esp + 0x50]
wait
fld st(0)
fmulp st(2)
wait
movups xmm1, xmmword [esp + 0x30]
fxch st(1)
faddp st(5)
wait
fmulp st(1)
wait
movaps xmm7, xmm1
fsubrp st(2)
wait
fld1
fdivr st(1), st(0)
wait
fxch st(1)
fmul st(3), st(0)
wait
fxch st(3)
fstp qword [esp + 0x50]
wait
fxch st(2)
fmulp st(1)
wait
movsd xmm0, qword [esp + 0x50]
fstp qword [esp + 0x50]
wait
movhpd xmm0, qword [esp + 0x50]
movsd qword [esp + 0x50], xmm3
fld qword [esp + 0x50]
wait
movsd qword [esp + 0x50], xmm2
fld st(0)
fmul st(1)
wait
addpd xmm0, xmm5
fld qword [esp + 0x50]
wait
fld st(0)
fmul st(1)
wait
movsd qword [esp + 0x50], xmm1
faddp st(2)
wait
fxch st(1)
fdivr st(3)
wait
fld qword [esp + 0x50]
wait
fld st(0)
fmul st(4)
wait
fxch st(1)
fmul st(3)
wait
fld qword [esp + 0x38]
wait
fld st(0)
fmulp st(5)
wait
xorps xmm7, xmmword [0x68ef50]
fxch st(4)
faddp st(2)
wait
fxch st(1)
fmul st(2)
wait
fstp qword [esp + 0x50]
wait
fxch st(3)
fmulp st(2)
wait
movsd xmm6, qword [esp + 0x50]
fxch st(2)
fsubp st(1)
wait
fmulp st(1)
wait
fstp qword [esp + 0x50]
wait
movhpd xmm6, qword [esp + 0x50]
movsd qword [esp + 0x50], xmm3
fld qword [esp + 0x50]
wait
movsd qword [esp + 0x50], xmm2
fld st(0)
fmul st(1)
wait
subpd xmm0, xmm6
fld qword [esp + 0x50]
wait
movaps xmm4, xmm0
fld st(0)
fmul st(1)
wait
shufpd xmm7, xmm7, 1
faddp st(2)
wait
fxch st(1)
fdivp st(3)
wait
unpcklpd xmm4, xmm0
unpckhpd xmm0, xmm0
mulpd xmm4, xmm1
mulpd xmm0, xmm7
addpd xmm0, xmm4
movsd qword [esp + 0x50], xmm0
fld qword [esp + 0x50]
wait
unpckhpd xmm0, xmm0
fld st(0)
movsd qword [esp + 0x50], xmm0
fmul st(3)
wait
fxch st(1)
fmul st(2)
wait
fld qword [esp + 0x50]
wait
fld st(0)
fmulp st(4)
wait
fxch st(3)
faddp st(2)
wait
fxch st(1)
fmul st(4)
wait
fstp qword [ebx + edi*8 + 8]
wait
inc edi
fxch st(2)
fmulp st(1)
wait
fsubrp st(1)
wait
fmulp st(1)
wait
fstp st(0)
cmp edi, dword [esp + 0x58]
jb 0x56ef81
add esp, 0x64
pop ebx
pop edi
pop esi
mov esp, ebp
pop ebp
ret