Function at 0x14004cc20
Capabilities:
Encode data using xor

Disassembly:
push rbx
push r12
sub rsp, 0x48
mov r12, qword [rcx + 0x10]
mov rbx, rdx
movsxd rax, dword [rcx + 0x1c]
shl rax, 4
add rax, r12
mov qword [rsp + 0x70], r12
mov qword [rsp + 0x78], rax
cmp r12, rax
je 0x14004cf28
mov qword [rsp + 0x68], rbp
mov qword [rsp + 0x40], rsi
mov qword [rsp + 0x38], rdi
mov qword [rsp + 0x30], r13
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x20], r15
nop dword [rax + rax]
mov edi, dword [r12 + 4]
mov eax, dword [r12 + 0xc]
mov r13d, dword [r12]
add eax, edi
mov r15d, dword [r12 + 8]
cmp edi, eax
jge 0x14004cef6
mov r12d, eax
mov rsi, qword [rbx]
mov r11d, r13d
mov r10, qword [rbx + 8]
mov ebp, r15d
sub r11d, dword [rbx + 0x14]
mov eax, dword [rsi + 0xc]
imul eax, edi
movsxd rdx, eax
mov eax, edi
sub eax, dword [rbx + 0x18]
add rdx, qword [rsi]
mov qword [rbx + 0x20], rdx
imul eax, dword [r10 + 0xc]
movsxd r14, eax
add r14, qword [r10]
mov qword [rbx + 0x28], r14
movsxd r9, dword [rsi + 0x10]
mov eax, r9d
imul eax, r13d
cdqe
add rax, rdx
cmp dword [rbx + 0x10], 0xfe
jge 0x14004cdde
mov rsi, r9
nop word [rax + rax]
mov rcx, qword [rbx + 8]
dec ebp
mov edx, dword [rcx + 0x10]
mov rcx, qword [rbx + 0x28]
imul edx, r11d
inc r11d
movsxd r8, edx
movzx edx, byte [r8 + rcx]
mov r8d, 0x100
mov r10d, edx
shl r10d, 0x10
or r10d, edx
mov edx, 0x100
imul r10d, dword [rbx + 0x10]
shr r10d, 8
and r10d, 0xff00ff
mov ecx, r10d
shr ecx, 0x10
sub edx, ecx
mov ecx, dword [rax]
mov r9d, ecx
shr ecx, 8
and ecx, 0xff00ff
and r9d, 0xff00ff
imul ecx, edx
imul r9d, edx
mov edx, 0x100
shr ecx, 8
and ecx, 0xff00ff
shr r9d, 8
and r9d, 0xff00ff
add r9d, r10d
add r10d, ecx
mov ecx, r10d
shr ecx, 8
and ecx, 0xff00ff
sub r8d, ecx
mov ecx, r10d
shl ecx, 8
shl r8d, 8
or r8d, ecx
mov ecx, r9d
shr ecx, 8
and ecx, 0xff00ff
sub edx, ecx
mov ecx, r10d
or edx, r9d
shr ecx, 8
xor r8d, edx
shl r10d, 8
and ecx, 0xff00ff
and r8d, 0xff00ff
mov edx, 0x100
sub edx, ecx
shl edx, 8
or edx, r10d
xor r8d, edx
mov dword [rax], r8d
add rax, rsi
test ebp, ebp
jg 0x14004ccf0
jmp 0x14004cee6
movsxd r8, dword [r10 + 0x10]
mov ecx, r8d
imul ecx, r11d
movsxd r11, ecx
add r11, r14
cmp r9d, r8d
jne 0x14004ce18
cmp dword [r10 + 8], 1
jne 0x14004ce18
cmp dword [rsi + 8], 1
jne 0x14004ce18
imul r8d, r15d
mov rdx, r11
mov rcx, rax
movsxd r8, r8d
call sub.VCRUNTIME140.dll_memcpy
jmp 0x14004cee6
mov rsi, r9
mov r14, r8
nop
movzx ecx, byte [r11]
mov edx, 0x100
mov r10d, ecx
mov r8d, 0x100
shl r10d, 0x10
add r11, r14
or r10d, ecx
dec ebp
mov ecx, r10d
shr ecx, 0x10
sub edx, ecx
mov ecx, dword [rax]
mov r9d, ecx
shr ecx, 8
and ecx, 0xff00ff
and r9d, 0xff00ff
imul ecx, edx
imul r9d, edx
mov edx, 0x100
shr ecx, 8
and ecx, 0xff00ff
shr r9d, 8
and r9d, 0xff00ff
add r9d, r10d
add r10d, ecx
mov ecx, r10d
shr ecx, 8
and ecx, 0xff00ff
sub r8d, ecx
mov ecx, r10d
shl ecx, 8
shl r8d, 8
or r8d, ecx
mov ecx, r9d
shr ecx, 8
and ecx, 0xff00ff
sub edx, ecx
mov ecx, r10d
or edx, r9d
shr ecx, 8
xor r8d, edx
shl r10d, 8
and ecx, 0xff00ff
and r8d, 0xff00ff
mov edx, 0x100
sub edx, ecx
shl edx, 8
or edx, r10d
xor r8d, edx
mov dword [rax], r8d
add rax, rsi
test ebp, ebp
jg 0x14004ce20
inc edi
cmp edi, r12d
jl 0x14004cc90
mov r12, qword [rsp + 0x70]
add r12, 0x10
mov qword [rsp + 0x70], r12
cmp r12, qword [rsp + 0x78]
jne 0x14004cc70
mov r15, qword [rsp + 0x20]
mov r14, qword [rsp + 0x28]
mov r13, qword [rsp + 0x30]
mov rdi, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x68]
add rsp, 0x48
pop r12
pop rbx
ret