Function at 0x18000ab50
Capabilities:
Encode data using xor
Encrypt data using tea

Disassembly:
mov qword [rsp + 0x20], r9
push rbx
push rbp
push rsi
push rdi
push r15
sub rsp, 0x50
mov rbp, r8
mov rbx, rdx
mov rsi, rcx
test rdx, rdx
je 0x18000ae5b
mov rdi, rdx
shr rdi, 2
test bl, 3
lea rax, [rdi + 1]
cmovne rdi, rax
mov rax, 0xffffffffffffffff
mov rcx, rdi
add rcx, 1
cmovb rcx, rax
lea edx, [rax + 5]
call fcn.1800d23b0
mov r15, rax
test rax, rax
je 0x18000ae5b
mov qword [rsp + 0x80], r12
mov qword [rsp + 0x48], r13
lea r13, [rdi + 1]
mov dword [rax + rdi*4], ebx
xor edi, edi
mov qword [rsp + 0x30], r13
mov r9d, edi
test rbx, rbx
je 0x18000abf7
nop dword [rax]
movzx edx, byte [r9 + rsi]
mov rcx, r9
shr rcx, 2
lea r8, [rax + rcx*4]
movzx ecx, r9b
and cl, 3
inc r9
shl cl, 3
shl edx, cl
or dword [r8], edx
cmp r9, rbx
jb 0x18000abd0
mov edx, 4
mov ecx, edx
call fcn.1800d23b0
mov r12, rax
test rax, rax
jne 0x18000ac2d
mov rcx, r15
call fcn.1800ca7c8
xor eax, eax
mov r12, qword [rsp + 0x80]
mov r13, qword [rsp + 0x48]
add rsp, 0x50
pop r15
pop rdi
pop rsi
pop rbp
pop rbx
ret
movzx eax, byte [rbp + 2]
lea r8d, [r13 - 1]
movzx ecx, byte [rbp + 3]
xor edx, edx
shl ecx, 8
or ecx, eax
mov qword [rsp + 0x40], r14
movzx eax, byte [rbp + 1]
shl ecx, 8
or ecx, eax
mov r14d, r8d
movzx eax, byte [rbp]
shl ecx, 8
or ecx, eax
mov dword [rsp + 0x20], r8d
or dword [r12], ecx
movzx eax, byte [rbp + 6]
movzx ecx, byte [rbp + 7]
shl ecx, 8
or ecx, eax
mov qword [rsp + 0x28], r14
movzx eax, byte [rbp + 5]
shl ecx, 8
or ecx, eax
movzx eax, byte [rbp + 4]
shl ecx, 8
or ecx, eax
movzx eax, byte [rbp + 0xa]
or dword [r12 + 4], ecx
movzx ecx, byte [rbp + 0xb]
shl ecx, 8
or ecx, eax
movzx eax, byte [rbp + 9]
shl ecx, 8
or ecx, eax
movzx eax, byte [rbp + 8]
shl ecx, 8
or ecx, eax
movzx eax, byte [rbp + 0xe]
or dword [r12 + 8], ecx
movzx ecx, byte [rbp + 0xf]
shl ecx, 8
or ecx, eax
movzx eax, byte [rbp + 0xd]
shl ecx, 8
or ecx, eax
movzx eax, byte [rbp + 0xc]
shl ecx, 8
mov ebp, edi
or ecx, eax
mov eax, 0x34
or dword [r12 + 0xc], ecx
mov ecx, dword [r15 + r8*4]
div r13d
add eax, 6
cmp r8d, 1
jb 0x18000ade1
test eax, eax
je 0x18000ade1
nop word [rax + rax]
add ebp, 0x9e3779b9
lea rbx, [r15 + 4]
dec eax
mov esi, ebp
shr rsi, 2
mov r11, rdi
and esi, 3
mov dword [rsp + 0x88], eax
mov r10, r15
mov r13d, r8d
nop word [rax + rax]
mov r8d, dword [rbx]
lea rbx, [rbx + 4]
mov eax, ecx
lea r10, [r10 + 4]
shr eax, 5
mov edx, r8d
shr edx, 3
lea r9d, [r8*4]
xor r8d, ebp
xor r9d, eax
mov eax, ecx
shl eax, 4
xor edx, eax
mov rax, r11
and eax, 3
add r9d, edx
xor rax, rsi
inc r11
xor ecx, dword [r12 + rax*4]
add ecx, r8d
xor r9d, ecx
add dword [r10 - 4], r9d
mov ecx, dword [r10 - 4]
sub r14, 1
jne 0x18000ad30
mov r8d, dword [r15]
mov r9d, ecx
mov r14, qword [rsp + 0x28]
mov edx, ecx
shl r9d, 4
mov eax, r8d
shr eax, 3
and r13d, 3
xor r9d, eax
shr edx, 5
lea eax, [r8*4]
xor r13, rsi
xor edx, eax
xor r8d, ebp
mov eax, dword [rsp + 0x88]
add r9d, edx
xor ecx, dword [r12 + r13*4]
add ecx, r8d
mov r8d, dword [rsp + 0x20]
xor r9d, ecx
add dword [r15 + r14*4], r9d
mov ecx, dword [r15 + r14*4]
test eax, eax
jne 0x18000ad00
mov r13, qword [rsp + 0x30]
mov rax, 0xffffffffffffffff
lea rbx, [r13*4]
mov rdx, rbx
add rdx, 1
cmovb rdx, rax
lea ecx, [rax + 2]
call fcn.1800d23b0
mov r14, qword [rsp + 0x40]
mov rsi, rax
test rbx, rbx
je 0x18000ae34
mov r8, rdi
movzx ecx, dil
shr r8, 2
and cl, 3
shl cl, 3
mov r8d, dword [r15 + r8*4]
shr r8d, cl
mov byte [rdi + rax], r8b
inc rdi
cmp rdi, rbx
jb 0x18000ae10
mov byte [rax + rbx], 0
mov rcx, r15
mov rax, qword [rsp + 0x98]
mov qword [rax], rbx
call fcn.1800ca7c8
mov rcx, r12
call fcn.1800ca7c8
mov rax, rsi
jmp 0x18000ac15
xor eax, eax
add rsp, 0x50
pop r15
pop rdi
pop rsi
pop rbp
pop rbx
ret