Function at 0x1800088a4
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rdx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x58
mov bpl, byte [rdx + 0x15b5]
mov r15, rcx
movsxd r11, dword [0x180417128]
xor edx, edx
mov r9, qword [0x180417148]
mov r14, r8
mov rax, qword [0x180417188]
mov rbx, qword [0x180417130]
mov rdi, rbx
mov qword [rsp + 0xb8], rbx
movzx r10d, word [r9 + r11*2]
movzx eax, word [r9 + rax*4]
div r10d
cdqe
mov qword [rsp + 0x30], rax
mov eax, 0x2f9141d3
imul r11d
sar edx, 0xa
mov eax, edx
shr eax, 0x1f
add eax, edx
mov edx, dword [0x180417164]
cdqe
dec edx
mov qword [rsp + 0x38], rax
mov eax, dword [0x180417150]
mov dword [rsp + 0xa0], eax
movzx eax, byte [0x18041713f]
mov qword [rsp + 0xb0], rax
mov dword [0x180417164], edx
mov eax, dword [r8]
mov r8, qword [0x1804171a0]
add eax, 5
movsxd rcx, eax
movzx eax, byte [0x18041713e]
mov r10b, byte [r8 + rcx*8]
mov ecx, dword [r14 + rax*4 - 4]
xor r10b, dl
mov rax, qword [0x180417158]
imul ecx, dword [rax + 0x36c8]
movsxd rax, ecx
movzx ecx, byte [0x18041713c]
mov qword [rsp + 0x40], rax
add rcx, rcx
lea eax, [r11 + 6]
movsxd rdx, eax
mov rax, qword [0x180417168]
mov r12d, dword [r8 + rdx*8]
or r12d, dword [rax + rcx*8]
mov eax, 0x8db
mov rcx, qword [0x180417180]
mov r9d, eax
mov r13, rcx
cmp ax, word [rcx + rcx*2]
jb 0x180008a91
movzx r11d, r10b
mov r10d, 0x11b6
dec rcx
add bpl, 0xff
mov qword [0x180417180], rcx
dec dword [r14 - 4]
movsxd rdx, dword [r14 - 4]
mov rax, qword [0x180417140]
mov ecx, dword [rax + rdx*4]
sub ecx, dword [0x180417138]
movsxd r8, ecx
mov rcx, qword [0x180417150]
movsxd rax, r9d
xor r8, rax
movzx eax, word [rbx + rdx*2]
xor r8, rax
xor edx, edx
sub r8, qword [0x180417188]
mov rax, rcx
div r11
mov edx, dword [0x180417128]
inc rcx
xor byte [0x18041713f], al
inc edx
mov dword [0x180417128], edx
mov qword [0x180417150], rcx
mov qword [0x180417188], r8
movzx eax, bpl
lea ecx, [rax + rax]
movsxd rax, dword [r14 - 4]
movzx eax, word [r15 + rax*2]
add eax, edx
cdq
idiv dword [r14 + rcx*4 - 4]
xor edx, edx
mov dword [r14 + rcx*4 - 4], eax
mov eax, 0x1d09
div qword [0x180417188]
movsxd rcx, r10d
add r10d, 2
add dx, r9w
inc r9d
or word [r15 + rcx*2], dx
mov rcx, qword [0x180417180]
movzx eax, word [r13 + rcx*2]
cmp r9d, eax
jge 0x1800089c5
mov rbx, qword [0x180417130]
mov r10, qword [rsp + 0xa8]
dec rcx
mov qword [0x180417180], rcx
movabs rax, 0x8c08c08c08c08c09
dec dword [r14 - 4]
mul rbx
shr rdx, 7
movzx eax, dl
imul esi, eax, 0x16
movsxd rax, dword [r14 - 4]
movzx ecx, word [rdi + rax*2]
add sil, bl
mov eax, dword [rsp + 0xa0]
xor sil, bl
movzx ebx, byte [0x18041713d]
imul rdi, rcx, 0x18b9
movzx ecx, byte [0x18041713c]
movzx r9d, byte [r10 + rcx*2]
inc cl
inc eax
mov byte [0x18041713c], cl
movsxd rcx, eax
mov eax, dword [0x18041719c]
cdq
movzx r8d, byte [rcx + r10]
mov rcx, rdi
idiv r8d
mov eax, dword [r14 - 4]
mov r8d, 0x18ab
movsxd r11, edx
add eax, 0xb
cdqe
mov edx, ebx
movzx r10d, byte [rax + r10]
sub r10, qword [rsp + 0xb0]
mov qword [rsp + 0x28], r10
mov qword [rsp + 0x20], r11
call fcn.180003c30
movsxd rcx, dword [r14 - 4]
inc r12d
mov r9, qword [rsp + 0x30]
movsxd r8, r12d
mov word [r15 + rcx*2], ax
movsxd rcx, dword [r14 - 4]
mov eax, ecx
shl eax, 2
movsxd rdx, eax
mov eax, 0x8db
movzx ecx, word [r14 + rcx*4 - 4]
add cx, ax
mov rax, qword [rsp + 0xb8]
and word [rax + rdx*2], cx
lea eax, [r12 + r12]
movsxd rcx, eax
dec r12d
movzx eax, word [r13 + rcx*2]
cdq
movzx ecx, bpl
idiv dword [r9 + rcx*8]
movzx ecx, word [0x18041719c]
add ax, word [rsp + 0xa0]
movzx edx, ax
imul edx, ecx
movzx r9d, sil
and word [r15 + r8*2], dx
movsxd rax, dword [r14 - 4]
mov r8, qword [rsp + 0x38]
xor r9d, dword [0x180417150]
mov r11, qword [r8 + rax*8]
lea eax, [r12 + r12]
movsxd rcx, eax
movsxd rax, r12d
movsxd rdx, dword [r14 + rcx*4]
movsxd rcx, dword [r14 + rax*4]
mov rax, qword [r8]
xor rdx, rcx
mov rcx, qword [rsp + 0x40]
mov r8d, 0xfa4
sub r8w, word [rcx + rax*2]
mov eax, dword [r14]
add eax, eax
mov rcx, qword [rsp + 0xa8]
cdqe
mov qword [rsp + 0x28], 0x1e89
movzx r10d, byte [rax + rcx]
mov rcx, r11
movzx eax, byte [0x18041713d]
or r10, rax
mov qword [rsp + 0x20], r10
call fcn.180003c30
movzx ecx, byte [0x18041713e]
movsxd rdx, eax
add ecx, 0x23
mov rax, qword [0x1804171a0]
mov qword [rax + rcx*8], rdx
mov eax, dword [0x1804170f8]
inc eax
mov dword [0x1804170f8], eax
add eax, 2
movsxd rcx, eax
mov eax, dword [r14 + rcx*4]
add eax, 0x5ef
add rsp, 0x58
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret