Function at 0x140024490
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x58
movdqa xmmword [rsp + 0x40], xmm6
mov r12, r9
mov r14, r8
mov rdi, rdx
mov rsi, rcx
mov rcx, qword [rcx + 0x30]
mov r15, qword [rsi + 0x38]
test r15, r15
je 0x140024629
mov rax, qword [rsi]
mov r13, qword [rax + 0x10]
sub r13, r15
cmp r13, r14
cmova r13, r14
mov rbx, rcx
add rcx, r15
mov rdx, rdi
mov r8, r13
call sub.VCRUNTIME140.dll_memcpy
add r15, r13
mov rbp, qword [rsi]
mov rdx, qword [rbp + 0x10]
cmp r15, rdx
jb 0x140024c71
mov qword [rsp + 0x20], rbx
mov r15, rdi
test rdx, rdx
je 0x140024701
mov rcx, qword [rsi + 0x30]
cmp rdx, 0x10
jb 0x1400246a3
lea rax, [rcx + rdx]
cmp rax, r12
jbe 0x14002452d
lea rax, [r12 + rdx]
cmp rcx, rax
jb 0x1400246a3
mov rbx, rsi
mov r8, rdx
and r8, 0xfffffffffffffff0
lea rax, [r8 - 0x10]
mov rsi, rax
shr rsi, 4
add rsi, 1
mov r9d, esi
and r9d, 1
test rax, rax
je 0x140024631
sub rsi, r9
lea rax, [rdx + rcx]
add rax, 0xfffffffffffffff8
lea rdi, [r12 + rdx]
add rdi, 0xfffffffffffffff8
mov rbp, 0xfffffffffffffff8
movdqa xmm0, xmmword [0x1402ed530]
nop dword [rax + rax]
movq xmm1, qword [rdi + rbp + 8]
punpcklbw xmm1, xmm0
movq xmm2, qword [rdi + rbp]
punpcklbw xmm2, xmm0
movq xmm3, qword [rax + rbp + 8]
punpcklbw xmm3, xmm0
pxor xmm3, xmm1
movq xmm1, qword [rax + rbp]
punpcklbw xmm1, xmm0
pxor xmm1, xmm2
pand xmm3, xmm0
packuswb xmm3, xmm3
movq qword [rdi + rbp + 8], xmm3
pand xmm1, xmm0
packuswb xmm1, xmm1
movq qword [rdi + rbp], xmm1
movq xmm1, qword [rdi + rbp - 8]
punpcklbw xmm1, xmm0
movq xmm2, qword [rdi + rbp - 0x10]
punpcklbw xmm2, xmm0
movq xmm3, qword [rax + rbp - 8]
punpcklbw xmm3, xmm0
pxor xmm3, xmm1
movq xmm1, qword [rax + rbp - 0x10]
punpcklbw xmm1, xmm0
pxor xmm1, xmm2
pand xmm3, xmm0
packuswb xmm3, xmm3
movq qword [rdi + rbp - 8], xmm3
pand xmm1, xmm0
packuswb xmm1, xmm1
movq qword [rdi + rbp - 0x10], xmm1
add rbp, 0xffffffffffffffe0
add rsi, 0xfffffffffffffffe
jne 0x140024580
add rbp, 7
jmp 0x140024638
mov r15, r14
jmp 0x14002473c
mov rbp, 0xffffffffffffffff
test r9, r9
mov rsi, rbx
je 0x14002469b
add rbp, rdx
movq xmm0, qword [r12 + rbp - 7]
punpcklbw xmm0, xmm0
movq xmm1, qword [r12 + rbp - 0xf]
punpcklbw xmm1, xmm0
movq xmm2, qword [rcx + rbp - 7]
punpcklbw xmm2, xmm0
pxor xmm2, xmm0
movq xmm0, qword [rcx + rbp - 0xf]
punpcklbw xmm0, xmm0
pxor xmm0, xmm1
movdqa xmm1, xmmword [0x1402ed530]
pand xmm2, xmm1
packuswb xmm2, xmm2
movq qword [r12 + rbp - 7], xmm2
pand xmm0, xmm1
packuswb xmm0, xmm0
movq qword [r12 + rbp - 0xf], xmm0
cmp rdx, r8
je 0x1400246fe
sub rdx, r8
lea rbp, [rdx - 1]
mov rax, rdx
and rax, 3
je 0x1400246c4
movzx ebx, byte [rcx + rdx - 1]
xor byte [r12 + rdx - 1], bl
add rdx, 0xffffffffffffffff
add rax, 0xffffffffffffffff
jne 0x1400246b0
cmp rbp, 3
jb 0x1400246fe
nop word [rax + rax]
movzx eax, byte [rcx + rdx - 1]
xor byte [r12 + rdx - 1], al
movzx eax, byte [rcx + rdx - 2]
xor byte [r12 + rdx - 2], al
movzx eax, byte [rcx + rdx - 3]
xor byte [r12 + rdx - 3], al
movzx eax, byte [rcx + rdx - 4]
xor byte [r12 + rdx - 4], al
add rdx, 0xfffffffffffffffc
jne 0x1400246d0
mov rbp, qword [rsi]
sub r14, r13
mov rdi, rsi
mov rsi, qword [rsi + 0x28]
mov rcx, rbp
mov rdx, rsi
mov r8, r12
call qword [rbp + 0x20]
mov rdx, qword [rbp + 0x10]
lea r8, [0x1402ede90]
mov rcx, rsi
mov rsi, rdi
mov r9, r12
call qword [rbp + 0x28]
mov rdi, r15
add rdi, r13
mov r15, r14
mov rcx, qword [rsp + 0x20]
mov rbp, qword [rsi]
mov r8, qword [rbp + 0x10]
mov rax, r15
xor edx, edx
div r8
mov qword [rsp + 0x30], rax
cmp r8, r15
ja 0x140024c5c
test dil, 3
mov qword [rsp + 0x20], rcx
lea rax, [r12 - 8]
je 0x1400249d3
mov qword [rsp + 0x28], rax
xor r13d, r13d
movdqa xmm6, xmmword [0x1402ed530]
jmp 0x1400247c8
mov rbp, qword [rsi]
mov r14, qword [rsi + 0x28]
mov rcx, rbp
mov rdx, r14
mov r8, r12
call qword [rbp + 0x20]
mov rdx, qword [rbp + 0x10]
mov rcx, r14
lea r8, [0x1402ede90]
mov r9, r12
call qword [rbp + 0x28]
mov rax, qword [rsi]
mov r8, qword [rax + 0x10]
add rdi, r8
sub r15, r8
add r13, 1
cmp r13, qword [rsp + 0x30]
mov rcx, qword [rsp + 0x20]
jae 0x140024c5c
mov rdx, rdi
call sub.VCRUNTIME140.dll_memcpy
mov rbp, qword [rsi]
mov rbx, qword [rbp + 0x10]
test rbx, rbx
je 0x140024783
mov rcx, qword [rsi + 0x30]
cmp rbx, 0x10
jb 0x140024970
lea rax, [rcx + rbx]
cmp rax, r12
jbe 0x140024800
lea rax, [r12 + rbx]
cmp rcx, rax
jb 0x140024970
mov r10, rdi
mov r8, rbx
and r8, 0xfffffffffffffff0
lea rax, [r8 - 0x10]
mov rdi, rax
shr rdi, 4
add rdi, 1
mov r9d, edi
and r9d, 1
test rax, rax
je 0x1400248fb
mov rax, rsi
sub rdi, r9
lea rdx, [rcx + rbx]
add rdx, 0xfffffffffffffff8
mov rbp, qword [rsp + 0x28]
lea rsi, [rbx + rbp]
xor ebp, ebp
nop word cs:[rax + rax]
nop dword [rax]
movq xmm0, qword [rsi + rbp]
punpcklbw xmm0, xmm0
movq xmm1, qword [rsi + rbp - 8]
punpcklbw xmm1, xmm0
movq xmm2, qword [rdx + rbp]
punpcklbw xmm2, xmm0
pxor xmm2, xmm0
movq xmm0, qword [rdx + rbp - 8]
punpcklbw xmm0, xmm0
pxor xmm0, xmm1
pand xmm2, xmm6
packuswb xmm2, xmm2
movq qword [rsi + rbp], xmm2
pand xmm0, xmm6
packuswb xmm0, xmm0
movq qword [rsi + rbp - 8], xmm0
movq xmm0, qword [rsi + rbp - 0x10]
punpcklbw xmm0, xmm0
movq xmm1, qword [rsi + rbp - 0x18]
punpcklbw xmm1, xmm0
movq xmm2, qword [rdx + rbp - 0x10]
punpcklbw xmm2, xmm0
pxor xmm2, xmm0
movq xmm0, qword [rdx + rbp - 0x18]
punpcklbw xmm0, xmm0
pxor xmm0, xmm1
pand xmm2, xmm6
packuswb xmm2, xmm2
movq qword [rsi + rbp - 0x10], xmm2
pand xmm0, xmm6
packuswb xmm0, xmm0
movq qword [rsi + rbp - 0x18], xmm0
add rbp, 0xffffffffffffffe0
add rdi, 0xfffffffffffffffe
jne 0x140024850
neg rbp
mov rsi, rax
jmp 0x1400248fd
xor ebp, ebp
mov rdi, r10
test r9, r9
je 0x14002495b
not rbp
add rbp, rbx
movq xmm0, qword [r12 + rbp - 7]
punpcklbw xmm0, xmm0
movq xmm1, qword [r12 + rbp - 0xf]
punpcklbw xmm1, xmm0
movq xmm2, qword [rcx + rbp - 7]
punpcklbw xmm2, xmm0
pxor xmm2, xmm0
movq xmm0, qword [rcx + rbp - 0xf]
punpcklbw xmm0, xmm0
pxor xmm0, xmm1
pand xmm2, xmm6
packuswb xmm2, xmm2
movq qword [r12 + rbp - 7], xmm2
pand xmm0, xmm6
packuswb xmm0, xmm0
movq qword [r12 + rbp - 0xf], xmm0
cmp rbx, r8
je 0x140024780
sub rbx, r8
nop word [rax + rax]
lea rbp, [rbx - 1]
mov rax, rbx
and rax, 3
je 0x140024994
nop dword [rax]
movzx edx, byte [rcx + rbx - 1]
xor byte [r12 + rbx - 1], dl
add rbx, 0xffffffffffffffff
add rax, 0xffffffffffffffff
jne 0x140024980
cmp rbp, 3
jb 0x140024780
nop
movzx eax, byte [rcx + rbx - 1]
xor byte [r12 + rbx - 1], al
movzx eax, byte [rcx + rbx - 2]
xor byte [r12 + rbx - 2], al
movzx eax, byte [rcx + rbx - 3]
xor byte [r12 + rbx - 3], al
movzx eax, byte [rcx + rbx - 4]
xor byte [r12 + rbx - 4], al
add rbx, 0xfffffffffffffffc
jne 0x1400249a0
jmp 0x140024780
mov qword [rsp + 0x28], rax
xor r14d, r14d
movdqa xmm6, xmmword [0x1402ed530]
mov qword [rsp + 0x38], rdi
test r8, r8
je 0x140024be0
nop word cs:[rax + rax]
nop dword [rax + rax]
cmp r8, 0x10
jb 0x140024b70
lea rax, [rdi + r8]
cmp rax, r12
jbe 0x140024a20
lea rax, [r12 + r8]
cmp rdi, rax
jb 0x140024b70
mov r9, r8
and r9, 0xfffffffffffffff0
lea rax, [r9 - 0x10]
mov rdx, rax
shr rdx, 4
add rdx, 1
mov r10d, edx
and r10d, 1
test rax, rax
je 0x140024c2c
sub rdx, r10
lea rax, [rdi + r8]
add rax, 0xfffffffffffffff8
mov rcx, qword [rsp + 0x28]
lea rbp, [rcx + r8]
xor ecx, ecx
nop dword [rax]
movq xmm0, qword [rbp + rcx]
punpcklbw xmm0, xmm0
movq xmm1, qword [rbp + rcx - 8]
punpcklbw xmm1, xmm0
movq xmm2, qword [rax + rcx]
punpcklbw xmm2, xmm0
pxor xmm2, xmm0
movq xmm0, qword [rax + rcx - 8]
punpcklbw xmm0, xmm0
pxor xmm0, xmm1
pand xmm2, xmm6
packuswb xmm2, xmm2
movq qword [rbp + rcx], xmm2
pand xmm0, xmm6
packuswb xmm0, xmm0
movq qword [rbp + rcx - 8], xmm0
movq xmm0, qword [rbp + rcx - 0x10]
punpcklbw xmm0, xmm0
movq xmm1, qword [rbp + rcx - 0x18]
punpcklbw xmm1, xmm0
movq xmm2, qword [rax + rcx - 0x10]
punpcklbw xmm2, xmm0
pxor xmm2, xmm0
movq xmm0, qword [rax + rcx - 0x18]
punpcklbw xmm0, xmm0
pxor xmm0, xmm1
pand xmm2, xmm6
packuswb xmm2, xmm2
movq qword [rbp + rcx - 0x10], xmm2
pand xmm0, xmm6
packuswb xmm0, xmm0
movq qword [rbp + rcx - 0x18], xmm0
add rcx, 0xffffffffffffffe0
add rdx, 0xfffffffffffffffe
jne 0x140024a60
neg rcx
test r10, r10
je 0x140024b63
not rcx
add rcx, r8
movq xmm0, qword [r12 + rcx - 7]
punpcklbw xmm0, xmm0
movq xmm1, qword [r12 + rcx - 0xf]
punpcklbw xmm1, xmm0
movq xmm2, qword [rdi + rcx - 7]
punpcklbw xmm2, xmm0
pxor xmm2, xmm0
movq xmm0, qword [rdi + rcx - 0xf]
punpcklbw xmm0, xmm0
pxor xmm0, xmm1
pand xmm2, xmm6
packuswb xmm2, xmm2
movq qword [r12 + rcx - 7], xmm2
pand xmm0, xmm6
packuswb xmm0, xmm0
movq qword [r12 + rcx - 0xf], xmm0
cmp r8, r9
je 0x140024bd2
sub r8, r9
nop dword [rax + rax]
lea rax, [r8 - 1]
mov rcx, r8
and rcx, 3
je 0x140024b95
nop dword [rax]
movzx edx, byte [rdi + r8 - 1]
xor byte [r12 + r8 - 1], dl
add r8, 0xffffffffffffffff
add rcx, 0xffffffffffffffff
jne 0x140024b80
cmp rax, 3
jb 0x140024bd2
nop dword [rax + rax]
movzx eax, byte [rdi + r8 - 1]
xor byte [r12 + r8 - 1], al
movzx eax, byte [rdi + r8 - 2]
xor byte [r12 + r8 - 2], al
movzx eax, byte [rdi + r8 - 3]
xor byte [r12 + r8 - 3], al
movzx eax, byte [rdi + r8 - 4]
xor byte [r12 + r8 - 4], al
add r8, 0xfffffffffffffffc
jne 0x140024ba0
mov rbp, qword [rsi]
mov rbx, rsi
mov rsi, qword [rbp + 0x10]
jmp 0x140024be5
mov rbx, rsi
xor esi, esi
mov r13, qword [rbx + 0x28]
mov rcx, rbp
mov rdx, r13
mov r8, r12
call qword [rbp + 0x20]
mov rdx, qword [rbp + 0x10]
mov rcx, r13
lea r8, [0x1402ede90]
mov r9, r12
call qword [rbp + 0x28]
add r14, 1
cmp r14, qword [rsp + 0x30]
je 0x140024c3c
add rdi, rsi
mov rbp, qword [rbx]
mov r8, qword [rbp + 0x10]
mov rsi, rbx
test r8, r8
jne 0x140024a00
jmp 0x140024be0
xor ecx, ecx
test r10, r10
jne 0x140024b0d
jmp 0x140024b63
mov rax, qword [rbx]
mov rax, qword [rax + 0x10]
imul rax, qword [rsp + 0x30]
mov rdi, qword [rsp + 0x38]
add rdi, rax
sub r15, rax
mov rsi, rbx
mov rcx, qword [rsp + 0x20]
test r15, r15
je 0x140024c6e
mov rdx, rdi
mov r8, r15
call sub.VCRUNTIME140.dll_memcpy
jmp 0x140024c71
xor r15d, r15d
mov qword [rsi + 0x38], r15
movaps xmm6, xmmword [rsp + 0x40]
add rsp, 0x58
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret