Function at 0x140164a30
Capabilities:
Encode data using xor

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0xf]
sub rsp, 0x88
mov rax, qword [0x140353c70]
xor rax, rsp
mov qword [rbp - 9], rax
mov rbx, qword [rbp + 0x7f]
mov r14, r8
mov r8, qword [rbp + 0x77]
mov r13d, r9d
mov qword [rbp - 0x41], r8
mov rdi, rdx
mov dword [rbp - 0x29], r9d
mov rsi, rcx
test r9d, r9d
je 0x140164f5c
test r14, r14
jne 0x140164a98
mov rax, qword [rbx]
lea rdx, str.NULL_passed_to_CBC_encryptor
mov rcx, rbx
call qword [rax + 0x28]
xor al, al
jmp 0x140164f5e
mov ecx, dword [rcx + 0xa8]
cmp ecx, 1
ja 0x140164abe
mov rax, qword [rsi]
mov rcx, rsi
mov qword [rsp + 0x28], rbx
mov qword [rsp + 0x20], r8
mov r8, r14
call qword [rax + 0x30]
jmp 0x140164f5e
xor edx, edx
mov eax, r13d
div ecx
mov r15d, eax
test edx, edx
je 0x140164ae3
mov rax, qword [rbx]
lea rdx, str.CBC_input_not_a_multiple_of_the_cipher_block_size.
mov rcx, rbx
call qword [rax + 0x28]
xor al, al
jmp 0x140164f5e
movzx r12d, byte [0x140357081]
mov rcx, r8
call fcn.140042d30
mov rcx, qword [rbp - 0x41]
lea edx, [r13 + 0x20]
add edx, eax
mov dword [rbp - 0x49], eax
call fcn.140042380
test al, al
jne 0x140164b20
mov rax, qword [rbx]
lea rdx, str.Unable_to_allocate_CBC_encrypt_output_buffer.
mov rcx, rbx
call qword [rax + 0x28]
xor al, al
jmp 0x140164f5e
mov edx, dword [rbp - 0x49]
mov rcx, qword [rbp - 0x41]
call fcn.1400428a0
mov r8d, dword [rsi + 0xa8]
mov rbx, rax
test r12b, r12b
je 0x140164e60
xor r12d, r12d
lea r13, [rdi + 8]
mov edx, r12d
test r8d, r8d
je 0x140164c85
cmp r8d, 8
jb 0x140164c53
lea eax, [r8 - 1]
mov ecx, eax
lea r9, [rbp - 0x39]
add r9, rcx
lea r10, [rbp - 0x39]
add rax, r13
cmp r10, rax
ja 0x140164b7e
cmp r9, r13
jae 0x140164c53
lea rax, [rcx + r14]
lea rcx, [rbp - 0x39]
cmp rcx, rax
ja 0x140164b94
cmp r9, r14
jae 0x140164c53
cmp r8d, 0x40
jb 0x140164c24
mov r10d, r8d
mov r11d, r8d
and r10d, 0x3f
sub r11d, r10d
mov r9d, 0x20
mov eax, edx
add edx, 0x40
movdqu xmm0, xmmword [r14 + rax]
movdqu xmm1, xmmword [rax + r13]
xorps xmm1, xmm0
movdqu xmmword [rbp + rax - 0x39], xmm1
lea eax, [r9 - 0x10]
movdqu xmm0, xmmword [rax + r14]
movdqu xmm1, xmmword [rax + r13]
xorps xmm1, xmm0
movdqu xmmword [rbp + rax - 0x39], xmm1
mov eax, r9d
movdqu xmm0, xmmword [rax + r14]
movdqu xmm1, xmmword [rax + r13]
xorps xmm1, xmm0
movdqu xmmword [rbp + rax - 0x39], xmm1
lea eax, [r9 + 0x10]
add r9d, 0x40
movdqu xmm1, xmmword [rax + r13]
movdqu xmm0, xmmword [rax + r14]
xorps xmm1, xmm0
movdqu xmmword [rbp + rax - 0x39], xmm1
cmp edx, r11d
jb 0x140164bb1
cmp r10d, 8
jb 0x140164c4e
mov ecx, r8d
and ecx, 0xfffffff8
nop word [rax + rax]
mov eax, edx
add edx, 8
movq xmm1, qword [rax + r13]
movq xmm0, qword [rax + r14]
xorps xmm1, xmm0
movq qword [rbp + rax - 0x39], xmm1
cmp edx, ecx
jb 0x140164c30
cmp edx, r8d
jae 0x140164c85
mov ecx, edx
lea r10, [rbp - 0x39]
mov r9, r14
add rcx, r13
sub r9, r13
sub r10, r13
sub r8d, edx
mov edx, r8d
nop dword [rax + rax]
movzx eax, byte [rcx + r9]
xor al, byte [rcx]
mov byte [r10 + rcx], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x140164c70
mov rax, qword [rsi]
lea r8, [rbp - 0x19]
lea rdx, [rbp - 0x39]
mov rcx, rsi
call qword [rax + 0x20]
mov r8d, dword [rsi + 0xa8]
lea rdx, [rbp - 0x19]
mov rcx, rbx
call sub.VCRUNTIME140.dll_memcpy
mov r8d, dword [rsi + 0xa8]
lea rdi, [r14 + r8]
add r15d, 0xffffffff
je 0x140164e35
nop
mov edx, r12d
test r8d, r8d
je 0x140164df5
cmp r8d, 8
jb 0x140164dc2
lea eax, [r8 - 1]
mov ecx, eax
lea r9, [rbp - 0x39]
add r9, rcx
lea r10, [rbp - 0x39]
add rax, rdi
cmp r10, rax
ja 0x140164cf8
cmp r9, rdi
jae 0x140164dc2
lea rax, [rcx + rbx]
lea rcx, [rbp - 0x39]
cmp rcx, rax
ja 0x140164d0e
cmp r9, rbx
jae 0x140164dc2
cmp r8d, 0x40
jb 0x140164d9b
mov r9d, r8d
mov r10d, r8d
and r9d, 0x3f
sub r10d, r9d
mov r11d, 0x20
nop dword [rax + rax]
mov eax, edx
add edx, 0x40
movdqu xmm0, xmmword [rax + rbx]
movdqu xmm1, xmmword [rdi + rax]
xorps xmm1, xmm0
movdqu xmmword [rbp + rax - 0x39], xmm1
lea eax, [r11 - 0x10]
movdqu xmm0, xmmword [rax + rbx]
movdqu xmm1, xmmword [rdi + rax]
xorps xmm1, xmm0
movdqu xmmword [rbp + rax - 0x39], xmm1
mov eax, r11d
movdqu xmm0, xmmword [rax + rbx]
movdqu xmm1, xmmword [rdi + rax]
xorps xmm1, xmm0
movdqu xmmword [rbp + rax - 0x39], xmm1
lea eax, [r11 + 0x10]
add r11d, 0x40
movdqu xmm1, xmmword [rdi + rax]
movdqu xmm0, xmmword [rax + rbx]
xorps xmm1, xmm0
movdqu xmmword [rbp + rax - 0x39], xmm1
cmp edx, r10d
jb 0x140164d30
cmp r9d, 8
jb 0x140164dbd
mov ecx, r8d
and ecx, 0xfffffff8
mov eax, edx
add edx, 8
movq xmm1, qword [rdi + rax]
movq xmm0, qword [rax + rbx]
xorps xmm1, xmm0
movq qword [rbp + rax - 0x39], xmm1
cmp edx, ecx
jb 0x140164da1
cmp edx, r8d
jae 0x140164df5
mov ecx, edx
lea r10, [rbp - 0x39]
mov r9, rbx
add rcx, rdi
sub r9, rdi
sub r10, rdi
mov eax, r8d
sub eax, edx
mov edx, eax
nop dword [rax + rax]
movzx eax, byte [rcx + r9]
xor al, byte [rcx]
mov byte [r10 + rcx], al
lea rcx, [rcx + 1]
sub rdx, 1
jne 0x140164de0
mov eax, r8d
lea rdx, [rbp - 0x39]
add rbx, rax
lea r8, [rbp - 0x19]
mov rax, qword [rsi]
mov rcx, rsi
call qword [rax + 0x20]
mov r8d, dword [rsi + 0xa8]
lea rdx, [rbp - 0x19]
mov rcx, rbx
call sub.VCRUNTIME140.dll_memcpy
mov eax, dword [rsi + 0xa8]
add rdi, rax
mov r8d, eax
add r15d, 0xffffffff
jne 0x140164cc0
test r8d, r8d
je 0x140164e55
nop word [rax + rax]
movzx eax, byte [r12 + rbx]
mov byte [r12 + r13], al
inc r12d
cmp r12d, dword [rsi + 0xa8]
jb 0x140164e40
mov edx, dword [rbp - 0x29]
add edx, dword [rbp - 0x49]
jmp 0x140164f53
cmp r8d, 0x10
jne 0x140164ef1
mov rax, qword [rdi + 8]
lea rdx, [rbp - 0x29]
xor rax, qword [r14]
mov r8, rbx
mov qword [rbp - 0x29], rax
mov rcx, rsi
mov rax, qword [r14 + 8]
xor rax, qword [rdi + 0x10]
mov qword [rbp - 0x21], rax
mov rax, qword [rsi]
call qword [rax + 0x20]
add r15d, 0xffffffff
je 0x140164ee0
sub r14, rbx
nop word [rax + rax]
mov rax, qword [rbx]
lea rdx, [rbp - 0x29]
xor rax, qword [r14 + rbx + 0x10]
mov rcx, rsi
mov qword [rbp - 0x29], rax
mov rax, qword [r14 + rbx + 0x18]
xor rax, qword [rbx + 8]
add rbx, 0x10
mov qword [rbp - 0x21], rax
mov r8, rbx
mov rax, qword [rsi]
call qword [rax + 0x20]
add r15d, 0xffffffff
jne 0x140164ea0
nop dword [rax]
nop word [rax + rax]
mov rax, qword [rbx]
mov qword [rdi + 8], rax
mov rax, qword [rbx + 8]
mov qword [rdi + 0x10], rax
jmp 0x140164f4d
cmp r8d, 8
jne 0x140164f5c
mov rax, qword [rdi + 8]
lea rdx, [rbp - 0x29]
xor rax, qword [r14]
mov r8, rbx
mov qword [rbp - 0x29], rax
mov rcx, rsi
mov rax, qword [rsi]
call qword [rax + 0x20]
add r15d, 0xffffffff
je 0x140164f46
sub r14, rbx
nop dword [rax + rax]
mov rax, qword [r14 + rbx + 8]
lea rdx, [rbp - 0x29]
xor rax, qword [rbx]
mov rcx, rsi
mov qword [rbp - 0x29], rax
add rbx, 8
mov rax, qword [rsi]
mov r8, rbx
call qword [rax + 0x20]
add r15d, 0xffffffff
jne 0x140164f20
mov rax, qword [rbx]
mov qword [rdi + 8], rax
mov edx, dword [rbp - 0x49]
add edx, r13d
mov rcx, qword [rbp - 0x41]
call fcn.1400446b0
mov al, 1
mov rcx, qword [rbp - 9]
xor rcx, rsp
call fcn.1402474e0
add rsp, 0x88
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret