Function at 0x1400a6e20
Capabilities:
Hash data via bcrypt

Disassembly:
mov qword [rsp + 8], rbx
push rsi
push rdi
push r14
sub rsp, 0xb0
mov rax, qword [0x140200260]
xor rax, rsp
mov qword [rsp + 0xa8], rax
mov r14, r9
mov rsi, r8
test edx, edx
je 0x1400a6e7a
sub edx, 1
je 0x1400a6e71
sub edx, 1
je 0x1400a6e68
cmp edx, 1
jne 0x1400a6edf
lea rdx, [0x140193e10]
jmp 0x1400a6e81
lea rdx, str.SHA512
jmp 0x1400a6e81
lea rdx, str.SHA256
jmp 0x1400a6e81
lea rdx, str.SHA1
xor edi, edi
mov qword [rsp + 0x48], rdi
xor r9d, r9d
xor r8d, r8d
lea rcx, [rsp + 0x48]
call qword [sym.imp.bcrypt.dll_BCryptOpenAlgorithmProvider]
test eax, eax
js 0x1400a6edf
mov dword [rsp + 0x58], edi
mov dword [rsp + 0x44], edi
mov dword [rsp + 0x28], edi
lea rax, [rsp + 0x58]
mov qword [rsp + 0x20], rax
lea r9d, [rdi + 4]
lea r8, [rsp + 0x44]
lea rdx, str.HashDigestLength
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.bcrypt.dll_BCryptGetProperty]
test eax, eax
jns 0x1400a6ee6
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
xor al, al
jmp 0x1400a7149
mov ebx, dword [rsp + 0x44]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
mov r8d, ebx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapAlloc]
mov rbx, rax
mov qword [rsp + 0x60], rax
mov rcx, qword [rsp + 0x48]
test rax, rax
jne 0x1400a6f1f
xor edx, edx
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
xor al, al
jmp 0x1400a7149
mov qword [rsp + 0x50], rdi
mov dword [rsp + 0x30], edi
mov dword [rsp + 0x28], edi
mov qword [rsp + 0x20], rdi
xor r9d, r9d
xor r8d, r8d
lea rdx, [rsp + 0x50]
call qword [sym.imp.bcrypt.dll_BCryptCreateHash]
test eax, eax
jns 0x1400a6f6e
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
mov r8, rbx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
xor al, al
jmp 0x1400a7149
mov qword [rsp + 0x88], rdi
movdqa xmm0, xmmword [0x1401e06f0]
movdqu xmmword [rsp + 0x98], xmm0
mov byte [rsp + 0x88], dil
cmp qword [rsi + 0x18], 8
jb 0x1400a6f99
mov rsi, qword [rsi]
lea rdx, [rsp + 0x88]
mov rcx, rsi
call fcn.14006da80
lea rdx, [rsp + 0x88]
cmp qword [rsp + 0xa0], 0x10
cmovae rdx, qword [rsp + 0x88]
xor r9d, r9d
mov r8d, dword [rsp + 0x98]
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.bcrypt.dll_BCryptHashData]
test eax, eax
jns 0x1400a7013
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
mov r8, rbx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
nop
lea rcx, [rsp + 0x88]
call fcn.140056cb0
xor al, al
jmp 0x1400a7149
xor r9d, r9d
mov r8d, dword [rsp + 0x44]
mov rdx, rbx
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.bcrypt.dll_BCryptFinishHash]
test eax, eax
js 0x1400a6fdd
mov esi, dword [rsp + 0x44]
mov qword [rsp + 0x68], rdi
mov qword [rsp + 0x78], rdi
mov qword [rsp + 0x80], SafeArrayGetLBound
mov byte [rsp + 0x68], 0
lea edx, [rsi + rsi]
mov r8b, 0x20
lea rcx, [rsp + 0x68]
call fcn.1400a7170
test esi, esi
je 0x1400a70cb
mov r10, rbx
lea r11, str.0123456789abcdefp_
nop word [rax + rax]
lea rdx, [rsp + 0x68]
cmp qword [rsp + 0x80], 0x10
cmovae rdx, qword [rsp + 0x68]
lea r9d, [rdi + rdi]
movzx eax, byte [r10]
shr rax, 4
movzx eax, byte [rax + r11]
mov byte [r9 + rdx], al
lea r8, [rsp + 0x68]
cmp qword [rsp + 0x80], 0x10
cmovae r8, qword [rsp + 0x68]
movzx edx, byte [r10]
and edx, 0xf
lea ecx, [r9 + 1]
movzx eax, byte [rdx + r11]
mov byte [rcx + r8], al
inc edi
lea r10, [r10 + 1]
cmp edi, esi
jb 0x1400a7070
lea rcx, [rsp + 0x68]
cmp qword [rsp + 0x80], 0x10
cmovae rcx, qword [rsp + 0x68]
mov rdx, r14
call fcn.14006dc90
mov dil, 1
lea rcx, [rsp + 0x68]
call fcn.140056cb0
nop
jmp 0x1400a7101
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x1400a7113
xor edx, edx
call qword [sym.imp.bcrypt.dll_BCryptCloseAlgorithmProvider]
mov rcx, qword [rsp + 0x50]
test rcx, rcx
je 0x1400a7123
call qword [sym.imp.bcrypt.dll_BCryptDestroyHash]
call qword [sym.imp.KERNEL32.dll_GetProcessHeap]
mov rcx, rax
mov r8, rbx
xor edx, edx
call qword [sym.imp.KERNEL32.dll_HeapFree]
nop
lea rcx, [rsp + 0x88]
call fcn.140056cb0
movzx eax, dil
mov rcx, qword [rsp + 0xa8]
xor rcx, rsp
call fcn.140113660
mov rbx, qword [rsp + 0xd0]
add rsp, 0xb0
pop r14
pop rdi
pop rsi
ret