Function at 0x14003d260
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rcx
push rsi
push rdi
push r14
sub rsp, 0x50
mov rsi, rcx
xor edi, edi
mov rcx, qword [rcx]
mov r14, rdx
mov dword [rsp + 0x20], edi
cmp dword [rsi + 0x14], edi
jle 0x14003d9a8
mov qword [rsp + 0x78], rbx
mov qword [rsp + 0x48], rbp
mov qword [rsp + 0x40], r12
mov qword [rsp + 0x38], r13
mov qword [rsp + 0x30], r15
nop
movsxd rax, dword [rsi + 0x1c]
mov r15, rcx
mov r13d, dword [r15]
lea rcx, [rcx + rax*4]
dec r13d
mov qword [rsp + 0x28], rcx
test r13d, r13d
jle 0x14003d980
mov r8d, dword [rsi + 0xc]
add r15, 4
mov rdx, qword [r14]
add r8d, edi
xor ebx, ebx
mov r9d, dword [r15]
mov eax, dword [rdx + 0xc]
imul eax, r8d
sub r8d, dword [r14 + 0x18]
movsxd rcx, eax
add rcx, qword [rdx]
mov qword [r14 + 0x20], rcx
mov rcx, qword [r14 + 8]
imul r8d, dword [rcx + 0xc]
movsxd rax, r8d
add rax, qword [rcx]
sub r13d, 1
mov qword [r14 + 0x28], rax
mov dword [rsp + 0x88], r13d
js 0x14003d765
nop dword [rax]
mov ebp, dword [r15 + 4]
lea r15, [r15 + 8]
mov r12d, dword [r15]
mov esi, r9d
mov eax, r12d
sar esi, 8
sar eax, 8
cmp eax, esi
jne 0x14003d33b
mov eax, r12d
sub eax, r9d
imul eax, ebp
add ebx, eax
jmp 0x14003d747
movzx ecx, r9b
mov edi, 0x100
sub edi, ecx
imul edi, ebp
add edi, ebx
sar edi, 8
test edi, edi
jle 0x14003d56b
mov rcx, qword [r14]
mov edx, esi
sub edx, dword [r14 + 0x14]
mov ecx, dword [rcx + 0x10]
imul ecx, esi
cmp edi, 0xff
jl 0x14003d469
movsxd rdi, ecx
mov rcx, qword [r14 + 8]
add rdi, qword [r14 + 0x20]
imul edx, dword [rcx + 0x10]
mov r10d, dword [rdi]
movsxd r8, edx
mov edx, 0x100
add r8, qword [r14 + 0x28]
movzx ebx, byte [r8 + 1]
movzx r11d, byte [r8 + 2]
or ebx, 0xff0000
imul ebx, dword [r14 + 0x10]
shl r11d, 0x10
shr ebx, 8
and ebx, 0xff00ff
mov ecx, ebx
shr ecx, 0x10
sub edx, ecx
movzx ecx, byte [r8]
or r11d, ecx
mov r8d, 0x100
imul r11d, dword [r14 + 0x10]
mov ecx, r10d
and ecx, 0xff00ff
shr r10d, 8
imul ecx, edx
and r10d, 0xff00ff
imul r10d, edx
mov edx, 0x100
shr r11d, 8
and r11d, 0xff00ff
shr ecx, 8
and ecx, 0xff00ff
shr r10d, 8
add r11d, ecx
and r10d, 0xff00ff
add ebx, r10d
mov ecx, ebx
shr ecx, 8
and ecx, 0xff00ff
sub r8d, ecx
mov ecx, ebx
shl ecx, 8
shl r8d, 8
or r8d, ecx
mov ecx, r11d
shr ecx, 8
and ecx, 0xff00ff
sub edx, ecx
mov ecx, ebx
or edx, r11d
shr ecx, 8
xor r8d, edx
shl ebx, 8
and ecx, 0xff00ff
mov edx, 0x100
sub edx, ecx
and r8d, 0xff00ff
shl edx, 8
or edx, ebx
xor r8d, edx
mov dword [rdi], r8d
jmp 0x14003d56b
imul edi, dword [r14 + 0x10]
movsxd rbx, ecx
mov rcx, qword [r14 + 8]
add rbx, qword [r14 + 0x20]
sar edi, 8
imul edx, dword [rcx + 0x10]
mov r9d, dword [rbx]
movsxd r8, edx
mov edx, 0x100
add r8, qword [r14 + 0x28]
movzx r11d, byte [r8 + 1]
movzx r10d, byte [r8 + 2]
or r11d, 0xff0000
shl r10d, 0x10
imul r11d, edi
shr r11d, 8
and r11d, 0xff00ff
mov ecx, r11d
shr ecx, 0x10
sub edx, ecx
movzx ecx, byte [r8]
or r10d, ecx
mov r8d, 0x100
mov ecx, r9d
imul r10d, edi
and ecx, 0xff00ff
shr r9d, 8
imul ecx, edx
and r9d, 0xff00ff
imul r9d, edx
mov edx, 0x100
shr r10d, 8
and r10d, 0xff00ff
shr ecx, 8
and ecx, 0xff00ff
shr r9d, 8
add r10d, ecx
and r9d, 0xff00ff
add r11d, 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
mov edx, 0x100
sub edx, ecx
and r8d, 0xff00ff
shl edx, 8
or edx, r11d
xor r8d, edx
mov dword [rbx], r8d
test ebp, ebp
jle 0x14003d740
inc esi
sub eax, esi
test eax, eax
jle 0x14003d740
mov r11, qword [r14]
mov edi, dword [r14 + 0x10]
imul edi, ebp
movsxd r8, dword [r11 + 0x10]
mov ecx, r8d
imul ecx, esi
sub esi, dword [r14 + 0x14]
sar edi, 8
movsxd rbx, ecx
add rbx, qword [r14 + 0x20]
cmp edi, 0xfe
jge 0x14003d6c1
mov r13, r8
mov rcx, qword [r14 + 8]
dec eax
mov r9d, dword [rbx]
mov edx, dword [rcx + 0x10]
imul edx, esi
inc esi
movsxd r8, edx
mov edx, 0x100
add r8, qword [r14 + 0x28]
movzx r11d, byte [r8 + 1]
movzx r10d, byte [r8 + 2]
or r11d, 0xff0000
shl r10d, 0x10
imul r11d, edi
shr r11d, 8
and r11d, 0xff00ff
mov ecx, r11d
shr ecx, 0x10
sub edx, ecx
movzx ecx, byte [r8]
or r10d, ecx
mov r8d, 0x100
mov ecx, r9d
imul r10d, edi
and ecx, 0xff00ff
shr r9d, 8
imul ecx, edx
and r9d, 0xff00ff
imul r9d, edx
mov edx, 0x100
shr r10d, 8
and r10d, 0xff00ff
shr ecx, 8
and ecx, 0xff00ff
shr r9d, 8
add r10d, ecx
and r9d, 0xff00ff
add r11d, 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 0x14003d5b0
mov r13d, dword [rsp + 0x88]
jmp 0x14003d740
mov r10, qword [r14 + 8]
movsxd rdx, dword [r10 + 0x10]
mov ecx, edx
imul ecx, esi
movsxd r9, ecx
add r9, qword [r14 + 0x28]
cmp r8d, edx
jne 0x14003d6fb
cmp dword [r10 + 8], 1
jne 0x14003d6fb
cmp dword [r11 + 8], 1
jne 0x14003d6fb
imul edx, eax
mov rcx, rbx
movsxd r8, edx
mov rdx, r9
call sub.VCRUNTIME140.dll_memcpy
jmp 0x14003d740
mov r10, r8
mov r8, rdx
movzx ecx, word [r9]
dec eax
movzx edx, byte [r9 + 2]
add r9, r8
shl edx, 8
mov word [rsp + 0x80], cx
movzx ecx, byte [rsp + 0x81]
or edx, ecx
movzx ecx, byte [rsp + 0x80]
shl edx, 8
or edx, ecx
or edx, 0xff000000
mov dword [rbx], edx
add rbx, r10
test eax, eax
jg 0x14003d701
movzx ebx, r12b
imul ebx, ebp
sub r13d, 1
mov r9d, r12d
mov dword [rsp + 0x88], r13d
jns 0x14003d310
mov edi, dword [rsp + 0x20]
mov rsi, qword [rsp + 0x70]
sar ebx, 8
test ebx, ebx
jle 0x14003d97b
mov rax, qword [r14]
sar r9d, 8
mov eax, dword [rax + 0x10]
imul eax, r9d
sub r9d, dword [r14 + 0x14]
cmp ebx, 0xff
jl 0x14003d885
movsxd rbx, eax
mov r8d, 0x100
mov rax, qword [r14 + 8]
mov edx, 0x100
add rbx, qword [r14 + 0x20]
imul r9d, dword [rax + 0x10]
movsxd rcx, r9d
add rcx, qword [r14 + 0x28]
mov r9d, dword [rbx]
movzx r11d, byte [rcx + 1]
movzx r10d, byte [rcx + 2]
or r11d, 0xff0000
imul r11d, dword [r14 + 0x10]
shl r10d, 0x10
shr r11d, 8
and r11d, 0xff00ff
mov eax, r11d
shr eax, 0x10
sub r8d, eax
movzx eax, byte [rcx]
or r10d, eax
mov ecx, 0x100
imul r10d, dword [r14 + 0x10]
mov eax, r9d
and eax, 0xff00ff
shr r9d, 8
imul eax, r8d
and r9d, 0xff00ff
imul r9d, r8d
shr r10d, 8
and r10d, 0xff00ff
shr eax, 8
and eax, 0xff00ff
shr r9d, 8
add r10d, eax
and r9d, 0xff00ff
add r11d, r9d
mov eax, r11d
shr eax, 8
and eax, 0xff00ff
sub edx, eax
mov eax, r11d
shl eax, 8
shl edx, 8
or edx, eax
mov eax, r10d
shr eax, 8
and eax, 0xff00ff
sub ecx, eax
mov eax, r11d
or ecx, r10d
shr eax, 8
xor edx, ecx
shl r11d, 8
and eax, 0xff00ff
mov ecx, 0x100
sub ecx, eax
and edx, 0xff00ff
shl ecx, 8
or ecx, r11d
xor edx, ecx
mov dword [rbx], edx
jmp 0x14003d97b
imul ebx, dword [r14 + 0x10]
mov edx, 0x100
movsxd r11, eax
mov rax, qword [r14 + 8]
add r11, qword [r14 + 0x20]
sar ebx, 8
imul r9d, dword [rax + 0x10]
mov r8d, dword [r11]
movsxd rcx, r9d
add rcx, qword [r14 + 0x28]
movzx r10d, byte [rcx + 1]
movzx r9d, byte [rcx + 2]
or r10d, 0xff0000
shl r9d, 0x10
imul r10d, ebx
shr r10d, 8
and r10d, 0xff00ff
mov eax, r10d
shr eax, 0x10
sub edx, eax
movzx eax, byte [rcx]
or r9d, eax
mov ecx, 0x100
mov eax, r8d
imul r9d, ebx
and eax, 0xff00ff
shr r8d, 8
imul eax, edx
and r8d, 0xff00ff
imul r8d, edx
mov edx, 0x100
shr r9d, 8
and r9d, 0xff00ff
shr eax, 8
and eax, 0xff00ff
shr r8d, 8
add r9d, eax
and r8d, 0xff00ff
add r10d, r8d
mov eax, r10d
shr eax, 8
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 + 0x28]
inc edi
mov dword [rsp + 0x20], edi
cmp edi, dword [rsi + 0x14]
jl 0x14003d2a0
mov r15, qword [rsp + 0x30]
mov r13, qword [rsp + 0x38]
mov r12, qword [rsp + 0x40]
mov rbp, qword [rsp + 0x48]
mov rbx, qword [rsp + 0x78]
add rsp, 0x50
pop r14
pop rdi
pop rsi
ret