Function at 0x14001d170
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x108
movdqa xmmword [rsp + 0xf0], xmm15
movdqa xmmword [rsp + 0xe0], xmm14
movdqa xmmword [rsp + 0xd0], xmm13
movdqa xmmword [rsp + 0xc0], xmm12
movdqa xmmword [rsp + 0xb0], xmm11
movdqa xmmword [rsp + 0xa0], xmm10
movdqa xmmword [rsp + 0x90], xmm9
movdqa xmmword [rsp + 0x80], xmm8
movdqa xmmword [rsp + 0x70], xmm7
movdqa xmmword [rsp + 0x60], xmm6
mov rdi, r8
mov r10, rcx
test dil, 3
je 0x14001d25d
mov byte [r10 + 8], 0
mov qword [r10], 0
movaps xmm6, xmmword [rsp + 0x60]
movaps xmm7, xmmword [rsp + 0x70]
movaps xmm8, xmmword [rsp + 0x80]
movaps xmm9, xmmword [rsp + 0x90]
movaps xmm10, xmmword [rsp + 0xa0]
movaps xmm11, xmmword [rsp + 0xb0]
movaps xmm12, xmmword [rsp + 0xc0]
movaps xmm13, xmmword [rsp + 0xd0]
movaps xmm14, xmmword [rsp + 0xe0]
movaps xmm15, xmmword [rsp + 0xf0]
add rsp, 0x108
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov r14, rdx
cmp rdi, 2
jb 0x14001d303
mov r11, r9
movzx edx, byte [rdi + r14 - 1]
movzx eax, byte [rdi + r14 - 2]
mov ecx, 0x3c
mov r8d, 0x3c
sub r8d, eax
add eax, 0x1c2
and eax, r8d
sub ecx, edx
add edx, 0x1c2
and edx, ecx
mov r8d, edx
shr r8d, 8
and r8d, 1
bt eax, 8
mov ecx, r8d
adc cx, 0
movzx r9d, cx
mov rcx, rdi
sub rcx, r9
test r9w, r9w
je 0x14001d759
cmp r9d, 1
je 0x14001d76c
cmp r9d, 2
jne 0x14001d1eb
mov r9, r11
movzx edx, dx
movzx eax, ax
and eax, edx
xor ebp, ebp
test eax, 0x100
sete bpl
cmp rcx, rdi
jbe 0x14001d312
lea r8, [0x140041700]
mov rdx, rdi
call fcn.14003ab60
ud2
xor ecx, ecx
test rdi, rdi
setne cl
xor ebp, ebp
cmp rcx, rdi
ja 0x14001d2f2
mov rax, rcx
shr rax, 2
mov edx, ecx
and edx, 3
lea rax, [rax + rax*2]
lea r8d, [rdx + rdx*2]
shr r8d, 2
add r8, rax
cmp r8, qword [rsp + 0x170]
jbe 0x14001d341
mov byte [r10 + 8], 1
jmp 0x14001d1f0
mov qword [rsp + 0x58], rdx
and rcx, 0xfffffffffffffffc
movabs rdx, 0xaaaaaaaaaaaaaaab
mov rax, r8
mul rdx
mov rax, rdx
lea rdx, [r14 + rcx]
shr rax, 1
lea rax, [rax + rax*2]
mov r11, r8
sub r11, rax
mov qword [rsp + 0x50], r11
lea r11, [r9 + rax]
mov qword [rsp + 0x48], r11
test rcx, rcx
mov qword [rsp + 0x38], r10
mov qword [rsp + 0x30], r9
mov qword [rsp + 0x40], r8
je 0x14001d55c
xor r8d, r8d
movdqa xmm3, xmmword [0x14003d4c0]
movdqa xmm7, xmmword [0x14003d4e0]
movdqa xmm8, xmmword [0x14003d4f0]
movdqa xmm9, xmmword [0x14003d500]
movdqa xmm10, xmmword [0x14003d510]
movdqa xmm11, xmmword [0x14003d520]
movdqa xmm12, xmmword [0x14003d530]
pcmpeqd xmm13, xmm13
movdqa xmm14, xmmword [str.....]
movdqa xmm15, xmmword [0x14003d550]
nop dword [rax + rax]
sub rax, 3
jb 0x14001d55c
movd xmm0, dword [r14 + r8]
punpcklbw xmm0, xmmword [0x14003d730]
movdqa xmm1, xmmword [0x14003d480]
psubw xmm1, xmm0
movdqa xmm2, xmm0
paddw xmm2, xmmword [0x14003d490]
pand xmm2, xmm1
movdqa xmm1, xmm0
paddw xmm1, xmmword [0x14003d4b0]
movdqa xmm5, xmm3
psubw xmm5, xmm0
pand xmm5, xmm1
psraw xmm5, 8
movdqa xmm4, xmm0
paddw xmm4, xmmword [0x14003d4d0]
pand xmm4, xmm5
movdqa xmm1, xmm0
paddw xmm1, xmm7
movdqa xmm5, xmm8
psubw xmm5, xmm0
pand xmm5, xmm1
psraw xmm5, 8
movdqa xmm6, xmm0
paddw xmm6, xmm9
pand xmm6, xmm5
movdqa xmm1, xmm0
paddw xmm1, xmm10
movdqa xmm5, xmm11
psubw xmm5, xmm0
pand xmm5, xmm1
psraw xmm5, 8
movdqa xmm1, xmm0
paddw xmm1, xmm12
pand xmm1, xmm5
paddw xmm1, xmm6
paddw xmm1, xmm4
psrlw xmm2, 8
pand xmm2, xmmword [0x14003d4a0]
paddw xmm1, xmm13
paddw xmm1, xmm2
movdqa xmm2, xmm14
psubw xmm2, xmm0
paddw xmm0, xmm15
pand xmm0, xmm2
psrlw xmm0, 8
pand xmm0, xmm11
paddw xmm0, xmm1
pextrw r10d, xmm0, 1
pextrw r11d, xmm1, 1
pextrw ebx, xmm0, 2
pextrw r13d, xmm1, 2
pextrw r15d, xmm0, 3
movd esi, xmm1
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
por xmm0, xmm1
movd r12d, xmm0
shl esi, 2
shr r10d, 4
or r10d, esi
mov byte [r9], r10b
shl r11d, 4
shr ebx, 2
or ebx, r11d
mov byte [r9 + 1], bl
shl r13d, 6
or r15d, r13d
mov byte [r9 + 2], r15b
shr r12d, 8
and r12d, 1
or ebp, r12d
add r8, 4
add r9, 3
cmp rcx, r8
jne 0x14001d3f0
mov dword [rsp + 0x28], 0x41414141
lea rcx, [rsp + 0x28]
mov rsi, qword [rsp + 0x58]
mov r8, rsi
call sub.VCRUNTIME140.dll_memcpy
movd xmm0, dword [rsp + 0x28]
pxor xmm1, xmm1
punpcklbw xmm0, xmm1
movdqa xmm2, xmmword [0x14003d480]
psubw xmm2, xmm0
movdqa xmm1, xmmword [0x14003d490]
paddw xmm1, xmm0
pand xmm1, xmm2
psrlw xmm1, 8
pand xmm1, xmmword [0x14003d4a0]
movdqa xmm2, xmmword [0x14003d4b0]
paddw xmm2, xmm0
movdqa xmm3, xmmword [0x14003d4c0]
psubw xmm3, xmm0
pand xmm3, xmm2
psraw xmm3, 8
movdqa xmm2, xmmword [0x14003d4d0]
paddw xmm2, xmm0
pand xmm2, xmm3
movdqa xmm3, xmmword [0x14003d4e0]
paddw xmm3, xmm0
movdqa xmm4, xmmword [0x14003d4f0]
psubw xmm4, xmm0
pand xmm4, xmm3
psraw xmm4, 8
movdqa xmm5, xmmword [0x14003d500]
paddw xmm5, xmm0
pand xmm5, xmm4
movdqa xmm4, xmmword [0x14003d510]
paddw xmm4, xmm0
movdqa xmm3, xmmword [0x14003d520]
movdqa xmm6, xmm3
psubw xmm6, xmm0
pand xmm6, xmm4
psraw xmm6, 8
movdqa xmm4, xmmword [0x14003d530]
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 [0x14003d550]
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 + 0x25], cl
pextrw eax, xmm2, 1
shl eax, 4
pextrw ecx, xmm0, 2
shr ecx, 2
or ecx, eax
mov byte [rsp + 0x26], cl
pextrw eax, xmm2, 2
shl eax, 6
pextrw ecx, xmm0, 3
or ecx, eax
mov byte [rsp + 0x27], cl
pshufd xmm1, xmm0, 0x55
por xmm1, xmm0
movdqa xmm0, xmm1
psrld xmm0, 0x10
por xmm0, xmm1
movd ebx, xmm0
shr ebx, 8
and ebx, 1
xor eax, eax
cmp rsi, 1
sete al
or ebp, eax
lea rdx, [rsp + 0x25]
mov rcx, qword [rsp + 0x48]
mov r8, qword [rsp + 0x50]
call sub.VCRUNTIME140.dll_memcpy
or bp, bx
je 0x14001d714
mov rax, qword [rsp + 0x38]
mov byte [rax + 8], 0
mov qword [rax], 0
jmp 0x14001d1f7
mov rbx, qword [rsp + 0x40]
mov rax, rbx
or rax, rdi
mov rsi, qword [rsp + 0x38]
je 0x14001d912
xor eax, eax
mov rcx, rdi
sub rcx, 1
cmovb rcx, rax
and rcx, 0xfffffffffffffffc
add r14, rcx
sub rdi, rcx
cmovb rdi, rax
cmovb r14, rax
mov r9, qword [rsp + 0x30]
jae 0x14001d784
and dil, 1
jmp 0x14001d902
xor ebp, ebp
mov r9, r11
cmp rcx, rdi
jbe 0x14001d312
jmp 0x14001d2f2
movzx ebp, r8w
xor ebp, 1
mov r9, r11
cmp rcx, rdi
jbe 0x14001d312
jmp 0x14001d2f2
xor r8d, r8d
mov rax, rbx
sub rax, 1
cmovb rax, r8
movabs rcx, 0xaaaaaaaaaaaaaaab
mul rcx
shr rdx, 1
lea rcx, [rdx + rdx*2]
mov rdx, rbx
sub rdx, rcx
cmovb rdx, r8
jae 0x14001d7bc
and dl, 1
mov edi, edx
jmp 0x14001d902
add rcx, r9
mov dword [rsp + 0x2c], 0
lea r8, [rsp + 0x2c]
call fcn.14001d930
test rax, rax
je 0x14001d7f5
cmp rdx, rdi
cmovb rdi, rdx
test rdi, rdi
je 0x14001d912
cmp rdi, 8
jae 0x14001d7fd
xor edx, edx
xor ecx, ecx
jmp 0x14001d8e4
mov dil, 1
jmp 0x14001d902
cmp rdi, 0x20
jae 0x14001d80c
xor edx, edx
xor ecx, ecx
jmp 0x14001d88d
mov rcx, rdi
and rcx, 0xffffffffffffffe0
pxor xmm0, xmm0
xor edx, edx
pxor xmm1, xmm1
movdqu xmm2, xmmword [rax + rdx]
movdqu xmm3, xmmword [rax + rdx + 0x10]
movdqu xmm4, xmmword [r14 + rdx]
pxor xmm4, xmm2
por xmm0, xmm4
movdqu xmm2, xmmword [r14 + rdx + 0x10]
pxor xmm2, xmm3
por xmm1, xmm2
add rdx, 0x20
cmp rcx, rdx
jne 0x14001d81d
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 edx, xmm1
cmp rdi, rcx
je 0x14001d8fc
test dil, 0x18
je 0x14001d8e4
mov r8, rcx
mov rcx, rdi
and rcx, 0xfffffffffffffff8
movzx edx, dl
movd xmm0, edx
mov rdx, qword [r14 + r8]
xor rdx, qword [rax + r8]
movq xmm1, rdx
por xmm0, xmm1
add r8, 8
cmp rcx, r8
jne 0x14001d89e
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 edx, xmm1
cmp rdi, rcx
je 0x14001d8fc
movzx r8d, byte [r14 + rcx]
xor r8b, byte [rax + rcx]
lea r9, [rcx + 1]
or dl, r8b
mov rcx, r9
cmp rdi, r9
jne 0x14001d8e4
test dl, dl
je 0x14001d912
xor edi, edi
mov byte [rsi + 8], dil
mov qword [rsi], 0
jmp 0x14001d1f7
mov rax, qword [rsp + 0x30]
mov qword [rsi], rax
mov qword [rsi + 8], rbx
jmp 0x14001d1f7