Function at 0x14003b500
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x58
lea rbp, [rsp + 0x50]
mov qword [rbp], 0xfffffffffffffffe
mov rdi, r8
mov r13, rdx
mov rsi, rcx
mov rbx, qword [rdx + 0x10]
movzx eax, byte [rdx + 0x1e]
movzx edx, word [rdx + 0x1c]
mov ecx, edx
shr ecx, 8
test dl, 1
jne 0x14003b66b
cmp cl, 3
movzx ecx, cl
movzx eax, al
cmovb eax, ecx
movq xmm0, qword [r13 + 0x18]
punpcklbw xmm0, xmm0
punpcklwd xmm0, xmm0
pxor xmm1, xmm1
pcmpeqb xmm1, xmm0
movmskps ecx, xmm1
test cl, 8
sete r14b
test cl, 4
sete dl
test cl, 2
sete r8b
xor r9d, r9d
test cl, 1
sete r9b
shl r9d, 7
shl r8b, 6
or r8b, al
or r8b, r9b
shl dl, 5
shl r14b, 4
or r14b, dl
or r14b, r8b
cmp rbx, 0x10000
mov ecx, 2
sbb rcx, 0
xor eax, eax
cmp rbx, 0x7e
cmovae rax, rcx
cmp rax, 2
mov qword [rbp - 0x18], r13
je 0x14003b685
cmp rax, 1
jne 0x14003b71e
movzx r15d, byte [r13 + 0x1f]
test r15b, r15b
mov eax, 0x7e
mov r12d, 0xfe
cmove r12d, eax
mov rcx, qword [rdi]
mov rdx, qword [rdi + 0x10]
mov rax, rcx
sub rax, rdx
cmp rax, 1
ja 0x14003b613
mov r8d, 2
mov rcx, rdi
call fcn.1400c3e70
mov rcx, qword [rdi]
mov rdx, qword [rdi + 0x10]
mov r13, qword [rbp - 0x18]
mov rax, qword [rdi + 8]
mov byte [rax + rdx], r14b
mov byte [rax + rdx + 1], r12b
add rdx, 2
mov qword [rdi + 0x10], rdx
sub rcx, rdx
cmp rcx, 1
ja 0x14003b64b
mov r8d, 2
mov rcx, rdi
call fcn.1400c3e70
mov rax, qword [rdi + 8]
mov rdx, qword [rdi + 0x10]
mov r13, qword [rbp - 0x18]
mov ecx, ebx
rol cx, 8
lea r14, [rdx + 2]
mov word [rax + rdx], cx
mov qword [rdi + 0x10], r14
test r15b, r15b
jne 0x14003b771
jmp 0x14003b714
movzx ecx, cl
lea rdx, [0x1400cfc04]
movsxd rcx, dword [rdx + rcx*4]
add rcx, rdx
jmp rcx
mov al, 8
jmp case.0x14003b67c.3
movzx r15d, byte [r13 + 0x1f]
test r15b, r15b
setne r12b
mov rcx, qword [rdi]
mov rdx, qword [rdi + 0x10]
mov rax, rcx
sub rax, rdx
cmp rax, 1
ja 0x14003b6bd
mov r8d, 2
mov rcx, rdi
call fcn.1400c3e70
mov rcx, qword [rdi]
mov rdx, qword [rdi + 0x10]
mov r13, qword [rbp - 0x18]
shl r12b, 7
or r12b, 0x7f
mov rax, qword [rdi + 8]
mov byte [rax + rdx], r14b
mov byte [rax + rdx + 1], r12b
add rdx, 2
mov qword [rdi + 0x10], rdx
sub rcx, rdx
cmp rcx, 7
ja 0x14003b6fd
mov r8d, 8
mov rcx, rdi
call fcn.1400c3e70
mov rax, qword [rdi + 8]
mov rdx, qword [rdi + 0x10]
mov r13, qword [rbp - 0x18]
mov rcx, rbx
bswap rcx
lea r14, [rdx + 8]
mov qword [rax + rdx], rcx
mov qword [rdi + 0x10], r14
test r15b, r15b
jne 0x14003b771
mov byte [r13 + 0x1f], 0
jmp 0x14003b9a3
movzx r15d, byte [r13 + 0x1f]
test r15b, r15b
setne r12b
mov rax, qword [rdi]
mov rdx, qword [rdi + 0x10]
sub rax, rdx
cmp rax, 1
ja 0x14003b750
mov r8d, 2
mov rcx, rdi
call fcn.1400c3e70
mov rdx, qword [rdi + 0x10]
mov r13, qword [rbp - 0x18]
shl r12b, 7
or r12b, bl
mov rax, qword [rdi + 8]
mov byte [rax + rdx], r14b
lea r14, [rdx + 2]
mov byte [rax + rdx + 1], r12b
mov qword [rdi + 0x10], r14
test r15b, r15b
je 0x14003b714
mov rcx, qword [rdi]
sub rcx, r14
cmp rcx, 3
ja 0x14003b79a
mov r8d, 4
mov rcx, rdi
mov rdx, r14
call fcn.1400c3e70
mov rax, qword [rdi + 8]
mov r14, qword [rdi + 0x10]
mov r13, qword [rbp - 0x18]
mov ecx, dword [r13 + 0x20]
mov dword [rax + r14], ecx
add r14, 4
mov qword [rdi + 0x10], r14
test byte [r13 + 0x1f], 1
mov r10d, dword [r13 + 0x20]
mov byte [r13 + 0x1f], 0
je 0x14003b9a3
mov rcx, qword [r13 + 8]
lea r11, [rcx + 3]
and r11, 0xfffffffffffffffc
sub r11, rcx
mov rax, rbx
sub rax, r11
mov qword [rbp - 0x28], rsi
jae 0x14003b7fd
lea r8, [0x1400cc180]
xor r9d, r9d
mov r11, rbx
mov rax, r8
xor edx, edx
mov qword [rbp - 0x20], rdx
mov dword [rbp - 0x10], r10d
test r11, r11
jne 0x14003b825
jmp 0x14003b8c8
lea r8, [rcx + r11]
mov r9, rax
shr r9, 2
mov edx, eax
and edx, 3
and rax, 0xfffffffffffffffc
add rax, r8
mov qword [rbp - 0x20], rdx
mov dword [rbp - 0x10], r10d
test r11, r11
je 0x14003b8c8
mov r15, r11
xor r12d, r12d
and r15, 3
je 0x14003b86c
nop word cs:[rax + rax]
movzx edx, byte [rbp + r12 - 0x10]
xor byte [rcx + r12], dl
inc r12
cmp r15, r12
jne 0x14003b840
lea r15, [rcx + r12]
cmp r11, 4
jae 0x14003b875
jmp 0x14003b8c8
mov al, 9
jmp case.0x14003b67c.3
mov al, 0xa
jmp case.0x14003b67c.3
mov r15, rcx
cmp r11, 4
jb 0x14003b8c8
add rcx, r11
lea edx, [r12 - 1]
and edx, 3
mov esi, r12d
and esi, 3
xor rsi, 2
lea r13d, [r12 + 1]
and r13d, 3
movzx r12d, byte [rbp + r12 - 0x10]
movzx r13d, byte [rbp + r13 - 0x10]
movzx esi, byte [rbp + rsi - 0x10]
movzx edx, byte [rbp + rdx - 0x10]
nop dword [rax]
xor byte [r15], r12b
xor byte [r15 + 1], r13b
xor byte [r15 + 2], sil
xor byte [r15 + 3], dl
add r15, 4
cmp r15, rcx
jne 0x14003b8b0
mov ecx, r11d
shl ecx, 3
mov r15d, r10d
ror r15d, cl
test r11b, 3
cmove r15d, r10d
test r9, r9
mov rsi, qword [rbp - 0x28]
mov r13, qword [rbp - 0x18]
je 0x14003b97c
lea rcx, [r9 - 1]
movabs r10, 0x3fffffffffffffff
and r10, rcx
mov rcx, r8
cmp r10, 7
jb 0x14003b960
inc r10
mov r11, r10
and r11, 0xfffffffffffffff8
lea rcx, [r8 + r11*4]
movd xmm0, r15d
pshufd xmm0, xmm0, 0
xor r12d, r12d
nop word cs:[rax + rax]
movdqu xmm1, xmmword [r8 + r12*4]
movdqu xmm2, xmmword [r8 + r12*4 + 0x10]
pxor xmm1, xmm0
pxor xmm2, xmm0
movdqu xmmword [r8 + r12*4], xmm1
movdqu xmmword [r8 + r12*4 + 0x10], xmm2
add r12, 8
cmp r11, r12
jne 0x14003b930
cmp r10, r11
je 0x14003b97c
lea rdx, [r8 + r9*4]
nop word cs:[rax + rax]
xor dword [rcx], r15d
add rcx, 4
cmp rcx, rdx
jne 0x14003b970
mov rdx, qword [rbp - 0x20]
test rdx, rdx
je 0x14003b9a3
xor byte [rax], r15b
cmp edx, 1
je 0x14003b9a3
mov ecx, r15d
shr ecx, 8
xor byte [rax + 1], cl
cmp edx, 2
je 0x14003b9a3
shr r15d, 0x10
xor byte [rax + 2], r15b
mov r15, qword [r13 + 8]
mov rax, qword [rdi]
sub rax, r14
cmp rax, rbx
jae 0x14003b9c8
mov rcx, rdi
mov rdx, r14
mov r8, rbx
call fcn.1400c3e70
mov r14, qword [rdi + 0x10]
mov r13, qword [rbp - 0x18]
mov rcx, qword [rdi + 8]
add rcx, r14
mov rdx, r15
mov r8, rbx
call sub.VCRUNTIME140.dll_memcpy
add r14, rbx
mov qword [rdi + 0x10], r14
mov qword [rsi], 0xf
mov rdx, qword [r13]
test rdx, rdx
je 0x14003b9ff
mov r8d, 1
mov rcx, r15
call fcn.14003d050
mov rax, rsi
add rsp, 0x58
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
pop rbp
ret
lea r8, [0x1400cfc14]
movsxd rdx, dword [r8 + rdx*4]
adc al, 0x90
adc al, 0x90
add rdx, r8
jmp rdx
lea rdx, str.NormalAwayProtocolUnsupportedStatusAbnormalInvalidPolicySizeExtensionErrorRestartAgainTlsReserved
adc eax, 0x92c67
jmp 0x14003ce20
lea rdx, [0x1400cfa2e]
adc eax, 0x92c64
jmp 0x14003ce39
or eax, dword [rax]
add byte [rax], al
mov rcx, rax
add rsp, 0x38
invalid
cmp cl, ch
add ah, byte [rbx]
or byte [rax], al
invalid
or byte [rax], al
add byte [rax], al
mov rcx, rax
add rsp, 0x38
invalid
cmp cl, ch
loopne 0x14003ce30
or byte [rax], al
invalid
mov r8d, 6
mov rcx, rax
add rsp, 0x38
jmp fcn.1400bf0f0
invalid
mov r8d, 4
add al, 0
add byte [rax], al
mov rcx, rax
add rsp, 0x38
jmp fcn.1400bf0f0
or dword [rax], eax
add byte [rax], al
mov rcx, rax
add rsp, 0x38
invalid
cmp cl, ch
mov word [rdx], fs
or byte [rax], al
invalid
invalid
add eax, 0x48000000
mov ecx, eax
add rsp, 0x38
jmp fcn.1400bf0f0
add eax, dword [rax]
add byte [rax], al
mov rcx, rax
add rsp, 0x38
jmp fcn.1400bf0f0
sub ecx, dword [rcx]
add byte [rbp + rcx*4 + 0x4c], cl
and al, 0x30
mov r8d, 8
jmp 0x14003cf5a
sub ecx, dword [rcx]
add byte [rbp + rcx*4 + 0x4c], cl
and al, 0x30
mov r8d, 4
jmp 0x14003cf5a
sub ecx, dword [rcx]
add byte [rbp + rcx*4 + 0x4c], cl
and al, 0x30
mov r8d, 7
jmp 0x14003cf5a
mov rcx, rax
call fcn.1400bf490
nop
add rsp, 0x38
ret