Function at 0x417c90
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
push edi
push esi
xor esi, esi
push ebx
sub esp, 0x4c
mov edi, dword [ebp + 0xc]
mov ebx, dword [ebp + 8]
cmp edi, 2
jbe 0x417d8f
lea esi, [esi]
movzx eax, byte [ebx]
and ecx, 0xffffff00
sub edi, 3
mov byte [ebp - 0x38], al
movzx edx, byte [ebx + 1]
mov byte [ebp - 0x48], dl
movzx edx, byte [ebp - 0x38]
movzx eax, byte [ebx + 2]
add ebx, 3
shr dl, 2
mov byte [ebp - 0x58], al
movzx eax, dl
or ecx, eax
movzx edx, byte [ebp - 0x38]
movzx eax, byte [ebp - 0x48]
and edx, 3
shl edx, 4
shr al, 4
add al, dl
mov ch, al
movzx edx, byte [ebp - 0x48]
and ecx, 0xff3f
movzx eax, byte [ebp - 0x58]
and edx, 0xf
shl edx, 2
shr al, 6
add al, dl
movzx edx, al
movzx eax, byte [ebp - 0x58]
shl edx, 0x10
or ecx, edx
and eax, 0x3f
shl eax, 0x18
or ecx, eax
lea eax, [esi + 4]
cmp eax, dword [ebp + 0x14]
ja 0x417e6d
movzx edx, cl
movzx eax, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov edx, dword [ebp + 0x10]
mov byte [esi + edx], al
movzx eax, ch
movzx eax, al
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [esi + edx + 1], al
mov eax, ecx
shr eax, 0x10
movzx eax, al
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [esi + edx + 2], al
mov eax, ecx
shr eax, 0x18
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [esi + edx + 3], al
add esi, 4
cmp edi, 2
ja 0x417cb0
movzx eax, byte [ebp - 0x58]
movzx edx, byte [ebp - 0x48]
mov byte [ebp - 0x26], al
movzx eax, byte [ebp - 0x38]
mov byte [ebp - 0x27], dl
mov byte [ebp - 0x28], al
test edi, edi
je 0x417e50
mov byte [ebp - 0x26], 0
xor edx, edx
mov byte [ebp - 0x27], 0
mov byte [ebp - 0x28], 0
jmp 0x417db0
movzx eax, byte [ebx]
inc ebx
mov byte [ebp + edx - 0x28], al
inc edx
cmp edx, edi
jb 0x417da7
movzx edx, byte [ebp - 0x28]
and ecx, 0xffffff00
mov al, dl
shr al, 2
and edx, 3
movzx ebx, al
or ecx, ebx
movzx ebx, byte [ebp - 0x27]
shl edx, 4
mov al, bl
shr al, 4
add al, dl
mov edx, ebx
movzx ebx, byte [ebp - 0x26]
and edx, 0xf
shl edx, 2
mov ch, al
shr bl, 6
add bl, dl
movzx eax, bl
mov edx, ecx
shl eax, 0x10
and edx, 0xff00ffff
lea ebx, [esi + 4]
or edx, eax
cmp ebx, dword [ebp + 0x14]
mov ecx, 0xffffffff
ja 0x417e63
movzx ecx, dl
movzx ebx, dh
dec edi
movzx eax, byte [ecx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov ecx, dword [ebp + 0x10]
mov byte [esi + ecx], al
movzx eax, bl
movzx ebx, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [esi + ecx + 1], bl
je 0x417e91
mov eax, edx
mov edi, dword [ebp + 0x10]
shr eax, 0x10
movzx ebx, al
movzx edx, byte [ebx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [esi + edi + 2], dl
lea edi, [esi + 3]
mov esi, dword [ebp + 0x10]
mov byte [edi + esi], 0x3d
lea esi, [edi + 1]
cmp esi, dword [ebp + 0x14]
mov ecx, 0xffffffff
jae 0x417e63
mov eax, dword [ebp + 0x10]
mov ecx, esi
mov byte [eax + esi], 0
add esp, 0x4c
mov eax, ecx
pop ebx
pop esi
pop edi
pop ebp
ret
movzx ebx, byte [ebp - 0x38]
movzx ecx, byte [ebp - 0x58]
movzx edx, byte [ebp - 0x48]
mov byte [ebp - 0x28], bl
mov byte [ebp - 0x26], cl
mov ecx, 0xffffffff
mov eax, ecx
mov byte [ebp - 0x27], dl
add esp, 0x4c
pop ebx
pop esi
pop edi
pop ebp
ret
mov byte [esi + ecx + 2], 0x3d
jmp 0x417e43