Function at 0x4950d4
Capabilities:
Encode data using xor

Disassembly:
mov dword [rsp + 0x20], r9d
mov dword [rsp + 0x18], r8d
mov dword [rsp + 0x10], edx
push rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x48
xor r14d, r14d
mov rbx, rcx
cmp dword [rcx + 0x3d5f0], r14d
je 0x49510e
mov rcx, qword [rcx + 0x30]
call qword [rbx]
mov dword [rbx + 0x3d5f0], r14d
cmp dword [rbx + 0x3d5dc], r14d
je 0x495122
mov eax, dword [rbx + 0x3d5e4]
jmp 0x49577c
mov rcx, rbx
call fcn.00494c60
cmp eax, r14d
jne 0x49577c
cmp qword [rbx + 0x3d5d0], r14
mov edi, dword [rbx + 0x3d5d0]
lea rsi, [0x00400000]
mov r15d, edi
mov dword [rsp + 0x30], edi
jne 0x4951fd
mov rcx, qword [rbx + 0x30]
call qword [rbx + 0x10]
mov rcx, rbx
cmp eax, r14d
je 0x495775
lea rdx, [rsp + 0x90]
call fcn.00492fac
mov edx, dword [rbx + 0x33218]
lea rcx, [rbx + 0x3d580]
add rdx, 0x19f4
xor r8d, r8d
shl rdx, 5
add rdx, rbx
call fcn.00492b28
mov r11d, dword [rbx + 0x33218]
mov edx, dword [rbx + 0x33204]
mov eax, dword [rsi + r11*4 + 0xa76a8]
mov rcx, qword [rbx + 0x30]
neg edx
mov dword [rbx + 0x33218], eax
call qword [rbx + VariantCopy]
mov r12, qword [rbx + 0x33e78]
movzx esi, al
bts esi, 8
mov r8d, esi
mov eax, esi
lea rcx, [rbx + 0x3d580]
shr rax, 8
shr r8d, 7
lea rdx, [r12 + rax*2]
and r8d, 1
call fcn.00492b28
add esi, esi
cmp esi, 0x10000
jb 0x4951c9
add dword [rbx + 0x33204], 0xffffffff
inc edi
mov rcx, qword [rbx + 0x30]
call qword [rbx + 0x10]
cmp eax, r14d
je 0x495766
cmp dword [rbx + 0x3d578], r14d
mov rcx, rbx
je 0x495228
lea rdx, [rsp + 0x90]
call fcn.00494864
jmp 0x495237
lea r8, [rsp + 0x90]
mov edx, edi
call fcn.00493228
mov r12d, dword [rbx + 0x33e74]
mov esi, dword [rsp + 0x90]
mov r14d, eax
and r12d, edi
cmp eax, 1
jne 0x49538e
cmp esi, 0xffffffff
jne 0x49538e
mov ecx, dword [rbx + 0x33218]
mov eax, r12d
xor r8d, r8d
add rcx, 0x19f4
shl rcx, 4
add rcx, rax
lea rdx, [rbx + rcx*2]
lea rcx, [rbx + 0x3d580]
call fcn.00492b28
mov rcx, qword [rbx + 0x30]
call qword [rbx + 0x18]
mov ecx, dword [rbx + 0x33204]
mov r8d, dword [rbx + 0x33e64]
mov edx, dword [rbx + 0x33e70]
mov r11, rax
mov rax, qword [rbx + 0x33e78]
sub r11, rcx
lea ecx, [r14 + 7]
and edx, edi
movzx r9d, byte [r11 - 1]
mov r10b, byte [r11]
sub cl, r8b
shr r9d, cl
mov ecx, r8d
movzx esi, r10b
shl edx, cl
add r9d, edx
lea ecx, [r9 + r9*2]
shl ecx, 8
cmp dword [rbx + 0x33218], 7
lea r15, [rax + rcx*2]
jae 0x495313
bts esi, 8
mov r8d, esi
mov eax, esi
lea rcx, [rbx + 0x3d580]
shr rax, 8
shr r8d, 7
lea rdx, [r15 + rax*2]
and r8d, 1
call fcn.00492b28
add esi, esi
cmp esi, 0x10000
jb 0x4952e6
jmp 0x49536a
mov eax, dword [rbx + 0x33208]
mov r12d, 0x100
sub r11, rax
bts esi, 8
movzx ebp, byte [r11 - 1]
mov ecx, esi
mov eax, r12d
mov r8d, esi
shr ecx, 8
shr r8d, 7
add ebp, ebp
and eax, ebp
and r8d, 1
add eax, r12d
add ecx, eax
lea rdx, [r15 + rcx*2]
lea rcx, [rbx + 0x3d580]
call fcn.00492b28
add esi, esi
mov eax, esi
xor eax, ebp
not eax
and r12d, eax
cmp esi, 0x10000
jb 0x49532b
mov eax, dword [rbx + 0x33218]
mov r15d, dword [rsp + 0x30]
lea rcx, [0x00400000]
mov eax, dword [rcx + rax*4 + 0xa76a8]
mov dword [rbx + 0x33218], eax
jmp 0x4956c1
mov eax, dword [rbx + 0x33218]
mov r13d, r12d
lea rcx, [rbx + 0x3d580]
add rax, 0x19f4
mov r8d, 1
shl rax, 4
add rax, r13
lea rdx, [rbx + rax*2]
call fcn.00492b28
cmp esi, 4
mov eax, dword [rbx + 0x33218]
lea rdx, [rbx + rax*2 + 0x34000]
lea rcx, [rbx + 0x3d580]
jae 0x49553d
mov r8d, 1
call fcn.00492b28
test esi, esi
mov eax, dword [rbx + 0x33218]
lea rdx, [rbx + rax*2 + 0x34018]
lea rcx, [rbx + 0x3d580]
jne 0x495437
xor r8d, r8d
call fcn.00492b28
mov eax, dword [rbx + 0x33218]
xor r8d, r8d
cmp r14d, 1
lea rcx, [rbx + 0x3d580]
setne r8b
add rax, 0x1a03
shl rax, 4
add rax, r13
lea rdx, [rbx + rax*2]
call fcn.00492b28
jmp 0x4954c7
mov r13d, dword [rbx + rsi*4 + 0x33208]
mov r8d, 1
call fcn.00492b28
cmp esi, 1
mov eax, dword [rbx + 0x33218]
lea rdx, [rbx + rax*2 + 0x34030]
lea rcx, [rbx + 0x3d580]
jne 0x49546e
xor r8d, r8d
call fcn.00492b28
jmp 0x4954b4
mov r8d, 1
call fcn.00492b28
mov eax, dword [rbx + 0x33218]
lea r8d, [rsi - 2]
lea rdx, [rbx + rax*2 + 0x34048]
lea rcx, [rbx + 0x3d580]
call fcn.00492b28
cmp esi, 3
jne 0x4954a8
mov eax, dword [rbx + 0x33210]
mov dword [rbx + 0x33214], eax
mov eax, dword [rbx + 0x3320c]
mov dword [rbx + 0x33210], eax
mov eax, dword [rbx + 0x33208]
mov dword [rbx + 0x33208], r13d
mov dword [rbx + 0x3320c], eax
cmp r14d, 1
jne 0x4954ec
mov eax, dword [rbx + 0x33218]
lea rcx, [0x00400000]
mov eax, dword [rcx + rax*4 + 0xa7738]
mov dword [rbx + 0x33218], eax
jmp 0x4956c1
xor r10d, r10d
lea rax, [rbx + 0x3276c]
lea r8d, [r14 - 2]
cmp dword [rbx + 0x3d578], r10d
mov qword [rsp + 0x28], rax
lea rcx, [rbx + 0x38d2c]
sete r10b
lea rdx, [rbx + 0x3d580]
mov r9d, r12d
mov dword [rsp + 0x20], r10d
call fcn.00492eec
mov r11d, dword [rbx + 0x33218]
lea rax, [0x00400000]
mov eax, dword [rax + r11*4 + 0xa7708]
jmp 0x4954e1
xor r8d, r8d
call fcn.00492b28
mov r11d, dword [rbx + 0x33218]
xor edx, edx
cmp dword [rbx + 0x3d578], edx
lea rax, [0x00400000]
lea r13d, [r14 - 2]
mov eax, dword [rax + r11*4 + 0xa76d8]
sete dl
lea rcx, [rbx + 0x344e4]
mov dword [rbx + 0x33218], eax
lea rax, [rbx + 0x3276c]
mov r9d, r12d
mov qword [rsp + 0x28], rax
mov dword [rsp + 0x20], edx
lea rdx, [rbx + 0x3d580]
mov r8d, r13d
call fcn.00492eec
add esi, 0xfffffffc
cmp esi, 0x80
mov dword [rsp + 0x90], esi
jae 0x4955b6
movzx r12d, byte [rsi + rbx + 0x3076c]
jmp 0x4955d9
mov ecx, 0x7ffff
mov eax, esi
sub ecx, esi
shr ecx, 0x1f
neg ecx
and ecx, 0xc
add ecx, 6
shr rax, cl
movzx eax, byte [rax + rbx + 0x3076c]
lea r12d, [rax + rcx*2]
mov eax, 3
cmp r14d, 5
lea rcx, [rbx + 0x3d580]
cmovb eax, r13d
mov r9d, r12d
mov r8d, 6
shl rax, 7
lea rdx, [rax + rbx + 0x341e0]
call fcn.00492c4c
cmp r12d, 4
jb 0x495691
mov r8d, r12d
mov eax, r12d
mov r13d, esi
and eax, 1
shr r8d, 1
dec r8d
or eax, 2
mov ecx, r8d
shl eax, cl
sub r13d, eax
cmp r12d, 0xe
jae 0x495655
mov ecx, eax
mov eax, r12d
mov r9d, r13d
sub rcx, rax
lea rdx, [rbx + rcx*2 + 0x343de]
lea rcx, [rbx + 0x3d580]
call fcn.00492ca0
jmp 0x495691
mov edx, r13d
lea rcx, [rbx + 0x3d580]
add r8d, 0xfffffffc
shr edx, 4
call fcn.00492ad8
and r13d, 0xf
lea rdx, [rbx + 0x344c4]
lea rcx, [rbx + 0x3d580]
mov r9d, r13d
mov r8d, 4
call fcn.00492ca0
inc dword [rbx + 0x33e5c]
mov eax, dword [rbx + 0x33210]
inc dword [rbx + 0x3d5d8]
mov dword [rbx + 0x33214], eax
mov eax, dword [rbx + 0x3320c]
mov dword [rbx + 0x33210], eax
mov eax, dword [rbx + 0x33208]
mov dword [rbx + 0x33208], esi
mov dword [rbx + 0x3320c], eax
sub dword [rbx + 0x33204], r14d
add edi, r14d
xor r14d, r14d
cmp dword [rbx + 0x33204], r14d
jne 0x49520d
cmp dword [rbx + 0x3d578], r14d
jne 0x495709
cmp dword [rbx + 0x3d5d8], 0x80
jb 0x4956f8
mov rcx, rbx
call fcn.00494d74
cmp dword [rbx + 0x33e5c], 0x10
jb 0x495709
mov rcx, rbx
call fcn.00494d04
mov rcx, qword [rbx + 0x30]
call qword [rbx + 0x10]
cmp eax, r14d
je 0x495766
mov eax, edi
sub eax, r15d
cmp dword [rsp + 0x98], r14d
je 0x49578d
add eax, 0x112c
cmp eax, dword [rsp + 0xa8]
jae 0x495766
mov rax, qword [rbx + 0x3d590]
mov rcx, qword [rbx + 0x3d5b8]
sub rcx, qword [rbx + 0x3d5a8]
add rcx, qword [rbx + 0x3d598]
lea rcx, [rcx + rax + 0x2000]
mov eax, dword [rsp + 0xa0]
cmp rcx, rax
jb 0x49520d
mov eax, edi
mov rcx, rbx
sub eax, r15d
add qword [rbx + 0x3d5d0], rax
mov edx, edi
call fcn.00494ca4
add rsp, 0x48
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
pop rbx
ret
cmp eax, 0x8000
jb 0x49520d
sub edi, r15d
mov rcx, rbx
mov eax, edi
add qword [rbx + 0x3d5d0], rax
call fcn.00494c60
jmp 0x49577c