Function at 0x140023970
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0xc8
movdqa xmmword [rsp + 0xb0], xmm8
movdqa xmmword [rsp + 0xa0], xmm7
movdqa xmmword [rsp + 0x90], xmm6
mov rax, qword [rcx]
mov qword [rsp + 0x60], rax
mov rdi, qword [rcx + 8]
mov rax, qword [rcx + 0x10]
mov qword [rsp + 0x70], rax
mov rax, qword [rcx + 0x18]
mov qword [rsp + 0x78], rax
cmp rdi, rax
je 0x140023dc7
mov rsi, rdx
movabs rbx, 0x5851f42d4c957f2d
movabs r14, 0xa4093822299f31d0
movabs r12, 0x82efa98ec4e6c89
movabs r13, 0x243f6a8885a308d3
lea rax, [rdx + 0x20]
mov qword [rsp + 0x68], rax
pcmpeqd xmm6, xmm6
mov qword [rsp + 0x28], rdx
jmp 0x140023aab
and al, 1
movzx eax, al
mov rsi, qword [rsp + 0x28]
sub qword [rsi + 0x10], rax
lea rax, [rcx - 0x10]
and r13, rax
mov rax, qword [rsp + 0x80]
mov byte [rdi + rcx], al
mov byte [rdi + r13 + 0x10], al
inc qword [rsi + 0x18]
neg rcx
lea rax, [rcx + rcx*2]
shl rax, 4
mov rcx, qword [rsp + 0x30]
mov qword [rdi + rax - 0x30], rcx
mov rcx, qword [rsp + 0x20]
mov qword [rdi + rax - 0x28], rcx
mov qword [rdi + rax - 0x20], r15
movdqa xmm0, xmmword [rsp + 0x40]
movdqu xmmword [rdi + rax - 0x18], xmm0
mov rcx, qword [rsp + 0x50]
mov qword [rdi + rax - 8], rcx
mov rdi, qword [rsp + 0x38]
movabs rbx, 0x5851f42d4c957f2d
movabs r14, 0xa4093822299f31d0
movabs r12, 0x82efa98ec4e6c89
movabs r13, 0x243f6a8885a308d3
nop dword [rax + rax]
cmp rdi, qword [rsp + 0x78]
je 0x140023dc7
mov rax, qword [rdi]
mov qword [rsp + 0x30], rax
mov rax, qword [rdi + 8]
mov qword [rsp + 0x20], rax
mov r15, qword [rdi + 0x10]
mov rax, qword [rdi + 0x28]
mov qword [rsp + 0x50], rax
movdqu xmm0, xmmword [rdi + 0x18]
movdqa xmmword [rsp + 0x40], xmm0
mov rcx, r15
imul rcx, rbx
cmp r15, 8
jbe 0x140023b60
cmp r15, 0x10
jbe 0x140023b80
mov r9, qword [rsp + 0x20]
mov rdx, qword [r9 + r15 - 0x10]
xor rdx, r14
mov rax, qword [r9 + r15 - 8]
xor rax, r12
mul rdx
movabs r8, 0xe23bfdf3302a07c7
add rcx, r8
xor rcx, rdx
xor rcx, rax
rol rcx, 0x17
mov rdx, r9
mov r8, r15
mov r9, qword [rdx]
mov rax, qword [rdx + 8]
lea r10, [rdx + 0x10]
add r8, 0xfffffffffffffff0
xor r9, r14
xor rax, r12
mul r9
add rcx, r13
xor rcx, rdx
xor rcx, rax
rol rcx, 0x17
mov rdx, r10
cmp r8, 0x10
ja 0x140023b20
jmp 0x140023bf3
cmp r15, 1
jbe 0x140023bb0
cmp r15, 3
jbe 0x140023bbf
mov rax, qword [rsp + 0x20]
mov edx, dword [rax]
mov eax, dword [rax + r15 - 4]
jmp 0x140023bd3
mov rax, qword [rsp + 0x20]
mov rdx, qword [rax]
xor rdx, r14
mov rax, qword [rax + r15 - 8]
xor rax, r12
mul rdx
movabs r8, 0xe23bfdf3302a07c7
add rcx, r8
xor rcx, rdx
xor rcx, rax
jmp 0x140023bef
jne 0x140023bcf
mov rax, qword [rsp + 0x20]
movzx edx, byte [rax]
mov rax, rdx
jmp 0x140023bd3
mov rax, qword [rsp + 0x20]
movzx edx, word [rax]
movzx eax, byte [r15 + rax - 1]
jmp 0x140023bd3
xor edx, edx
xor eax, eax
xor rdx, r14
xor rax, r12
mul rdx
xor rdx, rax
movabs rax, 0xe23bfdf3302a07c7
add rcx, rax
xor rcx, rdx
rol rcx, 0x17
xor rcx, 0xff
mov rax, rcx
mul rbx
mov rcx, rax
xor rcx, rdx
mov rax, rcx
mul r13
mov r12, rdx
xor r12, rax
rol r12, cl
cmp qword [rsi + 0x10], 0
je 0x140023db5
add rdi, 0x30
mov qword [rsp + 0x38], rdi
mov rdi, qword [rsi]
mov r13, qword [rsi + 8]
mov rax, r12
shr rax, 0x39
mov qword [rsp + 0x80], rax
movd xmm0, eax
punpcklbw xmm0, xmm0
pshuflw xmm0, xmm0, 0
pshufd xmm7, xmm0, 0
xor ebp, ebp
xor ebx, ebx
and r12, r13
movdqu xmm8, xmmword [rdi + r12]
movdqa xmm0, xmm8
pcmpeqb xmm0, xmm7
pmovmskb esi, xmm0
test esi, esi
jne 0x140023cca
cmp rbx, 1
mov ebx, 1
je 0x140023c98
pmovmskb eax, xmm8
xor ebx, ebx
test eax, eax
setne bl
tzcnt eax, eax
add rax, r12
and rax, r13
mov qword [rsp + 0x88], rax
pcmpeqb xmm8, xmm6
pmovmskb eax, xmm8
test eax, eax
jne 0x140023d8c
add r12, rbp
add r12, 0x10
add rbp, 0x10
jmp 0x140023c55
lea eax, [rsi - 1]
and ax, si
mov esi, eax
je 0x140023c6f
tzcnt eax, esi
add rax, r12
and rax, r13
neg rax
lea r14, [rax + rax*2]
shl r14, 4
cmp r15, qword [rdi + r14 - 0x20]
jne 0x140023cc0
add r14, rdi
mov rdx, qword [r14 - 0x28]
mov rcx, qword [rsp + 0x20]
mov r8, r15
call fcn.140068ef0
test eax, eax
jne 0x140023cc0
mov rsi, qword [r14 - 0x18]
mov r15, qword [r14 - 0x10]
mov rax, qword [rsp + 0x50]
mov qword [r14 - 8], rax
movdqa xmm0, xmmword [rsp + 0x40]
movdqu xmmword [r14 - 0x18], xmm0
cmp qword [rsp + 0x30], 0
je 0x140023d37
mov rcx, qword [0x140090d88]
xor edx, edx
mov r8, qword [rsp + 0x20]
call qword [sym.imp.kernel32.dll_HeapFree]
shl rsi, 1
test rsi, rsi
mov rsi, qword [rsp + 0x28]
mov rdi, qword [rsp + 0x38]
movabs rbx, 0x5851f42d4c957f2d
movabs r14, 0xa4093822299f31d0
movabs r12, 0x82efa98ec4e6c89
movabs r13, 0x243f6a8885a308d3
je 0x140023aa0
mov rcx, qword [0x140090d88]
xor edx, edx
mov r8, r15
call qword [sym.imp.kernel32.dll_HeapFree]
jmp 0x140023aa0
mov rcx, qword [rsp + 0x88]
movzx eax, byte [rdi + rcx]
test al, al
js 0x140023a08
movdqa xmm0, xmmword [rdi]
pmovmskb eax, xmm0
tzcnt ecx, eax
movzx eax, byte [rdi + rcx]
jmp 0x140023a08
mov rcx, rsi
mov rdx, qword [rsp + 0x68]
call fcn.140069760
jmp 0x140023c20
cmp qword [rsp + 0x70], 0
je 0x140023e10
mov rcx, qword [0x140090d88]
xor edx, edx
mov r8, qword [rsp + 0x60]
movaps xmm6, xmmword [rsp + 0x90]
movaps xmm7, xmmword [rsp + 0xa0]
movaps xmm8, xmmword [rsp + 0xb0]
add rsp, 0xc8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
jmp qword [sym.imp.kernel32.dll_HeapFree]
movaps xmm6, xmmword [rsp + 0x90]
movaps xmm7, xmmword [rsp + 0xa0]
movaps xmm8, xmmword [rsp + 0xb0]
add rsp, 0xc8
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret