Function at 0x14004ff80
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbx
sub rsp, 0x70
movdqa xmmword [rsp + 0x60], xmm10
movdqa xmmword [rsp + 0x50], xmm9
movdqa xmmword [rsp + 0x40], xmm8
movdqa xmmword [rsp + 0x30], xmm7
movdqa xmmword [rsp + 0x20], xmm6
mov ebx, edx
mov rdi, rcx
mov r15, qword [rcx + 8]
mov rsi, qword [rcx + 0x10]
lea r14, [r15 + rsi]
xor r12d, r12d
mov r13, qword [str._z_a_]
mov rdx, r15
nop
mov rax, qword [r13]
mov cl, 0xa
mov r8, r14
call rax
test rax, rax
je 0x140050002
cmp rax, 1
jne 0x140050002
mov rax, rdx
sub rax, r15
inc rdx
mov rcx, rax
sub rcx, r12
mov r12, rax
cmp rcx, 0x4c
jb 0x14004ffd0
mov cl, 1
jmp 0x14005000f
mov rax, rsi
sub rax, r12
cmp rax, 0x4c
setae cl
lea r8, [r15 + 7]
and r8, 0xfffffffffffffff8
mov rdx, r8
sub rdx, r15
cmp qword [rdi], 0
je 0x140050108
cmp rsi, 8
jae 0x1400501ce
test rsi, rsi
je 0x140050284
mov al, 3
cmp byte [r15 + rsi - 1], 0
js 0x1400503c5
mov rdx, rsi
dec rdx
je 0x140050284
cmp byte [r15 + rsi - 2], 0
js 0x1400503c5
mov rdx, rsi
add rdx, 0xfffffffffffffffe
je 0x140050284
cmp byte [r15 + rsi - 3], 0
js 0x1400503c5
mov rdx, rsi
add rdx, 0xfffffffffffffffd
je 0x140050284
cmp byte [r15 + rsi - 4], 0
js 0x1400503c5
mov rdx, rsi
add rdx, 0xfffffffffffffffc
je 0x140050284
cmp byte [r15 + rsi - 5], 0
js 0x1400503c5
mov rdx, rsi
add rdx, 0xfffffffffffffffb
je 0x140050284
cmp byte [r15 + rsi - 6], 0
js 0x1400503c5
mov rax, rsi
add rax, 0xfffffffffffffffa
je 0x140050284
lea rax, [rsi - 7]
cmp byte [r15 + rsi - 7], 0
setns dl
test rax, rax
sete r8b
xor eax, eax
and r8b, dl
sete al
lea eax, [rax + rax*2]
cmp r8b, 1
jne 0x1400503c5
xor cl, 1
je 0x140050288
jmp 0x1400503c5
cmp rsi, 8
jae 0x14005022f
test rsi, rsi
je 0x140050284
cmp byte [r15 + rsi - 1], 0
js 0x140050275
mov rax, rsi
dec rax
je 0x140050284
cmp byte [r15 + rsi - 2], 0
js 0x140050275
mov rax, rsi
add rax, 0xfffffffffffffffe
je 0x140050284
cmp byte [r15 + rsi - 3], 0
js 0x140050275
mov rax, rsi
add rax, 0xfffffffffffffffd
je 0x140050284
cmp byte [r15 + rsi - 4], 0
js 0x140050275
mov rax, rsi
add rax, 0xfffffffffffffffc
je 0x140050284
cmp byte [r15 + rsi - 5], 0
js 0x140050275
mov rax, rsi
add rax, 0xfffffffffffffffb
je 0x140050284
cmp byte [r15 + rsi - 6], 0
js 0x140050275
mov rax, rsi
add rax, 0xfffffffffffffffa
je 0x140050284
cmp byte [r15 + rsi - 7], 0
js 0x140050275
mov rax, rsi
add rax, 0xfffffffffffffff9
je 0x140050284
jmp 0x140050275
mov al, 3
movabs r9, 0x8080808080808080
test qword [r15], r9
jne 0x1400503c5
cmp r8, r15
mov r8d, 8
cmove rdx, r8
lea r8, [rsi - 8]
cmp rdx, r8
jae 0x140050213
nop dword [rax]
test qword [r15 + rdx], r9
jne 0x1400503c5
add rdx, 8
cmp rdx, r8
jb 0x140050200
xor eax, eax
test qword [r15 + r8], r9
sete r8b
setne dl
test r8b, cl
jne 0x140050288
mov al, dl
lea eax, [rax + rax*2]
jmp 0x1400503c5
movabs rax, 0x8080808080808080
test qword [r15], rax
jne 0x140050275
cmp r8, r15
mov r8d, 8
cmove rdx, r8
lea r8, [rsi - 8]
cmp rdx, r8
jae 0x14005026f
nop word cs:[rax + rax]
test qword [r15 + rdx], rax
jne 0x140050275
add rdx, 8
cmp rdx, r8
jb 0x140050260
test qword [r15 + r8], rax
je 0x140050284
test cl, cl
jne 0x140050288
mov al, 1
test bl, bl
je 0x140050288
jmp 0x1400503c5
test cl, cl
je 0x14005029c
test rsi, rsi
je 0x1400502a3
cmp rsi, 4
jae 0x1400502aa
xor ecx, ecx
xor eax, eax
jmp 0x140050384
xor eax, eax
jmp 0x1400503c5
xor ecx, ecx
jmp 0x1400503aa
mov rax, rsi
and rax, 0xfffffffffffffffc
pxor xmm0, xmm0
xor ecx, ecx
movdqa xmm1, xmmword [0x1400a1710]
pcmpeqd xmm3, xmm3
movdqa xmm4, xmmword [0x1400a1720]
movdqa xmm5, xmmword [0x1400a1730]
pxor xmm2, xmm2
nop word [rax + rax]
movzx edx, word [r15 + rcx]
movd xmm6, edx
movzx edx, word [r15 + rcx + 2]
movd xmm7, edx
movdqa xmm8, xmm6
pcmpeqb xmm8, xmm1
movdqa xmm9, xmm7
pcmpeqb xmm9, xmm1
paddb xmm6, xmm4
paddb xmm7, xmm4
movdqa xmm10, xmm6
pmaxub xmm10, xmm5
pcmpeqb xmm10, xmm6
por xmm10, xmm8
movdqa xmm6, xmm7
pmaxub xmm6, xmm5
pcmpeqb xmm6, xmm7
por xmm6, xmm9
punpcklbw xmm10, xmm10
pxor xmm10, xmm3
pshuflw xmm7, xmm10, 0x50
pshufd xmm7, xmm7, 0x50
psubq xmm0, xmm7
punpcklbw xmm6, xmm6
pxor xmm6, xmm3
pshuflw xmm6, xmm6, 0x50
pshufd xmm6, xmm6, 0x50
psubq xmm2, xmm6
add rcx, 4
cmp rax, rcx
jne 0x1400502e0
paddq xmm2, xmm0
pshufd xmm0, xmm2, 0xee
paddq xmm0, xmm2
movq rcx, xmm0
jmp 0x1400503a5
movzx edx, byte [r15 + rax]
cmp dl, 9
setne r8b
add dl, 0x81
cmp dl, 0xa1
setb dl
and dl, r8b
movzx edx, dl
add rcx, rdx
inc rax
cmp rsi, rax
jne 0x140050384
movabs rdx, 0xaaaaaaaaaaaaaaab
mov rax, rsi
mul rdx
shr rdx, 1
cmp rcx, rdx
seta al
or al, 2
movaps xmm6, xmmword [rsp + 0x20]
movaps xmm7, xmmword [rsp + 0x30]
movaps xmm8, xmmword [rsp + 0x40]
movaps xmm9, xmmword [rsp + 0x50]
movaps xmm10, xmmword [rsp + 0x60]
add rsp, 0x70
pop rbx
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret