Function at 0x180004540
Capabilities:
Encode data using xor

Disassembly:
mov r8d, r8d
jmp 0x180004540
push rbx
sub rsp, 0x70
mov rbx, r8
mov r11, rdx
mov r9d, ecx
test rdx, rdx
jne 0x18000455c
xor eax, eax
add rsp, 0x70
pop rbx
ret
mov qword [rsp + 0x60], rdi
not r9d
lea rdi, [0x180000000]
cmp rbx, 0x17
jb 0x1800047d0
mov qword [rsp + 0x80], rbp
mov qword [rsp + 0x68], rsi
mov qword [rsp + 0x58], r12
mov qword [rsp + 0x48], r14
mov qword [rsp + 0x40], r15
test r11b, 3
je 0x1800045ba
movzx ecx, byte [r11]
mov eax, r9d
inc r11
xor rcx, rax
shr eax, 8
movzx edx, cl
mov r9d, dword [rdi + rdx*4 + 0xeaf0]
xor r9d, eax
dec rbx
jne 0x180004591
xor esi, esi
movabs rax, 0xcccccccccccccccd
mov ebp, esi
mov r14d, esi
mov r15d, esi
mul rbx
mov r12, rdx
shr r12, 4
lea rax, [r12 + r12*4]
shl rax, 2
sub rbx, rax
dec r12
mov qword [rsp + 0x88], r12
mov qword [rsp + 0x90], rbx
je 0x18000476c
mov qword [rsp + 0x50], r13
mov eax, dword [r11]
mov edx, dword [r11 + 8]
mov r10d, dword [r11 + 0x10]
mov ecx, dword [r11 + 4]
mov r8d, dword [r11 + 0xc]
xor eax, r9d
mov r13d, eax
movzx eax, al
xor edx, ebp
mov r9d, dword [rdi + rax*4 + 0xf2f0]
xor r10d, r15d
xor ecx, esi
xor r8d, r14d
mov eax, ecx
add r11, 0x14
mov qword [rsp + 0x98], rax
movzx eax, cl
mov qword [rsp + 0x30], r11
mov esi, dword [rdi + rax*4 + 0xf2f0]
mov rbx, qword [rsp + 0x98]
movzx eax, dl
mov ebp, dword [rdi + rax*4 + 0xf2f0]
mov eax, r8d
mov r12d, edx
mov qword [rsp + 0x20], rax
movzx eax, r8b
lea rdx, [0x180000000]
mov r14d, dword [rdi + rax*4 + 0xf2f0]
mov r11, qword [rsp + 0x20]
mov eax, r10d
mov qword [rsp + 0x28], rax
movzx eax, r10b
mov r10d, 0x100
mov r15d, dword [rdi + rax*4 + 0xf2f0]
mov edi, 1
lea eax, [rdi*8]
inc edi
movsxd r8, eax
mov rax, r13
mov rcx, r8
shr rax, cl
movzx ecx, al
mov rax, rbx
add rcx, r10
xor r9d, dword [rdx + rcx*4 + 0xf2f0]
mov rcx, r8
shr rax, cl
movzx ecx, al
mov rax, r12
add rcx, r10
xor esi, dword [rdx + rcx*4 + 0xf2f0]
mov rcx, r8
shr rax, cl
movzx edx, al
lea rax, [0x180000000]
add rdx, r10
xor ebp, dword [rax + rdx*4 + 0xf2f0]
mov rax, r11
shr rax, cl
movzx edx, al
lea rax, [0x180000000]
add rdx, r10
xor r14d, dword [rax + rdx*4 + 0xf2f0]
mov rax, qword [rsp + 0x28]
lea rdx, [0x180000000]
shr rax, cl
movzx ecx, al
add rcx, r10
add r10, 0x100
xor r15d, dword [rdx + rcx*4 + 0xf2f0]
cmp edi, 4
jl 0x1800046a0
dec qword [rsp + 0x88]
mov r11, qword [rsp + 0x30]
lea rdi, [0x180000000]
jne 0x180004601
mov rbx, qword [rsp + 0x90]
mov r13, qword [rsp + 0x50]
lea rdi, [0x180000000]
mov ecx, dword [r11]
xor ecx, r9d
call fcn.180004920
xor eax, dword [r11 + 4]
xor eax, esi
mov ecx, eax
call fcn.180004920
xor eax, dword [r11 + 8]
xor eax, ebp
mov ecx, eax
call fcn.180004920
xor eax, dword [r11 + 0xc]
xor eax, r14d
mov ecx, eax
call fcn.180004920
xor eax, dword [r11 + 0x10]
xor eax, r15d
mov ecx, eax
call fcn.180004920
mov r15, qword [rsp + 0x40]
mov r14, qword [rsp + 0x48]
mov r12, qword [rsp + 0x58]
mov rsi, qword [rsp + 0x68]
mov rbp, qword [rsp + 0x80]
mov r9d, eax
add r11, 0x14
cmp rbx, 8
jb 0x1800048d8
mov r10, rbx
shr r10, 3
imul rax, r10, 0xfffffffffffffff8
add rbx, rax
nop dword [rax + rax]
movzx ecx, byte [r11]
mov eax, r9d
shr r9d, 8
xor rcx, rax
add r11, 8
movzx eax, cl
movzx ecx, byte [r11 - 7]
mov edx, dword [rdi + rax*4 + 0xeaf0]
xor edx, r9d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [r11 - 6]
mov r8d, dword [rdi + rax*4 + 0xeaf0]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [r11 - 5]
mov edx, dword [rdi + rax*4 + 0xeaf0]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [r11 - 4]
mov r8d, dword [rdi + rax*4 + 0xeaf0]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [r11 - 3]
mov edx, dword [rdi + rax*4 + 0xeaf0]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [r11 - 2]
mov r8d, dword [rdi + rax*4 + 0xeaf0]
xor r8d, edx
mov eax, r8d
shr r8d, 8
xor rcx, rax
movzx eax, cl
movzx ecx, byte [r11 - 1]
mov edx, dword [rdi + rax*4 + 0xeaf0]
xor edx, r8d
mov eax, edx
shr edx, 8
xor rcx, rax
movzx eax, cl
mov r9d, dword [rdi + rax*4 + 0xeaf0]
xor r9d, edx
dec r10
jne 0x1800047f0
test rbx, rbx
je 0x180004904
nop dword [rax]
movzx ecx, byte [r11]
mov eax, r9d
lea r11, [r11 + 1]
xor rcx, rax
shr eax, 8
movzx edx, cl
mov r9d, dword [rdi + rdx*4 + 0xeaf0]
xor r9d, eax
dec rbx
jne 0x1800048e0
mov rdi, qword [rsp + 0x60]
not r9d
mov eax, r9d
add rsp, 0x70
pop rbx
ret