Function at 0x180123e00
Capabilities:
Encode data using xor

Disassembly:
push rbx
push rsi
push rdi
push r12
sub rsp, 0xd8
mov eax, dword [rcx]
mov rbx, r8
mov dword [rsp + 0x118], eax
mov r12, rdx
mov rax, qword [rcx + 0x20]
mov rsi, rcx
movsxd rdi, r9d
mov qword [rsp + 0x68], rax
cmp edi, 1
jne 0x180123e49
mov r9, qword [rsp + 0x140]
add rsp, 0xd8
pop r12
pop rdi
pop rsi
pop rbx
jmp 0x180123d00
mov eax, dword [rsp + 0x150]
lea rcx, [rsp + 0x150]
mov qword [rsp + 0x50], rcx
lea rdx, [rsp + 0x80]
mov qword [rsp + 0x108], rbp
mov r9, rbx
mov qword [rsp + 0xd0], r13
mov ebp, 1
mov r13d, dword [rsp + 0x128]
mov r8, r12
mov dword [rsp + 0x48], ebp
mov rcx, rsi
mov dword [rsp + 0x100], eax
mov eax, dword [rsp + 0x138]
mov dword [rsp + 0x40], eax
lea rax, [rsp + 0x120]
mov dword [rsp + 0x38], r13d
mov qword [rsp + 0xc8], r14
mov dword [rsp + 0x30], r13d
mov qword [rsp + 0xc0], r15
mov qword [rsp + 0x28], rax
movaps xmmword [rsp + 0xb0], xmm6
mov dword [rsp + 0x20], edi
movaps xmmword [rsp + 0xa0], xmm7
call fcn.180120fa0
movd xmm7, dword [rsp + 0x84]
movd xmm6, dword [rsp + 0x88]
cvtdq2ps xmm7, xmm7
cvtdq2ps xmm6, xmm6
mulss xmm7, dword [0x180173090]
mulss xmm6, dword [0x180173090]
cmp edi, 2
jne 0x1801240dc
mov ecx, dword [rsp + 0x94]
xor r15d, r15d
test dword [rsp + 0x90], 0xffffbfff
mov eax, 8
mov r8d, r15d
mov r14d, r15d
cmovne r8d, eax
mov eax, dword [rsp + 0x120]
add ecx, r8d
sub eax, r8d
sub dword [rsi + 0x28], ecx
mov rcx, rbx
cmp dword [rsp + 0x90], 0x2000
mov dword [rsp + 0x60], eax
mov rax, r12
cmovg rax, rbx
cmovg rcx, r12
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], rcx
test r8d, r8d
je 0x180123fbd
cmp dword [rsp + 0x118], r15d
je 0x180123fae
movss xmm1, dword [rcx + 4]
mov r8d, ebp
movss xmm0, dword [rax + 4]
mulss xmm0, dword [rcx]
mov rcx, qword [rsp + 0x68]
mulss xmm1, dword [rax]
subss xmm1, xmm0
xorps xmm0, xmm0
comiss xmm0, xmm1
seta r14b
mov edx, r14d
call fcn.18012a000
jmp 0x180123fbd
mov rcx, qword [rsp + 0x68]
mov edx, ebp
call fcn.18011c000
mov r14d, eax
movss xmm0, dword [0x18015d9d4]
lea eax, [r14 + r14]
mov r9d, dword [rsp + 0x60]
sub ebp, eax
mov eax, dword [rsp + 0x100]
mov r8d, 2
mov dword [rsp + 0x50], eax
mov rcx, rsi
mov rax, qword [rsp + 0x148]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x140]
movss dword [rsp + 0x40], xmm0
mov qword [rsp + 0x38], rax
mov eax, dword [rsp + 0x138]
mov dword [rsp + 0x30], eax
mov rax, qword [rsp + 0x130]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r13d
mov r13, qword [rsp + 0x70]
mov rdx, r13
call fcn.1801237e0
mov ecx, ebp
movd xmm1, ebp
neg ecx
mov r14d, eax
mov rax, qword [rsp + 0x78]
cvtdq2ps xmm1, xmm1
movd xmm0, ecx
cvtdq2ps xmm0, xmm0
mulss xmm0, dword [r13 + 4]
movss dword [rax], xmm0
mulss xmm1, dword [r13]
movss dword [rax + 4], xmm1
cmp dword [rsi + 4], r15d
je 0x1801242c7
movaps xmm2, xmm6
movaps xmm0, xmm7
mulss xmm0, dword [r12]
movss dword [r12], xmm0
movaps xmm0, xmm7
mulss xmm0, dword [r12 + 4]
movss dword [r12 + 4], xmm0
mulss xmm2, dword [rbx]
mulss xmm6, dword [rbx + 4]
movss dword [rbx], xmm2
movss dword [rbx + 4], xmm6
movss xmm1, dword [r12]
movaps xmm0, xmm1
subss xmm0, xmm2
movss dword [r12], xmm0
addss xmm1, dword [rbx]
movss dword [rbx], xmm1
movss xmm2, dword [r12 + 4]
movaps xmm0, xmm2
subss xmm0, dword [rbx + 4]
movss dword [r12 + 4], xmm0
addss xmm2, dword [rbx + 4]
movss dword [rbx + 4], xmm2
jmp 0x1801242c7
mov r14d, dword [rsp + 0x120]
mov eax, r14d
sub eax, dword [rsp + 0x8c]
cdq
sub eax, edx
sar eax, 1
cmp r14d, eax
mov ebp, eax
cmovl eax, r14d
xor r15d, r15d
test eax, eax
jns 0x180124108
mov ebp, r15d
jmp 0x18012410f
cmp r14d, ebp
cmovl ebp, r14d
mov eax, dword [rsi + 0x28]
sub r14d, ebp
sub eax, dword [rsp + 0x94]
mov r8d, edi
mov dword [rsp + 0x100], eax
mov dword [rsi + 0x28], eax
mov eax, dword [rsp + 0x150]
cmp ebp, r14d
jl 0x1801241f4
movss xmm0, dword [0x18015d9d4]
mov r9d, ebp
mov dword [rsp + 0x50], eax
mov rdx, r12
mov rax, qword [rsp + 0x148]
mov rcx, rsi
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x140]
movss dword [rsp + 0x40], xmm0
mov qword [rsp + 0x38], rax
mov eax, dword [rsp + 0x138]
mov dword [rsp + 0x30], eax
mov rax, qword [rsp + 0x130]
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], r13d
call fcn.1801237e0
mov dword [rsp + 0x118], eax
mov eax, dword [rsi + 0x28]
sub eax, dword [rsp + 0x100]
add eax, ebp
cmp eax, 0x18
jle 0x1801241b9
cmp dword [rsp + 0x90], r15d
je 0x1801241b9
add r14d, 0xffffffe8
add r14d, eax
mov eax, dword [rsp + 0x150]
mov ecx, r13d
sar eax, cl
mov r9d, r14d
mov dword [rsp + 0x50], eax
mov rdx, rbx
mov eax, dword [rsp + 0x138]
mov qword [rsp + 0x48], r15
movss dword [rsp + 0x40], xmm6
mov qword [rsp + 0x38], r15
mov dword [rsp + 0x30], eax
mov qword [rsp + 0x28], r15
jmp 0x1801242ac
mov ecx, r13d
mov r9d, r14d
sar eax, cl
mov rdx, rbx
mov dword [rsp + 0x50], eax
mov rcx, rsi
mov eax, dword [rsp + 0x138]
mov qword [rsp + 0x48], r15
movss dword [rsp + 0x40], xmm6
mov qword [rsp + 0x38], r15
mov dword [rsp + 0x30], eax
mov qword [rsp + 0x28], r15
mov dword [rsp + 0x20], r13d
call fcn.1801237e0
mov dword [rsp + 0x118], eax
mov eax, dword [rsi + 0x28]
sub eax, dword [rsp + 0x100]
add eax, r14d
cmp eax, 0x18
jle 0x18012425b
cmp dword [rsp + 0x90], 0x4000
je 0x18012425b
add ebp, 0xffffffe8
add ebp, eax
mov eax, dword [rsp + 0x150]
mov r9d, ebp
movss xmm0, dword [0x18015d9d4]
mov rdx, r12
mov dword [rsp + 0x50], eax
mov rax, qword [rsp + 0x148]
mov qword [rsp + 0x48], rax
mov rax, qword [rsp + 0x140]
movss dword [rsp + 0x40], xmm0
mov qword [rsp + 0x38], rax
mov eax, dword [rsp + 0x138]
mov dword [rsp + 0x30], eax
mov rax, qword [rsp + 0x130]
mov qword [rsp + 0x28], rax
mov r8d, edi
mov dword [rsp + 0x20], r13d
mov rcx, rsi
call fcn.1801237e0
mov r14d, dword [rsp + 0x118]
or r14d, eax
cmp dword [rsi + 4], 0
movaps xmm6, xmmword [rsp + 0xb0]
mov r13, qword [rsp + 0xd0]
mov rbp, qword [rsp + 0x108]
je 0x180124415
cmp edi, 2
je 0x180124306
mov eax, dword [rsi + 0x3c]
mov r9d, edi
movaps xmm2, xmm7
mov dword [rsp + 0x20], eax
mov rdx, rbx
mov rcx, r12
call fcn.180124cd0
cmp dword [rsp + 0x80], 0
je 0x180124415
mov edx, r15d
test edi, edi
jle 0x1801243a9
cmp edi, 2
jb 0x1801243a9
movdqa xmm2, xmmword [0x18017cfe0]
cmp edi, 0x10
jb 0x180124385
mov eax, edi
and eax, 0xfffffff0
movsxd rcx, eax
lea rax, [rbx + 0x20]
movups xmm0, xmmword [rax - 0x20]
add edx, 0x10
lea rax, [rax + 0x40]
add r15, 0x10
xorps xmm0, xmm2
movups xmmword [rax - 0x60], xmm0
movups xmm0, xmmword [rax - 0x50]
xorps xmm0, xmm2
movups xmmword [rax - 0x50], xmm0
movups xmm1, xmmword [rax - 0x40]
xorps xmm1, xmm2
movups xmmword [rax - 0x40], xmm1
movups xmm0, xmmword [rax - 0x30]
xorps xmm0, xmm2
movups xmmword [rax - 0x30], xmm0
cmp r15, rcx
jl 0x180124341
mov eax, edi
and al, 0xf
cmp al, 2
jb 0x1801243a9
mov eax, edi
movsxd rcx, edx
and eax, 0xfffffffe
movsxd r8, eax
movsd xmm0, qword [rbx + rcx*4]
add edx, 2
xorps xmm0, xmm2
movsd qword [rbx + rcx*4], xmm0
add rcx, 2
cmp rcx, r8
jl 0x180124390
movsxd rcx, edx
cmp rcx, rdi
jge 0x180124415
movaps xmm2, xmmword [0x18017cfe0]
mov rax, rdi
sub rax, rcx
cmp rax, 4
jl 0x180124400
mov rdx, rdi
lea rax, [rbx + 8]
sub rdx, rcx
lea rax, [rax + rcx*4]
sub rdx, 4
shr rdx, 2
inc rdx
lea rcx, [rcx + rdx*4]
movups xmm0, xmmword [rax - 8]
lea rax, [rax + 0x10]
xorps xmm0, xmm2
movups xmmword [rax - 0x18], xmm0
sub rdx, 1
jne 0x1801243e1
cmp rcx, rdi
jge 0x180124415
nop dword [rax + rax]
movss xmm0, dword [rbx + rcx*4]
xorps xmm0, xmm2
movss dword [rbx + rcx*4], xmm0
inc rcx
cmp rcx, rdi
jl 0x180124400
movaps xmm7, xmmword [rsp + 0xa0]
mov eax, r14d
mov r14, qword [rsp + 0xc8]
mov r15, qword [rsp + 0xc0]
add rsp, 0xd8
pop r12
pop rdi
pop rsi
pop rbx
ret