Function at 0x180228e40
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 - 0xd8]
sub rsp, 0x1d8
mov qword [rbp + 0x48], 0xfffffffffffffffe
mov r14, rdx
mov rsi, rcx
xor ebx, ebx
mov dword [rsp + 0x40], ebx
lea rax, [rcx + 0x4c]
mov qword [rbp + 0x90], rax
mov rcx, rax
call qword [sym.imp.KERNEL32.dll_EnterCriticalSection]
nop
lea r12, vtable.juce::OutputStream.0
mov qword [rsp + 0x60], r12
lea rdi, [0x180375c60]
mov qword [rbp + 0x138], rdi
lea rdx, [rbp + 0x138]
lea rcx, [rsp + 0x68]
call fcn.18001a440
nop
lea r15, vtable.juce::MemoryOutputStream.0
mov qword [rsp + 0x60], r15
lea rax, [rsp + 0x78]
mov qword [rsp + 0x70], rax
mov qword [rsp + 0x78], rbx
mov qword [rbp - 0x80], rbx
mov qword [rbp - 0x78], rbx
mov qword [rbp - 0x70], rbx
mov qword [rbp - 0x68], rbx
mov qword [rbp - 0x60], rbx
xor ecx, ecx
call fcn.1800a09c8
mov ecx, 0x100
call fcn.1800a0a4c
mov qword [rsp + 0x78], rax
test rax, rax
jne 0x180228f42
lea rax, str.bad_allocation
mov qword [rsp + 0x30], rax
lea r8d, [rbx + 1]
lea rdx, [rsp + 0x30]
lea rcx, [rbp + 0xb0]
call fcn.1800a02bc
lea rax, vtable.std::bad_alloc.0
mov qword [rbp + 0xb0], rax
lea rdx, [0x180411c30]
lea rcx, [rbp + 0xb0]
call fcn.1800a6538
int3
mov qword [rbp - 0x80], 0x100
mov qword [rbp - 0x50], r12
mov qword [rbp + 0x38], rdi
lea rdx, [rbp + 0x38]
lea rcx, [rbp - 0x48]
call fcn.18001a440
nop
mov qword [rbp - 0x50], r15
lea rax, [rbp - 0x38]
mov qword [rbp - 0x40], rax
mov qword [rbp - 0x38], rbx
mov qword [rbp - 0x30], rbx
mov qword [rbp - 0x28], rbx
mov qword [rbp - 0x20], rbx
mov qword [rbp - 0x18], rbx
mov qword [rbp - 0x10], rbx
xor ecx, ecx
call fcn.1800a09c8
mov ecx, 0x100
call fcn.1800a0a4c
mov qword [rbp - 0x38], rax
test rax, rax
jne 0x180228fe3
lea rax, str.bad_allocation
mov qword [rsp + 0x20], rax
mov r8d, 1
lea rdx, [rsp + 0x20]
lea rcx, [rbp + 0x98]
call fcn.1800a02bc
lea rax, vtable.std::bad_alloc.0
mov qword [rbp + 0x98], rax
lea rdx, [0x180411c30]
lea rcx, [rbp + 0x98]
call fcn.1800a6538
int3
mov qword [rbp - 0x30], 0x100
mov rax, qword [rsi + 0x20]
mov rcx, qword [rax]
lea rax, vtable.juce::MemoryInputStream.0
mov qword [rbp + 0x10], rax
mov rax, qword [rcx]
mov qword [rbp + 0x18], rax
mov rax, qword [rcx + 8]
mov qword [rbp + 0x20], rax
mov qword [rbp + 0x28], rbx
mov qword [rbp + 0x30], rbx
mov qword [rbp + 0x130], 1
lea rcx, [rbp + 0x130]
call fcn.1800ddd00
movabs r11, 0x5deece66d
mov rax, qword [rbp + 0x130]
imul rax, r11
add rax, 0xb
movabs r10, 0xffffffffffff
and rax, r10
mov rcx, rax
sar rcx, 0x10
mov qword [rsp + 0x20], rcx
mov dword [rsp + 0x48], ecx
imul rax, r11
add rax, 0xb
and rax, r10
mov rdx, rax
sar rdx, 0x10
mov qword [rsp + 0x30], rdx
mov dword [rsp + 0x4c], edx
imul rax, r11
add rax, 0xb
and rax, r10
mov r8, rax
sar r8, 0x10
mov qword [rsp + 0x28], r8
mov dword [rsp + 0x50], r8d
imul rax, r11
add rax, 0xb
and rax, r10
mov r9, rax
sar r9, 0x10
mov qword [rsp + 0x38], r9
mov dword [rsp + 0x54], r9d
imul rax, r11
add rax, 0xb
and rax, r10
mov r15, rax
sar r15, 0x10
mov dword [rsp + 0x58], r15d
imul rax, r11
add rax, 0xb
and rax, r10
mov qword [rbp + 0x130], rax
sar rax, 0x10
mov r13d, eax
shl r13, 3
shr r13, 0x20
add r13d, 8
mov dword [rsp + 0x5c], r13d
mov r12d, ebx
cmp dword [rsi + 0x2c], ebx
jle 0x18022926b
mov r8d, 8
lea rdx, [rbp + 8]
lea rcx, [rbp + 0x10]
mov rax, qword [rbp + 0x10]
call qword [rax + reloc.OLEAUT32.dll_SafeArrayGetElement]
cmp eax, 8
cmove rbx, qword [rbp + 8]
mov qword [rbp + 0x120], rbx
mov r11d, dword [rsi + 0x44]
mov eax, dword [rsi + 0x48]
mov rdi, rbx
sar rdi, 0x20
mov r9d, eax
imul r9d, r11d
test eax, eax
je 0x180229190
mov r8d, r9d
mov r10d, eax
mov ecx, ebx
shr ecx, 5
mov eax, ebx
shl eax, 4
xor ecx, eax
add ecx, ebx
shr r8, 0xb
and r8d, 3
mov eax, dword [rsi + r8*4 + 0x34]
add eax, r9d
xor ecx, eax
sub edi, ecx
sub r9d, r11d
mov r8d, r9d
mov edx, edi
shr edx, 5
mov eax, edi
shl eax, 4
xor edx, eax
add edx, edi
mov eax, r9d
and eax, 3
mov ecx, dword [rsi + rax*4 + 0x34]
add ecx, r9d
xor edx, ecx
sub ebx, edx
dec r10
jne 0x180229144
mov dword [rbp + 0x120], ebx
mov dword [rbp + 0x124], edi
mov rax, qword [rbp + 0x120]
mov qword [rbp + 0x40], rax
mov r8d, 8
lea rdx, [rbp + 0x40]
lea rcx, [rsp + 0x60]
mov rax, qword [rsp + 0x60]
call qword [rax + 0x20]
xor edx, edx
test r13d, r13d
je 0x180229219
xor r8d, r8d
mov r9d, r13d
nop dword [rax + rax]
mov ecx, edi
shr ecx, 5
mov eax, edi
shl eax, 4
xor ecx, eax
add ecx, edi
and r8d, 3
mov eax, dword [rsp + r8*4 + 0x48]
add eax, edx
xor ecx, eax
add ebx, ecx
add edx, r15d
mov r8d, edx
mov ecx, ebx
shr ecx, 5
mov eax, ebx
shl eax, 4
xor ecx, eax
add ecx, ebx
mov eax, edx
shr rax, 0xb
and eax, 3
mov eax, dword [rsp + rax*4 + 0x48]
add eax, edx
xor ecx, eax
add edi, ecx
dec r9
jne 0x1802291d0
mov dword [rbp + 0x120], ebx
mov dword [rbp + 0x124], edi
mov rax, qword [rbp + 0x120]
mov qword [rbp], rax
mov r8d, 8
lea rdx, [rbp]
lea rcx, [rbp - 0x50]
mov rax, qword [rbp - 0x50]
call qword [rax + 0x20]
inc r12d
cmp r12d, dword [rsi + 0x2c]
mov ebx, 0
jl 0x180229101
mov rcx, qword [rsp + 0x20]
mov rdx, qword [rsp + 0x30]
mov r8, qword [rsp + 0x28]
mov r9, qword [rsp + 0x38]
mov dword [rsi + 0x34], ecx
mov dword [rsi + 0x38], edx
mov dword [rsi + 0x3c], r8d
mov dword [rsi + 0x40], r9d
mov dword [rsi + 0x44], r15d
mov dword [rsi + 0x48], r13d
mov ecx, 8
call fcn.1800a103c
mov rdi, rax
mov ecx, reloc.OLEAUT32.dll_SafeArrayGetDim
call fcn.1800a103c
test rax, rax
je 0x1802292a6
mov qword [rax], rbx
mov qword [rax + 8], rbx
jmp 0x1802292a9
mov rax, rbx
mov qword [rdi], rax
mov rax, qword [rsi + 0x20]
mov rbx, qword [rax]
test rbx, rbx
je 0x1802292c8
mov rcx, qword [rbx]
call fcn.1800a09c8
mov rcx, rbx
call fcn.1800a0ca0
mov rcx, qword [rsi + 0x20]
call fcn.1800a0ca0
mov qword [rsi + 0x20], rdi
lea rdx, [rbp + 0x68]
lea rcx, [rbp - 0x50]
call fcn.1800dafe0
mov rcx, qword [rsi + 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 + 0x68]
call fcn.1800a09c8
mov rdx, r14
lea rcx, [rsp + 0x60]
call fcn.1800dafe0
mov dword [rsp + 0x40], 1
movsxd rbx, dword [rsi + 0x28]
cmp qword [r14 + 8], rbx
je 0x1802293ec
mov rcx, qword [r14]
test rbx, rbx
jne 0x180229342
call fcn.1800a09c8
mov qword [r14], rbx
mov qword [r14 + 8], rbx
jmp 0x1802293ec
test rcx, rcx
je 0x180229397
mov rdx, rbx
call fcn.1800a0f0c
mov qword [r14], rax
test rax, rax
jne 0x1802293e8
lea rax, str.bad_allocation
mov qword [rsp + 0x38], rax
mov r8d, 1
lea rdx, [rsp + 0x38]
lea rcx, [rbp + 0x78]
call fcn.1800a02bc
lea rax, vtable.std::bad_alloc.0
mov qword [rbp + 0x78], rax
lea rdx, [0x180411c30]
lea rcx, [rbp + 0x78]
call fcn.1800a6538
int3
call fcn.1800a09c8
mov rcx, rbx
call fcn.1800a0a4c
mov qword [r14], rax
test rax, rax
jne 0x1802293e8
lea rax, str.bad_allocation
mov qword [rsp + 0x28], rax
mov r8d, 1
lea rdx, [rsp + 0x28]
lea rcx, [rbp + 0x50]
call fcn.1800a02bc
lea rax, vtable.std::bad_alloc.0
mov qword [rbp + 0x50], rax
lea rdx, [0x180411c30]
lea rcx, [rbp + 0x50]
call fcn.1800a6538
int3
mov qword [r14 + 8], rbx
lea rax, vtable.juce::MemoryInputStream.0
mov qword [rbp + 0x10], rax
mov rcx, qword [rbp + 0x30]
call fcn.1800a09c8
lea rax, vtable.juce::InputStream.0
mov qword [rbp + 0x10], rax
lea r15, vtable.juce::MemoryOutputStream.0
mov qword [rbp - 0x50], r15
lea rax, [rbp - 0x38]
mov rcx, qword [rbp - 0x40]
cmp rcx, rax
je 0x180229435
test rcx, rcx
je 0x180229435
xor r8d, r8d
mov rdx, qword [rbp - 0x18]
call fcn.1800dd960
nop
mov rcx, qword [rbp - 0x38]
call fcn.1800a09c8
nop
lea r12, vtable.juce::OutputStream.0
mov qword [rbp - 0x50], r12
mov rcx, qword [rbp - 0x48]
add rcx, 0xfffffffffffffff0
lea rdi, [0x1802bccb0]
or ebx, 0xffffffff
cmp rcx, rdi
je 0x180229473
mov eax, ebx
lock xadd dword [rcx], eax
dec eax
cmp eax, ebx
jne 0x180229473
call fcn.1800a0c6c
nop
mov qword [rsp + 0x60], r15
lea rax, [rsp + 0x78]
mov rcx, qword [rsp + 0x70]
cmp rcx, rax
je 0x180229499
test rcx, rcx
je 0x180229499
xor r8d, r8d
mov rdx, qword [rbp - 0x68]
call fcn.1800dd960
nop
mov rcx, qword [rsp + 0x78]
call fcn.1800a09c8
nop
mov qword [rsp + 0x60], r12
mov rcx, qword [rsp + 0x68]
add rcx, 0xfffffffffffffff0
cmp rcx, rdi
je 0x1802294c9
lock xadd dword [rcx], ebx
lea eax, [rbx - 1]
cmp eax, 0xffffffff
jne 0x1802294c9
call fcn.1800a0c6c
nop
lea rcx, [rsi + 0x4c]
call qword [sym.imp.KERNEL32.dll_LeaveCriticalSection]
mov rax, r14
add rsp, 0x1d8
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret