Function at 0x180036940
Capabilities:
Encode data using xor

Disassembly:
push rbp
push r14
push rsi
push rdi
push rbx
sub rsp, 0xb0
lea rbp, [rsp + 0x80]
mov qword [rbp + 0x28], 0xfffffffffffffffe
mov rsi, rcx
mov rax, qword [rcx + 0x10]
sub rax, qword [rcx + 8]
shr rax, 3
mov byte [rbp - 0x28], 2
mov dword [rbp - 8], eax
mov rcx, qword [rcx + 0xa8]
test rcx, rcx
je 0x180036d53
mov rdi, rdx
lea r9, [rsi + 0xb8]
mov rax, qword [rcx]
lea rdx, [rbp - 8]
lea r8, [rbp - 0x28]
call qword [rax + 0x10]
mov rdx, qword [rsi + 0x38]
mov rcx, rdx
shr rcx, 5
movabs r14, 0x3800000000000000
lea r8, [rcx + r14]
test rdx, rdx
cmovns r8, rcx
mov ebx, eax
shl r8, 2
add r8, qword [rsi + 0x20]
lea rcx, [rsi + 0x20]
and edx, 0x1f
mov qword [rbp + 0x18], r8
mov qword [rbp + 0x20], rdx
lea rdx, [rbp + 0x18]
mov r8d, 1
call fcn.180026670
mov rcx, rax
shr rcx, 5
or r14, rcx
test rax, rax
cmovns r14, rcx
shl r14, 2
add r14, qword [rsi + 0x20]
and eax, 0x1f
lea rcx, [rax + 1]
mov edx, ecx
shr edx, 5
lea rdx, [r14 + rdx*4]
and ecx, 0x1f
mov qword [rbp - 8], rdx
mov qword [rbp], rcx
mov qword [rbp - 0x28], r14
mov qword [rbp - 0x20], rax
lea rcx, [rbp - 0x28]
lea rdx, [rbp - 8]
mov r8d, ebx
call fcn.180026bf0
mov byte [rbp - 8], 2
lea rdx, [rbp + 0x18]
lea r8, [rbp - 8]
mov rcx, rsi
mov r9b, 1
call fcn.180037400
mov rdx, qword [rsi + 0x10]
cmp rdx, qword [rsi + 0x18]
je 0x180036a6b
mov rax, qword [rbp + 0x20]
mov qword [rdx], rax
mov rax, qword [rsi + 0x10]
add rax, 8
mov qword [rsi + 0x10], rax
cmp rdi, 0xffffffffffffffff
jne 0x180036a82
jmp 0x180036aaa
lea rcx, [rsi + 8]
lea r8, [rbp + 0x20]
call fcn.180037d20
mov rax, qword [rsi + 0x10]
cmp rdi, 0xffffffffffffffff
je 0x180036aaa
mov rsi, qword [rax - 8]
test rsi, rsi
je 0x180036aaa
movsx rax, byte [rsi]
mov ecx, 1
cmp rax, 2
ja 0x180036aa5
lea rcx, [0x18004feb8]
mov rcx, qword [rcx + rax*8]
cmp rcx, rdi
jb 0x180036aba
mov al, 1
add rsp, 0xb0
pop rbx
pop rdi
pop rsi
pop r14
pop rbp
ret
lea rcx, [rbp - 0x28]
mov rdx, rdi
call fcn.180037ed0
cmp byte [0x180062217], 0
jne 0x180036d0a
mov rax, qword [0x18005fd70]
movabs rdx, 0x785a7cc8241812c7
add rdx, rax
movabs r8, 0x785a7cc8241812df
add r8, rax
movabs r9, 0x785a7cc8241812f6
add r9, rax
lea rcx, [0x180062200]
cmp r9, rcx
jbe 0x180036b21
lea r9, [0x180062217]
cmp rdx, r9
jae 0x180036b21
xor r9d, r9d
jmp 0x180036c77
mov r9d, dword [r8]
movd xmm1, r9d
mov r10d, dword [rdx]
movd xmm2, r10d
movdqa xmm0, xmmword [0x180050640]
pxor xmm1, xmm0
pxor xmm2, xmm0
por xmm2, xmm1
xor r10d, r9d
movd xmm1, r10d
pand xmm1, xmm2
movd dword [0x180062200], xmm1
movabs r9, 0x785a7cc8241812e3
mov r9d, dword [rax + r9]
movd xmm1, r9d
movabs r10, 0x785a7cc8241812cb
mov r10d, dword [rax + r10]
movd xmm2, r10d
pxor xmm1, xmm0
pxor xmm2, xmm0
por xmm2, xmm1
xor r10d, r9d
movd xmm1, r10d
pand xmm1, xmm2
movd dword [0x180062204], xmm1
movabs r9, 0x785a7cc8241812e7
mov r9d, dword [rax + r9]
movd xmm1, r9d
movabs r10, 0x785a7cc8241812cf
mov r10d, dword [rax + r10]
movd xmm2, r10d
pxor xmm1, xmm0
pxor xmm2, xmm0
por xmm2, xmm1
xor r10d, r9d
movd xmm1, r10d
pand xmm1, xmm2
movd dword [0x180062208], xmm1
movabs r9, 0x785a7cc8241812eb
mov r9d, dword [rax + r9]
movd xmm1, r9d
movabs r10, 0x785a7cc8241812d3
mov r10d, dword [rax + r10]
movd xmm2, r10d
pxor xmm1, xmm0
pxor xmm2, xmm0
por xmm2, xmm1
xor r10d, r9d
movd xmm1, r10d
pand xmm1, xmm2
movd dword [0x18006220c], xmm1
movabs r9, 0x785a7cc8241812ef
mov r9d, dword [rax + r9]
movd xmm1, r9d
movabs r10, 0x785a7cc8241812d7
mov r10d, dword [rax + r10]
movd xmm2, r10d
pxor xmm1, xmm0
pxor xmm2, xmm0
por xmm2, xmm1
xor r10d, r9d
movd xmm0, r10d
pand xmm0, xmm2
movd dword [0x180062210], xmm0
mov r9d, 0x14
movzx r8d, byte [r8 + r9]
movzx edx, byte [rdx + r9]
mov r10d, edx
xor dl, r8b
xor r8b, 0xc7
xor r10b, 0xc7
or r10b, r8b
and dl, r10b
mov byte [r9 + rcx], dl
movabs rdx, 0x785a7cc8241812e1
add rax, rdx
nop word cs:[rax + rax]
movzx edx, byte [rax + r9 - 0x19]
movzx r8d, byte [rax + r9 - 1]
mov r10d, edx
xor dl, r8b
xor r8b, 0xc7
xor r10b, 0xc7
or r10b, r8b
and dl, r10b
mov byte [r9 + rcx + 1], dl
movzx edx, byte [rax + r9 - 0x18]
movzx r8d, byte [rax + r9]
mov r10d, edx
xor dl, r8b
xor r8b, 0xc7
xor r10b, 0xc7
or r10b, r8b
and dl, r10b
mov byte [r9 + rcx + 2], dl
add r9, 2
cmp r9, 0x16
jne 0x180036cb0
mov byte [0x180062217], 1
movabs rdi, 0x785a7cc82417db9c
mov rdx, qword [0x18005fd78]
add rdx, rdi
lea rcx, [rbp - 8]
lea r8, [rbp - 0x28]
call fcn.180037b40
lea rcx, [rbp - 0x60]
lea r8, [rbp - 8]
mov edx, 0x198
mov r9, rsi
call fcn.180037700
add rdi, qword [0x18005fd80]
lea rcx, [rbp - 0x60]
mov rdx, rdi
call sub.VCRUNTIME140.dll__CxxThrowException
call sub.MSVCP140.dll_void___cdecl_std::_Xbad_function_call_void_
int3