Function at 0x1400403a8
Capabilities:
Encode data using xor

Disassembly:
test r8, r8
je 0x14004089c
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x48
mov rbp, r8
mov r13, r9
mov rdi, rdx
shr rbp, 4
cmp byte [rcx], 0
mov rsi, rcx
je 0x1400403e3
mov r8, rbp
call fcn.14003fae4
jmp 0x14004088c
lea r12, [rcx + 8]
mov qword [rsp + 0x20], r12
mov rcx, r12
test rbp, rbp
je 0x14004086e
lea r12, [0x140000000]
cmp byte [rsi + 1], 0
mov edx, dword [rdi + 4]
mov r8d, dword [rdi + 8]
mov r14d, dword [rdi + 0xc]
je 0x140040421
mov eax, dword [rcx]
xor edx, dword [rcx + 4]
xor r8d, dword [rcx + 8]
xor eax, dword [rdi]
xor r14d, dword [rcx + 0xc]
jmp 0x140040423
mov eax, dword [rdi]
mov r9d, dword [rsi + 0x24]
mov ebx, dword [rsi + 0x18]
mov r10d, dword [rsi + 0x20]
mov r11d, dword [rsi + 0x1c]
xor ebx, eax
xor r10d, r8d
xor r11d, edx
xor r9d, r14d
mov dword [rsp + 0x30], r10d
mov eax, r9d
mov dword [rsp + 0x34], r9d
mov dword [rsp + 0x2c], r11d
shr eax, 0x18
mov dword [rsp + 0x28], ebx
mov r15d, 1
movzx edx, al
mov eax, r10d
mov r8d, dword [r12 + rdx*4 + 0x8b3f0]
shr eax, 0x10
movzx ecx, al
mov eax, r11d
xor r8d, dword [r12 + rcx*4 + 0x8b7f0]
shr eax, 8
movzx ecx, al
movzx eax, bl
xor r8d, dword [r12 + rcx*4 + 0x8bbf0]
xor r8d, dword [r12 + rax*4 + 0x8bff0]
mov eax, r9d
shr r9d, 8
shr eax, 0x10
mov dword [r13], r8d
movzx edx, al
mov eax, r10d
mov r8d, dword [r12 + rdx*4 + 0x8b7f0]
shr eax, 8
movzx edx, r9b
movzx ecx, al
mov eax, ebx
xor r8d, dword [r12 + rcx*4 + 0x8bbf0]
shr eax, 0x18
movzx ecx, al
movzx eax, r11b
xor r8d, dword [r12 + rcx*4 + 0x8b3f0]
xor r8d, dword [r12 + rax*4 + 0x8bff0]
mov eax, r11d
shr r11d, 0x10
shr eax, 0x18
mov dword [r13 + 4], r8d
mov r8d, dword [r12 + rdx*4 + 0x8bbf0]
movzx ecx, al
mov eax, ebx
shr ebx, 8
xor r8d, dword [r12 + rcx*4 + 0x8b3f0]
shr eax, 0x10
movzx ecx, al
movzx eax, r10b
shr r10d, 0x18
xor r8d, dword [r12 + rcx*4 + 0x8b7f0]
movzx ecx, r10b
xor r8d, dword [r12 + rax*4 + 0x8bff0]
movzx eax, r11b
mov dword [r13 + 8], r8d
mov edx, dword [r12 + rcx*4 + 0x8b3f0]
xor edx, dword [r12 + rax*4 + 0x8b7f0]
movzx eax, bl
xor edx, dword [r12 + rax*4 + 0x8bbf0]
movzx eax, byte [rsp + 0x34]
xor edx, dword [r12 + rax*4 + 0x8bff0]
mov dword [r13 + 0xc], edx
mov eax, dword [rsi + 4]
dec eax
cmp eax, r15d
jle 0x1400406b7
lea r14, [rsi + 0x30]
mov r9d, dword [r14 + 4]
mov r11d, dword [r14 - 4]
mov ebx, dword [r14 - 8]
xor r11d, dword [r13 + 4]
xor ebx, dword [r13]
xor r9d, dword [r13 + 0xc]
mov r10d, dword [r13 + 8]
mov eax, r9d
mov dword [rsp + 0x34], r9d
xor r10d, dword [r14]
shr eax, 0x18
mov dword [rsp + 0x2c], r11d
movzx edx, al
mov eax, r10d
mov dword [rsp + 0x30], r10d
mov r8d, dword [r12 + rdx*4 + 0x8b3f0]
shr eax, 0x10
mov dword [rsp + 0x28], ebx
movzx ecx, al
mov eax, r11d
inc r15d
xor r8d, dword [r12 + rcx*4 + 0x8b7f0]
shr eax, 8
add r14, 0x10
movzx ecx, al
movzx eax, bl
xor r8d, dword [r12 + rcx*4 + 0x8bbf0]
xor r8d, dword [r12 + rax*4 + 0x8bff0]
mov eax, r9d
shr r9d, 8
shr eax, 0x10
mov dword [r13], r8d
movzx edx, al
mov eax, r10d
mov r8d, dword [r12 + rdx*4 + 0x8b7f0]
shr eax, 8
movzx edx, r9b
movzx ecx, al
mov eax, ebx
xor r8d, dword [r12 + rcx*4 + 0x8bbf0]
shr eax, 0x18
movzx ecx, al
movzx eax, r11b
xor r8d, dword [r12 + rcx*4 + 0x8b3f0]
xor r8d, dword [r12 + rax*4 + 0x8bff0]
mov eax, r11d
shr r11d, 0x10
shr eax, 0x18
mov dword [r13 + 4], r8d
mov r8d, dword [r12 + rdx*4 + 0x8bbf0]
movzx ecx, al
mov eax, ebx
shr ebx, 8
xor r8d, dword [r12 + rcx*4 + 0x8b3f0]
shr eax, 0x10
movzx ecx, al
movzx eax, r10b
shr r10d, 0x18
xor r8d, dword [r12 + rcx*4 + 0x8b7f0]
movzx ecx, r10b
xor r8d, dword [r12 + rax*4 + 0x8bff0]
movzx eax, r11b
mov dword [r13 + 8], r8d
mov edx, dword [r12 + rcx*4 + 0x8b3f0]
xor edx, dword [r12 + rax*4 + 0x8b7f0]
movzx eax, bl
xor edx, dword [r12 + rax*4 + 0x8bbf0]
movzx eax, byte [rsp + 0x34]
xor edx, dword [r12 + rax*4 + 0x8bff0]
mov dword [r13 + 0xc], edx
mov eax, dword [rsi + 4]
dec eax
cmp r15d, eax
jl 0x14004056c
mov eax, dword [rsi + 4]
mov r8d, dword [r13]
dec eax
movsxd rcx, eax
add rcx, rcx
xor r8d, dword [rsi + rcx*8 + 0x18]
mov r9d, dword [rsi + rcx*8 + 0x1c]
mov r10d, dword [rsi + rcx*8 + 0x20]
mov edx, dword [rsi + rcx*8 + 0x24]
xor r9d, dword [r13 + 4]
xor r10d, dword [r13 + 8]
xor edx, dword [r13 + 0xc]
movzx eax, r8b
mov dword [rsp + 0x28], r8d
mov al, byte [r12 + rax*4 + 0x8bff1]
mov dword [rsp + 0x34], edx
mov dword [rsp + 0x2c], r9d
mov byte [r13], al
mov eax, r9d
mov dword [rsp + 0x30], r10d
shr eax, 8
movzx ecx, al
mov al, byte [r12 + rcx*4 + 0x8bff1]
mov byte [r13 + 1], al
mov eax, r10d
shr eax, 0x10
movzx ecx, al
mov al, byte [r12 + rcx*4 + 0x8bff1]
mov byte [r13 + 2], al
mov eax, edx
shr eax, 0x18
movzx ecx, al
mov al, byte [r12 + rcx*4 + 0x8bff1]
mov byte [r13 + 3], al
movzx eax, r9b
mov al, byte [r12 + rax*4 + 0x8bff1]
mov byte [r13 + 4], al
mov eax, r10d
shr eax, 8
movzx ecx, al
mov al, byte [r12 + rcx*4 + 0x8bff1]
mov byte [r13 + 5], al
mov eax, edx
shr edx, 8
shr eax, 0x10
movzx ecx, al
mov al, byte [r12 + rcx*4 + 0x8bff1]
mov byte [r13 + 6], al
mov eax, r8d
shr eax, 0x18
movzx ecx, al
mov al, byte [r12 + rcx*4 + 0x8bff1]
mov byte [r13 + 7], al
movzx eax, r10b
mov al, byte [r12 + rax*4 + 0x8bff1]
mov byte [r13 + 8], al
movzx eax, dl
mov al, byte [r12 + rax*4 + 0x8bff1]
mov byte [r13 + 9], al
mov eax, r8d
shr r8d, 8
shr eax, 0x10
movzx ecx, al
mov al, byte [r12 + rcx*4 + 0x8bff1]
mov byte [r13 + 0xa], al
mov eax, r9d
shr r9d, 0x10
shr eax, 0x18
shr r10d, 0x18
movzx ecx, al
mov al, byte [r12 + rcx*4 + 0x8bff1]
mov byte [r13 + 0xb], al
movzx eax, byte [rsp + 0x34]
mov al, byte [r12 + rax*4 + 0x8bff1]
mov byte [r13 + 0xc], al
movzx eax, r8b
mov al, byte [r12 + rax*4 + 0x8bff1]
mov byte [r13 + 0xd], al
movzx eax, r9b
mov al, byte [r12 + rax*4 + 0x8bff1]
mov byte [r13 + 0xe], al
movzx eax, r10b
add rdi, 0x10
mov al, byte [r12 + rax*4 + 0x8bff1]
mov byte [r13 + 0xf], al
movsxd rcx, dword [rsi + 4]
add rcx, rcx
mov eax, dword [rsi + rcx*8 + 0x18]
xor dword [r13], eax
mov eax, dword [rsi + rcx*8 + 0x1c]
xor dword [r13 + 4], eax
mov eax, dword [rsi + rcx*8 + 0x20]
xor dword [r13 + 8], eax
mov eax, dword [rsi + rcx*8 + 0x24]
mov rcx, r13
xor dword [r13 + 0xc], eax
add r13, 0x10
sub rbp, 1
jne 0x1400403ff
mov r12, qword [rsp + 0x20]
mov eax, dword [rcx]
mov dword [r12], eax
mov eax, dword [rcx + 4]
mov dword [r12 + 4], eax
mov eax, dword [rcx + 8]
mov dword [r12 + 8], eax
mov eax, dword [rcx + 0xc]
mov dword [r12 + 0xc], eax
add rsp, 0x48
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret