Function at 0x4a6149
Capabilities:
Authenticate hmac
Encode data using base64

Disassembly:
mov dword [edi + edx - 0x2d65e201], ecx
jae 0x45aec4
mov eax, 0x381c5a1b
lea ecx, [eax*4 + 0x44a58c25]
lea ebp, [eax + ebp - 0x381c5a1f]
mov ecx, dword [ecx + ebp - 0x2516f491]
mov edx, 0x601e0f29
bts edx, edx
call fcn.00431413
adc esi, 3
xor ecx, ebx
push edx
sub dx, dx
not ecx
sal ax, 0xe1
cwde
dec ecx
sal dword [esp], 0xb0
bswap ecx
sal dl, 7
cbw
sbb dword [esp], eax
lea ecx, [edx + ecx - 0x6ba4e976]
call fcn.0041a3b9
mov eax, ebp
mov edx, 0x41b61637
btc edx, edx
lea ebp, [edx + ebp - 0x4136163b]
lea ecx, [edx*2 - 0x62d61200]
or edx, edx
mov dword [ecx + ebp - 0x1f961a6e], eax
imul ecx, edx
movzx eax, dl
sal cx, cl
lea esi, [edx + esi - 0x4136163b]
mov eax, dword [esi + eax*4 - 0xdc]
adc edx, ecx
shr edx, 0x8b
xchg ecx, edx
xor eax, ebx
neg dx
rol eax, 1
bts edx, ecx
not eax
push ecx
rol ecx, 0x57
adc dword [esp + edx - 0x30b97978], edx
lea eax, [eax + edx - 0x6f5bd232]
js fcn.00438c9f
not word [esp + edx - 0x30b97976]
not eax
xchg dword [esp + edx - 0x30b97978], ecx
ja 0x44f24b
push 0x31829c9d
movzx ax, byte [ebp]
jmp 0x42fb76
push 0x550fa416
dec byte [esp]
mov cl, byte [ebp + 2]
mov edx, 0x8aa3203e
jns 0x48c910
call fcn.004c6eda
movzx ecx, word [esp + edx*2 - 0x5acbc402]
ror dl, 0x47
xor eax, ebx
sub dx, word [esp + edx - 0x2d65e200]
rol dx, 4
neg dl
inc eax
jmp 0x4a5f84
sbb cx, cx
xor ebx, eax
sub dx, word [esp + edx - 0x30b97978]
bswap ecx
adc edi, eax
call fcn.004d1741
movzx cx, byte [esi]
mov eax, 0xe1aaa92c
mov edx, 0x21383116
mov al, byte [esi + edx*2 - 0x4270622a]
jmp 0x43b15a
lea esi, [esi + edx*2 - 0x5acbc406]
push edx
sal dword [esp + edx - 0x2d65e201], 0x8a
mov eax, dword [esi + edx - 0x2d65e201]
jbe 0x43cc3b
mov edx, 0x3c0aad8f
movzx eax, dl
mov ecx, 0x458ba101
lea esi, [edx + esi - 0x3c0aad93]
xadd cl, dh
sal ecx, 0x39
jbe 0x4a7ef6
xchg dword [esp + 4], edx
lea ebp, [ebp + edx*2 - 0x63053938]
pop edx
xor edx, edx
shl al, cl
mov ecx, edx
sar dword [esp + edx*2], 0x7b
setae dl
mov word [ebp + edx*2 - 2], ax
lea esi, [esi + edx - 5]
push edx
pop eax
rol edx, 0x75
mov eax, dword [esi + edx*2 - 0x400000]
xor eax, ebx
not eax
bts ecx, ecx
or byte [esp + edx*2 - 0x3fffff], 0xb2
lea eax, [eax + edx*2 + 0x23592188]
sub edx, dword [esp + edx - 0x200000]
bts dx, 0x9d
not eax
adc eax, 0xfc9b2996
dec ecx
push ecx
xor ebx, eax
sar cx, 5
bswap ecx
bt cx, 0x12
adc edi, eax
pop eax
mov dword [esp + edx - 0x20200f], edi
ret
xor eax, 0xfca65d35
and edx, dword [esp + edx*2 - 0x5acb4eb8]
neg eax
lea edx, [ecx + ecx*4 - 0x4b5003d5]
bts ecx, edx
lea eax, [eax + edx - 0x2a92ab09]
lea ecx, [ecx + ecx - 0x477bc863]
pop ecx
btc cx, 0x9f
xor ebx, eax
add ebp, eax
sal edx, 0x1b
movsx eax, cx
jp fcn.004dee2f
mov dword [esp + eax - 0x330f9c], 0xe83fc49f
sub dword [esp + eax*8 - 0x1987ce0], 0x202f200e
adc ecx, 0xaa315726
call fcn.004deba4
lea ecx, [ecx + edx*8 + 0x4309c83d]
ror ecx, 1
inc ecx
neg edx
dec eax
xor ecx, 0xa41a972f
shr eax, 0x4a
inc ecx
or dl, dh
sar dx, 0xa8
mul al
not ecx
jno 0x42c122
push edx
sal al, 6
xor ebx, ecx
shr eax, 0x3d
adc edi, ecx
movzx ecx, dl
add al, byte [eax + ebp]
mov byte [esp + ecx - 0xe6], 0x13
mov cl, byte [ecx + ebp - 0xe4]
bts edx, edx
add dl, dh
sal dx, 0xa7
adc ebp, 1
shr al, cl
bswap edx
pop ecx
bt edx, ecx
mov word [ebp], ax
adc edx, edx
shr edx, cl
jmp edi
mov edx, dword [esi + edx*2 - 0x7814031e]
xor edx, ebx
bts ecx, 0x80
lea edx, [edx + ecx*2 - 0x316b0f61]
add eax, 0x8b89c2b2
rol edx, cl
xor edx, 0x33050510
rol ecx, cl
imul ecx, ecx
neg ecx
ror edx, 2
xor ebx, edx
shl ecx, cl
add ebp, edx
rol eax, 0x36
sbb esi, 2
lea edx, [ecx - 0x24f72277]
btr eax, 0xa4
movzx ecx, word [esi]
xor cx, bx
call fcn.0047e7d9
movzx ax, byte [edi]
mov ecx, 0x3991a430
mov cl, byte [edi + ecx - 0x3991a42e]
add edi, 2
mov edx, 0xc1ba491
sar dx, 0xa1
xor edx, edx
shr al, cl
sal edx, 4
mov word [edi + edx*2], ax
mov eax, dword [esi + edx*2]
inc dx
call fcn.004cd6bd
movzx ecx, byte [esi + ecx - 0x3891a800]
xor cl, bl
movzx eax, word [esp + 4]
cwde
rol cl, 1
or al, ah
xor cl, 0x8c
or ax, 0x8ebe