Function at 0x5106a0
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
push ecx
push ebx
mov ebx, dword [ebp + 8]
push edi
mov edi, dword [ebp + 0xc]
cmp ebx, edi
je 0x5108eb
push esi
mov esi, dword [ebp + 0x14]
mov al, byte [ebx]
inc ebx
mov byte [ebp - 2], al
cmp ebx, edi
je 0x5108a7
mov cl, byte [ebx]
inc ebx
mov byte [ebp + 0xb], cl
cmp ebx, edi
je 0x51085c
mov cl, byte [ebx]
inc ebx
mov byte [ebp - 1], cl
test esi, esi
je 0x51072c
movzx eax, al
shr eax, 2
mov al, byte [eax*4 + 0x84b128]
mov byte [ebp + 0xf], al
mov eax, dword [esi + 0x20]
cmp dword [eax], 0
je 0x510716
mov ecx, dword [esi + 0x30]
mov eax, dword [ecx]
test eax, eax
jle 0x510716
dec eax
mov dword [ecx], eax
mov ecx, dword [esi + 0x20]
mov edx, dword [ecx]
lea eax, [edx + 1]
mov dword [ecx], eax
mov al, byte [ebp + 0xf]
mov byte [edx], al
movzx eax, al
jmp 0x510724
mov eax, dword [esi]
mov ecx, esi
mov edx, dword [eax + 0xc]
movzx eax, byte [ebp + 0xf]
push eax
call edx
mov esi, dword [ebp + 0x14]
cmp eax, 0xffffffff
jne 0x510730
mov byte [ebp + 0x10], 1
test esi, esi
je 0x51078f
movzx ecx, byte [ebp - 2]
movzx eax, byte [ebp + 0xb]
and ecx, 3
shr eax, 4
shl ecx, 4
add ecx, eax
mov al, byte [ecx*4 + 0x84b128]
mov byte [ebp + 0xf], al
mov eax, dword [esi + 0x20]
cmp dword [eax], 0
je 0x510779
mov ecx, dword [esi + 0x30]
mov eax, dword [ecx]
test eax, eax
jle 0x510779
dec eax
mov dword [ecx], eax
mov ecx, dword [esi + 0x20]
mov edx, dword [ecx]
lea eax, [edx + 1]
mov dword [ecx], eax
mov al, byte [ebp + 0xf]
mov byte [edx], al
movzx eax, al
jmp 0x510787
mov eax, dword [esi]
mov ecx, esi
mov edx, dword [eax + 0xc]
movzx eax, byte [ebp + 0xf]
push eax
call edx
mov esi, dword [ebp + 0x14]
cmp eax, 0xffffffff
jne 0x510793
mov byte [ebp + 0x10], 1
test esi, esi
je 0x5107ef
movzx ecx, byte [ebp + 0xb]
movzx eax, byte [ebp - 1]
and ecx, 0xf
shr eax, 6
lea eax, [eax + ecx*4]
mov cl, byte [eax*4 + 0x84b128]
mov eax, dword [esi + 0x20]
mov byte [ebp + 0xb], cl
cmp dword [eax], 0
je 0x5107da
mov edx, dword [esi + 0x30]
mov eax, dword [edx]
test eax, eax
jle 0x5107da
dec eax
mov dword [edx], eax
mov ecx, dword [esi + 0x20]
mov edx, dword [ecx]
lea eax, [edx + 1]
mov dword [ecx], eax
mov al, byte [ebp + 0xb]
mov byte [edx], al
movzx eax, al
jmp 0x5107e7
mov eax, dword [esi]
mov edx, dword [eax + 0xc]
movzx eax, cl
mov ecx, esi
push eax
call edx
mov esi, dword [ebp + 0x14]
cmp eax, 0xffffffff
jne 0x5107f3
mov byte [ebp + 0x10], 1
test esi, esi
je 0x510845
movzx eax, byte [ebp - 1]
and eax, 0x3f
mov cl, byte [eax*4 + 0x84b128]
mov eax, dword [esi + 0x20]
mov byte [ebp + 0xb], cl
cmp dword [eax], 0
je 0x510830
mov edx, dword [esi + 0x30]
mov eax, dword [edx]
test eax, eax
jle 0x510830
dec eax
mov dword [edx], eax
mov ecx, dword [esi + 0x20]
mov edx, dword [ecx]
lea eax, [edx + 1]
mov dword [ecx], eax
mov al, byte [ebp + 0xb]
mov byte [edx], al
movzx eax, al
jmp 0x51083d
mov eax, dword [esi]
mov edx, dword [eax + 0xc]
movzx eax, cl
mov ecx, esi
push eax
call edx
mov esi, dword [ebp + 0x14]
cmp eax, 0xffffffff
jne 0x510849
mov byte [ebp + 0x10], 1
cmp ebx, edi
jne 0x5106b8
pop esi
mov eax, ebx
pop edi
pop ebx
mov esp, ebp
pop ebp
ret 0x18
movzx esi, al
lea ecx, [ebp + 0x10]
mov eax, esi
shr eax, 2
movzx eax, byte [eax*4 + 0x84b128]
push eax
call fcn.004d1ff0
movzx edi, byte [ebp + 0xb]
lea ecx, [ebp + 0x10]
mov eax, edi
and esi, 3
shr eax, 4
shl esi, 4
add eax, esi
movzx eax, byte [eax*4 + 0x84b128]
push eax
call fcn.004d1ff0
and edi, 0xf
shl edi, 4
movzx eax, byte [edi + 0x84b128]
push eax
jmp 0x5108d8
movzx esi, al
lea ecx, [ebp + 0x10]
mov eax, esi
shr eax, 2
movzx eax, byte [eax*4 + 0x84b128]
push eax
call fcn.004d1ff0
and esi, 3
lea ecx, [ebp + 0x10]
shl esi, 6
movzx eax, byte [esi + 0x84b128]
push eax
call fcn.004d1ff0
push 0x3d
lea ecx, [ebp + 0x10]
call fcn.004d1ff0
push 0x3d
lea ecx, [ebp + 0x10]
call fcn.004d1ff0
pop esi
mov eax, ebx
pop edi
pop ebx
mov esp, ebp
pop ebp
ret 0x18