Function at 0x689c90
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
lea esp, [esp - 0x40]
push ebx
push esi
push edi
mov dword [ebp - 4], eax
mov dword [ebp - 0x2c], edx
mov eax, dword [ebp - 4]
call fcn.00408aa0
mov dword [ebp - 0x28], 0
mov dword [ebp - 0x24], 0
mov dword [ebp - 0x20], 0
mov dword [ebp - 0x1c], 0
xor eax, eax
push fcn.00689c60
push ebp
push 0x414ce0
push dword fs:[eax]
mov dword fs:[eax], esp
mov eax, dword [ebp - 0x2c]
xor edx, edx
call fcn.00408ad0
mov eax, dword [ebp - 4]
test eax, eax
je 0x689ceb
mov eax, dword [eax - 4]
mov edi, eax
cdq
mov ecx, 3
idiv ecx
test edx, edx
jne 0x689d0b
mov ecx, edi
mov eax, 0x55555556
imul ecx
shr ecx, 0x1f
add edx, ecx
mov ecx, edx
jmp 0x689d1c
mov ebx, edi
mov eax, 0x55555556
imul ebx
shr ebx, 0x1f
add edx, ebx
lea ecx, [edx + 1]
lea esi, [ecx - 1]
test esi, esi
jl 0x689f88
mov ebx, 0xffffffff
lea esi, [esi]
add ebx, 1
lea eax, [ebx + ebx*2]
add eax, 3
cmp eax, edi
jg 0x689e1a
mov edx, dword [str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov ecx, dword [ebp - 4]
lea eax, [ebx + ebx*2]
add eax, 1
movzx eax, byte [ecx + eax - 1]
shr eax, 2
lea ecx, [eax + 1]
mov al, byte [edx + ecx - 1]
mov byte [ebp - 0x30], al
mov edx, dword [ebp - 4]
lea eax, [ebx + ebx*2]
add eax, 1
movzx eax, byte [edx + eax - 1]
shl eax, 4
and eax, 0x30
mov byte [ebp - 0x40], al
mov edx, dword [ebp - 4]
lea eax, [ebx + ebx*2]
add eax, 2
movzx eax, byte [edx + eax - 1]
shr eax, 4
movzx edx, byte [ebp - 0x40]
or eax, edx
mov byte [ebp - 0x40], al
mov edx, dword [str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
movzx eax, byte [ebp - 0x40]
lea ecx, [eax + 1]
mov al, byte [edx + ecx - 1]
mov byte [ebp - 0x34], al
mov edx, dword [ebp - 4]
lea eax, [ebx + ebx*2]
add eax, 2
movzx eax, byte [edx + eax - 1]
shl eax, 2
and eax, 0x3c
mov byte [ebp - 0x40], al
mov edx, dword [ebp - 4]
lea eax, [ebx + ebx*2]
add eax, 3
movzx eax, byte [edx + eax - 1]
shr eax, 6
movzx edx, byte [ebp - 0x40]
or eax, edx
mov byte [ebp - 0x40], al
mov edx, dword [str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
movzx eax, byte [ebp - 0x40]
lea ecx, [eax + 1]
mov al, byte [edx + ecx - 1]
mov byte [ebp - 0x38], al
mov edx, dword [ebp - 4]
lea eax, [ebx + ebx*2]
add eax, 3
mov ax, word [edx + eax - 1]
and ax, 0x3f
mov byte [ebp - 0x40], al
mov edx, dword [str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
movzx eax, byte [ebp - 0x40]
lea ecx, [eax + 1]
mov al, byte [edx + ecx - 1]
mov byte [ebp - 0x3c], al
jmp 0x689f13
lea eax, [ebx + ebx*2]
add eax, 2
cmp eax, edi
jg 0x689ebf
mov edx, dword [str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov ecx, dword [ebp - 4]
lea eax, [ebx + ebx*2]
add eax, 1
movzx eax, byte [ecx + eax - 1]
shr eax, 2
lea ecx, [eax + 1]
mov al, byte [edx + ecx - 1]
mov byte [ebp - 0x30], al
mov edx, dword [ebp - 4]
lea eax, [ebx + ebx*2]
add eax, 1
movzx eax, byte [edx + eax - 1]
shl eax, 4
and eax, 0x30
mov byte [ebp - 0x40], al
mov edx, dword [ebp - 4]
lea eax, [ebx + ebx*2]
add eax, 2
movzx eax, byte [edx + eax - 1]
shr eax, 4
movzx edx, byte [ebp - 0x40]
or eax, edx
mov byte [ebp - 0x40], al
mov edx, dword [str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
movzx eax, byte [ebp - 0x40]
lea ecx, [eax + 1]
mov al, byte [edx + ecx - 1]
mov byte [ebp - 0x34], al
mov edx, dword [ebp - 4]
lea eax, [ebx + ebx*2]
add eax, 2
movzx eax, byte [edx + eax - 1]
shl eax, 2
and eax, 0x3c
mov byte [ebp - 0x40], al
mov edx, dword [str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
movzx eax, byte [ebp - 0x40]
lea ecx, [eax + 1]
mov al, byte [edx + ecx - 1]
mov byte [ebp - 0x38], al
mov byte [ebp - 0x3c], 0x3d
jmp 0x689f13
mov edx, dword [str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov eax, dword [ebp - 4]
lea ecx, [ebx + ebx*2]
add ecx, 1
movzx eax, byte [eax + ecx - 1]
shr eax, 2
lea ecx, [eax + 1]
mov al, byte [edx + ecx - 1]
mov byte [ebp - 0x30], al
mov edx, dword [ebp - 4]
lea eax, [ebx + ebx*2]
add eax, 1
movzx eax, byte [edx + eax - 1]
shl eax, 4
and eax, 0x30
mov byte [ebp - 0x40], al
mov edx, dword [str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
movzx eax, byte [ebp - 0x40]
lea ecx, [eax + 1]
mov al, byte [edx + ecx - 1]
mov byte [ebp - 0x34], al
mov byte [ebp - 0x38], 0x3d
mov byte [ebp - 0x3c], 0x3d
push 0
mov edx, dword [ebp - 0x2c]
mov eax, dword [edx]
mov dword [ebp - 0x18], eax
mov al, byte [ebp - 0x30]
lea ecx, [ebp - 0x1c]
xor dx, dx
call fcn.004093d0
mov eax, dword [ebp - 0x1c]
mov dword [ebp - 0x14], eax
mov al, byte [ebp - 0x34]
lea ecx, [ebp - 0x20]
xor dx, dx
call fcn.004093d0
mov eax, dword [ebp - 0x20]
mov dword [ebp - 0x10], eax
mov al, byte [ebp - 0x38]
lea ecx, [ebp - 0x24]
xor dx, dx
call fcn.004093d0
mov eax, dword [ebp - 0x24]
mov dword [ebp - 0xc], eax
mov al, byte [ebp - 0x3c]
lea ecx, [ebp - 0x28]
xor dx, dx
call fcn.004093d0
mov eax, dword [ebp - 0x28]
mov dword [ebp - 8], eax
lea edx, [ebp - 0x18]
mov eax, dword [ebp - 0x2c]
mov ecx, 4
call fcn.00408e60
cmp esi, ebx
jg 0x689d30
lea esi, [esi]
xor eax, eax
pop edx
add esp, 0xc
mov dword fs:[eax], edx
mov eax, ebp
call fcn.00689c60
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret