Function at 0x14018de30
Capabilities:
Encode data using xor

Disassembly:
push r15
push r14
push r13
push r12
push rbp
push rdi
push rsi
push rbx
sub rsp, 0x58
mov rax, qword [rsp + 0xc0]
movq xmm0, qword [rax]
mov eax, dword [rsp + 0xc8]
mov r10, rcx
mov r15d, r8d
lea r11d, [r8 - 8]
mov rdi, r9
test eax, eax
je 0x14018dfc0
test r11d, r11d
js 0x14018e318
mov r14d, r11d
mov dword [rsp + 0x30], r11d
lea rbp, [rsp + 0x48]
mov rbx, rcx
shr r14d, 3
mov qword [rsp + 0xa0], rcx
mov r13, rdx
lea r9d, [r14 + 1]
shl r9, 3
mov qword [rsp + 0x20], r9
lea r12, [rdx + r9]
nop dword [rax]
movq xmm1, qword [rbx]
mov rdx, rdi
mov rcx, rbp
add r13, 8
mov r8d, 1
add rbx, 8
pxor xmm0, xmm1
movq qword [rsp + 0x48], xmm0
call fcn.14018b490
movq xmm0, qword [rsp + 0x48]
mov edx, dword [rsp + 0x48]
pshufd xmm2, xmm0, 0xe5
movd ecx, xmm2
mov r10d, edx
mov r8d, edx
mov eax, ecx
mov r11d, ecx
movzx esi, ch
shr r10d, 0x18
shr eax, 0x18
shr r11d, 0x10
movzx r10d, r10b
movzx eax, al
movzx r11d, r11b
shr r8d, 0x10
shl rax, 8
or rax, r11
movzx r11d, cl
shl rax, 8
or rax, rsi
shl rax, 8
or rax, r11
shl rax, 8
or rax, r10
movzx r10d, r8b
shl rax, 8
mov r8, rax
movzx eax, dh
or r8, r10
shl r8, 8
or r8, rax
movzx eax, dl
mov rdx, r8
shl rdx, 8
or rdx, rax
mov qword [r13 - 8], rdx
cmp r13, r12
jne 0x14018dea8
mov r9, qword [rsp + 0x20]
mov r11d, dword [rsp + 0x30]
neg r14d
mov ebx, ecx
mov r10, qword [rsp + 0xa0]
shl r14d, 3
lea eax, [r15 + r14 - 0x10]
lea r15d, [r14 + r11]
add r10, r9
mov ecx, ebx
movd r13d, xmm0
cmp eax, 0xfffffff8
je 0x14018e1c0
movsxd rax, r15d
add rax, r10
cmp r15d, 7
ja case.0x14018dfb4.0
lea r8, [0x1402bfb80]
mov r15d, r15d
movsxd rdx, dword [r8 + r15*4]
add rdx, r8
jmp rdx
pshufd xmm3, xmm0, 0xe5
movd r13d, xmm0
movd ebx, xmm3
cmp r8d, 7
jle 0x14018e308
mov r9d, r11d
lea rbp, [rsp + 0x48]
mov dword [rsp + 0x34], r11d
mov esi, ebx
shr r9d, 3
mov qword [rsp + 0xa0], r10
mov r14, r10
lea eax, [r9 + 1]
mov dword [rsp + 0x30], r9d
lea rcx, [rax*8]
mov dword [rsp + 0xb0], r8d
lea r12, [rdx + rcx]
mov qword [rsp + 0x28], rcx
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x20], rbp
mov qword [rsp + 0xa8], rdx
mov rbx, qword [rsp + 0xa8]
nop word [rax + rax]
mov ebp, r13d
mov rcx, qword [rsp + 0x20]
mov r13d, dword [r14]
mov r15d, esi
mov esi, dword [r14 + 4]
xor r8d, r8d
mov rdx, rdi
add rbx, 8
mov dword [rsp + 0x48], r13d
add r14, 8
mov dword [rsp + 0x4c], esi
call fcn.14018b490
mov ecx, dword [rsp + 0x4c]
mov edx, dword [rsp + 0x48]
xor ecx, r15d
xor edx, ebp
mov eax, ecx
mov r11d, ecx
movzx ebp, ch
mov r10d, edx
shr eax, 0x18
shr r11d, 0x10
movzx ecx, cl
mov r8d, edx
shr r10d, 0x18
movzx eax, al
movzx r11d, r11b
shr r8d, 0x10
shl rax, 8
movzx r10d, r10b
movzx r8d, r8b
or rax, r11
shl rax, 8
or rax, rbp
shl rax, 8
or rax, rcx
movzx ecx, dh
shl rax, 8
or rax, r10
shl rax, 8
or rax, r8
shl rax, 8
or rax, rcx
movzx ecx, dl
shl rax, 8
mov rdx, rax
or rdx, rcx
mov qword [rbx - 8], rdx
cmp rbx, r12
jne 0x14018e038
mov r9d, dword [rsp + 0x30]
mov r15d, dword [rsp + 0xb0]
mov ebx, esi
mov rcx, qword [rsp + 0x28]
mov r11d, dword [rsp + 0x34]
mov r10, qword [rsp + 0xa0]
neg r9d
shl r9d, 3
lea eax, [r15 + r9 - 0x10]
add r10, rcx
lea r15d, [r9 + r11]
cmp eax, 0xfffffff8
je 0x14018e1c0
mov esi, dword [r10]
mov ebp, dword [r10 + 4]
mov rdx, rdi
lea rcx, [rsp + 0x48]
xor r8d, r8d
mov dword [rsp + 0x48], esi
mov dword [rsp + 0x4c], ebp
call fcn.14018b490
mov rdi, qword [rsp + 0x38]
movsxd rax, r15d
xor ebx, dword [rsp + 0x4c]
xor r13d, dword [rsp + 0x48]
add rdi, rax
mov rax, rdi
cmp r15d, 7
ja case.0x14018e173.0
lea rcx, [0x1402bfba0]
mov r15d, r15d
movsxd rdx, dword [rcx + r15*4]
add rdx, rcx
jmp rdx
mov edx, ebx
sub rax, 1
shr edx, 0x10
mov byte [rdi - 1], dl
mov byte [rax - 1], bh
sub rax, 1
mov byte [rax - 1], bl
lea rdx, [rax - 1]
mov ecx, r13d
lea rax, [rdx - 1]
shr ecx, 0x18
mov byte [rdx - 1], cl
mov ecx, r13d
lea rdx, [rax - 1]
shr ecx, 0x10
mov byte [rax - 1], cl
mov ebx, r13d
lea rax, [rdx - 1]
mov byte [rdx - 1], bh
mov byte [rax - 1], r13b
mov ebx, ebp
mov r13d, esi
nop dword [rax]
mov eax, r13d
mov r8d, r13d
mov r11d, ebx
movzx edx, r13b
shr r8d, 0x10
movzx ecx, ah
movzx eax, bh
movzx r9d, bl
shr r13d, 0x18
mov r10d, eax
shr r11d, 0x10
shr ebx, 0x18
movzx eax, bl
movzx r11d, r11b
movzx r10d, r10b
movzx r13d, r13b
shl rax, 8
movzx r8d, r8b
movzx ecx, cl
mov rdi, qword [rsp + 0xc0]
or rax, r11
shl rax, 8
or rax, r10
shl rax, 8
or rax, r9
shl rax, 8
or rax, r13
shl rax, 8
or rax, r8
shl rax, 8
or rax, rcx
shl rax, 8
or rax, rdx
mov qword [rdi], rax
add rsp, 0x58
pop rbx
pop rsi
pop rdi
pop rbp
pop r12
pop r13
pop r14
pop r15
ret
xor ecx, ecx
movzx edx, byte [rax - 1]
sub rax, 1
shl edx, 8
or edx, ecx
movzx ecx, byte [rax - 1]
lea r8, [rax - 1]
or ecx, edx
xor ecx, ebx
movzx r9d, byte [r8 - 1]
lea rax, [r8 - 1]
shl r9d, 0x18
movzx r8d, byte [rax - 1]
lea rdx, [rax - 1]
shl r8d, 0x10
or r8d, r9d
lea rax, [rdx - 1]
movzx edx, byte [rdx - 1]
shl edx, 8
or edx, r8d
movzx eax, byte [rax - 1]
movd xmm4, ecx
or eax, edx
xor eax, r13d
movd xmm0, eax
punpckldq xmm0, xmm4
lea rcx, [rsp + 0x48]
mov r8d, 1
mov rdx, rdi
movq qword [rsp + 0x48], xmm0
call fcn.14018b490
mov r13d, dword [rsp + 0x48]
mov ebx, dword [rsp + 0x4c]
mov eax, r13d
mov r8d, r13d
mov r11d, ebx
movzx edx, r13b
shr r8d, 0x10
movzx ecx, ah
movzx eax, bh
movzx r9d, bl
shr r13d, 0x18
mov r10d, eax
mov rax, qword [rsp + 0x48]
shr r11d, 0x10
shr ebx, 0x18
mov qword [r12], rax
jmp 0x14018e1e9
mov qword [rsp + 0x38], rdx
mov eax, r11d
jmp 0x14018e11d
pshufd xmm5, xmm0, 0xe5
mov eax, r11d
mov r12, rdx
movd ebx, xmm5
jmp 0x14018df83
xor edx, edx
jmp 0x14018e296
mov rdx, rax
xor r8d, r8d
jmp 0x14018e288
xor r9d, r9d
jmp 0x14018e278
mov r8, rax
jmp 0x14018e26b
xor edx, edx
jmp 0x14018e25f
movzx ecx, byte [rax - 1]
sub rax, 1
shl ecx, 0x10
jmp 0x14018e252
mov rdx, rdi
jmp 0x14018e18f
mov rdx, rdi
jmp 0x14018e1a9