Function at 0x14000a8f0
Capabilities:
Encode data using xor

Disassembly:
push rsi
sub rsp, 0x40
mov rsi, r8
mov r11, rdx
test rdx, rdx
jne 0x14000a909
xor eax, eax
add rsp, 0x40
pop rsi
ret
or r8d, 0xffffffff
mov qword [rsp + 0x50], rbx
lea rbx, [0x140000000]
cmp rsi, 0x17
jb 0x14000aca9
mov qword [rsp + 0x38], rbp
mov qword [rsp + 0x30], rdi
mov qword [rsp + 0x18], r14
mov qword [rsp + 0x10], r15
test r11b, 3
je 0x14000a961
movzx ecx, byte [r11]
mov eax, r8d
xor rcx, rax
inc r11
shr eax, 8
movzx edx, cl
mov r8d, dword [rbx + rdx*4 + 0x2aa00]
xor r8d, eax
sub rsi, 1
jne 0x14000a937
xor edi, edi
movabs rax, 0xcccccccccccccccd
mul rsi
mov ebp, edi
mov r14d, edi
mov rcx, rdx
mov r15d, edi
shr rcx, 4
lea rax, [rcx + rcx*4]
shl rax, 2
sub rsi, rax
sub rcx, 1
mov qword [rsp + 0x60], rsi
mov qword [rsp + 0x58], rcx
je 0x14000ab0b
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], r13
nop dword [rax + rax]
mov eax, dword [r11]
mov edx, dword [r11 + 8]
xor eax, r8d
mov r10d, dword [r11 + 0x10]
xor edx, ebp
mov ecx, dword [r11 + 4]
xor r10d, r15d
mov r9d, dword [r11 + 0xc]
xor ecx, edi
mov r12d, eax
xor r9d, r14d
movzx eax, al
add r11, 0x14
mov qword [rsp + 8], r11
mov esi, edx
mov r13d, ecx
mov r8d, dword [rbx + rax*4 + 0x2b310]
movzx eax, cl
mov edi, dword [rbx + rax*4 + 0x2b310]
movzx eax, dl
lea rdx, [0x140000000]
mov ebp, dword [rbx + rax*4 + 0x2b310]
mov eax, r9d
mov qword [rsp + 0x68], rax
mov r11, qword [rsp + 0x68]
movzx eax, r9b
mov r14d, dword [rbx + rax*4 + 0x2b310]
mov eax, r10d
mov qword [rsp], rax
movzx eax, r10b
mov r10d, pe_nt_image_headers64
mov r15d, dword [rbx + rax*4 + 0x2b310]
mov ebx, 1
nop
lea eax, [rbx*8]
inc ebx
movsxd r9, eax
mov rax, r12
mov rcx, r9
shr rax, cl
movzx ecx, al
mov rax, r13
add rcx, r10
xor r8d, dword [rdx + rcx*4 + 0x2b310]
mov rcx, r9
shr rax, cl
movzx ecx, al
mov rax, rsi
add rcx, r10
xor edi, dword [rdx + rcx*4 + 0x2b310]
mov rcx, r9
shr rax, cl
movzx edx, al
lea rax, [0x140000000]
add rdx, r10
xor ebp, dword [rax + rdx*4 + 0x2b310]
mov rax, r11
shr rax, cl
movzx edx, al
lea rax, [0x140000000]
add rdx, r10
xor r14d, dword [rax + rdx*4 + 0x2b310]
lea rdx, [0x140000000]
mov rax, qword [rsp]
shr rax, cl
movzx ecx, al
add rcx, r10
add r10, 0x100
xor r15d, dword [rdx + rcx*4 + 0x2b310]
cmp ebx, 4
jl 0x14000aa40
sub qword [rsp + 0x58], 1
lea rbx, [0x140000000]
mov r11, qword [rsp + 8]
jne 0x14000a9b0
mov rsi, qword [rsp + 0x60]
lea rbx, [0x140000000]
mov r13, qword [rsp + 0x20]
mov r12, qword [rsp + 0x28]
mov edx, dword [r11]
xor edx, r8d
movzx ecx, dl
shr edx, 8
mov r8d, dword [rbx + rcx*4 + 0x2aa00]
xor r8d, edx
movzx ecx, r8b
shr r8d, 8
mov edx, dword [rbx + rcx*4 + 0x2aa00]
xor edx, r8d
movzx ecx, dl
shr edx, 8
mov r8d, dword [rbx + rcx*4 + 0x2aa00]
xor r8d, edx
movzx ecx, r8b
shr r8d, 8
mov eax, dword [rbx + rcx*4 + 0x2aa00]
xor eax, r8d
mov r8d, dword [r11 + 4]
xor r8d, eax
xor r8d, edi
movzx ecx, r8b
shr r8d, 8
mov edx, dword [rbx + rcx*4 + 0x2aa00]
xor edx, r8d
movzx ecx, dl
shr edx, 8
mov r8d, dword [rbx + rcx*4 + 0x2aa00]
xor r8d, edx
movzx ecx, r8b
shr r8d, 8
mov edx, dword [rbx + rcx*4 + 0x2aa00]
xor edx, r8d
mov r8d, dword [r11 + 8]
movzx ecx, dl
shr edx, 8
mov eax, dword [rbx + rcx*4 + 0x2aa00]
xor eax, edx
xor r8d, eax
xor r8d, ebp
movzx ecx, r8b
shr r8d, 8
mov edx, dword [rbx + rcx*4 + 0x2aa00]
xor edx, r8d
movzx ecx, dl
shr edx, 8
mov r8d, dword [rbx + rcx*4 + 0x2aa00]
xor r8d, edx
movzx ecx, r8b
shr r8d, 8
mov edx, dword [rbx + rcx*4 + 0x2aa00]
xor edx, r8d
mov r8d, dword [r11 + 0xc]
movzx ecx, dl
shr edx, 8
mov eax, dword [rbx + rcx*4 + 0x2aa00]
xor eax, edx
xor r8d, eax
xor r8d, r14d
movzx ecx, r8b
shr r8d, 8
mov edx, dword [rbx + rcx*4 + 0x2aa00]
xor edx, r8d
movzx ecx, dl
shr edx, 8
mov r8d, dword [rbx + rcx*4 + 0x2aa00]
xor r8d, edx
movzx ecx, r8b
shr r8d, 8
mov edx, dword [rbx + rcx*4 + 0x2aa00]
xor edx, r8d
mov r8d, dword [r11 + 0x10]
movzx ecx, dl
shr edx, 8
mov eax, dword [rbx + rcx*4 + 0x2aa00]
xor eax, edx
xor r8d, eax
xor r8d, r15d
movzx ecx, r8b
shr r8d, 8
mov edx, dword [rbx + rcx*4 + 0x2aa00]
mov r15, qword [rsp + 0x10]
xor edx, r8d
mov r14, qword [rsp + 0x18]
mov rdi, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
movzx ecx, dl
shr edx, 8
mov r8d, dword [rbx + rcx*4 + 0x2aa00]
xor r8d, edx
movzx ecx, r8b
shr r8d, 8
mov edx, dword [rbx + rcx*4 + 0x2aa00]
xor edx, r8d
movzx ecx, dl
shr edx, 8
mov r8d, dword [rbx + rcx*4 + 0x2aa00]
xor r8d, edx
add r11, 0x14
cmp rsi, 8
jb 0x14000adaa
mov r9, rsi
shr r9, 3
imul rax, r9, 0xfffffffffffffff8
add rsi, rax
movzx ecx, byte [r11]
mov eax, r8d
xor rcx, rax
shr r8d, 8
movzx eax, cl
movzx ecx, byte [r11 + 1]
mov edx, dword [rbx + rax*4 + 0x2aa00]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [r11 + 2]
mov r8d, dword [rbx + rax*4 + 0x2aa00]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [r11 + 3]
mov edx, dword [rbx + rax*4 + 0x2aa00]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [r11 + 4]
mov r8d, dword [rbx + rax*4 + 0x2aa00]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [r11 + 5]
mov edx, dword [rbx + rax*4 + 0x2aa00]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [r11 + 6]
mov r8d, dword [rbx + rax*4 + 0x2aa00]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [r11 + 7]
add r11, 8
mov edx, dword [rbx + rax*4 + 0x2aa00]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
mov r8d, dword [rbx + rax*4 + 0x2aa00]
xor r8d, edx
sub r9, 1
jne 0x14000acc1
test rsi, rsi
je 0x14000add5
nop
movzx ecx, byte [r11]
lea r11, [r11 + 1]
mov eax, r8d
xor rcx, rax
shr eax, 8
movzx edx, cl
mov r8d, dword [rbx + rdx*4 + 0x2aa00]
xor r8d, eax
sub rsi, 1
jne 0x14000adb0
mov rbx, qword [rsp + 0x50]
not r8d
mov eax, r8d
add rsp, 0x40
pop rsi
ret