Function at 0x180089fc0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rbp
mov qword [rsp + 0x18], rsi
push rdi
sub rsp, 0x20
cmp dword [0x180106f70], 0
mov ebx, r8d
mov rbp, rdx
mov rdi, rcx
jne 0x180089ff5
call fcn.180089bf0
mov dword [0x180106f70], 1
mov eax, ebx
mov esi, 0xa
sub eax, 0x80
je 0x18008a025
sub eax, 0x40
je 0x18008a01d
cmp eax, 0x40
je 0x18008a015
lea eax, [rsi - 0x2a]
jmp 0x18008a28b
mov dword [rdi], 0xe
jmp 0x18008a027
mov dword [rdi], 0xc
jmp 0x18008a027
mov dword [rdi], esi
lea rax, [rdi + 0x10]
shr ebx, 5
xor r10d, r10d
mov qword [rdi + 8], rax
test ebx, ebx
je 0x18008a083
mov r11, rax
lea r9, [rbp + 2]
movzx ecx, byte [r9]
movzx r8d, byte [r9 + 1]
lea r11, [r11 + 4]
shl r8d, 8
lea r9, [r9 + 4]
or r8d, ecx
movzx ecx, byte [r9 - 5]
shl r8d, 8
or r8d, ecx
lea ecx, [r10*4]
inc r10d
movzx ecx, byte [rcx + rbp]
shl r8d, 8
or r8d, ecx
mov dword [r11 - 4], r8d
cmp r10d, ebx
jb 0x18008a040
mov ecx, dword [rdi]
cmp ecx, esi
je 0x18008a20e
cmp ecx, 0xc
je 0x18008a17c
cmp ecx, 0xe
jne 0x18008a289
lea rdi, [0x180109180]
lea esi, [rcx - 7]
lea rbx, [0x180106f80]
mov r11d, dword [rax + 0x1c]
lea rax, [rax + 0x20]
lea rdi, [rdi + 4]
movzx ecx, r11b
movzx r8d, byte [rcx + rbx]
movzx ecx, byte [rax - 1]
movzx edx, byte [rcx + rbx]
movzx ecx, byte [rax - 2]
shl r8d, 8
xor r8d, edx
movzx edx, byte [rcx + rbx]
movzx ecx, byte [rax - 3]
shl r8d, 8
xor r8d, edx
movzx edx, byte [rcx + rbx]
mov ecx, dword [rax - 0x1c]
shl r8d, 8
xor r8d, edx
mov edx, dword [rax - 0x18]
xor r8d, dword [rax - 0x20]
xor r8d, dword [rdi - 4]
xor ecx, r8d
mov dword [rax], r8d
mov r8d, dword [rax - 0x14]
xor edx, ecx
mov dword [rax + 4], ecx
xor r8d, edx
mov dword [rax + 8], edx
mov dword [rax + 0xc], r8d
movzx ecx, byte [rax + 0xf]
movzx r9d, byte [rcx + rbx]
movzx ecx, byte [rax + 0xe]
movzx edx, byte [rcx + rbx]
movzx ecx, byte [rax + 0xd]
shl r9d, 8
xor r9d, edx
movzx edx, byte [rcx + rbx]
movzx ecx, r8b
shl r9d, 8
xor r9d, edx
movzx edx, byte [rcx + rbx]
mov ecx, dword [rax - 0xc]
shl r9d, 8
xor r9d, edx
mov edx, dword [rax - 8]
xor r9d, dword [rax - 0x10]
xor ecx, r9d
mov dword [rax + 0x10], r9d
xor edx, ecx
mov dword [rax + 0x14], ecx
mov dword [rax + 0x18], edx
xor edx, r11d
mov dword [rax + 0x1c], edx
dec rsi
jne 0x18008a0b0
jmp 0x18008a289
lea rdi, [0x180109180]
mov r11d, 8
lea rbx, [0x180106f80]
mov r10d, dword [rax + 0x14]
lea rax, [rax + 0x18]
lea rdi, [rdi + 4]
movzx ecx, r10b
movzx r9d, byte [rcx + rbx]
movzx ecx, byte [rax - 1]
movzx edx, byte [rcx + rbx]
movzx ecx, byte [rax - 2]
shl r9d, 8
xor r9d, edx
movzx edx, byte [rcx + rbx]
movzx ecx, byte [rax - 3]
shl r9d, 8
xor r9d, edx
movzx edx, byte [rcx + rbx]
mov ecx, dword [rax - 0x14]
shl r9d, 8
xor r9d, edx
mov edx, dword [rax - 0x10]
xor r9d, dword [rdi - 4]
xor r9d, dword [rax - 0x18]
xor ecx, r9d
mov dword [rax], r9d
xor edx, ecx
mov dword [rax + 4], ecx
mov ecx, dword [rax - 0xc]
xor ecx, edx
mov dword [rax + 8], edx
mov edx, dword [rax - 8]
xor edx, ecx
mov dword [rax + 0xc], ecx
mov dword [rax + 0x10], edx
xor edx, r10d
mov dword [rax + 0x14], edx
dec r11
jne 0x18008a190
jmp 0x18008a289
lea rdi, [0x180109180]
lea rbx, [0x180106f80]
nop dword [rax]
mov r10d, dword [rax + 0xc]
lea rax, [rax + 0x10]
lea rdi, [rdi + 4]
movzx ecx, r10b
movzx r9d, byte [rcx + rbx]
movzx ecx, byte [rax - 1]
movzx edx, byte [rcx + rbx]
movzx ecx, byte [rax - 2]
shl r9d, 8
xor r9d, edx
movzx edx, byte [rcx + rbx]
movzx ecx, byte [rax - 3]
shl r9d, 8
xor r9d, edx
movzx edx, byte [rcx + rbx]
mov ecx, dword [rax - 0xc]
shl r9d, 8
xor r9d, edx
mov edx, dword [rax - 8]
xor r9d, dword [rdi - 4]
xor r9d, dword [rax - 0x10]
xor ecx, r9d
mov dword [rax], r9d
xor edx, ecx
mov dword [rax + 4], ecx
mov dword [rax + 8], edx
xor edx, r10d
mov dword [rax + 0xc], edx
dec rsi
jne 0x18008a220
xor eax, eax
mov rbx, qword [rsp + 0x30]
mov rbp, qword [rsp + 0x38]
mov rsi, qword [rsp + 0x40]
add rsp, 0x20
pop rdi
ret