Function at 0x14020be10
Capabilities:
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt
Read file on windows

Disassembly:
mov qword [rsp + 0x18], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x440]
sub rsp, 0x540
mov rax, qword [0x1404779b8]
xor rax, rsp
mov qword [rbp + 0x430], rax
mov r13, rdx
mov rbx, rcx
mov qword [rbp - 0x68], rcx
xor ecx, ecx
mov dword [rsp + 0x58], ecx
mov qword [rsp + 0x48], rcx
mov qword [rsp + 0x50], rcx
mov dword [rsp + 0x40], ecx
mov dword [rsp + 0x44], ecx
xorps xmm0, xmm0
xor eax, eax
movups xmmword [rbp - 0x20], xmm0
movups xmmword [rbp - 0x10], xmm0
mov byte [rbp], al
movups xmm0, xmmword [str.0123456789abcdef]
movups xmmword [rbp + 8], xmm0
movzx eax, byte [0x140363ed0]
mov byte [rbp + 0x18], al
mov r15, qword [rbx + 0x10]
movabs rdx, 0x7fffffffffffffff
mov rax, rdx
sub rax, r15
cmp rax, 0x10
jb 0x14020c628
mov r12, rbx
cmp qword [rbx + 0x18], 0x10
jb 0x14020beb2
mov r12, qword [rbx]
mov qword [rbp - 0x40], rcx
mov qword [rbp - 0x30], rcx
mov qword [rbp - 0x28], rcx
lea r14, [r15 + 0x10]
mov edi, SafeArrayGetLBound
lea rsi, [rbp - 0x40]
cmp r14, rdi
jbe 0x14020befd
mov rdi, r14
or rdi, 0xf
cmp rdi, rdx
jbe 0x14020bee1
mov rdi, rdx
jmp 0x14020beed
mov eax, SafeArrayPutElement
cmp rdi, rax
cmovb rdi, rax
lea rcx, [rdi + 1]
call fcn.1400eb1a0
mov rsi, rax
mov qword [rbp - 0x40], rax
mov qword [rbp - 0x30], r14
mov qword [rbp - 0x28], rdi
movups xmm0, xmmword [str.createMD5_path:]
movups xmmword [rsi], xmm0
lea rcx, [rsi + 0x10]
mov r8, r15
mov rdx, r12
call fcn.140253310
mov byte [rsi + r14], 0
lea rcx, [rbp - 0x40]
call fcn.1401a7f60
mov rax, rbx
cmp qword [rbx + 0x18], 0x10
jb 0x14020bf39
mov rax, qword [rbx]
mov qword [rsp + 0x70], rax
xor r12d, r12d
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], r12
lea r9, [rsp + 0x70]
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x68]
call fcn.14029fa04
movsxd r8, eax
lea r9, [rbp - 0x2b]
movabs r15, 0xcccccccccccccccd
dec r9
mov rax, r15
mul r8
shr rdx, 3
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
sub r8b, cl
add r8b, 0x30
mov byte [r9], r8b
mov r8, rdx
test rdx, rdx
jne 0x14020bf70
mov qword [rbp - 0x60], r12
mov qword [rbp - 0x50], r12
mov qword [rbp - 0x48], SafeArrayLock
mov byte [rbp - 0x60], r12b
lea rax, [rbp - 0x2b]
cmp r9, rax
je 0x14020bfcb
lea r8, [rbp - 0x2b]
sub r8, r9
mov rdx, r9
lea rcx, [rbp - 0x60]
call fcn.140101ee0
nop
lea r8, [rbp - 0x60]
lea rdx, str.mbsrtowcs_s:
lea rcx, [rsp + 0x78]
call fcn.1400eafe0
mov rcx, rax
call fcn.1401a7f60
nop
mov rdx, qword [rbp - 0x48]
cmp rdx, 0x10
jb 0x14020c024
inc rdx
mov rcx, qword [rbp - 0x60]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14020c01f
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14020c62e
call fcn.14021ecec
mov rcx, qword [rsp + 0x68]
inc rcx
mov eax, 2
mul rcx
mov rsi, rax
mov rdi, 0xffffffffffffffff
cmovo rsi, rdi
mov rcx, rsi
call fcn.14021f4ec
mov r14, rax
test rax, rax
je 0x14020c061
mov r8, rsi
xor edx, edx
mov rcx, rax
call fcn.1402539e0
jmp 0x14020c064
mov r14, r12
mov r8, qword [rsp + 0x68]
inc r8
mov qword [rsp + 0x28], r12
mov qword [rsp + 0x20], r8
lea r9, [rsp + 0x70]
mov rdx, r14
lea rcx, [rsp + 0x68]
call fcn.14029fa04
movsxd r8, eax
lea r9, [rbp - 0x2b]
nop
dec r9
mov rax, r15
mul r8
shr rdx, 3
movzx eax, dl
shl al, 2
lea ecx, [rax + rdx]
add cl, cl
sub r8b, cl
add r8b, 0x30
mov byte [r9], r8b
mov r8, rdx
test rdx, rdx
jne 0x14020c090
mov qword [rbp - 0x60], r12
mov qword [rbp - 0x50], r12
mov qword [rbp - 0x48], SafeArrayLock
mov byte [rbp - 0x60], dl
lea rax, [rbp - 0x2b]
cmp r9, rax
je 0x14020c0ea
lea r8, [rbp - 0x2b]
sub r8, r9
mov rdx, r9
lea rcx, [rbp - 0x60]
call fcn.140101ee0
nop
lea r8, [rbp - 0x60]
lea rdx, str.mbsrtowcs_s:
lea rcx, [rsp + 0x78]
call fcn.1400eafe0
mov rcx, rax
call fcn.1401a7f60
nop
mov rdx, qword [rbp - 0x48]
cmp rdx, 0x10
jb 0x14020c143
inc rdx
mov rcx, qword [rbp - 0x60]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14020c13e
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14020c634
call fcn.14021ecec
mov qword [rsp + 0x30], r12
mov dword [rsp + 0x28], 0x8000000
mov dword [rsp + 0x20], 3
xor r9d, r9d
mov edx, 0x80000000
lea r8d, [r9 + 1]
mov rcx, r14
call qword [sym.imp.KERNEL32.dll_CreateFileW]
mov rsi, rax
cmp rax, 0xffffffffffffffff
jne 0x14020c183
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
jmp 0x14020c2c0
mov dword [rsp + 0x20], 0xf0000000
mov r9d, 1
xor r8d, r8d
xor edx, edx
lea rcx, [rsp + 0x48]
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
jne 0x14020c1c0
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
mov edx, eax
lea rcx, str.CryptAcquireContext_failed:__d_n
call fcn.140215f10
jmp 0x14020c2b7
lea rax, [rsp + 0x50]
mov qword [rsp + 0x20], rax
xor r9d, r9d
xor r8d, r8d
mov edx, 0x8003
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
jne 0x14020c215
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov edi, eax
mov edx, eax
lea rcx, str.CryptAcquireContext_failed:__d_n
call fcn.140215f10
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
jmp 0x14020c2c0
mov qword [rsp + 0x20], r12
lea r9, [rsp + 0x40]
mov r8d, 0x400
lea rdx, [rbp + 0x30]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
je 0x14020c289
nop word [rax + rax]
mov r8d, dword [rsp + 0x40]
mov rcx, qword [rsp + 0x50]
test r8d, r8d
je 0x14020c351
xor r9d, r9d
lea rdx, [rbp + 0x30]
call qword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x14020c33e
mov qword [rsp + 0x20], r12
lea r9, [rsp + 0x40]
mov r8d, 0x400
lea rdx, [rbp + 0x30]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_ReadFile]
test eax, eax
jne 0x14020c240
call qword [sym.imp.KERNEL32.dll_GetLastError]
lea rcx, str.ReadFile_failed:__d_n
mov edx, eax
mov edi, eax
call fcn.140215f10
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, r14
call fcn.14021f46c
nop
mov rdx, qword [rbx + 0x18]
cmp rdx, 0x10
jb 0x14020c303
inc rdx
mov rcx, qword [rbx]
cmp rdx, 0x1000
jb 0x14020c2fe
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14020c622
mov rcx, r8
call fcn.14021ecec
mov eax, edi
mov qword [rbx + 0x10], r12
mov qword [rbx + 0x18], SafeArrayLock
mov byte [rbx], 0
mov rcx, qword [rbp + 0x430]
xor rcx, rsp
call fcn.14021f250
mov rbx, qword [rsp + 0x590]
add rsp, 0x540
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret
call qword [sym.imp.KERNEL32.dll_GetLastError]
nop
lea rcx, str.CryptHashData_failed:__d_n
jmp 0x14020c296
mov dword [rsp + 0x44], SafeArrayLock
mov dword [rsp + 0x20], r12d
lea r9, [rsp + 0x44]
lea r8, [rbp + 0x20]
mov edx, 2
call qword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x14020c600
mov eax, dword [rsp + 0x44]
test eax, eax
je 0x14020c3ba
lea rdx, [rbp - 0x1f]
lea r8, [rbp + 0x20]
mov r9d, eax
nop dword [rax]
movzx ecx, byte [r8]
mov eax, ecx
shr rax, 4
movzx eax, byte [rbp + rax + 8]
mov byte [rdx - 1], al
and ecx, 0xf
movzx eax, byte [rbp + rcx + 8]
mov byte [rdx], al
lea rdx, [rdx + 2]
lea r8, [r8 + 1]
sub r9, 1
jne 0x14020c390
mov qword [rbp - 0x60], r12
mov qword [rbp - 0x50], r12
mov qword [rbp - 0x48], SafeArrayLock
mov byte [rbp - 0x60], 0
lea rax, [rbp - 0x20]
mov r8, rdi
inc r8
cmp byte [rax + r8], 0
jne 0x14020c3d5
lea rdx, [rbp - 0x20]
lea rcx, [rbp - 0x60]
call fcn.140101ee0
nop
lea r8, [rbp - 0x60]
lea rdx, str.MD5_is:
lea rcx, [rsp + 0x78]
call fcn.1400eafe0
mov rcx, rax
call fcn.1401a7f60
nop
mov rdx, qword [rbp - 0x48]
cmp rdx, 0x10
jb 0x14020c446
inc rdx
mov rcx, qword [rbp - 0x60]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14020c441
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14020c63a
call fcn.14021ecec
mov r15d, dword [rsp + 0x58]
mov rcx, qword [rsp + 0x50]
call qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
xor edx, edx
mov rcx, qword [rsp + 0x48]
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov rcx, rsi
call qword [sym.imp.KERNEL32.dll_CloseHandle]
mov rcx, r14
call fcn.14021f46c
lea rax, [rbp - 0x20]
mov rcx, rdi
nop dword [rax + rax]
inc rcx
cmp byte [rax + rcx], 0
jne 0x14020c480
inc rcx
call fcn.1402872f8
mov qword [r13], rax
lea rcx, [rbp - 0x20]
mov r8, rdi
nop dword [rax]
inc r8
cmp byte [rcx + r8], 0
jne 0x14020c4a0
inc r8
xor edx, edx
mov rcx, rax
call fcn.1402539e0
lea rax, [rbp - 0x20]
mov rdx, rdi
nop
inc rdx
cmp byte [rax + rdx], 0
jne 0x14020c4c0
inc rdx
lea r8, [rbp - 0x20]
mov rcx, qword [r13]
call fcn.140283a94
movsxd rdx, eax
lea rcx, [rbp - 0x60]
call fcn.14010d540
nop
mov r8, rax
lea rdx, str.strcpy_s:
lea rcx, [rsp + 0x78]
call fcn.1400eafe0
mov rcx, rax
call fcn.1401a7f60
nop
mov rdx, qword [rbp - 0x48]
cmp rdx, 0x10
jb 0x14020c53e
inc rdx
mov rcx, qword [rbp - 0x60]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14020c539
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14020c640
call fcn.14021ecec
mov rdx, qword [r13]
mov qword [rbp - 0x60], r12
mov qword [rbp - 0x50], r12
mov qword [rbp - 0x48], SafeArrayLock
mov byte [rbp - 0x60], 0
inc rdi
cmp byte [rdx + rdi], 0
jne 0x14020c556
mov r8, rdi
lea rcx, [rbp - 0x60]
call fcn.140101ee0
nop
lea r8, [rbp - 0x60]
lea rdx, str.createMD5forFile_md5_is:
lea rcx, [rsp + 0x78]
call fcn.1400eafe0
mov rcx, rax
call fcn.1401a7f60
nop
mov rdx, qword [rbp - 0x48]
cmp rdx, 0x10
jb 0x14020c5c2
inc rdx
mov rcx, qword [rbp - 0x60]
mov rax, rcx
cmp rdx, 0x1000
jb 0x14020c5bc
add rdx, 0x27
mov rcx, qword [rcx - 8]
sub rax, rcx
add rax, 0xfffffffffffffff8
cmp rax, 0x1f
ja 0x14020c61c
call fcn.14021ecec
nop
mov rdx, qword [rbx + 0x18]
cmp rdx, 0x10
jb 0x14020c5f8
inc rdx
mov rcx, qword [rbx]
cmp rdx, 0x1000
jb 0x14020c5f3
add rdx, 0x27
mov r8, qword [rcx - 8]
sub rcx, r8
lea rax, [rcx - 8]
cmp rax, 0x1f
ja 0x14020c622
mov rcx, r8
call fcn.14021ecec
mov eax, r15d
jmp 0x14020c305
call qword [sym.imp.KERNEL32.dll_GetLastError]
mov r15d, eax
mov edx, eax
lea rcx, str.CryptGetHashParam_failed:__d_n
call fcn.140215f10
jmp 0x14020c44b
call fcn.140260f54
nop
call fcn.140260f54
nop
call fcn.140101a70
int3
call fcn.140260f54
int3
call fcn.140260f54
int3
call fcn.140260f54
int3
call fcn.140260f54
int3