Function at 0x1401c9e70
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 [0x1402c8b58]
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 0x1401ca39c
test r14, r14
jne 0x1401c9ed8
mov rax, qword [rbx]
lea rdx, str.NULL_passed_to_CBC_encryptor
mov rcx, rbx
call qword [rax + 0x28]
xor al, al
jmp 0x1401ca39e
mov ecx, dword [rcx + 0xa8]
cmp ecx, 1
ja 0x1401c9efe
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 0x1401ca39e
xor edx, edx
mov eax, r13d
div ecx
mov r15d, eax
test edx, edx
je 0x1401c9f23
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 0x1401ca39e
movzx r12d, byte [0x1402cb9e0]
mov rcx, r8
call fcn.140043080
mov rcx, qword [rbp - 0x41]
lea edx, [r13 + 0x20]
add edx, eax
mov dword [rbp - 0x49], eax
call fcn.140042800
test al, al
jne 0x1401c9f60
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 0x1401ca39e
mov edx, dword [rbp - 0x49]
mov rcx, qword [rbp - 0x41]
call fcn.140042d20
mov r8d, dword [rsi + 0xa8]
mov rbx, rax
test r12b, r12b
je 0x1401ca2a0
xor r12d, r12d
lea r13, [rdi + 8]
mov edx, r12d
test r8d, r8d
je 0x1401ca0c5
cmp r8d, 8
jb 0x1401ca093
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 0x1401c9fbe
cmp r9, r13
jae 0x1401ca093
lea rax, [rcx + r14]
lea rcx, [rbp - 0x39]
cmp rcx, rax
ja 0x1401c9fd4
cmp r9, r14
jae 0x1401ca093
cmp r8d, 0x40
jb 0x1401ca064
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 0x1401c9ff1
cmp r10d, 8
jb 0x1401ca08e
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 0x1401ca070
cmp edx, r8d
jae 0x1401ca0c5
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 0x1401ca0b0
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 0x1401ca275
nop
mov edx, r12d
test r8d, r8d
je 0x1401ca235
cmp r8d, 8
jb 0x1401ca202
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 0x1401ca138
cmp r9, rdi
jae 0x1401ca202
lea rax, [rcx + rbx]
lea rcx, [rbp - 0x39]
cmp rcx, rax
ja 0x1401ca14e
cmp r9, rbx
jae 0x1401ca202
cmp r8d, 0x40
jb 0x1401ca1db
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 0x1401ca170
cmp r9d, 8
jb 0x1401ca1fd
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 0x1401ca1e1
cmp edx, r8d
jae 0x1401ca235
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 0x1401ca220
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 0x1401ca100
test r8d, r8d
je 0x1401ca295
nop word [rax + rax]
movzx eax, byte [r12 + rbx]
mov byte [r12 + r13], al
inc r12d
cmp r12d, dword [rsi + 0xa8]
jb 0x1401ca280
mov edx, dword [rbp - 0x29]
add edx, dword [rbp - 0x49]
jmp 0x1401ca393
cmp r8d, 0x10
jne 0x1401ca331
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 0x1401ca320
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 0x1401ca2e0
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 0x1401ca38d
cmp r8d, 8
jne 0x1401ca39c
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 0x1401ca386
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 0x1401ca360
mov rax, qword [rbx]
mov qword [rdi + 8], rax
mov edx, dword [rbp - 0x49]
add edx, r13d
mov rcx, qword [rbp - 0x41]
call fcn.140044dc0
mov al, 1
mov rcx, qword [rbp - 9]
xor rcx, rsp
call fcn.1401e12d0
add rsp, 0x88
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbx
pop rbp
ret