Function at 0x1401658c0
Capabilities:
Encode data using xor

Disassembly:
mov qword [rsp + 8], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
sub rsp, 0x1b0
mov rax, qword [0x140353c70]
xor rax, rsp
mov qword [rsp + 0x1a0], rax
mov rbp, r9
mov rbx, r8
mov rdi, qword [rsp + 0x210]
xor edx, edx
mov r8d, 0x178
lea rcx, [rsp + 0x20]
call sub.VCRUNTIME140.dll_memset
lea rcx, [rsp + 0x20]
call fcn.14004cf80
nop
mov ecx, dword [rbx + 0x558]
cmp ecx, 0x10
ja 0x140165c2a
mov edx, dword [rbx + 0x554]
xor r13d, r13d
test edx, edx
jne 0x140165b2b
cmp dword [rbx + 0x550], r13d
jne 0x14016596d
cmp ecx, 0xc
jne 0x14016596d
movsd xmm0, qword [rbx + 0x540]
movsd qword [rbx + 0x520], xmm0
mov eax, dword [rbx + 0x548]
mov dword [rbx + 0x528], eax
mov dword [rbx + 0x52c], 0x1000000
jmp 0x140165afc
mov edx, r13d
test ecx, ecx
je 0x1401659b7
mov ecx, edx
movzx eax, byte [rcx + rbx + 0x540]
xor byte [rcx + rbx + 0x510], al
inc edx
mov ecx, dword [rbx + 0x558]
cmp edx, ecx
jb 0x140165974
test ecx, ecx
je 0x1401659b7
movsxd rax, ecx
shl rax, 3
add qword [rbx + 0x560], rax
lea rdx, [rbx + 0x510]
lea r8, [rsp + 0x20]
mov rcx, rbx
call fcn.140167680
xor eax, eax
mov qword [rbx + 0x540], rax
movzx ecx, byte [rbx + 0x567]
mov byte [rbx + 0x548], cl
movzx edx, byte [rbx + 0x566]
mov byte [rbx + 0x549], dl
movzx r8d, byte [rbx + 0x565]
mov byte [rbx + 0x54a], r8b
movzx r9d, byte [rbx + 0x564]
mov byte [rbx + 0x54b], r9b
movzx r10d, byte [rbx + 0x563]
mov byte [rbx + 0x54c], r10b
movzx r11d, byte [rbx + 0x562]
mov byte [rbx + 0x54d], r11b
movzx edi, byte [rbx + 0x561]
mov byte [rbx + 0x54e], dil
movzx esi, byte [rbx + 0x560]
mov byte [rbx + 0x54f], sil
movzx eax, byte [rbx + 0x540]
xor byte [rbx + 0x510], al
movzx eax, byte [rbx + 0x541]
xor byte [rbx + 0x511], al
movzx eax, byte [rbx + 0x542]
xor byte [rbx + 0x512], al
movzx eax, byte [rbx + 0x543]
xor byte [rbx + 0x513], al
movzx eax, byte [rbx + 0x544]
xor byte [rbx + 0x514], al
movzx eax, byte [rbx + 0x545]
xor byte [rbx + 0x515], al
movzx eax, byte [rbx + 0x546]
xor byte [rbx + 0x516], al
movzx eax, byte [rbx + 0x547]
xor byte [rbx + 0x517], al
xor byte [rbx + 0x518], cl
xor byte [rbx + 0x519], dl
xor byte [rbx + 0x51a], r8b
xor byte [rbx + 0x51b], r9b
xor byte [rbx + 0x51c], r10b
xor byte [rbx + 0x51d], r11b
xor byte [rbx + 0x51e], dil
xor byte [rbx + 0x51f], sil
lea r8, [rsp + 0x20]
lea rdx, [rbx + 0x510]
mov rcx, rbx
call fcn.140167680
movups xmm0, xmmword [rbx + 0x510]
movups xmmword [rbx + 0x520], xmm0
xorps xmm1, xmm1
movups xmmword [rbx + 0x510], xmm1
movups xmm0, xmmword [rbx + 0x520]
movups xmmword [rbx + 0x530], xmm0
xorps xmm1, xmm1
movups xmmword [rbx + 0x540], xmm1
mov qword [rbx + 0x554], 1
lea r14, [rbx + 0x560]
mov qword [r14], r13
jmp 0x140165b44
lea r14, [rbx + 0x560]
cmp edx, 1
jne 0x140165c21
cmp ecx, 0x10
jge 0x140165c21
lea rcx, [rbp + 0x80]
call fcn.1400428d0
mov rsi, rax
lea rcx, [rbp + 0x80]
call fcn.140042d30
mov r12d, eax
mov edi, r13d
cmp dword [rbx + 0x558], r13d
jne 0x140165bbe
mov r15d, eax
and r15d, 0xfffffff0
jbe 0x140165bb9
nop word [rax + rax]
mov rcx, qword [rdi + rsi]
xor qword [rbx + 0x510], rcx
lea eax, [rdi + 8]
mov rax, qword [rax + rsi]
xor qword [rbx + 0x518], rax
lea r8, [rsp + 0x20]
lea rdx, [rbx + 0x510]
mov rcx, rbx
call fcn.140167680
sub qword [r14], 0xffffffffffffff80
add edi, 0x10
cmp edi, r15d
jb 0x140165b80
mov eax, edi
add rsi, rax
cmp edi, r12d
jae 0x140165c1d
sub r12d, edi
mov edi, r12d
nop dword [rax]
movsxd rcx, dword [rbx + 0x558]
movzx eax, byte [rsi]
xor byte [rcx + rbx + 0x510], al
lea rsi, [rsi + 1]
inc dword [rbx + 0x558]
cmp dword [rbx + 0x558], 0x10
jne 0x140165c17
lea rdx, [rbx + 0x510]
lea r8, [rsp + 0x20]
mov rcx, rbx
call fcn.140167680
mov dword [rbx + 0x558], r13d
sub qword [rbx + 0x560], 0xffffffffffffff80
sub rdi, 1
jne 0x140165bd0
mov bl, 1
jmp 0x140165c3c
lea rdx, str.Internal_error_2
jmp 0x140165c31
lea rdx, str.Internal_error.
mov rax, qword [rdi]
mov rcx, rdi
call qword [rax + 0x28]
xor bl, bl
lea rcx, [rsp + 0x20]
call fcn.14004d070
movzx eax, bl
mov rcx, qword [rsp + 0x1a0]
xor rcx, rsp
call fcn.1402474e0
mov rbx, qword [rsp + 0x1f0]
add rsp, 0x1b0
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret