Function at 0x180046a70
Capabilities:
Hash data with md5

Disassembly:
push rbx
push rsi
push rdi
sub rsp, 0x80
mov qword [rsp + 0x28], 0xfffffffffffffffe
mov rax, qword [0x180175020]
xor rax, rsp
mov qword [rsp + 0x70], rax
mov rax, r8
mov rdi, rdx
mov rsi, rcx
mov qword [rsp + 0x30], rdx
xor ebx, ebx
mov dword [rsp + 0x20], ebx
xor ecx, ecx
mov qword [rsi + 0x920], rcx
mov qword [rsi + 0x928], rcx
mov qword [rsi + 0x930], rcx
mov qword [rsi + 0x938], rcx
mov qword [rsi + 0x940], rcx
mov qword [rsi + 0x948], rcx
mov qword [rsi + 0x950], rcx
mov qword [rsi + 0x958], rcx
mov dword [rsi + 0x964], ebx
mov dword [rsi + 0x960], ebx
mov dword [rsi + 0x968], 0x67452301
mov dword [rsi + 0x96c], 0xefcdab89
mov dword [rsi + 0x970], 0x98badcfe
mov dword [rsi + 0x974], 0x10325476
mov r8d, r9d
mov rdx, rax
mov rcx, rsi
call fcn.180046cb0
lea rcx, [rsp + 0x61]
lea rdx, [rsi + 0x962]
lea r8d, [rbx + 2]
nop word [rax + rax]
movzx eax, byte [rdx - 2]
mov byte [rcx - 1], al
movzx eax, byte [rdx - 1]
mov byte [rcx], al
movzx eax, byte [rdx]
mov byte [rcx + 1], al
movzx eax, byte [rdx + 1]
mov byte [rcx + 2], al
add rdx, 4
add rcx, 4
sub r8, 1
jne 0x180046b40
mov eax, dword [rsi + 0x960]
shr eax, 3
and eax, 0x3f
cmp eax, 0x38
jae 0x180046b84
mov r8d, 0x38
sub r8d, eax
jmp 0x180046b8d
mov r8d, 0x78
sub r8d, eax
lea rdx, [0x1801769a0]
mov rcx, rsi
call fcn.180046cb0
mov r8d, 8
lea rdx, [rsp + 0x60]
mov rcx, rsi
call fcn.180046cb0
lea rcx, [rsp + 0x61]
lea rdx, [rsi + 0x96a]
mov r8d, 4
nop word [rax + rax]
movzx eax, byte [rdx - 2]
mov byte [rcx - 1], al
movzx eax, byte [rdx - 1]
mov byte [rcx], al
movzx eax, byte [rdx]
mov byte [rcx + 1], al
movzx eax, byte [rdx + 1]
mov byte [rcx + 2], al
add rdx, 4
add rcx, 4
sub r8, 1
jne 0x180046bd0
mov rcx, rdi
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void____ptr64]
mov dword [rsp + 0x20], 1
nop dword [rax]
lea rcx, [rsp + 0x38]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::constructor_void____ptr64]
nop
movzx eax, byte [rsp + rbx + 0x60]
test al, al
jne 0x180046c39
lea rdx, [0x1801309ac]
lea rcx, [rsp + 0x38]
call qword [sym.imp.MSVCP90.dll_public:_class_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t______ptr64___cdecl_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::assign_wchar_t_const____ptr64____ptr64]
jmp 0x180046c69
cmp al, 0xf
ja 0x180046c54
movzx r8d, al
lea rdx, [0x1801309b8]
lea rcx, [rsp + 0x38]
call fcn.180047a80
jmp 0x180046c69
movzx r8d, al
lea rdx, [0x1801309c0]
lea rcx, [rsp + 0x38]
call fcn.180047a80
lea rdx, [rsp + 0x38]
mov rcx, rdi
call qword [reloc.MSVCP90.dll___Y__basic_string__WU__char_traits__W_std__V__allocator__W_2__std__QEAAAEAV01_AEBV01__Z]
nop
lea rcx, [rsp + 0x38]
call qword [sym.imp.MSVCP90.dll_public:_void___cdecl_std::basic_string_wchar_t__struct_std::char_traits_wchar_t___class_std::allocator_wchar_t__::destructor_void____ptr64]
inc rbx
cmp rbx, 0x10
jl 0x180046c10
mov rax, rdi
mov rcx, qword [rsp + 0x70]
xor rcx, rsp
call fcn.1800e9aa0
add rsp, 0x80
pop rdi
pop rsi
pop rbx
ret