Function at 0x1800511a0
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rsi
sub rsp, 0x18
mov rbp, r8
mov rsi, rdx
test rdx, rdx
jne 0x1800511bb
xor eax, eax
add rsp, 0x18
pop rsi
pop rbp
ret
lea r9, [0x180000000]
not ecx
cmp r8, 0x17
jb 0x18005153a
mov qword [rsp + 0x48], r12
mov qword [rsp + 0x10], r13
mov qword [rsp + 8], r14
mov qword [rsp], r15
test sil, 3
je 0x180051206
movzx edx, byte [rsi]
mov eax, ecx
xor rdx, rax
shr ecx, 8
movzx eax, dl
inc rsi
xor ecx, dword [r9 + rax*4 + 0x1899b0]
sub rbp, 1
jne 0x1800511e1
movabs rax, 0xcccccccccccccccd
mov r15d, ecx
mul rbp
xor ecx, ecx
mov r14, rdx
mov dword [rsp + 0x38], ecx
shr r14, 4
mov r12d, ecx
mov r13d, ecx
mov edx, ecx
lea rax, [r14 + r14*4]
shl rax, 2
sub rbp, rax
sub r14, 1
je 0x1800513e7
mov qword [rsp + 0x30], rbx
mov qword [rsp + 0x40], rdi
nop word [rax + rax]
xor edx, dword [rsi + 0x10]
lea r8, [0x180000000]
xor r15d, dword [rsi]
xor r12d, dword [rsi + 8]
xor r13d, dword [rsi + 0xc]
xor ecx, dword [rsi + 4]
add rsi, 0x14
mov edi, edx
mov r10d, ecx
mov r9d, r15d
mov r11d, r12d
mov ebx, r13d
movzx eax, r15b
movzx ecx, cl
mov r15d, dword [r8 + rax*4 + 0x189db0]
mov ecx, dword [r8 + rcx*4 + 0x189db0]
movzx eax, r12b
mov r12d, dword [r8 + rax*4 + 0x189db0]
movzx eax, r13b
mov r13d, dword [r8 + rax*4 + 0x189db0]
movzx eax, dl
mov edx, dword [r8 + rax*4 + 0x189db0]
mov eax, r9d
shr rax, 0x10
movzx r8d, al
mov eax, r9d
shr rax, 8
mov dword [rsp + 0x38], edx
movzx edx, al
lea rax, [0x180000000]
mov eax, dword [rax + r8*4 + 0x18a5b0]
lea r8, [0x180000000]
shr r9, 0x18
xor eax, dword [r8 + rdx*4 + 0x18a1b0]
xor eax, dword [r8 + r9*4 + 0x18a9b0]
lea r9, [0x180000000]
xor r15d, eax
mov eax, r10d
shr rax, 0x10
movzx r8d, al
mov eax, r10d
shr rax, 8
movzx edx, al
shr r10, 0x18
mov eax, dword [r9 + r8*4 + 0x18a5b0]
xor eax, dword [r9 + rdx*4 + 0x18a1b0]
xor eax, dword [r9 + r10*4 + 0x18a9b0]
xor ecx, eax
mov eax, r11d
shr rax, 0x10
movzx r8d, al
mov eax, r11d
shr rax, 8
movzx edx, al
shr r11, 0x18
mov eax, dword [r9 + r8*4 + 0x18a5b0]
xor eax, dword [r9 + rdx*4 + 0x18a1b0]
xor eax, dword [r9 + r11*4 + 0x18a9b0]
xor r12d, eax
mov eax, ebx
shr rax, 0x10
movzx r8d, al
mov eax, ebx
shr rax, 8
movzx edx, al
shr rbx, 0x18
mov eax, dword [r9 + r8*4 + 0x18a5b0]
xor eax, dword [r9 + rdx*4 + 0x18a1b0]
xor eax, dword [r9 + rbx*4 + 0x18a9b0]
xor r13d, eax
mov eax, edi
shr rax, 0x10
movzx r8d, al
mov eax, edi
shr rax, 8
movzx edx, al
shr rdi, 0x18
mov eax, dword [r9 + r8*4 + 0x18a5b0]
xor eax, dword [r9 + rdx*4 + 0x18a1b0]
xor eax, dword [r9 + rdi*4 + 0x18a9b0]
mov edx, dword [rsp + 0x38]
xor edx, eax
mov dword [rsp + 0x38], edx
sub r14, 1
jne 0x180051250
mov rdi, qword [rsp + 0x40]
mov rbx, qword [rsp + 0x30]
xor ecx, dword [rsi + 4]
xor r15d, dword [rsi]
mov r14, qword [rsp + 8]
movzx edx, r15b
shr r15d, 8
xor r15d, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, r15b
shr r15d, 8
xor r15d, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, r15b
shr r15d, 8
xor r15d, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, r15b
shr r15d, 8
xor r15d, dword [r9 + rdx*4 + 0x1899b0]
xor ecx, r15d
mov r15, qword [rsp]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
xor ecx, dword [rsi + 8]
xor ecx, r12d
mov r12, qword [rsp + 0x48]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
xor ecx, dword [rsi + 0xc]
xor ecx, r13d
mov r13, qword [rsp + 0x10]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
xor ecx, dword [rsi + 0x10]
xor ecx, dword [rsp + 0x38]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
movzx edx, cl
shr ecx, 8
xor ecx, dword [r9 + rdx*4 + 0x1899b0]
add rsi, 0x14
cmp rbp, 8
jb 0x180051617
mov r8, rbp
shr r8, 3
imul rax, r8, 0xfffffffffffffff8
add rbp, rax
movzx edx, byte [rsi]
mov eax, ecx
xor rdx, rax
shr ecx, 8
movzx eax, dl
movzx edx, byte [rsi + 1]
xor ecx, dword [r9 + rax*4 + 0x1899b0]
mov eax, ecx
shr ecx, 8
xor rdx, rax
movzx eax, dl
movzx edx, byte [rsi + 2]
xor ecx, dword [r9 + rax*4 + 0x1899b0]
mov eax, ecx
shr ecx, 8
xor rdx, rax
movzx eax, dl
movzx edx, byte [rsi + 3]
xor ecx, dword [r9 + rax*4 + 0x1899b0]
mov eax, ecx
shr ecx, 8
xor rdx, rax
movzx eax, dl
movzx edx, byte [rsi + 4]
xor ecx, dword [r9 + rax*4 + 0x1899b0]
mov eax, ecx
shr ecx, 8
xor rdx, rax
movzx eax, dl
movzx edx, byte [rsi + 5]
xor ecx, dword [r9 + rax*4 + 0x1899b0]
mov eax, ecx
shr ecx, 8
xor rdx, rax
movzx eax, dl
movzx edx, byte [rsi + 6]
xor ecx, dword [r9 + rax*4 + 0x1899b0]
mov eax, ecx
shr ecx, 8
xor rdx, rax
movzx eax, dl
movzx edx, byte [rsi + 7]
add rsi, 8
xor ecx, dword [r9 + rax*4 + 0x1899b0]
mov eax, ecx
shr ecx, 8
xor rdx, rax
movzx eax, dl
xor ecx, dword [r9 + rax*4 + 0x1899b0]
sub r8, 1
jne 0x180051552
test rbp, rbp
je 0x180051640
nop dword [rax]
movzx edx, byte [rsi]
lea rsi, [rsi + 1]
mov eax, ecx
shr ecx, 8
xor rdx, rax
movzx eax, dl
xor ecx, dword [r9 + rax*4 + 0x1899b0]
sub rbp, 1
jne 0x180051620
not ecx
mov eax, ecx
add rsp, 0x18
pop rsi
pop rbp
ret