Function at 0x140003f80
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x40
movaps xmmword [rsp + 0x30], xmm7
movdqa xmmword [rsp + 0x20], xmm6
mov rsi, rcx
mov r14d, dword [rcx + 0x44]
mov eax, dword [rcx + 0x9c]
lea r15d, [r14 - 0x106]
pxor xmm6, xmm6
movdqa xmm7, xmmword [0x14000c1d0]
mov ecx, r14d
jmp 0x140003fc3
mov ecx, dword [rsi + 0x44]
add ecx, r15d
mov r12d, dword [rsi + 0x58]
sub r12d, eax
mov eax, dword [rsi + 0x94]
sub r12d, eax
cmp eax, ecx
jb 0x14000425f
mov rcx, qword [rsi + 0x50]
mov r8d, r14d
sub r8d, r12d
lea rdx, [rcx + r14]
call sub.VCRUNTIME140.dll_memcpy
sub dword [rsi + 0x98], r14d
sub dword [rsi + 0x94], r14d
sub dword [rsi + 0x84], r14d
mov ecx, dword [rsi + 0x74]
lea rbx, [rcx + rcx]
add rbx, qword [rsi + 0x68]
mov eax, dword [rsi + 0x44]
lea ebp, [rcx - 1]
lea rdi, [rbp + 1]
cmp rdi, 8
jae 0x140004030
mov rdx, rbx
jmp 0x140004101
mov r8d, ecx
and r8d, 7
sub rdi, r8
lea r9, [rdi + rdi]
mov rdx, rbx
sub rdx, r9
sub ecx, edi
movd xmm0, eax
pshufd xmm0, xmm0, 0
add rbx, 0xfffffffffffffff0
neg rbp
add rbp, r8
add rbp, 0xffffffffffffffff
xor edi, edi
nop
movdqu xmm1, xmmword [rbx + rdi*2]
pshufd xmm1, xmm1, 0x4e
pshuflw xmm2, xmm1, 0x1b
pshufhw xmm3, xmm2, 0x1b
punpckhwd xmm3, xmm6
punpcklwd xmm2, xmm6
movdqa xmm1, xmm0
pxor xmm1, xmm7
movdqa xmm4, xmm2
por xmm4, xmm7
movdqa xmm5, xmm1
pcmpgtd xmm5, xmm4
movdqa xmm4, xmm0
pand xmm4, xmm5
pandn xmm5, xmm2
por xmm5, xmm4
movdqa xmm2, xmm3
por xmm2, xmm7
pcmpgtd xmm1, xmm2
movdqa xmm2, xmm0
pand xmm2, xmm1
pandn xmm1, xmm3
por xmm1, xmm2
psubd xmm1, xmm0
psubd xmm5, xmm0
pslld xmm5, 0x10
psrad xmm5, 0x10
pslld xmm1, 0x10
psrad xmm1, 0x10
packssdw xmm1, xmm5
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
movdqu xmmword [rbx + rdi*2], xmm1
add rdi, 0xfffffffffffffff8
cmp rbp, rdi
jne 0x140004060
test r8d, r8d
je 0x14000412c
neg ecx
xor ebp, ebp
nop word cs:[rax + rax]
nop
movzx edi, word [rdx + rbp*2 - 2]
mov ebx, eax
cmp eax, edi
ja 0x14000411d
mov ebx, edi
sub ebx, eax
mov word [rdx + rbp*2 - 2], bx
add rbp, 0xffffffffffffffff
cmp ecx, ebp
jne 0x140004110
lea rbx, [rax + rax]
add rbx, qword [rsi + 0x60]
lea ebp, [rax - 1]
lea rdi, [rbp + 1]
cmp rdi, 8
jae 0x140004150
mov rcx, rbx
mov edx, eax
jmp 0x140004231
mov r8d, eax
and r8d, 7
sub rdi, r8
lea rdx, [rdi + rdi]
mov rcx, rbx
sub rcx, rdx
mov edx, eax
sub edx, edi
movd xmm0, eax
pshufd xmm0, xmm0, 0
add rbx, 0xfffffffffffffff0
neg rbp
add rbp, r8
add rbp, 0xffffffffffffffff
xor edi, edi
nop word cs:[rax + rax]
nop dword [rax + rax]
movdqu xmm1, xmmword [rbx + rdi*2]
pshufd xmm1, xmm1, 0x4e
pshuflw xmm2, xmm1, 0x1b
pshufhw xmm3, xmm2, 0x1b
punpckhwd xmm3, xmm6
punpcklwd xmm2, xmm6
movdqa xmm1, xmm0
pxor xmm1, xmm7
movdqa xmm4, xmm2
por xmm4, xmm7
movdqa xmm5, xmm1
pcmpgtd xmm5, xmm4
movdqa xmm4, xmm0
pand xmm4, xmm5
pandn xmm5, xmm2
por xmm5, xmm4
movdqa xmm2, xmm3
por xmm2, xmm7
pcmpgtd xmm1, xmm2
movdqa xmm2, xmm0
pand xmm2, xmm1
pandn xmm1, xmm3
por xmm1, xmm2
psubd xmm1, xmm0
psubd xmm5, xmm0
pslld xmm5, 0x10
psrad xmm5, 0x10
pslld xmm1, 0x10
psrad xmm1, 0x10
packssdw xmm1, xmm5
pshuflw xmm1, xmm1, 0x1b
pshufhw xmm1, xmm1, 0x1b
movdqu xmmword [rbx + rdi*2], xmm1
add rdi, 0xfffffffffffffff8
cmp rbp, rdi
jne 0x140004190
test r8d, r8d
je 0x14000425c
neg edx
xor ebp, ebp
nop word cs:[rax + rax]
nop
movzx edi, word [rcx + rbp*2 - 2]
mov ebx, eax
cmp eax, edi
ja 0x14000424d
mov ebx, edi
sub ebx, eax
mov word [rcx + rbp*2 - 2], bx
add rbp, 0xffffffffffffffff
cmp edx, ebp
jne 0x140004240
add r12d, r14d
mov rbp, qword [rsi]
mov ecx, dword [rbp + 8]
test ecx, ecx
je 0x1400043d4
mov eax, dword [rsi + 0x9c]
cmp ecx, r12d
cmovbe r12d, ecx
test r12d, r12d
je 0x1400042ef
mov ebx, dword [rsi + 0x94]
add rbx, qword [rsi + 0x50]
add rbx, rax
sub ecx, r12d
mov dword [rbp + 8], ecx
mov rdx, qword [rbp]
mov edi, r12d
mov rcx, rbx
mov r8, rdi
call sub.VCRUNTIME140.dll_memcpy
mov rax, qword [rbp + 0x28]
mov eax, dword [rax + 0x2c]
cmp eax, 2
je 0x1400042d0
cmp eax, 1
jne 0x1400042e1
mov ecx, dword [rbp + 0x4c]
mov rdx, rbx
mov r8, rdi
call fcn.1400033c0
jmp 0x1400042de
mov ecx, dword [rbp + 0x4c]
mov rdx, rbx
mov r8, rdi
call fcn.1400037a0
mov dword [rbp + 0x4c], eax
add qword [rbp], rdi
add dword [rbp + 0xc], r12d
mov eax, dword [rsi + 0x9c]
add eax, r12d
mov dword [rsi + 0x9c], eax
mov r9d, dword [rsi + 0x170c]
lea ecx, [r9 + rax]
cmp ecx, 3
jb 0x1400043c0
mov edx, dword [rsi + 0x94]
mov ebp, edx
sub ebp, r9d
mov r8, qword [rsi + 0x50]
movzx ebx, byte [r8 + rbp]
mov dword [rsi + 0x70], ebx
mov ecx, dword [rsi + 0x80]
shl ebx, cl
lea edi, [rbp + 1]
movzx edi, byte [r8 + rdi]
xor edi, ebx
mov ebx, dword [rsi + 0x7c]
and edi, ebx
mov dword [rsi + 0x70], edi
test r9d, r9d
je 0x1400043c0
add edx, 2
sub edx, r9d
jmp 0x140004366
mov edi, dword [rsi + 0x70]
mov ecx, dword [rsi + 0x80]
mov r8, qword [rsi + 0x50]
mov ebx, dword [rsi + 0x7c]
add edx, 1
add ebp, 1
lea eax, [rdx - 2]
shl edi, cl
mov ecx, edx
movzx ecx, byte [r8 + rcx]
xor ecx, edi
and ecx, ebx
mov dword [rsi + 0x70], ecx
mov rbx, qword [rsi + 0x60]
mov rdi, qword [rsi + 0x68]
movzx ecx, word [rdi + rcx*2]
and eax, dword [rsi + 0x4c]
mov word [rbx + rax*2], cx
mov rax, qword [rsi + 0x68]
mov ecx, dword [rsi + 0x70]
mov word [rax + rcx*2], bp
mov ebx, dword [rsi + 0x170c]
lea ecx, [rbx - 1]
mov dword [rsi + 0x170c], ecx
mov eax, dword [rsi + 0x9c]
lea ebx, [rax + rbx]
add ebx, 0xffffffff
cmp ebx, 3
jb 0x1400043c0
test ecx, ecx
jne 0x140004350
nop dword [rax + rax]
cmp eax, 0x105
ja 0x1400043d4
mov rcx, qword [rsi]
cmp dword [rcx + 8], 0
jne 0x140003fc0
mov ecx, dword [rsi + 0x1718]
mov edi, dword [rsi + 0x58]
cmp edi, ecx
jbe 0x140004442
mov ebp, dword [rsi + 0x9c]
add ebp, dword [rsi + 0x94]
cmp ecx, ebp
jae 0x14000441b
sub edi, ebp
cmp edi, 0x102
mov ebx, 0x102
cmovb ebx, edi
mov ecx, ebp
add rcx, qword [rsi + 0x50]
xor edx, edx
mov r8, rbx
call sub.VCRUNTIME140.dll_memset
add ebx, ebp
mov dword [rsi + 0x1718], ebx
jmp 0x140004442
add ebp, 0x102
cmp ebp, ecx
jbe 0x140004442
sub ebp, ecx
sub edi, ecx
cmp ebp, edi
cmovbe edi, ebp
add rcx, qword [rsi + 0x50]
xor edx, edx
mov r8, rdi
call sub.VCRUNTIME140.dll_memset
add dword [rsi + 0x1718], edi
movaps xmm6, xmmword [rsp + 0x20]
movaps xmm7, xmmword [rsp + 0x30]
add rsp, 0x40
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r14
pop r15
ret