Function at 0x1401804b0
Capabilities:
Encode data using xor

Disassembly:
push rsi
push rdi
push rbp
push rbx
test rdx, rdx
je 0x14018050a
mov eax, ecx
not eax
test r8d, r8d
je 0x1401807b9
mov r10d, r8d
lea esi, [r8 - 0x20]
xor r11d, r11d
lea r9, [0x1404cf180]
nop word [rax + rax]
lea rdi, [rdx + r11]
test dil, 3
je 0x140180511
movzx ecx, byte [rdi]
movzx edi, al
xor edi, ecx
shr eax, 8
xor eax, dword [r9 + rdi*4]
add r11, 1
add esi, 0xffffffff
cmp r10d, r11d
jne 0x1401804e0
jmp 0x1401807b9
xor eax, eax
jmp 0x1401807bb
sub r10, r11
cmp r10d, 0x1f
ja 0x140180549
cmp r10d, 4
jae 0x140180700
test r10d, r10d
je 0x1401807b9
test r10b, 1
jne 0x140180767
mov ecx, r10d
cmp r10d, 1
jne 0x140180784
jmp 0x1401807b9
add r8d, 0xffffffe0
sub r8, r11
xor eax, dword [rdi]
movzx ebx, al
movzx ecx, ah
mov ecx, dword [r9 + rcx*4 + 0x800]
xor ecx, dword [r9 + rbx*4 + 0xc00]
mov ebx, eax
shr ebx, 0x10
movzx ebx, bl
xor ecx, dword [r9 + rbx*4 + 0x400]
shr eax, 0x18
xor ecx, dword [r9 + rax*4]
xor ecx, dword [rdi + 4]
movzx ebx, cl
movzx eax, ch
mov eax, dword [r9 + rax*4 + 0x800]
xor eax, dword [r9 + rbx*4 + 0xc00]
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
xor eax, dword [r9 + rbx*4 + 0x400]
shr ecx, 0x18
xor eax, dword [r9 + rcx*4]
xor eax, dword [rdi + 8]
movzx ebx, al
movzx ecx, ah
mov ecx, dword [r9 + rcx*4 + 0x800]
xor ecx, dword [r9 + rbx*4 + 0xc00]
mov ebx, eax
shr ebx, 0x10
movzx ebx, bl
xor ecx, dword [r9 + rbx*4 + 0x400]
shr eax, 0x18
xor ecx, dword [r9 + rax*4]
xor ecx, dword [rdi + 0xc]
movzx ebx, cl
movzx eax, ch
mov eax, dword [r9 + rax*4 + 0x800]
xor eax, dword [r9 + rbx*4 + 0xc00]
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
xor eax, dword [r9 + rbx*4 + 0x400]
shr ecx, 0x18
xor eax, dword [r9 + rcx*4]
xor eax, dword [rdi + 0x10]
movzx ebx, al
movzx ecx, ah
mov ecx, dword [r9 + rcx*4 + 0x800]
xor ecx, dword [r9 + rbx*4 + 0xc00]
mov ebx, eax
shr ebx, 0x10
movzx ebx, bl
xor ecx, dword [r9 + rbx*4 + 0x400]
shr eax, 0x18
xor ecx, dword [r9 + rax*4]
xor ecx, dword [rdi + 0x14]
movzx ebx, cl
movzx eax, ch
mov eax, dword [r9 + rax*4 + 0x800]
xor eax, dword [r9 + rbx*4 + 0xc00]
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
xor eax, dword [r9 + rbx*4 + 0x400]
shr ecx, 0x18
xor eax, dword [r9 + rcx*4]
xor eax, dword [rdi + 0x18]
movzx ebx, al
movzx ecx, ah
mov ecx, dword [r9 + rcx*4 + 0x800]
xor ecx, dword [r9 + rbx*4 + 0xc00]
mov ebx, eax
shr ebx, 0x10
movzx ebx, bl
xor ecx, dword [r9 + rbx*4 + 0x400]
shr eax, 0x18
xor ecx, dword [r9 + rax*4]
xor ecx, dword [rdi + 0x1c]
movzx ebx, cl
movzx eax, ch
mov eax, dword [r9 + rax*4 + 0x800]
xor eax, dword [r9 + rbx*4 + 0xc00]
mov ebx, ecx
shr ebx, 0x10
movzx ebx, bl
xor eax, dword [r9 + rbx*4 + 0x400]
shr ecx, 0x18
xor eax, dword [r9 + rcx*4]
add r10d, 0xffffffe0
add rdi, 0x20
cmp r10d, 0x1f
ja 0x140180550
and esi, 0xffffffe0
add rdx, rsi
lea rdi, [r11 + rdx]
add rdi, 0x20
and r8d, 0x1f
mov r10d, r8d
cmp r10d, 4
jb 0x140180524
lea r8d, [r10 - 4]
mov edx, r8d
shr edx, 2
add edx, 1
mov rcx, rdi
xor eax, dword [rcx]
movzx ebx, al
movzx ebp, ah
mov esi, eax
mov ebp, dword [r9 + rbp*4 + 0x800]
xor ebp, dword [r9 + rbx*4 + 0xc00]
add rcx, 4
shr eax, 0x10
movzx eax, al
xor ebp, dword [r9 + rax*4 + 0x400]
shr esi, 0x18
mov eax, ebp
xor eax, dword [r9 + rsi*4]
add r10d, 0xfffffffc
cmp r10d, 3
ja 0x140180710
mov ecx, edx
lea rdi, [rdi + rcx*4]
and r8d, 3
mov r10d, r8d
test r10d, r10d
jne 0x14018052d
jmp 0x1401807b9
movzx ecx, byte [rdi]
add rdi, 1
movzx edx, al
xor edx, ecx
shr eax, 8
xor eax, dword [r9 + rdx*4]
lea ecx, [r10 - 1]
cmp r10d, 1
je 0x1401807b9
mov ecx, ecx
xor edx, edx
nop dword [rax + rax]
movzx ebp, byte [rdi + rdx]
movzx ebx, al
xor ebx, ebp
shr eax, 8
xor eax, dword [r9 + rbx*4]
movzx ebp, byte [rdi + rdx + 1]
movzx ebx, al
xor ebx, ebp
shr eax, 8
xor eax, dword [r9 + rbx*4]
add rdx, 2
cmp ecx, edx
jne 0x140180790
not eax
pop rbx
pop rbp
pop rdi
pop rsi
ret