Function at 0x451820
Capabilities:
Encode data using base64 via winapi
Hash data via bcrypt

Disassembly:
push ebp
mov ebp, esp
push ebx
push edi
push esi
sub esp, 0x34
mov esi, dword [ebp + 8]
mov eax, dword [0x49503c]
xor eax, ebp
mov dword [ebp - 0x10], eax
mov eax, dword [ebp + 0x20]
lea ecx, [ebp - 0x20]
mov dword [ecx + 8], eax
movsd xmm0, qword [ebp + 0x18]
movsd qword [ecx], xmm0
xor eax, eax
mov dword [ecx + 0xc], eax
lea edx, [ebp - 0x28]
mov dword [edx + 4], eax
mov dword [edx], eax
push edx
push ecx
call dword [sym.imp.KERNEL32.dll_SystemTimeToFileTime]
test eax, eax
jne 0x45187b
mov dword [esi], 0
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.004503b0
mov eax, esi
add esp, 0x34
pop esi
pop edi
pop ebx
pop ebp
ret
mov esi, 0x48e7ea
mov edi, str._s_s_s_08lx_08lx_s
push esi
push dword [ebp - 0x28]
push dword [ebp - 0x24]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push edi
call fcn.00451240
add esp, 0x1c
mov edi, eax
inc edi
xor eax, eax
dec eax
mov ebx, edi
add ebx, edi
cmovb ebx, eax
push ebx
call fcn.0044fc05
add esp, 4
push ebx
mov ebx, eax
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
push esi
push dword [ebp - 0x28]
push dword [ebp - 0x24]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
mov eax, str._s_s_s_08lx_08lx_s
push eax
push 0xffffffffffffffff
push edi
push ebx
call fcn.004512a0
add esp, 0x28
push ebx
call dword [sym.imp.USER32.dll_CharLowerW]
push ebx
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea edi, [eax + eax]
add edi, 2
mov eax, edi
shr eax, 3
je 0x451b11
mov dword [ebp - 0x40], eax
xor esi, esi
mov dword [ebp - 0x20], esi
push esi
push esi
push 0x490a04
lea eax, [ebp - 0x20]
push eax
call sub.bcrypt.dll_BCryptOpenAlgorithmProvider
test eax, eax
js 0x451b11
mov dword [ebp - 0x28], esi
mov eax, dword [ebp - 0x20]
sub esp, 0x1c
mov dword [esp + 0x18], esi
xorps xmm0, xmm0
movups xmmword [esp + 8], xmm0
lea ecx, [ebp - 0x28]
mov dword [esp + 4], ecx
mov dword [esp], eax
call sub.bcrypt.dll_BCryptCreateHash
test eax, eax
js 0x451996
push 0
push edi
push ebx
push dword [ebp - 0x28]
call sub.bcrypt.dll_BCryptHashData
xor esi, esi
test eax, eax
js 0x45198e
mov esi, 0x10
push esi
call fcn.0044fc05
add esp, 4
xorps xmm0, xmm0
movups xmmword [eax], xmm0
push 0
push esi
mov esi, eax
push eax
push dword [ebp - 0x28]
call sub.bcrypt.dll_BCryptFinishHash
test eax, eax
jns 0x45198e
push esi
call fcn.0044fc0e
add esp, 4
xor esi, esi
push dword [ebp - 0x28]
call sub.bcrypt.dll_BCryptDestroyHash
push 0
push dword [ebp - 0x20]
call sub.bcrypt.dll_BCryptCloseAlgorithmProvider
test esi, esi
je 0x451b11
mov eax, dword [esi]
mov dword [ebp - 0x3c], esi
mov ecx, dword [esi + 4]
or eax, 1
mov dword [ebp - 0x38], eax
or ecx, 1
mov dword [ebp - 0x34], ecx
xor esi, esi
xor eax, eax
xor edi, edi
xor edx, edx
mov dword [ebp - 0x2c], ebx
xor ebx, ebx
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ecx + edi*8]
add esi, ecx
imul esi, dword [ebp - 0x38]
rol esi, 0x10
imul esi, esi, 0xcf98b111
rol esi, 0x10
imul esi, esi, 0x87085b9f
rol esi, 0x10
imul esi, esi, 0x12ceb96d
rol esi, 0x10
add eax, ecx
mov ecx, eax
rol ecx, 0x10
imul ecx, ecx, 0xef0569fb
imul eax, dword [ebp - 0x38]
add eax, ecx
imul ecx, eax, 0x79f8a395
mov dword [ebp - 0x30], ecx
shr eax, 0x10
imul ecx, eax, 0x689b6b9f
add ecx, dword [ebp - 0x30]
mov eax, ecx
rol eax, 0x10
imul eax, eax, 0xc3efea97
add eax, ecx
mov ecx, dword [ebp - 0x2c]
mov ecx, dword [ecx + edi*8 + 4]
imul esi, esi, 0x257e1d83
add ebx, esi
add edx, eax
add esi, ecx
imul esi, dword [ebp - 0x34]
rol esi, 0x10
imul esi, esi, 0xa27416f5
rol esi, 0x10
add eax, ecx
mov ecx, eax
rol ecx, 0x10
imul ecx, ecx, 0xc31713db
imul eax, dword [ebp - 0x34]
add eax, ecx
imul ecx, eax, 0x59c3af2d
mov dword [ebp - 0x30], ecx
shr eax, 0x10
imul ecx, eax, 0xddcd1f0f
add ecx, dword [ebp - 0x30]
mov eax, ecx
rol eax, 0x10
imul eax, eax, 0x35bd1ec9
add eax, ecx
imul ecx, esi, 0xd38396ff
rol ecx, 0x10
imul ecx, ecx, 0x7c932b89
rol ecx, 0x10
imul esi, ecx, 0xbfa49f69
add ebx, esi
add edx, eax
inc edi
cmp edi, dword [ebp - 0x40]
jb 0x4519c9
xor esi, eax
mov dword [ebp - 0x20], esi
xor edx, ebx
mov dword [ebp - 0x1c], edx
xor eax, eax
mov dword [ebp - 0x28], eax
lea ebx, [ebp - 0x28]
push ebx
push eax
push 0x40000001
push 8
lea edi, [ebp - 0x20]
push edi
call dword [sym.imp.CRYPT32.dll_CryptBinaryToStringW]
test eax, eax
je 0x451b28
mov esi, dword [ebp - 0x28]
add esi, esi
mov eax, 0xffffffff
cmovb esi, eax
push esi
call fcn.0044fc05
add esp, 4
mov edi, eax
push esi
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
push ebx
push edi
push 0x40000001
push 8
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.CRYPT32.dll_CryptBinaryToStringW]
mov esi, dword [ebp + 8]
test eax, eax
je 0x451b41
mov dword [esi], edi
jmp 0x451b31
mov esi, dword [ebp + 8]
mov dword [esi], 0
push ebx
call fcn.0044fc0e
add esp, 4
jmp 0x451867
mov esi, dword [ebp + 8]
mov dword [esi], 0
mov ebx, dword [ebp - 0x2c]
push dword [ebp - 0x3c]
call fcn.0044fc0e
add esp, 4
jmp 0x451b1a
mov dword [esi], 0
push edi
call fcn.0044fc0e
add esp, 4
jmp 0x451b31