Function at 0x14003b520
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x48
movdqa xmmword [rsp + 0x30], xmm6
mov rsi, r8
mov rdi, rdx
mov rax, qword [rcx]
mov rdx, qword [rcx + 0x10]
mov r8, rax
or r8, rdx
je 0x14003bb68
test rdx, rdx
je 0x14003b670
mov r9, qword [rcx + 0x18]
lea r8, [rdi + rsi]
xor edx, edx
test r9, r9
je 0x14003b5ff
xor r10d, r10d
mov r11, rdi
jmp 0x14003b595
lea rbx, [r11 + 1]
inc r10
sub rdx, r11
add rdx, rbx
mov r11, rbx
cmp r9, r10
je 0x14003b602
cmp r11, r8
je 0x14003b670
movzx ebx, byte [r11]
test bl, bl
jns 0x14003b580
cmp bl, 0xe0
jb 0x14003b5f3
cmp bl, 0xf0
jb 0x14003b5f9
movzx ebp, byte [r11 + 1]
and ebp, 0x3f
movzx r14d, byte [r11 + 2]
and r14d, 0x3f
movzx r15d, byte [r11 + 3]
and ebx, 7
shl ebx, 0x12
shl ebp, 0xc
shl r14d, 6
or r14d, ebp
and r15d, 0x3f
or r15d, r14d
or r15d, ebx
cmp r15d, 0x110000
je 0x14003b670
lea rbx, [r11 + 4]
jmp 0x14003b584
lea rbx, [r11 + 2]
jmp 0x14003b584
lea rbx, [r11 + 3]
jmp 0x14003b584
mov rbx, rdi
cmp rbx, r8
je 0x14003b670
movzx r8d, byte [rbx]
test r8b, r8b
jns 0x14003b659
cmp r8b, 0xe0
jb 0x14003b659
cmp r8b, 0xf0
jb 0x14003b659
movzx r9d, byte [rbx + 1]
and r9d, 0x3f
movzx r10d, byte [rbx + 2]
and r10d, 0x3f
movzx r11d, byte [rbx + 3]
and r8d, 7
shl r8d, 0x12
shl r9d, 0xc
shl r10d, 6
or r10d, r9d
and r11d, 0x3f
or r11d, r10d
or r11d, r8d
cmp r11d, 0x110000
je 0x14003b670
test rdx, rdx
je 0x14003b66d
cmp rdx, rsi
jae 0x14003b66b
cmp byte [rdi + rdx], 0xbf
jg 0x14003b66d
jmp 0x14003b670
jne 0x14003b670
mov rsi, rdx
test rax, rax
je 0x14003bb68
mov r12, qword [rcx + 8]
cmp rsi, 0x20
jae 0x14003b69e
mov rdx, rsi
test rsi, rsi
je 0x14003bb4a
cmp rsi, 1
jne 0x14003b6d8
xor edx, edx
xor eax, eax
jmp 0x14003bb34
lea r15, [rdi + 7]
and r15, 0xfffffffffffffff8
mov rdx, r15
sub rdx, rdi
mov rax, rsi
sub rax, rdx
mov edx, eax
and edx, 7
mov r9, r15
sub r9, rdi
jne 0x14003b6c7
xor r8d, r8d
jmp 0x14003b7c7
cmp r9, 4
jae 0x14003b740
xor r8d, r8d
xor r10d, r10d
jmp 0x14003b7b0
mov eax, esi
and eax, 0x1e
pxor xmm0, xmm0
xor edx, edx
movdqa xmm1, xmmword [0x14010ed90]
movdqa xmm2, xmmword [0x14010eda0]
nop word cs:[rax + rax]
movzx r8d, word [rdi + rdx]
movd xmm3, r8d
pcmpgtb xmm3, xmm1
punpcklbw xmm3, xmm3
pshuflw xmm3, xmm3, 0xd4
pshufd xmm3, xmm3, 0xd4
pand xmm3, xmm2
paddq xmm0, xmm3
add rdx, 2
cmp rax, rdx
jne 0x14003b700
pshufd xmm1, xmm0, 0xee
paddq xmm1, xmm0
movq rdx, xmm1
jmp 0x14003bb45
movzx r8d, word [rdi + 2]
movd xmm0, r8d
movdqa xmm1, xmmword [0x14010ed90]
pcmpgtb xmm0, xmm1
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0xd4
pshufd xmm0, xmm0, 0xd4
movdqa xmm2, xmmword [0x14010eda0]
pand xmm0, xmm2
movzx r8d, word [rdi]
movd xmm3, r8d
pcmpgtb xmm3, xmm1
punpcklbw xmm3, xmm3
pshuflw xmm1, xmm3, 0xd4
pshufd xmm1, xmm1, 0xd4
pand xmm1, xmm2
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddq xmm0, xmm1
movq r8, xmm0
mov r10d, 4
je 0x14003b7c7
nop dword [rax]
xor r11d, r11d
cmp byte [rdi + r10], 0xc0
setge r11b
add r8, r11
inc r10
cmp r9, r10
jne 0x14003b7b0
test rdx, rdx
mov qword [rsp + 0x28], r12
je 0x14003b866
mov r9, rax
and r9, 0xfffffffffffffff8
xor r10d, r10d
cmp byte [r15 + r9], 0xc0
setge r10b
cmp edx, 1
je 0x14003b869
xor r11d, r11d
cmp byte [r15 + r9 + 1], 0xc0
setge r11b
add r10, r11
cmp edx, 2
je 0x14003b869
xor r11d, r11d
cmp byte [r15 + r9 + 2], 0xc0
setge r11b
add r10, r11
cmp edx, 3
je 0x14003b869
xor r11d, r11d
cmp byte [r15 + r9 + 3], 0xc0
setge r11b
add r10, r11
cmp edx, 4
je 0x14003b869
xor r11d, r11d
cmp byte [r15 + r9 + 4], 0xc0
setge r11b
add r10, r11
cmp edx, 5
je 0x14003b869
xor r11d, r11d
cmp byte [r15 + r9 + 5], 0xc0
setge r11b
add r10, r11
cmp edx, 6
je 0x14003b869
xor edx, edx
cmp byte [r15 + r9 + 6], 0xc0
setge dl
add r10, rdx
jmp 0x14003b869
xor r10d, r10d
add r10, r8
shr rax, 3
movabs r9, 0xff00ff00ff00ff
movabs rbp, 0x1000100010001
pcmpeqd xmm0, xmm0
movdqa xmm1, xmmword [0x14010edb0]
jmp 0x14003b8d8
xor r10d, r10d
mov r8d, ebx
lea r15, [r11 + r8*8]
sub rax, rbx
mov r8d, ebx
and r8d, 3
mov r14, r10
and r14, r9
shr r10, 8
and r10, r9
add r10, r14
imul r10, rbp
shr r10, 0x30
add r10, rdx
test r8, r8
jne 0x14003ba9d
mov rdx, r10
test rax, rax
je 0x14003ba93
mov r11, r15
cmp rax, 0xc0
mov ebx, 0xc0
cmovb rbx, rax
cmp rax, 4
jb 0x14003b8a0
mov r12, rbp
mov r15d, ebx
shr r15d, 2
movabs r8, 0x7ffffffffffffff
lea rbp, [r15 + r8]
and rbp, r8
je 0x14003ba10
inc rbp
mov r8, rbp
and r8, 0xfffffffffffffffe
mov r13, r8
shl r13, 5
pxor xmm4, xmm4
mov r10, r11
mov r14, r8
nop dword [rax + rax]
movdqu xmm2, xmmword [r10]
movdqu xmm5, xmmword [r10 + 0x20]
movdqa xmm3, xmm2
punpcklqdq xmm3, xmm5
movdqa xmm6, xmm3
pxor xmm6, xmm0
psrlq xmm6, 7
psrlq xmm3, 6
por xmm3, xmm6
pand xmm3, xmm1
paddq xmm3, xmm4
movdqu xmm4, xmmword [r10 + 0x10]
movdqu xmm6, xmmword [r10 + 0x30]
punpckhqdq xmm2, xmm5
movdqa xmm5, xmm4
punpcklqdq xmm5, xmm6
punpckhqdq xmm4, xmm6
movdqa xmm6, xmm2
pxor xmm6, xmm0
psrlq xmm6, 7
psrlq xmm2, 6
por xmm2, xmm6
pand xmm2, xmm1
movdqa xmm6, xmm5
pxor xmm6, xmm0
psrlq xmm6, 7
psrlq xmm5, 6
por xmm5, xmm6
pand xmm5, xmm1
paddq xmm5, xmm2
paddq xmm5, xmm3
movdqa xmm2, xmm4
pxor xmm2, xmm0
psrlq xmm2, 7
psrlq xmm4, 6
por xmm4, xmm2
pand xmm4, xmm1
paddq xmm4, xmm5
add r10, 0x40
add r14, 0xfffffffffffffffe
jne 0x14003b940
pshufd xmm2, xmm4, 0xee
paddq xmm2, xmm4
movq r10, xmm2
cmp rbp, r8
jne 0x14003ba18
mov rbp, r12
jmp 0x14003b8a3
xor r10d, r10d
mov r13, r11
jmp 0x14003ba1b
add r13, r11
mov rbp, r12
shl r15d, 5
add r15, r11
nop word cs:[rax + rax]
movdqu xmm2, xmmword [r13]
movdqu xmm3, xmmword [r13 + 0x10]
movdqa xmm4, xmm2
pxor xmm4, xmm0
movdqa xmm5, xmm3
pxor xmm5, xmm0
psrlq xmm5, 7
psrlq xmm4, 7
psrlq xmm3, 6
por xmm3, xmm5
psrlq xmm2, 6
por xmm2, xmm4
pand xmm3, xmm1
pand xmm2, xmm1
paddq xmm2, xmm3
pshufd xmm3, xmm2, 0xee
paddq xmm3, xmm2
movq r8, xmm3
add r10, r8
add r13, 0x20
cmp r13, r15
jne 0x14003ba30
jmp 0x14003b8a3
mov r12, qword [rsp + 0x28]
jmp 0x14003bb4a
movabs rax, 0x101010101010101
and ebx, 0xfc
mov edx, ebx
mov rdx, qword [r11 + rdx*8]
mov r14, rdx
not r14
shr r14, 7
shr rdx, 6
or rdx, r14
and rdx, rax
cmp r8d, 1
jne 0x14003bad4
mov r12, qword [rsp + 0x28]
jmp 0x14003bb17
mov r14, qword [r11 + rbx*8 + 8]
mov r15, r14
not r15
shr r15, 7
shr r14, 6
or r14, r15
and r14, rax
add rdx, r14
cmp r8d, 2
mov r12, qword [rsp + 0x28]
je 0x14003bb17
mov r8, qword [r11 + rbx*8 + 0x10]
mov r11, r8
not r11
shr r11, 7
shr r8, 6
or r8, r11
and r8, rax
add rdx, r8
mov rax, rdx
and rax, r9
shr rdx, 8
and rdx, r9
add rdx, rax
imul rdx, rbp
shr rdx, 0x30
add rdx, r10
jmp 0x14003bb4a
xor r8d, r8d
cmp byte [rdi + rax], 0xc0
setge r8b
add rdx, r8
inc rax
cmp rsi, rax
jne 0x14003bb34
sub r12, rdx
jbe 0x14003bb68
movzx eax, byte [rcx + 0x38]
lea rdx, [0x14010edc0]
movsxd rax, dword [rdx + rax*4]
add rax, rdx
jmp rax
xor r15d, r15d
jmp 0x14003bba9
mov rax, qword [rcx + 0x20]
mov rcx, qword [rcx + 0x28]
mov r9, qword [rcx + 0x18]
mov rcx, rax
mov rdx, rdi
mov r8, rsi
movaps xmm6, xmmword [rsp + 0x30]
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp r9
mov r15, r12
xor r12d, r12d
jmp 0x14003bba9
mov r15, r12
shr r15, 1
inc r12
shr r12, 1
mov rbx, qword [rcx + 0x20]
mov r14, qword [rcx + 0x28]
mov ebp, dword [rcx + 0x30]
inc r15
nop word [rax + rax]
mov rcx, rbx
dec r15
je 0x14003bbd6
mov edx, ebp
call qword [r14 + 0x20]
test al, al
je 0x14003bbc0
mov al, 1
jmp 0x14003bc25
mov rdx, rdi
mov r8, rsi
call qword [r14 + 0x18]
mov ecx, eax
mov al, 1
test cl, cl
jne 0x14003bc25
mov rdi, r12
neg rdi
mov rsi, 0xffffffffffffffff
nop word cs:[rax + rax]
lea rax, [rdi + rsi]
cmp rax, 0xffffffffffffffff
je 0x14003bc1c
mov rcx, rbx
mov edx, ebp
call qword [r14 + 0x20]
inc rsi
test al, al
je 0x14003bc00
jmp 0x14003bc1f
mov rsi, r12
cmp rsi, r12
setb al
movaps xmm6, xmmword [rsp + 0x30]
add rsp, 0x48
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
push rcx
test rdx, rdx
je 0x1400df3f4
mov r14, rax
lea rdi, [rcx - 1]
mov rbx, qword [rcx - 1]
mov r15, qword [rcx + 7]
mov rcx, rbx
call qword [r15]
cmp qword [r15 + 8], 0
je 0x1400df3e0
cmp qword [r15 + 0x10], 0x11
jb 0x1400df3cf
mov rbx, qword [rbx - 8]
mov rcx, qword [0x1419340f0]
xor edx, edx
mov r8, rbx
call fcn.1401034d0
mov rcx, qword [0x1419340f0]
xor edx, edx
mov r8, rdi
call fcn.1401034d0
mov rax, r14
mov qword [rsi + 8], rax
test rax, rax
setne al
add rsp, 0x20
pop rbx
pop rdi
pop rsi
pop r14
pop r15
ret
add al, 0x3e
movaps xmm0, xmmword [rsp + 0xf0]
movaps xmm1, xmmword [rsp + 0x100]
movups xmmword [rsi + 0x10], xmm1
movups xmmword [rsi], xmm0
add rsp, 0x1e8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
mov rax, qword [rsp + 0x28]
mov qword [rax], r14
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
cmp qword [rsp + 0x30], 0
je 0x1400e3667
mov r8, qword [rsp + 0x38]
jmp 0x1400e3659
mov rcx, qword [0x1419340f0]
xor edx, edx
call fcn.1401034d0
nop
add rsp, 0x478
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
add dword [rcx], esi
leave
mov rdx, rbx
call fcn.1400e65f0
mov r14, rax
test rax, rax
jne 0x1400e36a1
ud2
mov rcx, r14
mov rdx, r12
mov r8, rbx
call sub.msvcrt.dll_memcpy
mov rdx, r13
mov qword [rsp + 0x58], r13
mov qword [rsp + 0x60], r14
mov qword [rsp + 0x68], r13
lea rcx, [rsp + 0x58]
call fcn.1400fdea0
mov rbx, qword [rsp + 0x60]
mov rsi, qword [rsp + 0x68]
mov word [rbx + rsi*2], 0
inc rsi
mov r14, qword [rsp + 0x58]
test r15, r15
je 0x1400e35ed
mov rcx, qword [0x1419340f0]
xor edx, edx
mov r8, rdi
call fcn.1401034d0
jmp 0x1400e35ed