Function at 0x403c70
Capabilities:
Hash data with md5
Initialize hashing via wincrypt

Disassembly:
sub rsp, 0x2c8
mov rax, rcx
mov qword [rsp + 0x2c0], rcx
mov qword [rsp + 0x2b8], rdx
mov qword [rsp + 0x2b0], 0
mov qword [rsp + 0x2a8], 0
mov dword [rsp + 0x28c], 0x10
lea rdx, [rsp + 0x110]
mov qword [rsp + 0xd0], rcx
mov rcx, rdx
mov qword [rsp + 0xc8], rax
call fcn.004b1590
mov rax, rsp
mov dword [rax + 0x20], 0xf0000000
mov rax, qword [sym.imp.ADVAPI32.dll_CryptAcquireContextA]
xor r8d, r8d
mov ecx, r8d
lea rdx, [rsp + 0x2b0]
mov r9d, 1
mov qword [rsp + 0xc0], rcx
mov rcx, rdx
mov rdx, qword [rsp + 0xc0]
mov r8, qword [rsp + 0xc0]
call rax
mov dword [rsp + 0xbc], eax
jmp 0x403d1b
mov eax, dword [rsp + 0xbc]
cmp eax, 0
jne 0x403db6
lea rax, [rsp + 0x100]
mov rcx, rax
mov qword [rsp + 0xb0], rax
call fcn.0046b5b0
lea rdx, [0x004c6193]
mov rcx, qword [rsp + 0xd0]
mov r8, qword [rsp + 0xb0]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_char_const__std::allocator_char__const_
jmp 0x403d64
lea rcx, [rsp + 0x100]
call sym.std::allocator_char_::allocator__
mov dword [rsp + 0xfc], 1
jmp 0x4041f6
mov rcx, qword [rsp + 0x2b0]
mov rax, rsp
lea rdx, [rsp + 0x2a8]
mov qword [rax + 0x20], rdx
mov rax, qword [sym.imp.ADVAPI32.dll_CryptCreateHash]
xor r8d, r8d
mov edx, r8d
mov r9d, 0x8003
mov qword [rsp + 0xa8], rdx
mov edx, r9d
mov r10, qword [rsp + 0xa8]
mov dword [rsp + 0xa4], r8d
mov r8, r10
mov r9d, dword [rsp + 0xa4]
call rax
mov dword [rsp + 0xa0], eax
jmp 0x403e14
mov eax, dword [rsp + 0xa0]
cmp eax, 0
jne 0x403eb3
mov rcx, qword [rsp + 0x2b0]
mov rax, qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
xor edx, edx
call rax
jmp 0x403e3c
lea rax, [rsp + 0xf8]
mov rcx, rax
mov qword [rsp + 0x98], rax
call fcn.0046b5b0
lea rdx, [0x004c6193]
mov rcx, qword [rsp + 0xd0]
mov r8, qword [rsp + 0x98]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_char_const__std::allocator_char__const_
jmp 0x403e75
lea rcx, [rsp + 0xf8]
call sym.std::allocator_char_::allocator__
mov dword [rsp + 0xfc], 1
jmp 0x4041f6
mov rcx, qword [rsp + 0x2a8]
mov rax, qword [rsp + 0x2b8]
mov qword [rsp + 0x90], rcx
mov rcx, rax
call method.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___.c_str___const
mov rcx, qword [rsp + 0x2b8]
mov qword [rsp + 0x88], rax
call method.std::__cxx11::basic_string_wchar_t__std::char_traits_wchar_t___std::allocator_wchar_t___.size___const
add eax, eax
mov rcx, qword [sym.imp.ADVAPI32.dll_CryptHashData]
xor r9d, r9d
mov rdx, qword [rsp + 0x90]
mov qword [rsp + 0x80], rcx
mov rcx, rdx
mov rdx, qword [rsp + 0x88]
mov r8d, eax
mov r10, qword [rsp + 0x80]
call r10
mov dword [rsp + 0x7c], eax
jmp 0x403f26
mov eax, dword [rsp + 0x7c]
cmp eax, 0
jne 0x403fd2
mov rcx, qword [rsp + 0x2a8]
mov rax, qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
call rax
jmp 0x403f49
mov rcx, qword [rsp + 0x2b0]
mov rax, qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
xor edx, edx
call rax
jmp 0x403f61
lea rax, [rsp + 0xf0]
mov rcx, rax
mov qword [rsp + 0x70], rax
call fcn.0046b5b0
lea rdx, [0x004c6193]
mov rcx, qword [rsp + 0xd0]
mov r8, qword [rsp + 0x70]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_char_const__std::allocator_char__const_
jmp 0x403f94
lea rcx, [rsp + 0xf0]
call sym.std::allocator_char_::allocator__
mov dword [rsp + 0xfc], 1
jmp 0x4041f6
mov rcx, qword [rsp + 0x2a8]
mov rax, rsp
mov dword [rax + 0x20], 0
mov rax, qword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
mov edx, 2
lea r8, [rsp + 0x290]
lea r9, [rsp + 0x28c]
call rax
mov dword [rsp + 0x6c], eax
jmp 0x40400b
mov eax, dword [rsp + 0x6c]
cmp eax, 0
jne 0x4040b7
mov rcx, qword [rsp + 0x2a8]
mov rax, qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
call rax
jmp 0x40402e
mov rcx, qword [rsp + 0x2b0]
mov rax, qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
xor edx, edx
call rax
jmp 0x404046
lea rax, [rsp + 0xe8]
mov rcx, rax
mov qword [rsp + 0x60], rax
call fcn.0046b5b0
lea rdx, [0x004c6193]
mov rcx, qword [rsp + 0xd0]
mov r8, qword [rsp + 0x60]
call method.std::__cxx11::basic_string_char__std::char_traits_char___std::allocator_char___.basic_string_char_const__std::allocator_char__const_
jmp 0x404079
lea rcx, [rsp + 0xe8]
call sym.std::allocator_char_::allocator__
mov dword [rsp + 0xfc], 1
jmp 0x4041f6
mov dword [rsp + 0xe4], 0
cmp dword [rsp + 0xe4], 0x10
jge 0x4041a3
lea rcx, [rsp + 0x110]
mov al, 0x30
mov qword [rsp + 0x58], rcx
mov cl, al
call method.std::_Setfill_char__std.setfill_char__char_
mov byte [rsp + 0x57], al
jmp 0x4040ef
mov al, byte [rsp + 0x57]
mov byte [rsp + 0xe0], al
mov dl, byte [rsp + 0xe0]
mov rcx, qword [rsp + 0x58]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____std::_Setfill_char__
mov qword [rsp + 0x48], rax
jmp 0x404115
mov ecx, 2
call method.std.setw_int_
mov dword [rsp + 0x44], eax
jmp 0x404128
mov eax, dword [rsp + 0x44]
mov dword [rsp + 0xd8], eax
mov edx, dword [rsp + 0xd8]
mov rcx, qword [rsp + 0x48]
call method.std::basic_ostream_char__std::char_traits_char____std::operator____char__std.char_traits_char____std::basic_ostream_char__std::char_traits_char_____std::_Setw_
mov qword [rsp + 0x38], rax
jmp 0x40414e
lea rdx, [method.std.hex_std::ios_base_]
mov rcx, qword [rsp + 0x38]
call method.std::ostream.operator___std::ios_base____std::ios_base__
mov qword [rsp + 0x30], rax
jmp 0x404169
movsxd rax, dword [rsp + 0xe4]
movzx edx, byte [rsp + rax + 0x290]
mov rcx, qword [rsp + 0x30]
call method.std::ostream.operator___int_
jmp 0x404188
jmp 0x40418d
mov eax, dword [rsp + 0xe4]
add eax, 1
mov dword [rsp + 0xe4], eax
jmp 0x4040c2
mov rcx, qword [rsp + 0x2a8]
mov rax, qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
call rax
jmp 0x4041b9
mov rcx, qword [rsp + 0x2b0]
mov rax, qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
xor edx, edx
call rax
jmp 0x4041d1
lea rdx, [rsp + 0x110]
mov rcx, qword [rsp + 0xd0]
call method.std::__cxx11::basic_ostringstream_char__std::char_traits_char___std::allocator_char___.str___const
jmp 0x4041eb
mov dword [rsp + 0xfc], 1
lea rcx, [rsp + 0x110]
call fcn.004b1d80
mov rax, qword [rsp + 0xc8]
add rsp, 0x2c8
ret