Function at 0x140019c30
Capabilities:
Encrypt or decrypt data via bcrypt

Disassembly:
push rbp
push rbx
push rsi
push rdi
push r14
mov rbp, rsp
sub rsp, 0x70
mov rbx, r9
mov rdi, r8
mov r14, rdx
mov rsi, rcx
test rcx, rcx
je 0x140019f20
test r8, r8
je 0x140019f20
cmp rdx, 0x20
jae 0x140019c6e
lea rcx, str.Input_buffer_too_small.
jmp 0x140019f27
xorps xmm0, xmm0
mov qword [rsp + 0xa8], r12
xor r9d, r9d
mov qword [rsp + 0xb0], r15
xor r8d, r8d
lea rdx, [0x1400203c0]
lea rcx, [rbp - 0x20]
movdqu xmmword [rbp - 0x20], xmm0
call sub.bcrypt.dll_BCryptOpenAlgorithmProvider
lea rdx, str.BA:O
mov ecx, eax
call fcn.14001a7c0
xor r12d, r12d
test al, al
je 0x140019e14
mov rcx, qword [rbp - 0x20]
lea r9d, [r12 + 0x20]
lea r8, str.ChainingModeCBC
mov dword [rsp + 0x20], r12d
lea rdx, str.ChainingMode
call sub.bcrypt.dll_BCryptSetProperty
lea rdx, str.BA:SIP
mov ecx, eax
call fcn.14001a7c0
test al, al
je 0x140019e14
mov rdx, rdi
lea rcx, [rbp - 0x20]
call fcn.14001a800
test al, al
jne 0x140019d08
lea rcx, str.Couldnt_set_key.
jmp 0x140019e69
movups xmm0, xmmword [rsi]
mov rcx, qword [rbp - 0x18]
lea rax, [rbp + 0x30]
mov dword [rsp + 0x48], 1
lea rdx, [rsi + 0x10]
mov qword [rsp + 0x40], rax
add r14d, 0xfffffff0
mov dword [rsp + 0x38], r12d
lea rax, [rbp - 0x10]
mov qword [rsp + 0x30], r12
xor r9d, r9d
mov dword [rsp + 0x28], 0x10
mov r8d, r14d
mov qword [rsp + 0x20], rax
movups xmmword [rbp - 0x10], xmm0
mov dword [rbp + 0x30], r12d
call sub.bcrypt.dll_BCryptDecrypt
lea rdx, str.BA:GDS
mov ecx, eax
call fcn.14001a7c0
test al, al
je 0x140019e0b
mov edi, dword [rbp + 0x30]
test rdi, rdi
je 0x140019e0b
xor r8d, r8d
mov edx, edi
mov rcx, rbx
call fcn.140019b20
cmp qword [rbx + 0x18], 0x10
mov rax, rbx
movups xmm0, xmmword [rsi]
movups xmmword [rbp - 0x10], xmm0
jb 0x140019d99
mov rax, qword [rbx]
mov dword [rsp + 0x48], 1
lea rcx, [rbp + 0x30]
mov qword [rsp + 0x40], rcx
lea rdx, [rsi + 0x10]
mov rcx, qword [rbp - 0x18]
xor r9d, r9d
mov dword [rsp + 0x38], edi
mov r8d, r14d
mov qword [rsp + 0x30], rax
lea rax, [rbp - 0x10]
mov dword [rsp + 0x28], 0x10
mov qword [rsp + 0x20], rax
mov dword [rbp + 0x30], r12d
call sub.bcrypt.dll_BCryptDecrypt
mov edi, dword [rbp + 0x30]
lea rdx, str.BA:D
mov ecx, eax
call fcn.14001a7c0
test al, al
jne 0x140019df9
lea rcx, str.Failed_to_finish_transform.
jmp 0x140019e69
xor r8d, r8d
mov rdx, rdi
mov rcx, rbx
call fcn.140019b20
mov bl, 1
jmp 0x140019e70
lea rcx, str.Size_would_be_zero.
jmp 0x140019e69
lea rcx, str.BA:I___Could_not_init
call fcn.140005810
mov rcx, qword [rbp - 0x18]
test rcx, rcx
je 0x140019e40
call sub.bcrypt.dll_BCryptDestroyKey
lea rdx, str.BK:D
mov qword [rbp - 0x18], r12
mov ecx, eax
call fcn.14001a7c0
mov rcx, qword [rbp - 0x20]
test rcx, rcx
je 0x140019e62
xor edx, edx
call sub.bcrypt.dll_BCryptCloseAlgorithmProvider
lea rdx, str.BA:C
mov qword [rbp - 0x20], r12
mov ecx, eax
call fcn.14001a7c0
lea rcx, str.Couldnt_init_algo.
call fcn.140005810
xor bl, bl
mov rcx, qword [rbp - 0x18]
mov r15, qword [rsp + 0xb0]
test rcx, rcx
je 0x140019e9c
call sub.bcrypt.dll_BCryptDestroyKey
lea rdx, str.BK:D
mov qword [rbp - 0x18], r12
mov ecx, eax
call fcn.14001a7c0
mov rcx, qword [rbp - 0x18]
mov rax, qword [rbp - 0x20]
test rax, rax
je 0x140019ec9
xor edx, edx
mov rcx, rax
call sub.bcrypt.dll_BCryptCloseAlgorithmProvider
lea rdx, str.BA:C
mov qword [rbp - 0x20], r12
mov ecx, eax
call fcn.14001a7c0
mov rcx, qword [rbp - 0x18]
mov rax, qword [rbp - 0x20]
test rcx, rcx
je 0x140019ee9
call sub.bcrypt.dll_BCryptDestroyKey
lea rdx, str.BK:D
mov qword [rbp - 0x18], r12
mov ecx, eax
call fcn.14001a7c0
mov rax, qword [rbp - 0x20]
test rax, rax
je 0x140019f0a
xor edx, edx
mov rcx, rax
call sub.bcrypt.dll_BCryptCloseAlgorithmProvider
lea rdx, str.BA:C
mov qword [rbp - 0x20], r12
mov ecx, eax
call fcn.14001a7c0
mov r12, qword [rsp + 0xa8]
movzx eax, bl
add rsp, 0x70
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret
lea rcx, str.Invalid_buffer_passed_in.
call fcn.140005810
xor al, al
add rsp, 0x70
pop r14
pop rdi
pop rsi
pop rbx
pop rbp
ret