Function at 0x14001d8f0
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rsi
push rdi
push rbp
push rbx
sub rsp, 0x38
mov rbx, rdx
mov rsi, rcx
mov edi, dword [rcx + 0x10]
mov rcx, rdx
call qword [rsi + 8]
mov ecx, eax
cdq
idiv edi
xor ecx, edi
sar ecx, 0x1f
and ecx, edi
test edx, edx
cmove ecx, edx
add ecx, edx
mov rax, qword [rsi + 0x48]
movsxd rcx, ecx
mov rdi, qword [rax + rcx*8]
test rdi, rdi
je 0x14001d956
mov r14, qword [rsi]
nop word cs:[rax + rax]
mov rcx, qword [rdi]
mov rdx, rbx
call r14
test eax, eax
jne 0x14001d9b5
mov rdi, qword [rdi + 0x10]
test rdi, rdi
jne 0x14001d940
mov edi, dword [rsi + 0x10]
mov rcx, rbx
call qword [rsi + 8]
mov ecx, eax
cdq
idiv edi
xor ecx, edi
sar ecx, 0x1f
and ecx, edi
test edx, edx
cmove ecx, edx
add ecx, edx
mov r15, qword [rsi + 0x48]
movsxd r14, ecx
mov r12, qword [r15 + r14*8]
test r12, r12
je 0x14001d9c0
mov rdi, qword [rsi]
nop word cs:[rax + rax]
mov rcx, qword [r12]
mov rdx, rbx
call rdi
test eax, eax
jne 0x14001daa7
mov r12, qword [r12 + 0x10]
test r12, r12
jne 0x14001d990
mov r15, qword [rsi + 0x48]
mov r13, qword [r15 + r14*8]
jmp 0x14001d9c3
mov r14d, 1
jmp 0x14001dab3
xor r13d, r13d
mov edi, dword [rsi + 0x10]
mov r12d, dword [rsi + 0x18]
mov ebp, dword [rsi + 0x40]
mov ecx, 0x18
call qword [rsi + 0x30]
test rax, rax
je 0x14001dab0
mov qword [rax], rbx
mov qword [rax + 8], 0
mov qword [rax + 0x10], r13
mov qword [r15 + r14*8], rax
inc ebp
mov dword [rsi + 0x40], ebp
mov eax, ebp
cdq
idiv edi
mov r14d, 1
cmp eax, r12d
jl 0x14001dab3
mov r9d, dword [rsi + 0x10]
mov rcx, qword [rsi + 0x48]
test r9d, r9d
jle 0x14001da32
cmp r9d, 1
jne 0x14001db46
lea rdx, [rsp + 0x20]
xor eax, eax
test r9b, 1
jne 0x14001dbc5
mov eax, dword [rsi + 0x14]
imul eax, r9d
cdqe
imul rax, rax, 0x51eb851f
mov rdx, rax
shr rdx, 0x3f
sar rax, 0x25
add eax, edx
lea edx, [r9 + 1]
cmp eax, edx
cmovle eax, edx
mov ebx, 0xd
cmp eax, 0xe
jl 0x14001db0b
or eax, 1
mov edx, 0xaaaaaaab
imul rdx, rax
shr rdx, 0x21
lea r8d, [rdx + rdx*2]
lea ebx, [rax + 2]
mov edx, eax
sub edx, r8d
cmovne ebx, eax
cmp ebx, 0x19
jb 0x14001db0b
cmp edx, 1
mov eax, 4
cmovne eax, edx
test edx, edx
mov r8d, 2
cmovne r8d, eax
jmp 0x14001dada
mov qword [r12 + 8], 0
xor r14d, r14d
mov eax, r14d
add rsp, 0x38
pop rbx
pop rbp
pop rdi
pop rsi
pop r12
pop r13
pop r14
pop r15
ret
add ebx, r8d
mov eax, 6
sub eax, r8d
mov r8d, eax
cmp ebx, 0x18
jle 0x14001db0b
mov r10d, 0xb
lea r11d, [r10 - 6]
mov eax, ebx
cdq
idiv r11d
test edx, edx
je 0x14001dac7
add r11d, 2
mov eax, ebx
cdq
idiv r11d
test edx, edx
je 0x14001dac7
mov eax, r10d
imul eax, r10d
add r10d, 6
cmp eax, ebx
jle 0x14001dae0
lea r8d, [rbx*8]
shl r9d, 3
mov edx, r9d
call qword [rsi + 0x28]
test rax, rax
je 0x14001dab0
test ebx, ebx
jle 0x14001dc40
mov edx, ebx
mov ecx, edx
and ecx, 7
cmp ebx, 8
jae 0x14001dbf5
xor r8d, r8d
jmp 0x14001dc20
mov r8d, r9d
and r8d, 0xfffffffe
lea rdx, [rsp + 0x20]
xor eax, eax
jmp 0x14001db70
mov rdx, r10
add rax, 2
cmp rax, r8
je 0x14001da28
mov r11, qword [rcx + rax*8]
test r11, r11
je 0x14001dba0
nop dword [rax]
mov r10, r11
mov qword [rdx + 0x10], r11
mov r11, qword [r11 + 0x10]
mov rdx, r10
test r11, r11
jne 0x14001db80
jmp 0x14001dba3
mov r10, rdx
mov r11, qword [rcx + rax*8 + 8]
test r11, r11
je 0x14001db60
nop dword [rax]
mov rdx, r11
mov qword [r10 + 0x10], r11
mov r11, qword [r11 + 0x10]
mov r10, rdx
test r11, r11
jne 0x14001dbb0
jmp 0x14001db63
mov rax, qword [rcx + rax*8]
test rax, rax
je 0x14001da32
nop word cs:[rax + rax]
mov qword [rdx + 0x10], rax
mov rdx, rax
mov rax, qword [rax + 0x10]
test rax, rax
jne 0x14001dbe0
jmp 0x14001da32
and edx, 0xfffffff8
xor r8d, r8d
xorps xmm0, xmm0
nop
movups xmmword [rax + r8*8], xmm0
movups xmmword [rax + r8*8 + 0x10], xmm0
movups xmmword [rax + r8*8 + 0x20], xmm0
movups xmmword [rax + r8*8 + 0x30], xmm0
add r8, 8
cmp rdx, r8
jne 0x14001dc00
test rcx, rcx
je 0x14001dc40
lea rdx, [rax + r8*8]
xor r8d, r8d
nop dword [rax]
mov qword [rdx + r8*8], 0
inc r8
cmp rcx, r8
jne 0x14001dc30
mov dword [rsi + 0x10], ebx
mov qword [rsi + 0x48], rax
mov rbx, qword [rsp + 0x30]
test rbx, rbx
je 0x14001dab3
nop word cs:[rax + rax]
mov rcx, qword [rbx]
mov rdi, qword [rbx + 0x10]
mov ebp, dword [rsi + 0x10]
call qword [rsi + 8]
mov ecx, eax
cdq
idiv ebp
xor ecx, ebp
sar ecx, 0x1f
and ecx, ebp
test edx, edx
cmove ecx, edx
add ecx, edx
mov rax, qword [rsi + 0x48]
movsxd rcx, ecx
mov rdx, qword [rax + rcx*8]
mov qword [rbx + 0x10], rdx
mov qword [rax + rcx*8], rbx
mov rbx, rdi
test rdi, rdi
jne 0x14001dc60
jmp 0x14001dab3