Function at 0x1800020e0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x20], r9
mov qword [rsp + 0x18], r8
mov qword [rsp + 8], rcx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x18
mov ebp, dword [0x180025058]
mov r11, rdx
mov r15, qword [rsp + 0x90]
xor edx, edx
mov rcx, qword [0x180025008]
mov rbx, qword [rsp + 0x98]
movsxd r13, dword [0x180025004]
lea eax, [rbp*2]
mov r14, qword [rsp + 0x88]
inc ebp
mov rsi, qword [rsp + 0x80]
movsxd r10, eax
mov qword [rsp + 0x98], rbx
movsxd rdi, dword [r9 + r10*4]
mov r10d, dword [0x18002501c]
movsxd r9, dword [0x180024fec]
inc r10d
mov dword [0x18002501c], r10d
mov dword [0x180025058], ebp
movsxd r8, r10d
movzx eax, word [r15 + r9*2]
inc r9d
div qword [rcx + r8*8]
lea eax, [r10 + r10]
inc r10d
movsxd rcx, eax
mov qword [rsp], rdx
movzx eax, word [r15 + rcx*2]
add eax, r13d
mov dword [0x18002501c], r10d
movzx r10d, word [0x180024fcc]
movsxd r8, eax
mov dword [0x180024fec], r9d
mov rax, qword [rbx]
add rbx, 8
lea rcx, [rax + rax*2]
mov rax, qword [r11 + rcx*8]
mov qword [rsp + 8], rax
mov rax, qword [0x180025060]
movsxd rdx, dword [rax + r13*4]
mov rax, qword [0x180025020]
mov qword [rsp + 0x68], rax
lea eax, [rbp + 7]
movsxd rcx, eax
mov rax, qword [0x180024fe0]
mov qword [rsp + 0x90], rdx
mov r12, qword [rax + rcx*8]
mov rax, qword [rbx]
cmp dword [r14 + rax*4 + 4], r9d
jne 0x18000225b
movzx eax, word [rdi]
movzx edx, byte [rsi + rax*2]
lea eax, [r9 + r9*2]
movsxd rcx, eax
cmp qword [r8 + rcx*8], rdx
jb 0x18000225b
movzx ecx, byte [0x180024fcf]
movzx edx, byte [rcx + rsi + 4]
cmp ebp, edx
jle 0x180002342
mov rcx, qword [0x180024ff8]
inc r9d
mov dword [0x180024fec], r9d
mov rdx, qword [rbx + 0x9650]
movsxd r8, r9d
mov qword [rcx + r8*8], rdx
movsxd rcx, dword [0x18002501c]
xor qword [rbx + rcx*8], 0x4dc
mov eax, dword [rbx + 0x7150]
jmp 0x1800024ab
movzx ecx, word [0x18002505c]
mov eax, 0x384
mov rbp, qword [rsp + 0x78]
imul ecx, eax
lea eax, [r13*2]
mov word [0x18002505c], cx
movsxd rcx, eax
mov rax, qword [0x180024fc0]
lea r8, [rcx*4]
movzx ecx, word [rdi]
mov edx, dword [rax + rcx*4 + 0x74]
add edx, 0x1c2d
add dword [r8 + rbp], edx
mov rax, qword [rbx]
mov rbx, qword [rsp + 0x98]
lea rcx, [rax + rax*2]
movsxd r11, dword [r10 + rcx*4 + 4]
inc qword [rbx]
mov rax, qword [rbx]
cmp r11d, dword [r14 + rax*4]
jle 0x180002347
mov r10, r11
lea rsi, [rsi + r11*2]
shl r10, 5
movzx eax, word [0x180024ff0]
lea rsi, [rsi + 2]
add rax, 0xb
lea r10, [r10 + 0x20]
inc r11d
lea rax, [rax + rax*2]
lea rcx, [r14 + rax*4]
movzx eax, byte [rsi - 2]
xor dword [rcx], eax
mov eax, 0x1948
movzx r8d, byte [0x180024fcf]
mov rdx, qword [0x180025070]
movzx r9d, word [r12 + 0x1216]
lea rcx, [r8 + r8*2]
sub r9, qword [rdx + rcx*8]
lea ecx, [r8 + r8*2]
mov qword [rdx + rcx*8], r9
xor edx, edx
mov rcx, qword [0x180025038]
div qword [rcx + r10 - 0x20]
mov qword [rcx + r10 - 0x20], rdx
inc qword [rbx]
mov rax, qword [rbx]
cmp r11d, dword [r14 + rax*4]
jg 0x1800022d0
jmp 0x180002347
mov rbp, qword [rsp + 0x78]
movzx ecx, word [rdi]
mov rax, qword [0x180024fc0]
mov r10, qword [rsp + 0x90]
mov r11, qword [rsp + 0x60]
mov ecx, dword [rax + rcx*4 + 8]
cmp ecx, dword [r11 + r10*8 + 0xc]
jg 0x1800023a0
nop dword [rax]
movzx eax, word [rdi]
movzx r8d, word [r15 + rax*2]
lea r9, [r15 + rax*2]
mov eax, ecx
cdq
idiv r8d
mov word [r9], ax
mov rdx, qword [0x180025040]
movsxd rax, ecx
inc ecx
or qword [rdx + 0xdf70], rax
cmp ecx, dword [r11 + r10*8 + 0xc]
jle 0x180002370
movzx r8d, word [rdi]
movzx ecx, byte [0x180024fce]
mov r10, qword [rsp + 0x68]
movzx eax, word [r10]
lea r9, [r14 + rax*4]
mov rax, qword [0x180024fe0]
mov edx, dword [rax + 0x86a8]
mov rax, qword [rsp]
and edx, ecx
sub edx, dword [rax + r8*4]
mov eax, 0xffff
and dword [r9 + 0xc], edx
add word [rdi], ax
mov rax, qword [rbx]
movzx edx, word [rdi]
shl rdx, 4
add rdx, qword [rsp + 8]
mov rcx, qword [rbx + rax*8]
xor qword [rdx], rcx
movzx eax, word [r10]
mov r8d, dword [0x180024fec]
movzx ecx, word [rdi + rax*4 + 0x10]
mov rax, qword [rbx]
sub ecx, dword [r11 + rax*8]
mov eax, 0x55202141
imul ecx
sar edx, 0xb
mov eax, edx
shr eax, 0x1f
add edx, eax
lea eax, [r8 + r8]
or dword [0x180025058], edx
movsxd rcx, eax
movzx eax, word [rdi]
movsxd rdx, dword [rbp + rcx*4]
cmp rdx, qword [rax*8 + 0x1c26]
jne 0x1800024a5
lea eax, [r8*4 + 0x19]
movsxd rcx, eax
mov rax, qword [0x180025008]
lea rdx, [rax + rcx*8]
mov rax, qword [0x180025050]
add rax, 0x1c97
xor qword [rdx], rax
movzx ecx, word [rdi]
mov rax, qword [0x180025028]
lea rdx, [rax + rcx*4]
movsxd rax, dword [0x180025058]
mov ecx, dword [rbx + rax*8 + 8]
or dword [rdx], ecx
movzx ecx, word [rdi]
mov rax, qword [0x180025010]
movsxd rdx, dword [0x180025058]
mov r8d, dword [rax + rcx*4]
mov rax, qword [rsp + 0x70]
and r8d, dword [rax + rdx*8]
sub r8d, dword [0x180025004]
mov dword [0x180025004], r8d
mov eax, dword [rbx + 0x7158]
add rsp, 0x18
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret