Function at 0x452550
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, 0x3c
mov esi, dword [ebp + 8]
mov eax, dword [0x4a0088]
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 0x4525ab
mov dword [esi], 0
mov ecx, dword [ebp - 0x10]
xor ecx, ebp
call fcn.0044f7d0
mov eax, esi
add esp, 0x3c
pop esi
pop edi
pop ebx
pop ebp
ret
mov edi, str.User_Choice_set_via_Windows_User_Experience_D18B6DD5_6124_4341_9318_804003BAFA0B
mov esi, str._s_s_s_08lx_08lx_s
push edi
push dword [ebp - 0x28]
push dword [ebp - 0x24]
push dword [ebp + 0x14]
push dword [ebp + 0x10]
push dword [ebp + 0xc]
push esi
call fcn.00451d80
add esp, 0x1c
lea esi, [eax + 1]
lea ebx, [eax + eax]
add ebx, 2
xor ecx, ecx
dec ecx
cmp eax, 0xffffffff
cmovl ebx, ecx
push ebx
call fcn.0044f9c3
add esp, 4
mov edi, eax
push ebx
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
mov eax, str.User_Choice_set_via_Windows_User_Experience_D18B6DD5_6124_4341_9318_804003BAFA0B
push eax
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 esi
push edi
call fcn.00451de0
add esp, 0x28
push edi
call dword [sym.imp.USER32.dll_CharLowerW]
push edi
call dword [sym.imp.kernel32.dll_lstrlenW]
lea ebx, [eax + eax]
add ebx, 2
cmp ebx, 7
ja 0x45264e
mov esi, dword [ebp + 8]
mov dword [esi], 0
push edi
call fcn.0044f120
add esp, 4
jmp 0x452597
xor esi, esi
mov dword [ebp - 0x20], esi
push esi
push esi
push 0x49b950
lea eax, [ebp - 0x20]
push eax
call sub.bcrypt.dll_BCryptOpenAlgorithmProvider
test eax, eax
js 0x452637
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 0x452895
push 0
mov dword [ebp - 0x2c], ebx
push ebx
push edi
push dword [ebp - 0x28]
call sub.bcrypt.dll_BCryptHashData
xor ebx, ebx
test eax, eax
js 0x4526d4
mov esi, 0x10
push esi
call fcn.0044f9c3
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
js 0x4528a4
mov ebx, esi
mov esi, dword [ebp + 8]
push dword [ebp - 0x28]
call sub.bcrypt.dll_BCryptDestroyHash
push 0
push dword [ebp - 0x20]
call sub.bcrypt.dll_BCryptCloseAlgorithmProvider
test ebx, ebx
je 0x45263a
mov edx, dword [ebp - 0x2c]
shr edx, 3
mov eax, dword [ebx]
mov dword [ebp - 0x34], ebx
mov ecx, dword [ebx + 4]
or eax, 1
mov dword [ebp - 0x40], eax
or ecx, 1
mov dword [ebp - 0x3c], ecx
xor eax, eax
inc eax
cmp edx, 2
cmovae eax, edx
mov dword [ebp - 0x38], eax
xor esi, esi
mov dword [ebp - 0x30], edi
xor edi, edi
xor ecx, ecx
xor edx, edx
xor eax, eax
mov dword [ebp - 0x48], edx
mov dword [ebp - 0x2c], ecx
mov edx, dword [ebp - 0x30]
mov ebx, dword [edx + ecx*8]
mov edx, dword [ebp - 0x48]
add esi, ebx
mov ecx, dword [ebp - 0x40]
imul esi, ecx
rol esi, 0x10
add edi, ebx
mov ebx, edi
rol ebx, 0x10
imul ebx, ebx, 0xef0569fb
imul edi, ecx
add edi, ebx
imul ebx, edi, 0x79f8a395
shr edi, 0x10
imul ecx, edi, 0x689b6b9f
add ecx, ebx
mov edi, ecx
rol edi, 0x10
imul edi, edi, 0xc3efea97
add edi, ecx
mov ecx, dword [ebp - 0x2c]
mov ebx, dword [ebp - 0x30]
mov ebx, dword [ebx + ecx*8 + 4]
mov dword [ebp - 0x44], ebx
imul ecx, esi, 0xcf98b111
rol ecx, 0x10
imul ecx, ecx, 0x87085b9f
rol ecx, 0x10
imul ecx, ecx, 0x12ceb96d
rol ecx, 0x10
imul ecx, ecx, 0x257e1d83
add eax, ecx
add ecx, ebx
mov ebx, dword [ebp - 0x3c]
imul ecx, ebx
rol ecx, 0x10
add edx, edi
imul esi, ecx, 0xa27416f5
rol esi, 0x10
add edi, dword [ebp - 0x44]
mov ecx, edi
rol ecx, 0x10
imul ecx, ecx, 0xc31713db
imul edi, ebx
add edi, ecx
imul ecx, edi, 0x59c3af2d
shr edi, 0x10
imul ebx, edi, 0xddcd1f0f
add ebx, ecx
mov ecx, ebx
rol ecx, 0x10
imul edi, ecx, 0x35bd1ec9
add edi, ebx
imul ecx, esi, 0xd38396ff
rol ecx, 0x10
imul ecx, ecx, 0x7c932b89
rol ecx, 0x10
imul esi, ecx, 0xbfa49f69
mov ecx, dword [ebp - 0x2c]
add eax, esi
add edx, edi
inc ecx
cmp dword [ebp - 0x38], ecx
jne 0x452724
mov ebx, dword [ebp - 0x30]
xor esi, edi
mov dword [ebp - 0x20], esi
xor edx, eax
mov dword [ebp - 0x1c], edx
xor eax, eax
mov dword [ebp - 0x28], eax
lea edi, [ebp - 0x28]
push edi
push eax
push 0x40000001
push 8
lea esi, [ebp - 0x20]
push esi
call dword [sym.imp.crypt32.dll_CryptBinaryToStringW]
test eax, eax
je 0x4528b2
mov eax, dword [ebp - 0x28]
lea ecx, [eax + eax]
test eax, eax
mov esi, 0xffffffff
cmovns esi, ecx
push esi
call fcn.0044f9c3
add esp, 4
mov edi, eax
push esi
push 0
push eax
call sub.VCRUNTIME140.dll_memset
add esp, 0xc
lea eax, [ebp - 0x28]
push eax
push edi
push 0x40000001
push 8
lea eax, [ebp - 0x20]
push eax
call dword [sym.imp.crypt32.dll_CryptBinaryToStringW]
mov ecx, edi
test eax, eax
cmovne eax, edi
mov esi, dword [ebp + 8]
mov dword [esi], eax
mov edi, ebx
mov ebx, dword [ebp - 0x34]
jne 0x4528c0
push ecx
call fcn.0044f120
add esp, 4
jmp 0x4528c0
push 0
push dword [ebp - 0x20]
call sub.bcrypt.dll_BCryptCloseAlgorithmProvider
jmp 0x452637
push esi
call fcn.0044f120
add esp, 4
jmp 0x4526d4
mov esi, dword [ebp + 8]
mov dword [esi], 0
mov edi, ebx
mov ebx, dword [ebp - 0x34]
push ebx
call fcn.0044f120
add esp, 4
jmp 0x452640