Function at 0x1400556c0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0xc8
movups xmmword [rsp + 0x40], xmm6
movups xmmword [rsp + 0x50], xmm7
movups xmmword [rsp + 0x60], xmm8
movups xmmword [rsp + 0x70], xmm9
movups xmmword [rsp + 0x80], xmm10
movups xmmword [rsp + 0x90], xmm11
movups xmmword [rsp + 0xa0], xmm12
movups xmmword [rsp + 0xb0], xmm13
mov rbx, rdx
mov qword [rsp + 0x120], r8
mov r15, rcx
mov qword [rsp + 0x128], r9
call fcn.1400562b0
test rbx, rbx
je 0x140056180
cmp qword [rsp + 0x128], 0
je 0x140056190
movq xmm1, qword [0x14022e120]
movsd xmm2, qword [0x14022e130]
mov rdx, qword [rsp + 0x120]
mov rax, qword [rsp + 0x128]
jmp 0x140055772
sub rax, 1
je 0x140056190
pxor xmm0, xmm0
cvtss2sd xmm0, dword [rdx + rax*4 - 4]
andpd xmm0, xmm1
comisd xmm0, xmm2
jb 0x140055768
mov qword [rsp + 0x128], rax
mov eax, 1
cmp rbx, 1
je 0x140056212
nop dword [rax]
mov rdx, rax
add rax, rax
cmp rax, rbx
jb 0x1400557a0
pxor xmm2, xmm2
shl rdx, 2
cvtsi2ss xmm2, rax
test rax, rax
jns 0x1400557da
mov rcx, rax
mov r8, rax
pxor xmm2, xmm2
shr rcx, 1
and r8d, 1
or rcx, r8
cvtsi2ss xmm2, rcx
addss xmm2, xmm2
mov rcx, rdx
shr rcx, 1
add rcx, 1
movq xmm0, rax
movq xmm7, rdx
cmp qword [rsp + 0x128], 0
punpcklqdq xmm0, xmm7
movups xmmword [r15 + 8], xmm0
js 0x1400561e6
pxor xmm0, xmm0
cvtsi2ss xmm0, qword [rsp + 0x128]
divss xmm0, xmm2
movsd xmm2, qword [0x14022e138]
cvtss2sd xmm0, xmm0
andpd xmm1, xmm0
comisd xmm2, xmm1
jbe 0x140055851
cvttsd2si rax, xmm0
pxor xmm1, xmm1
movsd xmm2, qword [0x14022df90]
cvtsi2sd xmm1, rax
cmpnlesd xmm0, xmm1
andpd xmm0, xmm2
addsd xmm0, xmm1
movsd xmm1, qword [0x14022e140]
comisd xmm0, xmm1
jae 0x1400561ce
cvttsd2si rax, xmm0
mov qword [r15 + 0x18], rax
mov qword [r15 + 0x20], rcx
lea rcx, [r15 + 0x70]
call fcn.1400a7a00
mov rdx, qword [r15 + 0x10]
lea rcx, [r15 + 0x58]
call fcn.140057680
cmp qword [r15 + 0x18], 0
je 0x140055d90
lea rax, [r15 + 0x28]
mov r13, qword [sym.imp.msvcrt.dll__aligned_free]
xor esi, esi
mov qword [rsp + 0x20], rax
mov r14, r13
nop word cs:[rax + rax]
mov ecx, 0x38
call fcn.1401eb790
mov rbx, qword [r15 + 0x20]
mov qword [rax], 0
mov r12, rax
mov rax, qword [0x140237f40]
mov qword [r12 + 0x10], 0
mov qword [r12 + 0x18], 0
add rax, 0x10
mov qword [r12 + 8], rax
mov qword [r12 + 0x20], rax
mov qword [r12 + 0x28], 0
mov qword [r12 + 0x30], 0
test rbx, rbx
je 0x140055ee0
xor ecx, ecx
mov rdi, r13
call r13
lea rbp, [rbx*4]
mov edx, 0x10
mov qword [r12 + 0x10], 0
mov qword [r12 + 0x18], 0
mov rcx, rbp
call qword [sym.imp.msvcrt.dll__aligned_malloc]
mov qword [r12 + 0x10], rax
mov rcx, rax
mov qword [r12 + 0x18], rbx
xor edx, edx
mov r8, rbp
call sub.msvcrt.dll_memset
cmp rbx, qword [r12 + 0x30]
jne 0x140055ef0
mov rcx, qword [r12 + 0x28]
lea rbp, [rbx*4]
xor edx, edx
mov r8, rbp
call sub.msvcrt.dll_memset
mov qword [r12], rbx
mov rdx, qword [r15 + 0x30]
mov qword [rsp + 0x38], r12
cmp rdx, qword [r15 + 0x38]
je 0x1400560e0
mov rax, qword [r15 + 0x18]
mov qword [rdx], r12
add rsi, 1
add rdx, 8
mov qword [r15 + 0x30], rdx
cmp rsi, rax
jb 0x1400558b0
test rax, rax
je 0x140055d90
movss xmm8, dword [0x14022df40]
movups xmm7, xmmword [0x14022df50]
xor r12d, r12d
movups xmm9, xmm8
movups xmm10, xmm8
nop word [rax + rax]
mov ecx, 0x38
call fcn.1401eb790
mov rbx, qword [r15 + 0x20]
mov qword [rax], 0
mov r13, rax
mov rax, qword [0x140237f40]
mov qword [r13 + 0x10], 0
add rax, 0x10
mov qword [r13 + 0x18], 0
mov qword [r13 + 8], rax
mov qword [r13 + 0x20], rax
mov qword [r13 + 0x28], 0
mov qword [r13 + 0x30], 0
test rbx, rbx
je 0x140055e70
mov rdi, qword [sym.imp.msvcrt.dll__aligned_free]
xor ecx, ecx
call rdi
lea rsi, [rbx*4]
mov qword [r13 + 0x10], 0
mov edx, 0x10
mov qword [r13 + 0x18], 0
mov rcx, rsi
call qword [sym.imp.msvcrt.dll__aligned_malloc]
mov qword [r13 + 0x10], rax
xor edx, edx
mov rcx, rax
mov r8, rsi
mov qword [r13 + 0x18], rbx
call sub.msvcrt.dll_memset
cmp rbx, qword [r13 + 0x30]
jne 0x140055e88
mov rcx, qword [r13 + 0x28]
lea rsi, [rbx*4]
mov r8, rsi
xor edx, edx
call sub.msvcrt.dll_memset
mov rax, qword [r15 + 8]
mov qword [r13], rbx
mov rbx, qword [rsp + 0x128]
mov rcx, qword [r15 + 0x60]
mov qword [rsp + 0x38], r13
mov rdx, rax
imul rdx, r12
sub rbx, rdx
cmp rbx, rax
cmova rbx, rax
mov rax, qword [rsp + 0x120]
lea rsi, [rbx*4]
lea rdx, [rax + rdx*4]
mov r8, rsi
call sub.msvcrt.dll_memcpy
mov r8, qword [r15 + 0x68]
add rsi, qword [r15 + 0x60]
xor edx, edx
mov rcx, rsi
sub r8, rbx
shl r8, 2
call sub.msvcrt.dll_memset
mov rax, qword [rsp + 0x38]
mov r14, qword [r15 + 0x70]
lea rcx, [0x1400a7da0]
mov rdx, qword [r15 + 0x60]
mov rdi, qword [rax + 0x28]
mov rbp, qword [rax + 0x10]
mov rax, qword [r14]
mov rax, qword [rax + 0x18]
cmp rax, rcx
jne 0x1400560a0
mov rsi, qword [r14 + 8]
mov rbx, qword [r14 + 0x40]
test rsi, rsi
je 0x1400561a0
lea rax, [rsi - 1]
cmp rax, 2
jbe 0x1400561c7
mov rcx, rsi
xor eax, eax
shr rcx, 2
shl rcx, 4
nop dword [rax]
movups xmm0, xmmword [rdx + rax]
movhlps xmm6, xmm0
cvtps2pd xmm1, xmm0
movups xmmword [rbx + rax*2], xmm1
cvtps2pd xmm0, xmm6
movups xmmword [rbx + rax*2 + 0x10], xmm0
add rax, 0x10
cmp rax, rcx
jne 0x140055b48
mov rax, rsi
and rax, 0xfffffffffffffffc
test sil, 3
je 0x140055bc6
pxor xmm0, xmm0
lea r9, [rax + 1]
lea r8, [rax*4]
cvtss2sd xmm0, dword [rdx + rax*4]
lea rcx, [rax*8]
movsd qword [rbx + rax*8], xmm0
cmp rsi, r9
jbe 0x140055bc6
pxor xmm0, xmm0
add rax, 2
cvtss2sd xmm0, dword [rdx + r8 + 4]
movsd qword [rbx + rcx + 8], xmm0
cmp rax, rsi
jae 0x140055bc6
pxor xmm0, xmm0
cvtss2sd xmm0, dword [rdx + r8 + 8]
movsd qword [rbx + rcx + 0x10], xmm0
mov r13, qword [r14 + 0x28]
cmp esi, 4
jg 0x140055f48
mov rdx, rbx
je 0x140056160
movsd xmm0, qword [rbx]
movsd xmm1, qword [rbx + 8]
lea rcx, [rsi*8]
lea r8, [rdx + rcx]
movupd xmm2, xmm0
subsd xmm0, xmm1
addsd xmm2, xmm1
movsd qword [rbx + 8], xmm0
movsd qword [rbx], xmm2
cmp r8, rdx
je 0x140056229
lea r9, [rbp + 4]
mov rax, rdi
sub rcx, 0x10
sub rax, r9
cmp rax, 8
jbe 0x140056108
cmp rcx, 0x20
jbe 0x140056108
shr rcx, 4
xor eax, eax
add rcx, 1
mov r9, rcx
shr r9, 2
shl r9, 4
nop word cs:[rax + rax]
movupd xmm0, xmmword [rdx + rax*4]
movupd xmm5, xmmword [rdx + rax*4 + 0x10]
movupd xmm1, xmmword [rdx + rax*4 + 0x20]
movupd xmm4, xmmword [rdx + rax*4 + 0x30]
movupd xmm2, xmm0
unpckhpd xmm0, xmm5
movupd xmm3, xmm1
unpckhpd xmm1, xmm4
unpcklpd xmm2, xmm5
cvtpd2ps xmm0, xmm0
unpcklpd xmm3, xmm4
cvtpd2ps xmm1, xmm1
movlhps xmm0, xmm1
cvtpd2ps xmm2, xmm2
xorps xmm0, xmm7
cvtpd2ps xmm3, xmm3
movlhps xmm2, xmm3
movups xmmword [rbp + rax], xmm2
movups xmmword [rdi + rax], xmm0
add rax, 0x10
cmp r9, rax
jne 0x140055c50
mov r9, rcx
movups xmm2, xmm8
and r9, 0xfffffffffffffffc
mov rax, r9
shl rax, 4
add rdx, rax
lea rax, [r9*4]
lea r10, [rbp + rax]
add rax, rdi
cmp r9, rcx
je 0x140055d46
pxor xmm0, xmm0
lea rcx, [rdx + 0x10]
cvtsd2ss xmm0, qword [rdx]
movss dword [r10], xmm0
pxor xmm0, xmm0
cvtsd2ss xmm0, qword [rdx + 8]
xorps xmm0, xmm10
movss dword [rax], xmm0
cmp r8, rcx
je 0x140055d46
pxor xmm0, xmm0
lea rcx, [rdx + 0x20]
cvtsd2ss xmm0, qword [rdx + 0x10]
movss dword [r10 + 4], xmm0
pxor xmm0, xmm0
cvtsd2ss xmm0, qword [rdx + 0x18]
xorps xmm0, xmm10
movss dword [rax + 4], xmm0
cmp r8, rcx
je 0x140055d46
pxor xmm0, xmm0
cvtsd2ss xmm0, qword [rdx + 0x20]
movss dword [r10 + 8], xmm0
pxor xmm0, xmm0
cvtsd2ss xmm0, qword [rdx + 0x28]
xorps xmm0, xmm10
movss dword [rax + 8], xmm0
movss xmm0, dword [rdi]
shr rsi, 1
mov rdx, qword [r15 + 0x48]
xorps xmm0, xmm2
movss dword [rbp + rsi*4], xmm0
mov dword [rdi], 0
mov dword [rdi + rsi*4], 0
cmp rdx, qword [r15 + 0x50]
je 0x1400560b9
mov rax, qword [rsp + 0x38]
add rdx, 8
add r12, 1
mov qword [rdx - 8], rax
mov qword [r15 + 0x48], rdx
cmp qword [r15 + 0x18], r12
ja 0x1400559d0
mov rbx, qword [r15 + 0x20]
lea rcx, [r15 + 0x80]
mov rdx, rbx
call fcn.140057680
mov rdx, rbx
lea rcx, [r15 + 0x98]
call fcn.140057680
mov qword [r15 + 0x78], rbx
mov rbx, qword [r15 + 0x20]
lea rcx, [r15 + 0xb8]
mov rdx, rbx
call fcn.140057680
lea rcx, [r15 + 0xd0]
mov rdx, rbx
call fcn.140057680
mov qword [r15 + 0xb0], rbx
mov rdx, qword [r15 + 8]
lea rcx, [r15 + 0xe8]
call fcn.140057680
mov rdx, qword [r15 + 8]
lea rcx, [r15 + 0x108]
call fcn.140057680
mov eax, 1
mov qword [r15 + 0x120], 0
mov qword [r15 + 0x100], 0
movups xmm6, xmmword [rsp + 0x40]
movups xmm7, xmmword [rsp + 0x50]
movups xmm8, xmmword [rsp + 0x60]
movups xmm9, xmmword [rsp + 0x70]
movups xmm10, xmmword [rsp + 0x80]
movups xmm11, xmmword [rsp + 0x90]
movups xmm12, xmmword [rsp + 0xa0]
movups xmm13, xmmword [rsp + 0xb0]
add rsp, 0xc8
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor esi, esi
xor ecx, ecx
xor edx, edx
mov r8, rsi
call sub.msvcrt.dll_memset
cmp rbx, qword [r13 + 0x30]
je 0x140055a74
mov rcx, qword [r13 + 0x28]
mov rdi, qword [sym.imp.msvcrt.dll__aligned_free]
call rdi
mov qword [r13 + 0x28], 0
xor esi, esi
xor ecx, ecx
mov qword [r13 + 0x30], 0
test rbx, rbx
je 0x140055a80
lea rsi, [rbx*4]
mov edx, 0x10
mov rcx, rsi
call qword [sym.imp.msvcrt.dll__aligned_malloc]
mov qword [r13 + 0x28], rax
mov rcx, rax
mov qword [r13 + 0x30], rbx
jmp 0x140055a80
xor ebp, ebp
xor ecx, ecx
jmp 0x140055947
mov rcx, qword [r12 + 0x28]
mov rdi, r13
call r14
mov qword [r12 + 0x28], 0
xor ebp, ebp
xor ecx, ecx
mov qword [r12 + 0x30], 0
test rbx, rbx
je 0x140055969
lea rbp, [rbx*4]
mov edx, 0x10
mov rcx, rbp
call qword [sym.imp.msvcrt.dll__aligned_malloc]
mov qword [r12 + 0x28], rax
mov rcx, rax
mov qword [r12 + 0x30], rbx
jmp 0x140055969
mov rdx, qword [r14 + 0x10]
mov ecx, esi
mov r8, rbx
mov dword [rsp + 0x2c], esi
mov eax, dword [rdx]
mov r9d, dword [rdx + 4]
add rdx, 8
mov dword [rsp + 0x20], eax
mov dword [rsp + 0x28], r9d
call fcn.1400a91d0
mov ecx, esi
mov rdx, rbx
mov r8, r13
call fcn.1400ac160
movsxd rax, dword [rsp + 0x20]
movsxd r9, dword [rsp + 0x28]
sar esi, 1
mov r10d, dword [rsp + 0x2c]
lea rcx, [r13 + rax*8]
lea eax, [r9 + r9]
cdq
idiv esi
cmp esi, 2
je 0x140056090
mov r13d, eax
lea r11d, [rsi - 3]
lea rdx, [rbx + 0x18]
cdqe
sub r9, rax
mov esi, r11d
neg r13d
movsd xmm5, qword [0x14022df30]
lea r8, [rcx + r9*8]
shr esi, 1
lea r9, [rax*8]
movsxd rax, r10d
lea r10, [rax*8]
mov r11d, esi
movsxd r13, r13d
add rcx, r9
lea rax, [rbx + r10]
shl r11, 4
lea r10, [rbx + r10 - 0x10]
shl r13, 3
sub r10, r11
nop dword [rax]
movsd xmm12, qword [rdx]
movsd xmm13, qword [rax - 8]
movupd xmm11, xmm5
sub rax, 0x10
movsd xmm2, qword [rdx - 8]
subsd xmm11, qword [r8]
add rdx, 0x10
add r8, r13
addsd xmm13, xmm12
movsd xmm3, qword [rcx]
add rcx, r9
movupd xmm0, xmm2
subsd xmm0, qword [rax]
movupd xmm1, xmm11
movupd xmm4, xmm3
mulsd xmm11, xmm13
mulsd xmm4, xmm13
mulsd xmm3, xmm0
mulsd xmm1, xmm0
movupd xmm0, xmm11
addsd xmm2, xmm4
addsd xmm0, xmm3
subsd xmm2, xmm1
subsd xmm12, xmm0
movsd qword [rdx - 0x18], xmm2
movsd qword [rdx - 0x10], xmm12
addsd xmm1, qword [rax]
subsd xmm1, xmm4
movsd qword [rax], xmm1
movsd xmm1, qword [rax + 8]
subsd xmm1, xmm0
movsd qword [rax + 8], xmm1
cmp rax, r10
jne 0x140055ff8
mov rdx, qword [r14 + 0x40]
mov rsi, qword [r14 + 8]
jmp 0x140055bdc
mov r9, rdi
mov r8, rbp
mov rcx, r14
call rax
mov rdx, qword [r15 + 0x48]
cmp rdx, qword [r15 + 0x50]
jne 0x140055d71
lea rcx, [r15 + 0x40]
lea r8, [rsp + 0x38]
add r12, 1
call fcn.140139710
cmp qword [r15 + 0x18], r12
ja 0x1400559d0
jmp 0x140055d90
mov rcx, qword [rsp + 0x20]
lea r8, [rsp + 0x38]
add rsi, 1
call fcn.140139710
mov rax, qword [r15 + 0x18]
cmp rax, rsi
ja 0x1400558b0
jmp 0x1400559a6
sub r8, rdx
movups xmm2, xmm8
lea rax, [r8 - 0x10]
shr rax, 4
lea rcx, [rax*4 + 4]
xor eax, eax
nop dword [rax]
pxor xmm0, xmm0
cvtsd2ss xmm0, qword [rdx + rax*4]
movss dword [rbp + rax], xmm0
pxor xmm0, xmm0
cvtsd2ss xmm0, qword [rdx + rax*4 + 8]
xorps xmm0, xmm9
movss dword [rdi + rax], xmm0
add rax, 4
cmp rax, rcx
jne 0x140056128
jmp 0x140055d46
mov r8, r13
mov ecx, 4
call fcn.1400ac160
mov rdx, qword [r14 + 0x40]
mov rsi, qword [r14 + 8]
jmp 0x140055bdc
xor eax, eax
jmp 0x140055e1a
mov eax, 1
jmp 0x140055e1a
movsd xmm0, qword [rbx]
movsd xmm1, qword [rbx + 8]
movupd xmm2, xmm0
subsd xmm0, xmm1
addsd xmm2, xmm1
movsd qword [rbx + 8], xmm0
movsd qword [rbx], xmm2
movups xmm2, xmm8
jmp 0x140055d46
xor eax, eax
jmp 0x140055b74
subsd xmm0, xmm1
cvttsd2si rax, xmm0
mov qword [r15 + 0x18], rax
btc qword [r15 + 0x18], 0x3f
jmp 0x14005586c
mov rax, qword [rsp + 0x128]
mov r8, qword [rsp + 0x128]
pxor xmm0, xmm0
shr rax, 1
and r8d, 1
or rax, r8
cvtsi2ss xmm0, rax
addss xmm0, xmm0
jmp 0x140055814
movss xmm2, dword [0x14022e054]
mov ecx, 2
mov edx, 2
jmp 0x1400557e4
movups xmm2, xmm8
jmp 0x140055d46