Function at 0x18003c850
Capabilities:
Encode data using xor

Disassembly:
push r14
push rsi
push rdi
push rbx
sub rsp, 0xc8
movaps xmmword [rsp + 0xb0], xmm15
movaps xmmword [rsp + 0xa0], xmm14
movaps xmmword [rsp + 0x90], xmm13
movdqa xmmword [rsp + 0x80], xmm12
movdqa xmmword [rsp + 0x70], xmm11
movdqa xmmword [rsp + 0x60], xmm10
movaps xmmword [rsp + 0x50], xmm9
movdqa xmmword [rsp + 0x40], xmm8
movdqa xmmword [rsp + 0x30], xmm7
movaps xmmword [rsp + 0x20], xmm6
mov r14, r8
mov rsi, rdx
movaps xmm6, xmm0
mov rdi, qword [r9]
test rdi, rdi
je 0x18003c97e
mov rbx, qword [r9 + 8]
mov rcx, rdi
mov rdx, rbx
call fcn.18002ffb0
cmp r14, rbx
cmovb rbx, r14
test rbx, rbx
je 0x18003ccb9
cmp rbx, 4
jb 0x18003c8fb
lea rax, [rdi + rbx*4]
cmp rax, rsi
jbe 0x18003cb7f
lea rax, [rsi + rbx*4]
cmp rdi, rax
jae 0x18003cb7f
xor eax, eax
movaps xmm0, xmmword [0x1800837a0]
jmp 0x18003c93e
xorps xmm1, xmm0
mulss xmm1, xmm6
movd ecx, xmm1
mov edx, ecx
sar edx, 0x1f
or edx, 0x80000000
xor edx, ecx
add edx, dword [rdi + rax*4]
mov dword [rsi + rax*4], edx
lea rcx, [rax + 1]
mov rax, rcx
cmp rbx, rcx
je 0x18003ccb9
mov ecx, dword [rsi + rax*4]
lea r8d, [rcx - 0x80000000]
mov edx, ecx
xor edx, 0x7fffffff
test ecx, ecx
cmovs edx, r8d
cmp edx, 0x1000000
jb 0x18003c970
add edx, 0x4a800000
movd xmm1, edx
test ecx, ecx
js 0x18003c913
jmp 0x18003c910
xorps xmm1, xmm1
cvtsi2ss xmm1, rdx
test ecx, ecx
js 0x18003c913
jmp 0x18003c910
test r14, r14
je 0x18003ccb9
mov eax, 0x80000000
xor eax, dword [r9 + 8]
lea rcx, [r14 - 1]
movabs rdx, 0x3fffffffffffffff
and rdx, rcx
mov rcx, rsi
cmp rdx, 3
jb 0x18003caf3
inc rdx
mov r8, rdx
and r8, 0xfffffffffffffffc
lea rcx, [rsi + r8*4]
movaps xmm0, xmm6
shufps xmm0, xmm6, 0
movd xmm1, eax
pshufd xmm1, xmm1, 0
xor r9d, r9d
movdqa xmm3, xmmword [0x1800837a0]
movdqa xmm4, xmmword [0x180083770]
movdqa xmm5, xmmword [0x1800855e0]
movdqa xmm7, xmmword [0x1800855f0]
movdqa xmm8, xmmword [0x180085600]
movdqa xmm9, xmmword [0x180085610]
movaps xmm10, xmmword [0x180085620]
movdqa xmm11, xmmword [0x180085630]
nop word cs:[rax + rax]
movdqu xmm12, xmmword [rsi + r9*4]
movdqa xmm2, xmm12
pcmpgtd xmm2, xmmword [0x1800855d0]
movdqa xmm13, xmm12
pxor xmm13, xmm3
pxor xmm12, xmm4
movdqa xmm15, xmm2
pandn xmm15, xmm13
pand xmm12, xmm2
por xmm12, xmm15
movdqa xmm15, xmm12
pxor xmm15, xmm3
movdqa xmm13, xmm5
pcmpgtd xmm13, xmm15
movdqa xmm15, xmm12
pand xmm15, xmm7
por xmm15, xmm8
movdqa xmm14, xmm12
psrld xmm14, 0x10
por xmm14, xmm9
subps xmm14, xmm10
addps xmm14, xmm15
paddd xmm12, xmm11
andps xmm14, xmm13
pandn xmm13, xmm12
por xmm13, xmm14
movdqa xmm12, xmm2
pandn xmm12, xmm13
pxor xmm13, xmm3
pand xmm13, xmm2
por xmm13, xmm12
mulps xmm13, xmm0
movaps xmm2, xmm13
psrad xmm2, 0x1f
por xmm2, xmm3
pxor xmm2, xmm13
paddd xmm2, xmm1
movdqu xmmword [rsi + r9*4], xmm2
add r9, 4
cmp r8, r9
jne 0x18003ca20
cmp rdx, r8
je 0x18003ccb9
lea rdx, [rsi + r14*4]
movaps xmm0, xmmword [0x1800837a0]
jmp 0x18003cb30
xorps xmm1, xmm0
mulss xmm1, xmm6
movd r8d, xmm1
mov r9d, r8d
sar r9d, 0x1f
or r9d, 0x80000000
xor r9d, r8d
add r9d, eax
mov dword [rcx], r9d
add rcx, 4
cmp rcx, rdx
je 0x18003ccb9
mov r8d, dword [rcx]
lea r10d, [r8 - 0x80000000]
mov r9d, r8d
xor r9d, 0x7fffffff
test r8d, r8d
cmovs r9d, r10d
cmp r9d, 0x1000000
jb 0x18003cb70
add r9d, 0x4a800000
movd xmm1, r9d
test r8d, r8d
js 0x18003cb03
jmp 0x18003cb00
xorps xmm1, xmm1
cvtsi2ss xmm1, r9
test r8d, r8d
js 0x18003cb03
jmp 0x18003cb00
mov rax, rbx
and rax, 0xfffffffffffffffc
movaps xmm0, xmm6
shufps xmm0, xmm6, 0
xor ecx, ecx
movdqa xmm2, xmmword [0x1800837a0]
movdqa xmm3, xmmword [0x180083770]
movdqa xmm4, xmmword [0x1800855e0]
movdqa xmm5, xmmword [0x1800855f0]
movdqa xmm7, xmmword [0x180085600]
movdqa xmm8, xmmword [0x180085610]
movaps xmm9, xmmword [0x180085620]
movdqa xmm10, xmmword [0x180085630]
nop word cs:[rax + rax]
movdqu xmm11, xmmword [rdi + rcx*4]
movdqu xmm12, xmmword [rsi + rcx*4]
movdqa xmm1, xmm12
pcmpgtd xmm1, xmmword [0x1800855d0]
movdqa xmm13, xmm12
pxor xmm13, xmm2
pxor xmm12, xmm3
movdqa xmm15, xmm1
pandn xmm15, xmm13
pand xmm12, xmm1
por xmm12, xmm15
movdqa xmm15, xmm12
pxor xmm15, xmm2
movdqa xmm13, xmm4
pcmpgtd xmm13, xmm15
movdqa xmm15, xmm12
pand xmm15, xmm5
por xmm15, xmm7
movdqa xmm14, xmm12
psrld xmm14, 0x10
por xmm14, xmm8
subps xmm14, xmm9
addps xmm14, xmm15
paddd xmm12, xmm10
andps xmm14, xmm13
pandn xmm13, xmm12
por xmm13, xmm14
movdqa xmm12, xmm1
pandn xmm12, xmm13
pxor xmm13, xmm2
pand xmm13, xmm1
por xmm13, xmm12
mulps xmm13, xmm0
movaps xmm1, xmm13
psrad xmm1, 0x1f
por xmm1, xmm2
pxor xmm1, xmm13
paddd xmm1, xmm11
movdqu xmmword [rsi + rcx*4], xmm1
add rcx, 4
cmp rax, rcx
jne 0x18003cbe0
cmp rbx, rax
jne 0x18003c8fd
movaps xmm6, xmmword [rsp + 0x20]
movaps xmm7, xmmword [rsp + 0x30]
movaps xmm8, xmmword [rsp + 0x40]
movaps xmm9, xmmword [rsp + 0x50]
movaps xmm10, xmmword [rsp + 0x60]
movaps xmm11, xmmword [rsp + 0x70]
movaps xmm12, xmmword [rsp + 0x80]
movaps xmm13, xmmword [rsp + 0x90]
movaps xmm14, xmmword [rsp + 0xa0]
movaps xmm15, xmmword [rsp + 0xb0]
add rsp, 0xc8
pop rbx
pop rdi
pop rsi
pop r14
ret