Function at 0x14009cfa0
Capabilities:
Create new key via cryptacquirecontext
Encrypt or decrypt via wincrypt
Hash data via wincrypt
Initialize hashing via wincrypt
Print debug messages

Disassembly:
mov qword [rsp + 8], rbx
mov qword [rsp + 0x10], rsi
mov qword [rsp + 0x20], rdi
push rbp
push r14
push r15
mov rbp, rsp
sub rsp, 0x80
mov r14, rcx
mov rsi, r9
lea rcx, str.hid_E___R__TS0YIoJuRSRT
mov rdi, r8
mov r15d, edx
xor ebx, ebx
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea rcx, str.hid_E___R__SIi5eN3KeH0c
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
lea rcx, str.hid_E___R__UEPLgyzEcUda
call qword [sym.imp.KERNEL32.dll_OutputDebugStringA]
test rdi, rdi
je 0x14009d048
mov r8d, ebx
mov dword [rbp + 0x30], ebx
cmp dword [rdi + 0x18], ebx
jbe 0x14009d1a3
mov edx, ebx
mov rax, qword [r14 + 4]
mov ecx, r8d
cmp rax, qword [rcx + rdi + 0x1c]
jne 0x14009d022
mov rax, qword [r14 + 0xc]
cmp rax, qword [rcx + rdi + 0x24]
je 0x14009d03b
inc edx
add r8d, 0x18
mov dword [rbp + 0x30], edx
add r8d, dword [rcx + rdi + 0x30]
cmp edx, dword [rdi + 0x18]
jae 0x14009d1a3
jmp 0x14009d009
mov eax, dword [rcx + rdi + 0x30]
lea rsi, [rdi + 0x34]
add rsi, rcx
jmp 0x14009d056
test rsi, rsi
je 0x14009d1a3
mov eax, 0x10
mov dword [rbp - 0x40], eax
test rsi, rsi
je 0x14009d1a3
mov r9d, reloc.ODBC32.dll_SQLAllocHandle
mov dword [rsp + 0x20], 0xf0000000
xor r8d, r8d
lea rcx, [rbp - 0x28]
xor edx, edx
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
je 0x14009d1a3
mov rcx, qword [rbp - 0x28]
lea rax, [rbp - 0x38]
xor r9d, r9d
mov qword [rsp + 0x20], rax
xor r8d, r8d
mov edx, 0x800c
call qword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x14009d197
mov r8d, dword [rbp - 0x40]
xor r9d, r9d
mov rcx, qword [rbp - 0x38]
mov rdx, rsi
call qword [sym.imp.ADVAPI32.dll_CryptHashData]
mov dword [rbp + 0x30], ebx
mov esi, Ordinal_36
mov rcx, qword [rbp - 0x38]
lea rdx, [r14 + 0x1c]
xor r9d, r9d
mov r8d, esi
call qword [sym.imp.ADVAPI32.dll_CryptHashData]
mov eax, dword [rbp + 0x30]
inc eax
mov dword [rbp + 0x30], eax
cmp eax, 0x3e8
jb 0x14009d0c9
mov rcx, qword [rbp - 0x38]
lea r9, [rbp - 0x40]
mov edi, 2
mov dword [rbp - 0x40], esi
mov edx, edi
mov dword [rsp + 0x20], ebx
lea r8, [rbp - 0x20]
call qword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x14009d18d
mov rcx, qword [rbp - 0x28]
lea rax, [rbp - 0x30]
mov qword [rsp + 0x30], rbx
lea r8, [rbp - 0x20]
mov qword [rsp + 0x28], rax
mov r9d, esi
mov edx, 0x6610
mov dword [rsp + 0x20], ebx
call fcn.1400036f8
test eax, eax
je 0x14009d18d
mov rcx, qword [rbp - 0x30]
lea r8, [rbp + 0x30]
xor r9d, r9d
mov dword [rbp + 0x30], edi
lea edx, [rdi + 2]
call qword [sym.imp.ADVAPI32.dll_CryptSetKeyParam]
test eax, eax
je 0x14009d183
lea eax, [r15 - 0x3c]
xor r9d, r9d
lea rcx, [rbp - 0x40]
mov dword [rbp - 0x40], eax
mov qword [rsp + 0x28], rcx
lea rax, [r14 + 0x3c]
mov rcx, qword [rbp - 0x30]
xor r8d, r8d
xor edx, edx
mov qword [rsp + 0x20], rax
call qword [sym.imp.ADVAPI32.dll_CryptDecrypt]
mov ebx, eax
mov rcx, qword [rbp - 0x30]
call qword [sym.imp.ADVAPI32.dll_CryptDestroyKey]
mov rcx, qword [rbp - 0x38]
call qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov rcx, qword [rbp - 0x28]
xor edx, edx
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
lea r11, [rsp + 0x80]
mov eax, ebx
mov rbx, qword [r11 + 0x20]
mov rsi, qword [r11 + 0x28]
mov rdi, qword [r11 + 0x38]
mov rsp, r11
pop r15
pop r14
pop rbp
ret