Function at 0x18000a640
Capabilities:
Encrypt data using des via winapi
Encrypt or decrypt via wincrypt
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt

Disassembly:
mov rax, rsp
push rbp
sub rsp, 0x70
mov qword [rax + 8], rbx
mov qword [rax + 0x10], rsi
mov qword [rax + 0x18], rdi
mov qword [rax + 0x20], r12
xor r12d, r12d
mov qword [rax - 0x10], r14
mov qword [rax - 0x18], r15
mov rsi, r9
mov edi, r8d
mov r15, rcx
mov rbx, rdx
lea r9d, [r12 + 1]
lea r8, str.Microsoft_Enhanced_Cryptographic_Provider_v1.0
lea rcx, [rax - 0x20]
xor edx, edx
mov qword [rax - 0x20], r12
mov qword [rax - 0x28], r12
mov qword [rax - 0x30], r12
mov dword [rax - 0x34], r12d
xor bpl, bpl
mov dword [rax - 0x58], 0xf0000000
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
test eax, eax
je 0x18000a882
test rbx, rbx
je 0x18000a874
cmp byte [rbx], r12b
je 0x18000a874
mov rcx, qword [rsp + 0x58]
lea rax, [rsp + 0x48]
xor r9d, r9d
xor r8d, r8d
mov edx, 0x8003
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x18000a865
mov rcx, qword [rsp + 0x48]
xor r9d, r9d
mov r8d, edi
mov rdx, rbx
call qword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x18000a856
mov r8, qword [rsp + 0x48]
mov rcx, qword [rsp + 0x58]
lea rax, [rsp + 0x50]
mov r9d, 0xa80000
mov edx, 0x6603
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_CryptDeriveKey]
test eax, eax
je 0x18000a847
or rdi, 0xffffffffffffffff
mov rbx, rdi
inc rbx
cmp byte [rsi + rbx], r12b
jne 0x18000a733
inc ebx
mov eax, ebx
mov dword [rsp + 0x40], ebx
and eax, 7
sub ebx, eax
add ebx, 8
mov ecx, ebx
call fcn.180029908
mov r8d, dword [rsp + 0x40]
mov rdx, rsi
mov rcx, rax
mov r14, rax
call fcn.180028110
cmp byte [rsp + 0xb0], r12b
jne 0x18000a7e0
mov rcx, qword [rsp + 0x50]
xor r9d, r9d
lea rax, [rsp + 0x40]
mov dword [rsp + 0x30], ebx
mov qword [rsp + 0x28], rax
lea r8d, [r9 + 1]
xor edx, edx
mov qword [rsp + 0x20], r14
call qword [sym.imp.ADVAPI32.dll_CryptEncrypt]
test eax, eax
jne 0x18000a7ad
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.Error_during_CryptEncrypt:__x_n
jmp 0x18000a88f
mov eax, dword [rsp + 0xa8]
mov r8d, dword [rsp + 0x40]
mov r9, qword [rsp + 0xa0]
mov rdx, r14
mov rcx, r15
mov dword [rsp + 0x20], eax
call fcn.18000ab10
mov bpl, 1
jmp 0x18000a896
inc rdi
cmp byte [rsi + rdi], r12b
jne 0x18000a7e0
mov eax, dword [rsp + 0xa8]
mov rbx, qword [rsp + 0xa0]
mov r8, rdi
mov rdx, rsi
mov rcx, r15
mov r9, rbx
mov dword [rsp + 0x20], eax
call fcn.18000a940
mov rcx, qword [rsp + 0x50]
xor r9d, r9d
mov dword [rsp + 0x44], eax
lea rax, [rsp + 0x44]
mov qword [rsp + 0x28], rax
lea r8d, [r9 + 1]
xor edx, edx
mov qword [rsp + 0x20], rbx
call qword [sym.imp.ADVAPI32.dll_CryptDecrypt]
test eax, eax
jne 0x18000a7d0
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.Error_during_CryptDecrypt___x_n
jmp 0x18000a88f
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.Error_during_CryptDeriveKey___x_n
jmp 0x18000a88f
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.Error_during_CryptHashData:__x_n
jmp 0x18000a88f
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.Error_during_CryptCreateHash:__x_n
jmp 0x18000a88f
lea rcx, str.No_password_provided_n
call fcn.18002aa50
jmp 0x18000a896
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.Error_during_CryptAcquireContext___x_n
mov edx, eax
call fcn.18002aa50
mov rcx, qword [rsp + 0x48]
mov r15, qword [rsp + 0x60]
mov r14, qword [rsp + 0x68]
mov rdi, qword [rsp + 0x90]
mov rsi, qword [rsp + 0x88]
mov rbx, qword [rsp + 0x80]
test rcx, rcx
je 0x18000a8dd
call qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
test eax, eax
jne 0x18000a8d8
lea rcx, str.Error_during_CryptDestroyHash._n
call fcn.18002aa50
mov qword [rsp + 0x48], r12
mov rcx, qword [rsp + 0x50]
mov r12, qword [rsp + 0x98]
test rcx, rcx
je 0x18000a905
call qword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
test eax, eax
jne 0x18000a905
lea rcx, str.Error_during_CryptDestroyKey__n
call fcn.18002aa50
mov rcx, qword [rsp + 0x58]
test rcx, rcx
je 0x18000a927
xor edx, edx
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
test eax, eax
jne 0x18000a927
lea rcx, str.Error_during_CryptReleaseContext__n
call fcn.18002aa50
movzx eax, bpl
add rsp, 0x70
pop rbp
ret