Function at 0x180229500
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 0x10], rdx
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x1f]
sub rsp, 0xf8
mov qword [rbp - 0x21], 0xfffffffffffffffe
mov r14, rdx
mov rbx, rcx
lea r15, [rcx + 0x4c]
mov qword [rbp - 0x29], r15
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
mov rcx, rbx
call fcn.1800bed20
xor r12d, r12d
mov dword [rbx + 0x78], r12d
cmp byte [rbx + 0x7c], r12b
je 0x180229569
mov dword [rbx + 0x80], 0x3f800000
lea edx, [r12 + 1]
mov rcx, rbx
call fcn.1800bd4e0
mov qword [rbp + 0x67], 1
lea rcx, [rbp + 0x67]
call fcn.1800ddd00
movabs r8, 0x5deece66d
mov rax, qword [rbp + 0x67]
imul rax, r8
add rax, 0xb
movabs rdx, 0xffffffffffff
and rax, rdx
mov rcx, rax
sar rcx, 0x10
mov dword [rbx + 0x34], ecx
imul rax, r8
add rax, 0xb
and rax, rdx
mov rcx, rax
sar rcx, 0x10
mov dword [rbx + 0x38], ecx
imul rax, r8
add rax, 0xb
and rax, rdx
mov rcx, rax
sar rcx, 0x10
mov dword [rbx + 0x3c], ecx
imul rax, r8
add rax, 0xb
and rax, rdx
mov rcx, rax
sar rcx, 0x10
mov dword [rbx + 0x40], ecx
imul rax, r8
add rax, 0xb
and rax, rdx
mov rcx, rax
sar rcx, 0x10
mov dword [rbx + 0x44], ecx
imul rax, r8
add rax, 0xb
and rax, rdx
mov qword [rbp + 0x67], rax
sar rax, 0x10
mov ecx, eax
shl rcx, 3
shr rcx, 0x20
add ecx, 8
mov dword [rbx + 0x48], ecx
mov rax, qword [r14 + 8]
mov dword [rbx + 0x28], eax
mov ecx, dword [rbx + 0x30]
cdq
idiv ecx
mov dword [rbx + 0x2c], eax
test edx, edx
jle 0x180229637
inc eax
mov dword [rbx + 0x2c], eax
imul ecx, dword [rbx + 0x2c]
movsxd rdx, ecx
cmp qword [r14 + 8], rdx
jae 0x18022964f
xor r8d, r8d
mov rcx, r14
call fcn.1800dd960
lea r13, vtable.juce::OutputStream.0
mov qword [rsp + 0x20], r13
lea rax, [0x180375c60]
mov qword [rbp + 0x7f], rax
lea rdx, [rbp + 0x7f]
lea rcx, [rsp + 0x28]
call fcn.18001a440
nop
lea rax, vtable.juce::MemoryOutputStream.0
mov qword [rsp + 0x20], rax
lea rax, [rsp + 0x38]
mov qword [rsp + 0x30], rax
mov qword [rsp + 0x38], r12
mov qword [rsp + 0x40], r12
mov qword [rsp + 0x48], r12
mov qword [rsp + 0x50], r12
mov qword [rsp + 0x58], r12
mov qword [rbp - 0x79], r12
xor ecx, ecx
call fcn.1800a09c8
mov ecx, 0x100
call fcn.1800a0a4c
mov qword [rsp + 0x38], rax
test rax, rax
jne 0x1802296fd
lea rax, str.bad_allocation
mov qword [rbp - 0x61], rax
mov r8d, 1
lea rdx, [rbp - 0x61]
lea rcx, [rbp - 0x19]
call fcn.1800a02bc
lea rax, vtable.std::bad_alloc.0
mov qword [rbp - 0x19], rax
lea rdx, [0x180411c30]
lea rcx, [rbp - 0x19]
call fcn.1800a6538
int3
mov qword [rsp + 0x40], 0x100
lea rax, vtable.juce::MemoryInputStream.0
mov r9, rax
mov qword [rbp - 0x51], rax
mov rax, qword [r14]
mov qword [rbp - 0x49], rax
mov rax, qword [r14 + 8]
mov qword [rbp - 0x41], rax
mov qword [rbp - 0x39], r12
mov qword [rbp - 0x31], r12
mov esi, r12d
cmp dword [rbx + 0x2c], r12d
jle 0x180229806
nop dword [rax + rax]
mov r8d, 8
lea rdx, [rbp - 0x59]
lea rcx, [rbp - 0x51]
call qword [r9 + reloc.OLEAUT32.dll_SafeArrayGetElement]
mov rdx, r12
cmp eax, 8
cmove rdx, qword [rbp - 0x59]
mov qword [rbp + 0x77], rdx
mov edi, dword [rbx + 0x44]
mov eax, dword [rbx + 0x48]
mov r8, rdx
sar r8, 0x20
mov r9d, r12d
test eax, eax
je 0x1802297d0
mov r10, r12
mov r11d, eax
nop dword [rax + rax]
mov ecx, r8d
shr ecx, 5
mov eax, r8d
shl eax, 4
xor ecx, eax
add ecx, r8d
and r10d, 3
mov eax, dword [rbx + r10*4 + 0x34]
add eax, r9d
xor ecx, eax
add edx, ecx
add r9d, edi
mov r10d, r9d
mov ecx, edx
shr ecx, 5
mov eax, edx
shl eax, 4
xor ecx, eax
add ecx, edx
mov eax, r9d
shr rax, 0xb
and eax, 3
mov eax, dword [rbx + rax*4 + 0x34]
add eax, r9d
xor ecx, eax
add r8d, ecx
dec r11
jne 0x180229780
mov dword [rbp + 0x77], edx
mov dword [rbp + 0x7b], r8d
mov rax, qword [rbp + 0x77]
mov qword [rbp - 0x69], rax
mov r8d, 8
lea rdx, [rbp - 0x69]
lea rcx, [rsp + 0x20]
mov rax, qword [rsp + 0x20]
call qword [rax + 0x20]
inc esi
cmp esi, dword [rbx + 0x2c]
jge 0x180229806
mov r9, qword [rbp - 0x51]
jmp 0x180229740
mov ecx, 8
call fcn.1800a103c
mov rsi, rax
mov ecx, reloc.OLEAUT32.dll_SafeArrayGetDim
call fcn.1800a103c
test rax, rax
je 0x18022982b
mov qword [rax], r12
mov qword [rax + 8], r12
jmp 0x18022982e
mov rax, r12
mov qword [rsi], rax
mov rax, qword [rbx + 0x20]
mov rdi, qword [rax]
test rdi, rdi
je 0x18022984d
mov rcx, qword [rdi]
call fcn.1800a09c8
mov rcx, rdi
call fcn.1800a0ca0
mov rcx, qword [rbx + 0x20]
call fcn.1800a0ca0
mov qword [rbx + 0x20], rsi
lea rdx, [rbp - 1]
lea rcx, [rsp + 0x20]
call fcn.1800dafe0
mov rcx, qword [rbx + 0x20]
mov r8, qword [rcx]
mov rdx, qword [r8]
mov rcx, qword [rax]
mov qword [r8], rcx
mov qword [rax], rdx
mov rax, qword [rax + 8]
mov qword [r8 + 8], rax
mov rcx, qword [rbp - 1]
call fcn.1800a09c8
nop
lea rax, vtable.juce::MemoryInputStream.0
mov qword [rbp - 0x51], rax
mov rcx, qword [rbp - 0x31]
call fcn.1800a09c8
lea rax, vtable.juce::InputStream.0
mov qword [rbp - 0x51], rax
lea rax, vtable.juce::MemoryOutputStream.0
mov qword [rsp + 0x20], rax
lea rax, [rsp + 0x38]
mov rcx, qword [rsp + 0x30]
cmp rcx, rax
je 0x1802298da
test rcx, rcx
je 0x1802298da
xor r8d, r8d
mov rdx, qword [rsp + 0x58]
call fcn.1800dd960
nop
mov rcx, qword [rsp + 0x38]
call fcn.1800a09c8
nop
mov qword [rsp + 0x20], r13
mov rcx, qword [rsp + 0x28]
add rcx, 0xfffffffffffffff0
lea rax, [0x1802bccb0]
cmp rcx, rax
je 0x180229913
or eax, 0xffffffff
lock xadd dword [rcx], eax
dec eax
cmp eax, 0xffffffff
jne 0x180229913
call fcn.1800a0c6c
nop
mov rcx, r15
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
nop
mov rcx, qword [r14]
call fcn.1800a09c8
add rsp, 0xf8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret