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

Disassembly:
push ebp
mov ebp, esp
push 0xffffffffffffffff
push 0x4d87b6
mov eax, dword fs:[0]
push eax
mov dword fs:[0], esp
sub esp, 0x34
mov ecx, 0x5100f6
mov dword [ebp - 0x28], 0
call fcn.004b532d
push dword [ebp + 0xc]
call dword [sym.imp.KERNEL32.dll_lstrlenW]
lea eax, [eax*2 + 2]
mov dword [ebp - 0x20], eax
shr eax, 3
mov dword [ebp - 0x24], eax
test eax, eax
jne 0x40afe0
mov eax, dword [ebp + 8]
mov dword [eax], 0
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
push esi
push edi
xor edi, edi
mov dword [ebp - 4], 0
push edi
push edi
xor esi, esi
mov dword [ebp - 0x28], 2
push 0x4e0ee4
lea eax, [ebp - 0x18]
mov dword [ebp - 0x1c], esi
push eax
mov dword [ebp - 0x34], esi
mov dword [ebp - 0x18], esi
call sub.bcrypt.dll_BCryptOpenAlgorithmProvider
test eax, eax
js 0x40b09b
push edi
push edi
push edi
push edi
push edi
lea eax, [ebp - 0x10]
mov dword [ebp - 0x10], esi
push eax
push dword [ebp - 0x18]
call sub.bcrypt.dll_BCryptCreateHash
test eax, eax
js 0x40b091
push edi
push dword [ebp - 0x20]
push dword [ebp + 0xc]
push dword [ebp - 0x10]
call sub.bcrypt.dll_BCryptHashData
test eax, eax
js 0x40b089
push 0x10
call fcn.004b53b2
mov edi, eax
add esp, 4
test edi, edi
je 0x40b058
xorps xmm0, xmm0
movups xmmword [edi], xmm0
jmp 0x40b05a
xor edi, edi
push 0
push 0x10
push edi
push dword [ebp - 0x10]
mov esi, edi
mov dword [ebp - 0x20], edi
mov dword [ebp - 0x1c], esi
call sub.bcrypt.dll_BCryptFinishHash
test eax, eax
jns 0x40b0bb
xor esi, esi
xor eax, eax
mov dword [ebp - 0x1c], esi
test edi, edi
je 0x40b087
push edi
call fcn.004b53bb
add esp, 4
xor edi, edi
push dword [ebp - 0x10]
call sub.bcrypt.dll_BCryptDestroyHash
push 0
push dword [ebp - 0x18]
call sub.bcrypt.dll_BCryptCloseAlgorithmProvider
mov dword [ebp - 0x38], esi
mov byte [ebp - 4], 2
test edi, edi
jne 0x40b0c0
mov eax, dword [ebp + 8]
mov dword [eax], edi
pop edi
pop esi
mov ecx, dword [ebp - 0xc]
mov dword fs:[0], ecx
mov esp, ebp
pop ebp
ret
mov edi, dword [ebp - 0x20]
jmp 0x40b089
mov eax, dword [esi + 4]
xor edx, edx
mov edi, dword [esi]
or eax, 1
mov dword [ebp - 0x2c], eax
or edi, 1
xor eax, eax
mov dword [ebp - 0x30], edi
xor ecx, ecx
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x10], edx
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x18], eax
cmp dword [ebp - 0x24], eax
jbe 0x40b1f4
xor esi, esi
mov eax, dword [ebp + 0xc]
mov ecx, dword [ebp - 0x18]
mov ecx, dword [eax + ecx*8]
add esi, ecx
mov eax, dword [ebp - 0x20]
add eax, ecx
mov ecx, dword [ebp - 0x18]
imul eax, edi
rol eax, 0x10
imul eax, eax, 0xcf98b111
rol eax, 0x10
imul eax, eax, 0x87085b9f
rol eax, 0x10
imul eax, eax, 0x12ceb96d
rol eax, 0x10
imul edx, eax, 0x257e1d83
mov eax, esi
rol eax, 0x10
imul eax, eax, 0x10fa9605
imul esi, edi
add dword [ebp - 0x10], edx
sub esi, eax
mov eax, esi
shr eax, 0x10
imul edi, eax, 0x689b6b9f
imul eax, esi, 0x79f8a395
add edi, eax
mov eax, edi
rol eax, 0x10
imul eax, eax, 0xc3efea97
add edi, eax
mov eax, dword [ebp + 0xc]
add dword [ebp - 0x14], edi
mov ecx, dword [eax + ecx*8 + 4]
add edi, ecx
lea eax, [ecx + edx]
mov ecx, dword [ebp - 0x14]
imul eax, dword [ebp - 0x2c]
rol eax, 0x10
imul eax, eax, 0xa27416f5
rol eax, 0x10
imul eax, eax, 0xd38396ff
rol eax, 0x10
imul eax, eax, 0x7c932b89
rol eax, 0x10
imul eax, eax, 0xbfa49f69
add dword [ebp - 0x10], eax
mov dword [ebp - 0x20], eax
mov eax, edi
imul edi, dword [ebp - 0x2c]
rol eax, 0x10
imul eax, eax, 0x3ce8ec25
sub edi, eax
mov eax, edi
imul esi, edi, 0x59c3af2d
shr eax, 0x10
mov edi, dword [ebp - 0x30]
imul eax, eax, 0x2232e0f1
sub esi, eax
mov eax, esi
rol eax, 0x10
imul eax, eax, 0x35bd1ec9
add esi, eax
mov eax, dword [ebp - 0x18]
inc eax
add ecx, esi
mov dword [ebp - 0x14], ecx
mov dword [ebp - 0x18], eax
cmp eax, dword [ebp - 0x24]
jl 0x40b0f2
mov edx, dword [ebp - 0x10]
mov dword [ebp + 0xc], esi
mov esi, dword [ebp - 0x1c]
mov eax, dword [ebp + 0xc]
xor eax, dword [ebp - 0x20]
xor ecx, edx
mov dword [ebp - 0x40], eax
lea eax, [ebp + 0xc]
push eax
push 0
push 0x40000001
push 8
lea eax, [ebp - 0x40]
mov dword [ebp - 0x3c], ecx
push eax
mov dword [ebp + 0xc], 0
call dword [sym.imp.CRYPT32.dll_CryptBinaryToStringW]
test eax, eax
jne 0x40b225
xor edi, edi
jmp 0x40b28e
mov eax, dword [ebp + 0xc]
xor ecx, ecx
mov edx, 2
mul edx
seto cl
neg ecx
or ecx, eax
push ecx
mov dword [ebp - 0x30], ecx
call fcn.004b53b2
mov edi, eax
mov dword [ebp - 0x24], eax
add esp, 4
test edi, edi
je 0x40b25d
push dword [ebp - 0x30]
push 0
push edi
call fcn.004b8400
add esp, 0xc
jmp 0x40b262
xor edi, edi
mov dword [ebp - 0x24], edi
lea eax, [ebp + 0xc]
push eax
push edi
push 0x40000001
push 8
lea eax, [ebp - 0x40]
push eax
call dword [sym.imp.CRYPT32.dll_CryptBinaryToStringW]
test eax, eax
jne 0x40b28e
mov eax, dword [ebp - 0x24]
xor edi, edi
test eax, eax
je 0x40b28e
push eax
call fcn.004b53bb
add esp, 4
mov eax, dword [ebp + 8]
push esi
mov dword [eax], edi
call fcn.004b53bb
mov ecx, dword [ebp - 0xc]
add esp, 4
mov eax, dword [ebp + 8]
mov dword fs:[0], ecx
pop edi
pop esi
mov esp, ebp
pop ebp
ret