Function at 0x140040970
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r15
push r14
push r12
push rsi
push rdi
push rbx
sub rsp, 0x70
lea rbp, [rsp + 0x70]
movdqa xmmword [rbp - 0x10], xmm12
movdqa xmmword [rbp - 0x20], xmm11
movdqa xmmword [rbp - 0x30], xmm10
movdqa xmmword [rbp - 0x40], xmm9
movdqa xmmword [rbp - 0x50], xmm8
movdqa xmmword [rbp - 0x60], xmm7
movdqa xmmword [rbp - 0x70], xmm6
lea r10, [rcx + 7]
and r10, 0xfffffffffffffff8
mov r9, r10
sub r9, rcx
mov r8, rdx
sub r8, r9
jb 0x1400409c7
cmp r8, 8
jae 0x1400409e3
test rdx, rdx
je 0x1400409dc
cmp rdx, 4
jae 0x1400409f9
xor eax, eax
xor r8d, r8d
jmp 0x140040a90
xor eax, eax
jmp 0x140040f70
mov eax, r8d
and eax, 7
cmp r10, rcx
jne 0x140040aac
xor edx, edx
jmp 0x140040b5d
mov r8, rdx
and r8, 0xfffffffffffffffc
pxor xmm0, xmm0
xor eax, eax
movdqa xmm2, xmmword [0x143b38b20]
movdqa xmm3, xmmword [0x143b38b30]
pxor xmm1, xmm1
nop word [rax + rax]
movzx r9d, word [rcx + rax]
movd xmm4, r9d
movzx r9d, word [rcx + rax + 2]
movd xmm5, r9d
pcmpgtb xmm4, xmm2
punpcklbw xmm4, xmm4
pshuflw xmm4, xmm4, 0xd4
pshufd xmm4, xmm4, 0xd4
pand xmm4, xmm3
paddq xmm0, xmm4
pcmpgtb xmm5, xmm2
punpcklbw xmm5, xmm5
pshuflw xmm4, xmm5, 0xd4
pshufd xmm4, xmm4, 0xd4
pand xmm4, xmm3
paddq xmm1, xmm4
add rax, 4
cmp r8, rax
jne 0x140040a20
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddq xmm0, xmm1
movq rax, xmm0
cmp r8, rdx
je 0x140040f70
nop dword [rax]
xor r9d, r9d
cmp byte [rcx + r8], 0xc0
setge r9b
add rax, r9
inc r8
cmp rdx, r8
jne 0x140040a90
jmp 0x140040f70
cmp r9, 4
jae 0x140040abc
xor edx, edx
xor r10d, r10d
jmp 0x140040b46
mov r10d, r9d
and r10d, 4
pxor xmm0, xmm0
xor edx, edx
movdqa xmm2, xmmword [0x143b38b20]
movdqa xmm3, xmmword [0x143b38b30]
pxor xmm1, xmm1
nop dword [rax]
movzx r11d, word [rcx + rdx]
movd xmm4, r11d
movzx r11d, word [rcx + rdx + 2]
movd xmm5, r11d
pcmpgtb xmm4, xmm2
punpcklbw xmm4, xmm4
pshuflw xmm4, xmm4, 0xd4
pshufd xmm4, xmm4, 0xd4
pand xmm4, xmm3
paddq xmm0, xmm4
pcmpgtb xmm5, xmm2
punpcklbw xmm5, xmm5
pshuflw xmm4, xmm5, 0xd4
pshufd xmm4, xmm4, 0xd4
pand xmm4, xmm3
paddq xmm1, xmm4
add rdx, 4
cmp r10, rdx
jne 0x140040ae0
paddq xmm1, xmm0
pshufd xmm0, xmm1, 0xee
paddq xmm0, xmm1
movq rdx, xmm0
jmp 0x140040b58
xor r11d, r11d
cmp byte [rcx + r10], 0xc0
setge r11b
add rdx, r11
inc r10
cmp r9, r10
jne 0x140040b46
add rcx, r9
test rax, rax
je 0x140040bf9
mov r9, r8
and r9, 0xfffffffffffffff8
xor edi, edi
cmp byte [rcx + r9], 0xc0
setge dil
cmp eax, 1
je 0x140040bfb
xor r10d, r10d
cmp byte [rcx + r9 + 1], 0xc0
setge r10b
add rdi, r10
cmp eax, 2
je 0x140040bfb
xor r10d, r10d
cmp byte [rcx + r9 + 2], 0xc0
setge r10b
add rdi, r10
cmp eax, 3
je 0x140040bfb
xor r10d, r10d
cmp byte [rcx + r9 + 3], 0xc0
setge r10b
add rdi, r10
cmp eax, 4
je 0x140040bfb
xor r10d, r10d
cmp byte [rcx + r9 + 4], 0xc0
setge r10b
add rdi, r10
cmp eax, 5
je 0x140040bfb
xor r10d, r10d
cmp byte [rcx + r9 + 5], 0xc0
setge r10b
add rdi, r10
cmp eax, 6
je 0x140040bfb
xor eax, eax
cmp byte [rcx + r9 + 6], 0xc0
setge al
add rdi, rax
jmp 0x140040bfb
xor edi, edi
add rdi, rdx
shr r8, 3
movabs r9, 0xff00ff00ff00ff
movabs rdx, 0x1000100010001
movabs rsi, 0x7ffffffffffffff
pcmpeqd xmm0, xmm0
movdqa xmm1, xmmword [0x143b38b40]
jmp 0x140040c66
xor edi, edi
mov ecx, r11d
lea rcx, [r10 + rcx*8]
sub r8, r11
mov ebx, r11d
and ebx, 3
mov r14, rdi
and r14, r9
shr rdi, 8
and rdi, r9
add rdi, r14
imul rdi, rdx
shr rdi, 0x30
add rdi, rax
test rbx, rbx
jne 0x140040ee0
mov rax, rdi
test r8, r8
je 0x140040f70
mov r10, rcx
cmp r8, 0xc0
mov r11d, 0xc0
cmovb r11, r8
cmp r8, 4
jb 0x140040c30
mov ecx, r11d
shr ecx, 2
lea r14, [rcx - 1]
and r14, rsi
cmp r14, 3
jae 0x140040cb0
xor edi, edi
mov rbx, r10
jmp 0x140040e75
inc r14
mov r15, r14
and r15, 0xfffffffffffffffc
mov rbx, r15
shl rbx, 5
add rbx, r10
lea rdi, [r10 + 0x40]
pxor xmm4, xmm4
mov r12, r15
pxor xmm5, xmm5
nop word cs:[rax + rax]
movdqu xmm2, xmmword [rdi - 0x40]
movdqu xmm6, xmmword [rdi - 0x20]
movdqa xmm3, xmm2
punpcklqdq xmm3, xmm6
movdqa xmm7, xmm3
pxor xmm7, xmm0
psrlq xmm7, 7
psrlq xmm3, 6
por xmm3, xmm7
pand xmm3, xmm1
paddq xmm3, xmm4
movdqu xmm4, xmmword [rdi - 0x30]
movdqu xmm10, xmmword [rdi - 0x10]
movdqu xmm11, xmmword [rdi + 0x30]
movdqu xmm7, xmmword [rdi + 0x20]
movdqu xmm9, xmmword [rdi]
movdqa xmm8, xmm9
punpcklqdq xmm8, xmm7
movdqa xmm12, xmm8
pxor xmm12, xmm0
psrlq xmm12, 7
psrlq xmm8, 6
por xmm8, xmm12
pand xmm8, xmm1
paddq xmm8, xmm5
movdqu xmm5, xmmword [rdi + 0x10]
punpckhqdq xmm2, xmm6
punpckhqdq xmm9, xmm7
movdqa xmm7, xmm4
punpcklqdq xmm7, xmm10
movdqa xmm6, xmm5
punpcklqdq xmm6, xmm11
punpckhqdq xmm4, xmm10
punpckhqdq xmm5, xmm11
movdqa xmm10, xmm2
pxor xmm10, xmm0
movdqa xmm11, xmm9
pxor xmm11, xmm0
psrlq xmm10, 7
psrlq xmm11, 7
psrlq xmm2, 6
por xmm2, xmm10
psrlq xmm9, 6
por xmm9, xmm11
pand xmm2, xmm1
pand xmm9, xmm1
movdqa xmm10, xmm7
pxor xmm10, xmm0
movdqa xmm11, xmm6
pxor xmm11, xmm0
psrlq xmm10, 7
psrlq xmm11, 7
psrlq xmm7, 6
por xmm7, xmm10
psrlq xmm6, 6
por xmm6, xmm11
pand xmm7, xmm1
paddq xmm7, xmm2
paddq xmm7, xmm3
pand xmm6, xmm1
paddq xmm6, xmm9
paddq xmm6, xmm8
movdqa xmm2, xmm4
pxor xmm2, xmm0
movdqa xmm3, xmm5
pxor xmm3, xmm0
psrlq xmm2, 7
psrlq xmm3, 7
psrlq xmm4, 6
por xmm4, xmm2
psrlq xmm5, 6
por xmm5, xmm3
pand xmm4, xmm1
paddq xmm4, xmm7
pand xmm5, xmm1
paddq xmm5, xmm6
sub rdi, 0xffffffffffffff80
add r12, 0xfffffffffffffffc
jne 0x140040ce0
paddq xmm5, xmm4
pshufd xmm2, xmm5, 0xee
paddq xmm2, xmm5
movq rdi, xmm2
cmp r14, r15
je 0x140040c32
shl ecx, 5
add rcx, r10
nop dword [rax + rax]
movdqu xmm2, xmmword [rbx]
movdqu xmm3, xmmword [rbx + 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 r14, xmm3
add rdi, r14
add rbx, 0x20
cmp rbx, rcx
jne 0x140040e80
jmp 0x140040c32
and r11d, 0xfc
mov eax, r11d
mov rcx, qword [r10 + rax*8]
mov rax, rcx
not rax
shr rax, 7
shr rcx, 6
or rcx, rax
movabs rax, 0x101010101010101
and rcx, rax
cmp ebx, 1
je 0x140040f4e
mov r8, qword [r10 + r11*8 + 8]
mov rsi, r8
not rsi
shr rsi, 7
shr r8, 6
or r8, rsi
and r8, rax
add rcx, r8
cmp ebx, 2
je 0x140040f4e
mov r8, qword [r10 + r11*8 + 0x10]
mov r10, r8
not r10
shr r10, 7
shr r8, 6
or r8, r10
and r8, rax
add rcx, r8
and r9, rcx
shr rcx, 8
movabs rax, 0x700ff00ff00ff
and rax, rcx
add rax, r9
imul rax, rdx
shr rax, 0x30
add rax, rdi
movaps xmm6, xmmword [rbp - 0x70]
movaps xmm7, xmmword [rbp - 0x60]
movaps xmm8, xmmword [rbp - 0x50]
movaps xmm9, xmmword [rbp - 0x40]
movaps xmm10, xmmword [rbp - 0x30]
movaps xmm11, xmmword [rbp - 0x20]
movaps xmm12, xmmword [rbp - 0x10]
add rsp, 0x70
pop rbx
pop rdi
pop rsi
pop r12
pop r14
pop r15
pop rbp
ret