Function at 0x140004894
Capabilities:
Encode data using base64
Hash data via wincrypt
Hash data with md5
Initialize hashing via wincrypt

Disassembly:
mov qword [rsp + 0x20], rbx
push rbp
push rsi
push rdi
push r12
push r13
push r14
push r15
lea rbp, [rsp - 0x10]
sub rsp, 0x110
mov rax, qword [0x140015010]
xor rax, rsp
mov qword [rbp], rax
xor r12d, r12d
mov dword [rsp + 0x40], 0x10
mov rbx, r8
mov qword [rsp + 0x48], r12
mov esi, edx
mov qword [rsp + 0x38], r12
mov rdi, rcx
mov dword [rsp + 0x20], 0xf0000040
lea r13d, [r12 + 1]
xor r8d, r8d
mov r9d, r13d
lea rcx, [rsp + 0x48]
xor edx, edx
mov r14d, r12d
call qword [sym.imp.ADVAPI32.dll_CryptAcquireContextW]
test eax, eax
je 0x140004b9c
mov rcx, qword [rsp + 0x48]
lea rax, [rsp + 0x38]
xor r9d, r9d
mov qword [rsp + 0x20], rax
xor r8d, r8d
mov edx, 0x8003
call qword [sym.imp.ADVAPI32.dll_CryptCreateHash]
test eax, eax
je 0x140004b9c
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x140004bac
xor r9d, r9d
mov r8d, esi
mov rdx, rdi
call qword [sym.imp.ADVAPI32.dll_CryptHashData]
test eax, eax
je 0x140004b9c
mov rcx, qword [rsp + 0x38]
lea r9, [rsp + 0x40]
lea r8, [rsp + 0x58]
mov dword [rsp + 0x20], r12d
lea edx, [r12 + 2]
call qword [sym.imp.ADVAPI32.dll_CryptGetHashParam]
test eax, eax
je 0x140004b9c
mov ecx, dword [rsp + 0x5c]
mov eax, esi
shr eax, 2
mov r15d, r12d
test sil, 4
mov r11, rdi
mov esi, r12d
mov r12d, dword [rsp + 0x58]
lea r10d, [rax - 1]
cmove r10d, eax
or ecx, r13d
or r12d, r13d
lea r9d, [r10 - 2]
shr r9d, 1
add r9d, r13d
lea r13d, [rcx + 0x13db0000]
add esi, dword [r11]
lea ecx, [r12 + 0x69fb0000]
imul ecx, esi
lea r11, [r11 + 8]
shr esi, 0x10
imul eax, esi, 0x10fa9605
sub ecx, eax
mov eax, ecx
shr eax, 0x10
imul edx, eax, 0x689b6b9f
imul eax, ecx, 0x79f8a395
add edx, eax
imul r8d, edx, 0xea970001
mov eax, edx
shr eax, 0x10
mov edx, r13d
imul ecx, eax, 0x3c101569
sub r8d, ecx
add r15d, r8d
add r8d, dword [r11 - 4]
imul edx, r8d
mov eax, r8d
shr eax, 0x10
imul ecx, eax, 0x3ce8ec25
sub edx, ecx
imul r8d, edx, 0x59c3af2d
mov eax, edx
shr eax, 0x10
imul ecx, eax, 0x2232e0f1
sub r8d, ecx
mov eax, r8d
shr eax, 0x10
imul esi, eax, 0x35bd1ec9
imul eax, r8d, 0x1ec90001
add esi, eax
add r15d, esi
add r9d, 0xffffffff
jne 0x1400049b4
lea r9, [rsp + 0x30]
mov edx, r10d
lea r8, [rsp + 0x58]
mov rcx, rdi
call fcn.140004be8
xor r12d, r12d
test eax, eax
je 0x140004b9c
mov eax, dword [rsp + 0x30]
lea rcx, [rsp + 0x70]
xor eax, esi
mov edx, 0x80
mov dword [rsp + 0x50], eax
mov r9d, r12d
mov eax, dword [rsp + 0x34]
mov r8d, r12d
xor eax, r15d
mov dword [rsp + 0x54], eax
lea edi, [rdx - 0x7f]
lea rax, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
movups xmm0, xmmword [rax]
movups xmm1, xmmword [rax + 0x10]
movups xmmword [rcx], xmm0
movups xmm0, xmmword [rax + 0x20]
movups xmmword [rcx + 0x10], xmm1
movups xmm1, xmmword [rax + 0x30]
movups xmmword [rcx + 0x20], xmm0
movups xmm0, xmmword [rax + 0x40]
movups xmmword [rcx + 0x30], xmm1
movups xmm1, xmmword [rax + 0x50]
movups xmmword [rcx + 0x40], xmm0
movups xmm0, xmmword [rax + 0x60]
movups xmmword [rcx + 0x50], xmm1
movups xmmword [rcx + 0x60], xmm0
movups xmm0, xmmword [rax + 0x70]
movzx eax, word [rax + rdx]
movups xmmword [rcx + rdx - 0x10], xmm0
mov word [rcx + rdx], ax
mov eax, r8d
add r8d, edi
movzx edx, byte [rsp + rax + 0x50]
cmp r8d, 8
jae 0x140004b11
movzx r10d, byte [rsp + r8 + 0x50]
lea eax, [r8 + 1]
mov r8d, eax
cmp eax, 8
jae 0x140004b14
movzx r11d, byte [rsp + rax + 0x50]
lea r8d, [rax + 1]
jmp 0x140004b17
mov r10d, r12d
mov r11, r12
mov rax, rdx
mov ecx, r9d
shr rax, 2
add r9d, edi
and edx, 3
shl edx, 4
movzx eax, word [rsp + rax*2 + 0x70]
mov word [rbx + rcx*2], ax
mov eax, r10d
and r10d, 0xf
shr rax, 4
or rdx, rax
shl r10d, 2
movzx eax, word [rsp + rdx*2 + 0x70]
mov word [rbx + r9*2], ax
add r9d, edi
mov rax, r11
mov edx, r10d
shr rax, 6
and r11d, 0x3f
or rdx, rax
movzx eax, word [rsp + rdx*2 + 0x70]
mov word [rbx + r9*2], ax
add r9d, edi
movzx eax, word [rsp + r11*2 + 0x70]
mov ecx, r9d
mov word [rbx + r9*2], ax
add r9d, edi
cmp r8d, 8
jb 0x140004ae2
mov eax, 0x3d
mov r14d, edi
mov word [rbx + rcx*2], ax
mov word [rbx + r9*2], r12w
mov rcx, qword [rsp + 0x38]
test rcx, rcx
je 0x140004bac
call qword [sym.imp.ADVAPI32.dll_CryptDestroyHash]
mov rcx, qword [rsp + 0x48]
test rcx, rcx
je 0x140004bbe
xor edx, edx
call qword [sym.imp.ADVAPI32.dll_CryptReleaseContext]
mov eax, r14d
mov rcx, qword [rbp]
xor rcx, rsp
call fcn.14000a970
mov rbx, qword [rsp + 0x168]
add rsp, 0x110
pop r15
pop r14
pop r13
pop r12
pop rdi
pop rsi
pop rbp
ret