Function at 0x14001a970
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rsi
push rdi
sub rsp, 0x30
mov rbp, r8
mov rdi, rdx
mov esi, ecx
test rdx, rdx
jne 0x14001a59f
xor eax, eax
add rsp, 0x30
pop rdi
pop rsi
pop rbp
ret
not esi
lea r11, [0x140000000]
cmp r8, 0x17
jb 0x14001a829
mov qword [rsp + 0x60], r12
mov qword [rsp + 0x68], r13
mov qword [rsp + 0x28], r14
mov qword [rsp + 0x20], r15
test r8, r8
je 0x14001a5f6
nop dword [rax + rax]
test dil, 3
je 0x14001a5f6
movzx ecx, byte [rdi]
mov eax, esi
inc rdi
xor rcx, rax
shr eax, 8
movzx edx, cl
mov esi, dword [r11 + rdx*4 + 0x4ca40]
xor esi, eax
dec rbp
jne 0x14001a5d0
xor r13d, r13d
movabs rax, 0xcccccccccccccccd
mov r14d, r13d
mov r15d, r13d
mov r10d, r13d
mul rbp
mov r12, rdx
shr r12, 4
lea rax, [r12 + r12*4]
shl rax, 2
sub rbp, rax
dec r12
je 0x14001a7d2
mov qword [rsp + 0x50], rbx
nop
mov r8d, dword [rdi + 0xc]
mov r9d, dword [rdi + 0x10]
mov eax, dword [rdi]
mov ecx, dword [rdi + 4]
mov edx, dword [rdi + 8]
xor eax, esi
xor edx, r14d
xor ecx, r13d
xor r9d, r10d
mov r10d, eax
movzx eax, al
mov ebx, edx
mov esi, dword [r11 + rax*4 + 0x4d240]
mov r11d, ecx
movzx eax, cl
xor r8d, r15d
lea rcx, [0x140000000]
add rdi, 0x14
mov r13d, dword [rcx + rax*4 + 0x4d240]
movzx eax, dl
mov r14d, dword [rcx + rax*4 + 0x4d240]
movzx eax, r8b
mov r15d, dword [rcx + rax*4 + 0x4d240]
movzx eax, r9b
mov ecx, dword [rcx + rax*4 + 0x4d240]
mov eax, r10d
shr rax, 0x18
mov dword [rsp + 0x58], ecx
movzx edx, al
mov eax, r10d
shr r10, 8
shr rax, 0x10
movzx ecx, al
lea rax, [0x140000000]
mov edx, dword [rax + rdx*4 + 0x4de40]
xor edx, dword [rax + rcx*4 + 0x4da40]
movzx eax, r10b
lea r10, [0x140000000]
xor edx, dword [r10 + rax*4 + 0x4d640]
mov eax, r11d
shr rax, 0x18
xor esi, edx
movzx edx, al
mov eax, r11d
shr r11, 8
mov edx, dword [r10 + rdx*4 + 0x4de40]
shr rax, 0x10
movzx ecx, al
movzx eax, r11b
lea r11, [0x140000000]
xor edx, dword [r10 + rcx*4 + 0x4da40]
xor edx, dword [r11 + rax*4 + 0x4d640]
mov eax, ebx
shr rax, 0x18
xor r13d, edx
movzx edx, al
mov eax, ebx
shr rbx, 8
mov edx, dword [r11 + rdx*4 + 0x4de40]
shr rax, 0x10
movzx ecx, al
movzx eax, bl
xor edx, dword [r11 + rcx*4 + 0x4da40]
xor edx, dword [r11 + rax*4 + 0x4d640]
mov eax, r8d
shr rax, 0x18
xor r14d, edx
movzx edx, al
mov eax, r8d
shr r8, 8
mov edx, dword [r11 + rdx*4 + 0x4de40]
shr rax, 0x10
movzx ecx, al
movzx eax, r8b
xor edx, dword [r11 + rcx*4 + 0x4da40]
xor edx, dword [r11 + rax*4 + 0x4d640]
mov eax, r9d
xor r15d, edx
shr rax, 0x18
movzx edx, al
mov eax, r9d
mov edx, dword [r11 + rdx*4 + 0x4de40]
mov r10d, dword [rsp + 0x58]
shr rax, 0x10
movzx ecx, al
shr r9, 8
xor edx, dword [r11 + rcx*4 + 0x4da40]
movzx eax, r9b
xor edx, dword [r11 + rax*4 + 0x4d640]
xor r10d, edx
dec r12
jne 0x14001a630
mov rbx, qword [rsp + 0x50]
mov ecx, dword [rdi]
xor ecx, esi
call fcn.14001a540
xor eax, dword [rdi + 4]
xor eax, r13d
mov ecx, eax
call fcn.14001a540
xor eax, dword [rdi + 8]
xor eax, r14d
mov ecx, eax
call fcn.14001a540
xor eax, dword [rdi + 0xc]
xor eax, r15d
mov ecx, eax
call fcn.14001a540
xor eax, dword [rdi + 0x10]
xor eax, r10d
mov ecx, eax
call fcn.14001a540
mov r15, qword [rsp + 0x20]
mov r14, qword [rsp + 0x28]
mov r13, qword [rsp + 0x68]
mov r12, qword [rsp + 0x60]
mov esi, eax
add rdi, 0x14
cmp rbp, 8
jb 0x14001a930
mov r9, rbp
shr r9, 3
mov rcx, r9
imul rcx, rcx, 0xfffffffffffffff8
add rbp, rcx
nop word [rax + rax]
movzx ecx, byte [rdi]
mov eax, esi
shr esi, 8
xor rcx, rax
add rdi, 8
movzx eax, cl
movzx ecx, byte [rdi - 7]
mov edx, dword [r11 + rax*4 + 0x4ca40]
xor edx, esi
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi - 6]
mov r8d, dword [r11 + rax*4 + 0x4ca40]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi - 5]
mov edx, dword [r11 + rax*4 + 0x4ca40]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi - 4]
mov r8d, dword [r11 + rax*4 + 0x4ca40]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi - 3]
mov edx, dword [r11 + rax*4 + 0x4ca40]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi - 2]
mov r8d, dword [r11 + rax*4 + 0x4ca40]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [rdi - 1]
mov edx, dword [r11 + rax*4 + 0x4ca40]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
mov esi, dword [r11 + rax*4 + 0x4ca40]
xor esi, edx
dec r9
jne 0x14001a850
test rbp, rbp
je 0x14001a960
nop word [rax + rax]
movzx ecx, byte [rdi]
mov eax, esi
inc rdi
xor rcx, rax
shr eax, 8
movzx edx, cl
mov esi, dword [r11 + rdx*4 + 0x4ca40]
xor esi, eax
dec rbp
jne 0x14001a940
not esi
mov eax, esi
add rsp, 0x30
pop rdi
pop rsi
pop rbp
ret
mov r8d, r8d
jmp 0x14001a580