Function at 0x164c610b0
Capabilities:
Encode data using xor

Disassembly:
mov r11, rsp
mov qword [r11 + 0x20], r9
mov qword [r11 + 0x18], r8
mov dword [rsp + 0x10], edx
mov qword [r11 + 8], rcx
push rbp
push rdi
push r12
push r14
push r15
lea rbp, [r11 - 0x238]
sub rsp, 0x310
mov rax, qword [0x164cb3008]
xor rax, rsp
mov qword [rbp + 0x1e0], rax
mov r15, qword [rbp + 0x258]
mov rdi, qword [rbp + 0x250]
mov r14, qword [rbp + 0x268]
mov rcx, qword [rbp + 0x240]
mov edx, dword [rbp + 0x248]
mov r12, qword [rbp + 0x260]
mov qword [rbp + 0x1d0], rdi
mov qword [rsp + 0x38], r14
test r15, r15
je 0x164c6153e
test r12, r12
je 0x164c6153e
test rdi, rdi
je 0x164c6153e
mov qword [r11 - 0x30], rbx
lea r9, [rbp - 0x40]
xor r8d, r8d
mov qword [r11 - 0x38], rsi
mov dword [rsp + 0x20], 1
call fcn.164c5ebb0
movups xmm0, xmmword [rdi]
movzx eax, byte [rbp + 0x1a8]
xor esi, esi
movaps xmmword [rbp + 0x1c0], xmm0
test al, al
je 0x164c6156e
mov rbx, qword [rbp + 0x1b0]
test rbx, rbx
je 0x164c6155d
mov eax, dword [rbx + 0x8c]
mov edx, esi
sub eax, 0x10
mov qword [rsp + 0x2f8], r13
mov r10d, eax
mov r13, r14
add rax, r15
mov qword [rsp + 0x40], rdx
and r13, 0xfffffffffffffff0
mov qword [rsp + 0x58], r15
mov rcx, r12
mov qword [rsp + 0x78], r10
mov r9, r15
mov qword [rsp + 0x30], rcx
lea r11, [r13 + 0xfff]
add r11, rax
lea rax, [r15 + 0xfff]
add rax, r14
and r11, 0xfffffffffffff000
and rax, 0xfffffffffffff000
mov qword [rbp - 0x80], r11
mov qword [rsp + 0x68], rax
mov eax, dword [rbx + 0x30]
bts eax, 7
mov dword [rsp + 0x48], eax
mov rax, qword [rbx + 0x10]
mov qword [rsp + 0x70], rax
mov rax, qword [rbx + 0x20]
movups xmmword [rax], xmm0
test r13, r13
je 0x164c613c8
mov rdx, qword [rsp + 0x68]
mov rax, r9
and eax, 0xf
mov qword [rsp + 0x60], r9
mov qword [rsp + 0x50], rcx
mov r14d, 0x80000000
mov rdi, r13
mov r8, rcx
cmp r11, rdx
jbe 0x164c6123e
cmp r13, r10
jbe 0x164c6123e
test rax, rax
jne 0x164c61248
sub rdi, r10
jmp 0x164c612af
test rax, rax
jne 0x164c61248
cmp r11, rdx
jbe 0x164c612af
mov rcx, qword [rbx]
test rcx, rcx
jne 0x164c61288
mov rax, qword [0x164cb3660]
lea rcx, [r10 + 0x400f]
call qword [0x164c92120]
mov qword [rbx + 0x68], rax
test rax, rax
je 0x164c613b4
mov r9, qword [rsp + 0x58]
lea rcx, [rax + 0xf]
and rcx, 0xfffffffffffffff0
mov dword [rbx + 0x28], 0x4000
mov qword [rbx], rcx
mov edi, dword [rbx + 0x28]
mov rdx, r9
cmp r13, rdi
cmovbe rdi, r13
mov r8, rdi
call fcn.164c8fe50
mov rax, qword [rbx]
mov rcx, qword [rsp + 0x30]
mov r8, qword [rsp + 0x50]
mov qword [rsp + 0x60], rax
test cl, 0xf
je 0x164c61312
mov rcx, qword [rbx + 8]
test rcx, rcx
jne 0x164c612ef
mov rax, qword [0x164cb3660]
mov ecx, 0x400f
call qword [0x164c92120]
mov qword [rbx + 0x70], rax
test rax, rax
je 0x164c613b4
lea rcx, [rax + 0xf]
mov dword [rbx + 0x2c], 0x4000
and rcx, 0xfffffffffffffff0
mov qword [rbx + 8], rcx
mov eax, dword [rbx + 0x2c]
mov rdx, qword [rsp + 0x30]
cmp rdi, rax
cmovbe rax, rdi
mov r8, rax
mov rdi, rax
call fcn.164c8fe50
mov r8, qword [rbx + 8]
mov qword [rsp + 0x50], r8
mov rax, qword [rbx + 0x20]
mov ecx, dword [rsp + 0x48]
shr rdi, 4
mov dword [rax + 0x10], ecx
cmp rdi, r14
jb 0x164c6132b
mov rdi, r14
jmp 0x164c61334
test rdi, rdi
je 0x164c613be
mov rax, qword [rbx + 0x20]
mov r9, r8
mov r8, qword [rsp + 0x60]
mov r14, rdi
mov rcx, qword [rsp + 0x70]
mov qword [rsp + 0x28], rax
lea rdx, [rax + 0x10]
shl r14, 4
mov dword [rsp + 0x20], edi
call fcn.164c49ca0
mov rdx, qword [rsp + 0x50]
mov rax, qword [rbx + 0x20]
mov rcx, qword [rsp + 0x30]
movups xmm0, xmmword [r14 + rdx - 0x10]
movups xmmword [rax], xmm0
cmp rcx, rdx
je 0x164c61387
mov r8, r14
call fcn.164c8fe50
mov rcx, qword [rsp + 0x30]
mov r9, qword [rsp + 0x58]
add rcx, r14
add qword [rsp + 0x40], r14
add r9, r14
mov qword [rsp + 0x58], r9
mov qword [rsp + 0x30], rcx
sub r13, r14
je 0x164c613be
mov r10, qword [rsp + 0x78]
mov r11, qword [rbp - 0x80]
jmp 0x164c61209
mov r14, qword [rsp + 0x38]
mov rdx, rsi
jmp 0x164c613d6
mov rdx, qword [rsp + 0x40]
mov r14, qword [rsp + 0x38]
mov rax, qword [rbx + 0x20]
movups xmm0, xmmword [rax]
movaps xmmword [rbp + 0x1c0], xmm0
mov rdi, qword [rbp + 0x1d0]
add r15, rdx
mov r13, qword [rsp + 0x2f8]
add r12, rdx
sub r14, rdx
cmp r14, 0x10
jb 0x164c61444
mov rbx, r14
shr rbx, 4
imul rax, rbx, 0xfffffffffffffff0
add r14, rax
mov rax, qword [r15]
lea r8, [rbp - 0x40]
xor qword [rbp + 0x1c0], rax
lea rcx, [rbp + 0x1c0]
mov rax, qword [r15 + 8]
mov rdx, r12
xor qword [rbp + 0x1c8], rax
call fcn.164c5fe00
movups xmm0, xmmword [r12]
add r12, 0x10
add r15, 0x10
movaps xmmword [rbp + 0x1c0], xmm0
sub rbx, 1
jne 0x164c61402
cmp dword [rbp + 0x270], 1
jne 0x164c614ad
mov r8, r14
lea rcx, [rbp + 0x1d0]
mov rdx, r15
call fcn.164c8fe50
mov eax, 0x10
lea rcx, [rbp + 0x1d0]
mov r8d, eax
add rcx, r14
sub eax, r14d
sub r8, r14
mov edx, eax
call sub.VCRUNTIME140.dll_memset
nop
mov rax, qword [rbp + rsi + 0x1d0]
xor qword [rbp + rsi + 0x1c0], rax
add rsi, 8
cmp rsi, 0x10
jb 0x164c61480
lea r8, [rbp - 0x40]
mov rdx, r12
lea rcx, [rbp + 0x1c0]
call fcn.164c5fe00
mov rbx, qword [rbp + 0x1b0]
movaps xmm0, xmmword [rbp + 0x1c0]
mov rsi, qword [rsp + 0x300]
movups xmmword [rdi], xmm0
test rbx, rbx
je 0x164c61536
mov rcx, qword [rbx + 0x68]
test rcx, rcx
je 0x164c614e1
mov rax, qword [0x164cb3650]
call qword [0x164c92120]
mov rcx, qword [rbx + 0x70]
test rcx, rcx
je 0x164c614f7
mov rax, qword [0x164cb3650]
call qword [0x164c92120]
mov rcx, qword [rbx + 0x78]
test rcx, rcx
je 0x164c6150d
mov rax, qword [0x164cb3650]
call qword [0x164c92120]
mov rcx, qword [rbx + 0x80]
test rcx, rcx
je 0x164c61526
mov rax, qword [0x164cb3650]
call qword [0x164c92120]
mov rax, qword [0x164cb3650]
mov rcx, rbx
call qword [0x164c92120]
mov rbx, qword [rsp + 0x308]
mov rcx, qword [rbp + 0x1e0]
xor rcx, rsp
call fcn.164c8ef00
add rsp, 0x310
pop r15
pop r14
pop r12
pop rdi
pop rbp
ret
test al, 1
je 0x164c613ee
lea rax, [0x164c477e0]
jmp 0x164c61591
test qword [0x164cb3630], 0x100
je 0x164c613ee
movsxd rax, dword [rbp + 0x1a4]
lea rcx, [0x164c98bd0]
mov rax, qword [rcx + rax*8]
test rax, rax
je 0x164c613ee
lea rcx, [rbp - 0x40]
mov qword [rbp - 0x78], r15
mov qword [rbp - 0x68], rcx
lea rcx, [rbp + 0x1c0]
mov qword [rbp - 0x60], rcx
mov rcx, r14
shr rcx, 4
mov qword [rbp - 0x58], rcx
mov ecx, dword [rbp + 0x1a0]
mov dword [rbp - 0x50], ecx
lea rcx, [rbp - 0x78]
mov qword [rbp - 0x70], r12
call qword [0x164c92120]
mov rax, r14
and eax, 0xf
sub r14, rax
add r15, r14
add r12, r14
mov r14d, eax
jmp 0x164c61444