Function at 0x1953c80
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push rdi
sub rsp, 0x60
movsxd rsi, dword [rcx + 0xc]
mov rbx, rdx
mov rdi, rcx
mov dword [rsp + 0x90], esi
cmp r8d, 1
jne 0x1953cb3
cmp dword [rcx + 0x14], 0x10
jb 0x1953cac
call fcn.019531b0
jmp 0x1953cc5
call fcn.01952010
jmp 0x1953cc5
cmp dword [rcx + 0x14], 0x10
jb 0x1953cc0
call fcn.01953690
jmp 0x1953cc5
call fcn.01952880
mov r9d, dword [rdi + 0x20]
mov r8, qword [rdi + 0x18]
mov edx, dword [rdi + 0x10]
mov rcx, rbx
call fcn.01953b80
mov r11d, 1
mov r9d, esi
mov edx, r11d
shr r9d, 1
mov r8, rsi
cmp r9d, edx
jbe 0x1953feb
movaps xmmword [rsp + 0x30], xmm6
movss xmm6, dword [0x01892058]
lea eax, [r9 - 1]
movaps xmmword [rsp + 0x20], xmm7
movss xmm7, dword [0x01892040]
cmp eax, 4
jl 0x1953f66
mov qword [rsp + 0x98], rbp
mov qword [rsp + 0x58], r12
mov qword [rsp + 0x50], r13
lea rax, [rbx + rsi*8 + 0x10]
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x40], r15
mov qword [rsp + 0x80], rax
lea rax, [rsi*8]
mov r10, rsi
mov r8, qword [rsp + 0x80]
lea rcx, [rax + rbx - 4]
mov edi, 4
mov qword [rsp + 0x88], rcx
sub rdi, rax
mov ebp, 8
sub rbp, rax
mov r12d, 0xc
mov r14d, 0x14
sub r12, rax
sub r14, rax
mov rcx, 0xfffffffffffffffc
sub rcx, rax
mov r15, 0xfffffffffffffff8
mov r13d, 2
sub r15, rax
lea eax, [r9 - 5]
sub r13, rsi
mov rsi, qword [rsp + 0x88]
shr eax, 2
neg r10
inc eax
lea r11d, [rax*4 + 1]
lea rdx, [rax*4 + 1]
nop word [rax + rax]
movss xmm3, dword [rsi - 4]
movss xmm2, dword [rcx + r8]
movss xmm4, dword [r15 + r8]
add r8, 0x20
sub rsi, 0x20
dec rax
movaps xmm1, xmm2
movaps xmm0, xmm4
subss xmm2, dword [rsi + 0x20]
addss xmm1, dword [rsi + 0x20]
addss xmm0, xmm3
mulss xmm0, xmm6
mulss xmm2, xmm6
mulss xmm1, xmm6
movss dword [r15 + r8 - 0x20], xmm0
movss dword [rcx + r8 - 0x20], xmm2
movss dword [r8 - 0x28], xmm1
subss xmm4, xmm3
mulss xmm4, xmm6
xorps xmm4, xmm7
movss dword [r8 - 0x24], xmm4
movss xmm3, dword [rsi + 0x14]
movss xmm2, dword [rdi + r8 - 0x20]
movaps xmm1, xmm2
subss xmm2, dword [rsi + 0x18]
addss xmm1, dword [rsi + 0x18]
movss xmm5, dword [r8 + r10*8 - 0x20]
movaps xmm0, xmm5
mulss xmm2, xmm6
mulss xmm1, xmm6
movss dword [rdi + r8 - 0x20], xmm2
subss xmm5, xmm3
addss xmm0, xmm3
mulss xmm0, xmm6
mulss xmm5, xmm6
movss dword [r8 + r10*8 - 0x20], xmm0
movss dword [r8 - 0x20], xmm1
xorps xmm5, xmm7
movss dword [r8 - 0x1c], xmm5
movss xmm3, dword [rsi + 0xc]
movss xmm2, dword [r12 + r8 - 0x20]
movaps xmm1, xmm2
subss xmm2, dword [rsi + 0x10]
addss xmm1, dword [rsi + 0x10]
movss xmm4, dword [r8 + rbp - 0x20]
movaps xmm0, xmm4
mulss xmm2, xmm6
mulss xmm1, xmm6
movss dword [r12 + r8 - 0x20], xmm2
addss xmm0, xmm3
subss xmm4, xmm3
mulss xmm0, xmm6
mulss xmm4, xmm6
movss dword [r8 + rbp - 0x20], xmm0
movss dword [r8 - 0x18], xmm1
xorps xmm4, xmm7
movss dword [r8 - 0x14], xmm4
movss xmm3, dword [rsi + 4]
movss xmm5, dword [r8 + r13*8 - 0x20]
movaps xmm0, xmm5
movss xmm2, dword [r14 + r8 - 0x20]
subss xmm5, xmm3
addss xmm0, xmm3
movaps xmm1, xmm2
mulss xmm5, xmm6
mulss xmm0, xmm6
subss xmm2, dword [rsi + 8]
addss xmm1, dword [rsi + 8]
movss dword [r8 + r13*8 - 0x20], xmm0
xorps xmm5, xmm7
mulss xmm2, xmm6
mulss xmm1, xmm6
movss dword [r14 + r8 - 0x20], xmm2
movss dword [r8 - 0x10], xmm1
movss dword [r8 - 0xc], xmm5
jne 0x1953dd0
movsxd rsi, dword [rsp + 0x90]
mov r15, qword [rsp + 0x40]
mov r14, qword [rsp + 0x48]
mov r13, qword [rsp + 0x50]
mov r12, qword [rsp + 0x58]
mov rbp, qword [rsp + 0x98]
mov r8, rsi
cmp r11d, r9d
jae 0x1953fe1
mov rax, r8
mov r10d, r9d
lea rcx, [rbx + rdx*8 + 4]
sub rax, rdx
sub r10d, r11d
lea rdx, [rbx + rax*8 + 4]
movss xmm0, dword [rdx]
movss xmm3, dword [rdx - 4]
movss xmm2, dword [rcx]
sub rdx, 8
movaps xmm1, xmm0
movss xmm4, dword [rcx - 4]
addss xmm1, xmm2
subss xmm2, xmm0
add rcx, 8
dec r10
movaps xmm0, xmm4
mulss xmm2, xmm6
mulss xmm1, xmm6
movss dword [rcx - 8], xmm2
subss xmm4, xmm3
addss xmm0, xmm3
mulss xmm4, xmm6
mulss xmm0, xmm6
movss dword [rcx - 0xc], xmm0
movss dword [rcx + r8*8 - 0xc], xmm1
xorps xmm4, xmm7
movss dword [rcx + r8*8 - 8], xmm4
jne 0x1953f81
movaps xmm6, xmmword [rsp + 0x30]
movaps xmm7, xmmword [rsp + 0x20]
mov eax, dword [rbx + 4]
xor r8d, r8d
mov edx, esi
mov dword [rbx + rdx*8], eax
mov dword [rbx + 4], r8d
mov dword [rbx + rdx*8 + 4], r8d
shr rdx, 1
lea ecx, [r9 + rsi]
mov eax, dword [rbx + rdx*8 + 4]
mov dword [rbx + rcx*8], eax
mov dword [rbx + rdx*8 + 4], r8d
mov dword [rbx + rcx*8 + 4], r8d
add rsp, 0x60
pop rdi
pop rsi
pop rbx
ret