Function at 0x14001d540
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x118
movdqa xmmword [rsp + 0x100], xmm15
movdqa xmmword [rsp + 0xf0], xmm14
movdqa xmmword [rsp + 0xe0], xmm13
movdqa xmmword [rsp + 0xd0], xmm12
movdqa xmmword [rsp + 0xc0], xmm11
movdqa xmmword [rsp + 0xb0], xmm10
movdqa xmmword [rsp + 0xa0], xmm9
movdqa xmmword [rsp + 0x90], xmm8
movdqa xmmword [rsp + 0x80], xmm7
movdqa xmmword [rsp + 0x70], xmm6
mov rax, rcx
test r8b, 3
je 0x14001d5c4
mov byte [rax + 8], 0
jmp 0x14001d672
mov r10, qword [rsp + 0x180]
cmp r8, 2
jb 0x14001d62d
movzx esi, byte [r8 + rdx - 1]
movzx r11d, byte [r8 + rdx - 2]
mov ecx, 0x3c
mov edi, 0x3c
sub edi, r11d
add r11d, 0x1c2
and r11d, edi
sub ecx, esi
add esi, 0x1c2
and esi, ecx
mov edi, esi
shr edi, 8
and edi, 1
bt r11d, 8
mov ebp, edi
adc bp, 0
movzx ebx, bp
mov rcx, r8
sub rcx, rbx
test bx, bx
je 0x14001d650
cmp ebx, 1
jne 0x14001d639
movzx ebp, di
xor ebp, 1
jmp 0x14001d650
xor ecx, ecx
test r8, r8
setne cl
xor ebp, ebp
jmp 0x14001d650
movzx esi, si
movzx r11d, r11w
and r11d, esi
xor ebp, ebp
test r11d, 0x100
sete bpl
mov r11, rcx
shr r11, 2
mov edi, ecx
and edi, 3
lea r11, [r11 + r11*2]
lea esi, [rdi + rdi*2]
shr esi, 2
add rsi, r11
cmp rsi, r10
jbe 0x14001d6e2
mov byte [rax + 8], 1
mov qword [rax], 0
movaps xmm6, xmmword [rsp + 0x70]
movaps xmm7, xmmword [rsp + 0x80]
movaps xmm8, xmmword [rsp + 0x90]
movaps xmm9, xmmword [rsp + 0xa0]
movaps xmm10, xmmword [rsp + 0xb0]
movaps xmm11, xmmword [rsp + 0xc0]
movaps xmm12, xmmword [rsp + 0xd0]
movaps xmm13, xmmword [rsp + 0xe0]
movaps xmm14, xmmword [rsp + 0xf0]
movaps xmm15, xmmword [rsp + 0x100]
add rsp, 0x118
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov qword [rsp + 0x38], rax
and rcx, 0xfffffffffffffffc
movabs r10, 0xaaaaaaaaaaaaaaab
mov rax, rsi
mov qword [rsp + 0x40], rdx
mul r10
mov rax, rdx
mov r10, qword [rsp + 0x40]
lea rdx, [r10 + rcx]
shr rax, 1
lea rax, [rax + rax*2]
mov qword [rsp + 0x50], rsi
sub rsi, rax
mov qword [rsp + 0x60], rsi
lea r11, [r9 + rax]
mov qword [rsp + 0x58], r11
test rcx, rcx
mov qword [rsp + 0x30], r8
mov qword [rsp + 0x68], rdi
je 0x14001d909
xor r8d, r8d
movdqa xmm7, xmmword [0x14006c230]
movdqa xmm5, xmmword [0x14006c280]
movdqa xmm9, xmmword [0x14006c290]
movdqa xmm10, xmmword [0x14006c2a0]
movdqa xmm6, xmmword [0x14006c2b0]
movdqa xmm12, xmmword [0x14006c2c0]
movdqa xmm13, xmmword [0x14006c2d0]
movdqa xmm14, xmmword [0x14006c2e0]
pcmpeqd xmm15, xmm15
mov r11, r9
nop dword [rax]
sub rax, 3
jb 0x14001d909
movd xmm0, dword [r10 + r8]
punpcklbw xmm0, xmmword [0x14006c2f0]
movdqa xmm1, xmmword [str.....]
psubw xmm1, xmm0
movdqa xmm2, xmm0
paddw xmm2, xmmword [0x14006c220]
pand xmm2, xmm1
movdqa xmm4, xmmword [0x14006c240]
psubw xmm4, xmm0
movdqa xmm1, xmm0
paddw xmm1, xmmword [0x14006c250]
pand xmm1, xmm4
movdqa xmm4, xmm0
paddw xmm4, xmmword [0x14006c270]
movdqa xmm8, xmm5
psubw xmm8, xmm0
pand xmm8, xmm4
psraw xmm8, 8
movdqa xmm4, xmm0
paddw xmm4, xmm9
pand xmm4, xmm8
movdqa xmm8, xmm0
paddw xmm8, xmm10
movdqa xmm11, xmm6
psubw xmm11, xmm0
pand xmm11, xmm8
psraw xmm11, 8
movdqa xmm8, xmm0
paddw xmm8, xmm12
pand xmm8, xmm11
movdqa xmm11, xmm0
paddw xmm11, xmm13
movdqa xmm3, xmm7
psubw xmm3, xmm0
pand xmm3, xmm11
psraw xmm3, 8
paddw xmm0, xmm14
pand xmm0, xmm3
paddw xmm0, xmm8
paddw xmm0, xmm4
psrlw xmm1, 8
pand xmm1, xmmword [0x14006c260]
paddw xmm0, xmm15
paddw xmm0, xmm1
psrlw xmm2, 8
pand xmm2, xmm7
paddw xmm2, xmm0
pextrw r14d, xmm2, 1
pextrw ebx, xmm0, 1
pextrw edi, xmm2, 2
pextrw r13d, xmm0, 2
pextrw r12d, xmm2, 3
movd esi, xmm0
pshufd xmm0, xmm2, 0x55
por xmm0, xmm2
movdqa xmm1, xmm0
psrld xmm1, 0x10
por xmm1, xmm0
movd r15d, xmm1
shl esi, 2
shr r14d, 4
or r14d, esi
mov byte [r11], r14b
shl ebx, 4
shr edi, 2
or edi, ebx
mov byte [r11 + 1], dil
shl r13d, 6
or r12d, r13d
mov byte [r11 + 2], r12b
shr r15d, 8
and r15d, 1
or ebp, r15d
add r8, 4
add r11, 3
cmp rcx, r8
jne 0x14001d790
mov r14, r9
mov dword [rsp + 0x2c], 0x41414141
lea rcx, [rsp + 0x2c]
mov rsi, qword [rsp + 0x68]
mov r8, rsi
call sub.VCRUNTIME140.dll_memcpy
movd xmm0, dword [rsp + 0x2c]
pxor xmm1, xmm1
punpcklbw xmm0, xmm1
movdqa xmm2, xmmword [0x14006c240]
psubw xmm2, xmm0
movdqa xmm1, xmmword [0x14006c250]
paddw xmm1, xmm0
pand xmm1, xmm2
psrlw xmm1, 8
pand xmm1, xmmword [0x14006c260]
movdqa xmm2, xmmword [0x14006c270]
paddw xmm2, xmm0
movdqa xmm3, xmmword [0x14006c280]
psubw xmm3, xmm0
pand xmm3, xmm2
psraw xmm3, 8
movdqa xmm2, xmmword [0x14006c290]
paddw xmm2, xmm0
pand xmm2, xmm3
movdqa xmm3, xmmword [0x14006c2a0]
paddw xmm3, xmm0
movdqa xmm4, xmmword [0x14006c2b0]
psubw xmm4, xmm0
pand xmm4, xmm3
psraw xmm4, 8
movdqa xmm5, xmmword [0x14006c2c0]
paddw xmm5, xmm0
pand xmm5, xmm4
movdqa xmm4, xmmword [0x14006c2d0]
paddw xmm4, xmm0
movdqa xmm3, xmmword [0x14006c230]
movdqa xmm6, xmm3
psubw xmm6, xmm0
pand xmm6, xmm4
psraw xmm6, 8
movdqa xmm4, xmmword [0x14006c2e0]
paddw xmm4, xmm0
pand xmm4, xmm6
paddw xmm4, xmm5
paddw xmm4, xmm2
pcmpeqd xmm2, xmm2
paddw xmm2, xmm4
paddw xmm2, xmm1
movd eax, xmm2
shl eax, 2
movdqa xmm1, xmmword [str.....]
psubw xmm1, xmm0
paddw xmm0, xmmword [0x14006c220]
pand xmm0, xmm1
psrlw xmm0, 8
pand xmm0, xmm3
paddw xmm0, xmm2
pextrw ecx, xmm0, 1
shr ecx, 4
or ecx, eax
mov byte [rsp + 0x29], cl
pextrw eax, xmm2, 1
shl eax, 4
pextrw ecx, xmm0, 2
shr ecx, 2
or ecx, eax
mov byte [rsp + 0x2a], cl
pextrw eax, xmm2, 2
shl eax, 6
pextrw ecx, xmm0, 3
or ecx, eax
mov byte [rsp + 0x2b], cl
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
por xmm0, xmm1
movd edi, xmm0
shr edi, 8
and edi, 1
xor eax, eax
cmp rsi, 1
sete al
or ebp, eax
lea rdx, [rsp + 0x29]
mov rcx, qword [rsp + 0x58]
mov r8, qword [rsp + 0x60]
call sub.VCRUNTIME140.dll_memcpy
or bp, di
je 0x14001dab9
mov rax, qword [rsp + 0x38]
jmp 0x14001d5bb
mov rsi, qword [rsp + 0x50]
mov rax, rsi
or rax, qword [rsp + 0x30]
je 0x14001dc84
mov r8d, 4
mov rcx, qword [rsp + 0x40]
mov rdx, qword [rsp + 0x30]
call fcn.14001f810
cmp rax, qword [rsp + 0x30]
ja 0x14001db04
mov r15, rax
mov r8d, 3
mov rcx, r14
mov rdx, rsi
call fcn.14001f810
mov rdx, rsi
sub rdx, rax
jae 0x14001db13
xor ecx, ecx
mov rax, qword [rsp + 0x38]
mov byte [rax + 8], cl
jmp 0x14001d672
add rax, r14
mov dword [rsp + 0x4c], 0
lea r8, [rsp + 0x4c]
mov r9d, 4
mov rcx, rax
call fcn.14001ec20
test rax, rax
je 0x14001db6a
mov r8, qword [rsp + 0x40]
lea rcx, [r8 + r15]
mov rbx, qword [rsp + 0x30]
add rbx, r8
sub rbx, rcx
cmp rdx, rbx
cmovb rbx, rdx
test rbx, rbx
je 0x14001dc84
cmp rbx, 8
jae 0x14001db6e
xor r8d, r8d
xor edx, edx
jmp 0x14001dc63
mov cl, 1
jmp 0x14001db06
cmp rbx, 0x20
jae 0x14001db7e
xor r8d, r8d
xor edx, edx
jmp 0x14001dc09
mov rdx, rbx
and rdx, 0xffffffffffffffe0
add r8, r15
add r8, 0x10
pxor xmm0, xmm0
xor r9d, r9d
pxor xmm1, xmm1
movdqu xmm2, xmmword [rax + r9]
movdqu xmm3, xmmword [rax + r9 + 0x10]
movdqu xmm4, xmmword [r8 + r9 - 0x10]
pxor xmm4, xmm2
por xmm0, xmm4
movdqu xmm2, xmmword [r8 + r9]
pxor xmm2, xmm3
por xmm1, xmm2
add r9, 0x20
cmp rdx, r9
jne 0x14001db97
por xmm1, xmm0
pshufd xmm0, xmm1, 0xee
por xmm0, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
por xmm0, xmm1
movdqa xmm1, xmm0
psrlw xmm1, 8
por xmm1, xmm0
movd r8d, xmm1
cmp rbx, rdx
je 0x14001dc7b
test bl, 0x18
je 0x14001dc63
mov r9, rdx
mov rdx, rbx
and rdx, 0xfffffffffffffff8
movzx r8d, r8b
movd xmm0, r8d
mov r8, qword [rcx + r9]
xor r8, qword [rax + r9]
movq xmm1, r8
por xmm0, xmm1
add r9, 8
cmp rdx, r9
jne 0x14001dc1c
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
por xmm0, xmm1
movdqa xmm1, xmm0
psrlw xmm1, 8
por xmm1, xmm0
movd r8d, xmm1
cmp rbx, rdx
je 0x14001dc7b
movzx r9d, byte [rcx + rdx]
xor r9b, byte [rax + rdx]
lea r10, [rdx + 1]
or r8b, r9b
mov rdx, r10
cmp rbx, r10
jne 0x14001dc63
test r8b, r8b
jne 0x14001db04
mov rax, qword [rsp + 0x38]
mov qword [rax], r14
mov qword [rax + 8], rsi
jmp 0x14001d679