Function at 0x14003c5a0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rcx
push rbx
push rsi
push rdi
sub rsp, 0x50
mov rdi, rcx
xor ebx, ebx
mov rcx, qword [rcx]
mov rsi, rdx
mov dword [rsp + 0x88], ebx
cmp dword [rdi + 0x14], ebx
jle 0x14003cbd4
mov qword [rsp + 0x78], rbp
mov qword [rsp + 0x48], r12
mov qword [rsp + 0x40], r13
mov qword [rsp + 0x38], r14
mov qword [rsp + 0x30], r15
movsxd rax, dword [rdi + 0x1c]
mov r14, rcx
mov ebp, dword [r14]
lea rcx, [rcx + rax*4]
dec ebp
mov qword [rsp + 0x20], rcx
test ebp, ebp
jle 0x14003cba9
mov r8d, dword [rdi + 0xc]
add r14, 4
mov rdx, qword [rsi]
add r8d, ebx
xor r9d, r9d
mov r10d, dword [r14]
mov eax, dword [rdx + 0xc]
imul eax, r8d
sub r8d, dword [rsi + 0x18]
movsxd rcx, eax
add rcx, qword [rdx]
mov qword [rsi + 0x20], rcx
mov rcx, qword [rsi + 8]
imul r8d, dword [rcx + 0xc]
movsxd rax, r8d
add rax, qword [rcx]
sub ebp, 1
mov qword [rsi + 0x28], rax
mov dword [rsp + 0x80], ebp
js 0x14003ca7e
nop dword [rax]
mov r15d, dword [r14 + 4]
lea r14, [r14 + 8]
mov r12d, dword [r14]
mov edi, r10d
mov eax, r12d
sar edi, 8
sar eax, 8
cmp eax, edi
jne 0x14003c67d
mov eax, r12d
sub eax, r10d
imul eax, r15d
add r9d, eax
jmp 0x14003ca5f
movzx ecx, r10b
mov edx, 0x100
sub edx, ecx
imul edx, r15d
add edx, r9d
sar edx, 8
test edx, edx
jle 0x14003c7e6
mov rcx, qword [rsi]
mov ecx, dword [rcx + 0x10]
imul ecx, edi
movsxd rbx, ecx
add rbx, qword [rsi + 0x20]
mov rcx, qword [rsi + 8]
cmp edx, 0xff
jl 0x14003c6eb
mov edx, edi
sub edx, dword [rsi + 0x14]
imul edx, dword [rcx + 0x10]
mov rcx, qword [rsi + 0x28]
movsxd rdx, edx
mov r8d, dword [rdx + rcx]
mov r11d, r8d
shr r11d, 8
and r8d, 0xff00ff
and r11d, 0xff00ff
imul r11d, dword [rsi + 0x10]
imul r8d, dword [rsi + 0x10]
jmp 0x14003c728
mov r9d, dword [rsi + 0x10]
imul r9d, edx
mov edx, edi
sub edx, dword [rsi + 0x14]
imul edx, dword [rcx + 0x10]
mov rcx, qword [rsi + 0x28]
sar r9d, 8
movsxd rdx, edx
mov r8d, dword [rdx + rcx]
mov r11d, r8d
shr r11d, 8
and r8d, 0xff00ff
and r11d, 0xff00ff
imul r11d, r9d
imul r8d, r9d
shr r8d, 8
mov edx, 0x100
and r8d, 0xff00ff
shr r11d, 8
and r11d, 0xff00ff
mov ecx, r11d
shr ecx, 0x10
sub edx, ecx
mov ecx, dword [rbx]
mov r10d, ecx
shr ecx, 8
and ecx, 0xff00ff
and r10d, 0xff00ff
imul ecx, edx
imul r10d, edx
mov edx, 0x100
shr ecx, 8
and ecx, 0xff00ff
shr r10d, 8
add r11d, ecx
and r10d, 0xff00ff
add r10d, r8d
mov ecx, r11d
shr ecx, 8
mov r8d, 0x100
and ecx, 0xff00ff
sub r8d, ecx
mov ecx, r11d
shl ecx, 8
shl r8d, 8
or r8d, ecx
mov ecx, r10d
shr ecx, 8
and ecx, 0xff00ff
sub edx, ecx
mov ecx, r11d
or edx, r10d
shr ecx, 8
xor r8d, edx
shl r11d, 8
and ecx, 0xff00ff
mov edx, 0x100
sub edx, ecx
and r8d, 0xff00ff
shl edx, 8
or edx, r11d
xor r8d, edx
mov dword [rbx], r8d
test r15d, r15d
jle 0x14003ca57
inc edi
sub eax, edi
test eax, eax
jle 0x14003ca57
mov r10, qword [rsi]
mov ebp, dword [rsi + 0x10]
imul ebp, r15d
movsxd r8, dword [r10 + 0x10]
mov ecx, r8d
imul ecx, edi
sub edi, dword [rsi + 0x14]
sar ebp, 8
movsxd rbx, ecx
add rbx, qword [rsi + 0x20]
cmp ebp, 0xfe
jge 0x14003c934
mov r13, r8
nop dword [rax + rax]
mov rcx, qword [rsi + 8]
dec eax
mov edx, dword [rcx + 0x10]
mov rcx, qword [rsi + 0x28]
imul edx, edi
inc edi
movsxd r8, edx
mov edx, 0x100
mov r9d, dword [r8 + rcx]
mov r11d, r9d
shr r11d, 8
and r9d, 0xff00ff
and r11d, 0xff00ff
imul r9d, ebp
imul r11d, ebp
mov r8d, 0x100
shr r9d, 8
shr r11d, 8
and r9d, 0xff00ff
and r11d, 0xff00ff
mov ecx, r11d
shr ecx, 0x10
sub edx, ecx
mov ecx, dword [rbx]
mov r10d, ecx
shr ecx, 8
and ecx, 0xff00ff
and r10d, 0xff00ff
imul ecx, edx
imul r10d, edx
mov edx, 0x100
shr ecx, 8
and ecx, 0xff00ff
shr r10d, 8
add r11d, ecx
and r10d, 0xff00ff
add r10d, r9d
mov ecx, r11d
shr ecx, 8
and ecx, 0xff00ff
sub r8d, ecx
mov ecx, r11d
shl ecx, 8
shl r8d, 8
or r8d, ecx
mov ecx, r10d
shr ecx, 8
and ecx, 0xff00ff
sub edx, ecx
mov ecx, r11d
or edx, r10d
shr ecx, 8
xor r8d, edx
shl r11d, 8
and ecx, 0xff00ff
and r8d, 0xff00ff
mov edx, 0x100
sub edx, ecx
shl edx, 8
or edx, r11d
xor r8d, edx
mov dword [rbx], r8d
add rbx, r13
test eax, eax
jg 0x14003c830
jmp 0x14003ca50
mov r9, qword [rsi + 8]
movsxd rdx, dword [r9 + 0x10]
mov ecx, edx
imul ecx, edi
movsxd r11, ecx
add r11, qword [rsi + 0x28]
cmp r8d, edx
jne 0x14003c971
cmp dword [r9 + 8], 1
jne 0x14003c971
cmp dword [r10 + 8], 1
jne 0x14003c971
imul edx, eax
mov rcx, rbx
movsxd r8, edx
mov rdx, r11
call sub.VCRUNTIME140.dll_memcpy
jmp 0x14003ca50
mov rdi, r8
mov rbp, rdx
nop word [rax + rax]
mov r8d, dword [r11]
mov edx, 0x100
mov r10d, r8d
add r11, rbp
and r8d, 0xff00ff
shr r10d, 8
and r10d, 0xff00ff
dec eax
mov ecx, r10d
shr ecx, 0x10
sub edx, ecx
mov ecx, dword [rbx]
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
add r10d, ecx
and r9d, 0xff00ff
add r9d, r8d
mov ecx, r10d
shr ecx, 8
mov r8d, 0x100
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 [rbx], r8d
add rbx, rdi
test eax, eax
jg 0x14003c980
mov ebp, dword [rsp + 0x80]
movzx r9d, r12b
imul r9d, r15d
sub ebp, 1
mov r10d, r12d
mov dword [rsp + 0x80], ebp
jns 0x14003c650
mov ebx, dword [rsp + 0x88]
mov rdi, qword [rsp + 0x70]
sar r9d, 8
test r9d, r9d
jle 0x14003cba4
mov rax, qword [rsi]
sar r10d, 8
mov eax, dword [rax + 0x10]
imul eax, r10d
sub r10d, dword [rsi + 0x14]
movsxd r11, eax
mov rax, qword [rsi + 8]
add r11, qword [rsi + 0x20]
imul r10d, dword [rax + 0x10]
mov rax, qword [rsi + 0x28]
movsxd rcx, r10d
mov edx, dword [rcx + rax]
mov r10d, edx
shr r10d, 8
and edx, 0xff00ff
and r10d, 0xff00ff
mov ecx, 0x100
cmp r9d, 0xff
jl 0x14003cae4
imul r10d, dword [rsi + 0x10]
imul edx, dword [rsi + 0x10]
jmp 0x14003caf8
mov r8d, dword [rsi + 0x10]
imul r8d, r9d
sar r8d, 8
imul r10d, r8d
imul edx, r8d
shr edx, 8
and edx, 0xff00ff
shr r10d, 8
and r10d, 0xff00ff
mov eax, r10d
shr eax, 0x10
sub ecx, eax
mov eax, dword [r11]
mov r9d, eax
shr eax, 8
and eax, 0xff00ff
and r9d, 0xff00ff
imul eax, ecx
imul r9d, ecx
mov ecx, 0x100
shr eax, 8
and eax, 0xff00ff
shr r9d, 8
add r10d, eax
and r9d, 0xff00ff
add r9d, edx
mov eax, r10d
shr eax, 8
mov edx, 0x100
and eax, 0xff00ff
sub edx, eax
mov eax, r10d
shl eax, 8
shl edx, 8
or edx, eax
mov eax, r9d
shr eax, 8
and eax, 0xff00ff
sub ecx, eax
mov eax, r10d
or ecx, r9d
shr eax, 8
xor edx, ecx
shl r10d, 8
and eax, 0xff00ff
mov ecx, 0x100
sub ecx, eax
and edx, 0xff00ff
shl ecx, 8
or ecx, r10d
xor edx, ecx
mov dword [r11], edx
mov rcx, qword [rsp + 0x20]
inc ebx
mov dword [rsp + 0x88], ebx
cmp ebx, dword [rdi + 0x14]
jl 0x14003c5e0
mov r15, qword [rsp + 0x30]
mov r14, qword [rsp + 0x38]
mov r13, qword [rsp + 0x40]
mov r12, qword [rsp + 0x48]
mov rbp, qword [rsp + 0x78]
add rsp, 0x50
pop rdi
pop rsi
pop rbx
ret