Function at 0x14003b010
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 0x14003b658
test rdx, rdx
je 0x14003b160
mov r9, qword [rcx + 0x18]
lea r8, [rdi + rsi]
xor edx, edx
test r9, r9
je 0x14003b0ef
xor r10d, r10d
mov r11, rdi
jmp 0x14003b085
lea rbx, [r11 + 1]
inc r10
sub rdx, r11
add rdx, rbx
mov r11, rbx
cmp r9, r10
je 0x14003b0f2
cmp r11, r8
je 0x14003b160
movzx ebx, byte [r11]
test bl, bl
jns 0x14003b070
cmp bl, 0xe0
jb 0x14003b0e3
cmp bl, 0xf0
jb 0x14003b0e9
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 0x14003b160
lea rbx, [r11 + 4]
jmp 0x14003b074
lea rbx, [r11 + 2]
jmp 0x14003b074
lea rbx, [r11 + 3]
jmp 0x14003b074
mov rbx, rdi
cmp rbx, r8
je 0x14003b160
movzx r8d, byte [rbx]
test r8b, r8b
jns 0x14003b149
cmp r8b, 0xe0
jb 0x14003b149
cmp r8b, 0xf0
jb 0x14003b149
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 0x14003b160
test rdx, rdx
je 0x14003b15d
cmp rdx, rsi
jae 0x14003b15b
cmp byte [rdi + rdx], 0xc0
jge 0x14003b15d
jmp 0x14003b160
jne 0x14003b160
mov rsi, rdx
test rax, rax
je 0x14003b658
mov r12, qword [rcx + 8]
cmp rsi, 0x20
jae 0x14003b18e
mov rdx, rsi
test rsi, rsi
je 0x14003b63a
cmp rsi, 1
jne 0x14003b1c8
xor edx, edx
xor eax, eax
jmp 0x14003b624
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 0x14003b1b7
xor r8d, r8d
jmp 0x14003b2b7
cmp r9, 4
jae 0x14003b230
xor r8d, r8d
xor r10d, r10d
jmp 0x14003b2a0
mov eax, esi
and eax, 0x1e
pxor xmm0, xmm0
xor edx, edx
movdqa xmm1, xmmword [0x14010fd90]
movdqa xmm2, xmmword [0x14010fda0]
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 0x14003b1f0
pshufd xmm1, xmm0, 0xee
paddq xmm1, xmm0
movq rdx, xmm1
jmp 0x14003b635
movzx r8d, word [rdi + 2]
movd xmm0, r8d
movdqa xmm1, xmmword [0x14010fd90]
pcmpgtb xmm0, xmm1
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0xd4
pshufd xmm0, xmm0, 0xd4
movdqa xmm2, xmmword [0x14010fda0]
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 0x14003b2b7
nop dword [rax]
xor r11d, r11d
cmp byte [rdi + r10], 0xc0
setge r11b
add r8, r11
inc r10
cmp r9, r10
jne 0x14003b2a0
test rdx, rdx
mov qword [rsp + 0x28], r12
je 0x14003b356
mov r9, rax
and r9, 0xfffffffffffffff8
xor r10d, r10d
cmp byte [r15 + r9], 0xc0
setge r10b
cmp edx, 1
je 0x14003b359
xor r11d, r11d
cmp byte [r15 + r9 + 1], 0xc0
setge r11b
add r10, r11
cmp edx, 2
je 0x14003b359
xor r11d, r11d
cmp byte [r15 + r9 + 2], 0xc0
setge r11b
add r10, r11
cmp edx, 3
je 0x14003b359
xor r11d, r11d
cmp byte [r15 + r9 + 3], 0xc0
setge r11b
add r10, r11
cmp edx, 4
je 0x14003b359
xor r11d, r11d
cmp byte [r15 + r9 + 4], 0xc0
setge r11b
add r10, r11
cmp edx, 5
je 0x14003b359
xor r11d, r11d
cmp byte [r15 + r9 + 5], 0xc0
setge r11b
add r10, r11
cmp edx, 6
je 0x14003b359
xor edx, edx
cmp byte [r15 + r9 + 6], 0xc0
setge dl
add r10, rdx
jmp 0x14003b359
xor r10d, r10d
add r10, r8
shr rax, 3
movabs r9, 0xff00ff00ff00ff
movabs rbp, 0x1000100010001
pcmpeqd xmm0, xmm0
movdqa xmm1, xmmword [0x14010fdb0]
jmp 0x14003b3c8
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 0x14003b58d
mov rdx, r10
test rax, rax
je 0x14003b583
mov r11, r15
cmp rax, 0xc0
mov ebx, 0xc0
cmovb rbx, rax
cmp rax, 4
jb 0x14003b390
mov r12, rbp
mov r15d, ebx
shr r15d, 2
movabs r8, 0x7ffffffffffffff
lea rbp, [r15 + r8]
and rbp, r8
je 0x14003b500
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 0x14003b430
pshufd xmm2, xmm4, 0xee
paddq xmm2, xmm4
movq r10, xmm2
cmp rbp, r8
jne 0x14003b508
mov rbp, r12
jmp 0x14003b393
xor r10d, r10d
mov r13, r11
jmp 0x14003b50b
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 0x14003b520
jmp 0x14003b393
mov r12, qword [rsp + 0x28]
jmp 0x14003b63a
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 0x14003b5c4
mov r12, qword [rsp + 0x28]
jmp 0x14003b607
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 0x14003b607
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 0x14003b63a
xor r8d, r8d
cmp byte [rdi + rax], 0xc0
setge r8b
add rdx, r8
inc rax
cmp rsi, rax
jne 0x14003b624
sub r12, rdx
jbe 0x14003b658
movzx eax, byte [rcx + 0x38]
lea rdx, [0x14010fdc0]
movsxd rax, dword [rdx + rax*4]
add rax, rdx
jmp rax
xor r15d, r15d
jmp 0x14003b699
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 0x14003b699
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 0x14003b6c6
mov edx, ebp
call qword [r14 + 0x20]
test al, al
je 0x14003b6b0
mov al, 1
jmp 0x14003b715
mov rdx, rdi
mov r8, rsi
call qword [r14 + 0x18]
mov ecx, eax
mov al, 1
test cl, cl
jne 0x14003b715
mov rdi, r12
neg rdi
mov rsi, 0xffffffffffffffff
nop word cs:[rax + rax]
lea rax, [rdi + rsi]
cmp rax, 0xffffffffffffffff
je 0x14003b70c
mov rcx, rbx
mov edx, ebp
call qword [r14 + 0x20]
inc rsi
test al, al
je 0x14003b6f0
jmp 0x14003b70f
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
ret
add rsp, 0x1e8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
test byte [rax + rbp*8], ah
add byte [rax], al
add byte [rcx - 0x77], cl
adc byte [r9 - 0x77], r9b
ja 0x1400e1205
mov rax, qword [rsp + 0x48]
mov qword [r15 + 0x20], rax
movaps xmm0, xmmword [rsp + 0x180]
movups xmmword [r15 + 0x28], xmm0
mov rdx, rdi
cli
shl rdx, 5
add rdx, qword [rsp + 0xd8]
shl rbx, 5
add rbx, qword [rsp + 0xd8]
shl r12, 5
mov rcx, rbx
mov r8, r12
mov r12, qword [rsp + 0xd8]
call sub.msvcrt.dll_memmove
inc r13d
shl rdi, 5
mov rax, qword [rsp + 0x30]
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmmword [r12 + rdi + 0x10], xmm1
movups xmmword [r12 + rdi], xmm0
mov word [r12 + 0x3d2], r13w
mov rdx, qword [rsp + 0x38]
jmp 0x1400e20d1
inc qword [rbp + 0x10]
mov qword [rdx], r14
jmp 0x1400e0eb8
cli
add rsp, 0x80
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
jl 0x1400e46ac
xor dword [rax], eax
je 0x1400e46b2
test byte [rsi + 0x34], 4
jne 0x1400e46b2
mov rcx, qword [rsi + 0x20]
mov rax, qword [rsi + 0x28]
lea rdx, [0x1418d13f4]
mov r8d, 1
call qword [rax + 0x18]
mov ecx, eax
mov al, 1
test cl, cl
jne 0x1400e46ce
mov rcx, qword [rsi + 0x20]
mov rax, qword [rsi + 0x28]
lea rdx, [0x1418e97d7]
mov r8d, 1
call qword [rax + 0x18]
jmp 0x1400e46ce
test al, al
setne al
add rsp, 0x40
pop rsi
ret