Function at 0x401a10
Capabilities:
Encode data using base64

Disassembly:
push ecx
mov eax, 0x55555556
push ebx
imul dword [esp + 0x10]
mov ebx, dword [esp + 0xc]
mov eax, edx
push ebp
push esi
mov esi, dword [esp + 0x1c]
push edi
shr eax, 0x1f
xor ecx, ecx
add edx, eax
xor edi, edi
cmp edx, ecx
mov dword [esp + 0x10], ecx
jle 0x401aeb
mov dword [esp + 0x20], edx
xor eax, eax
xor edx, edx
mov al, byte [edi + ebx]
mov dl, byte [edi + ebx + 1]
inc edi
mov ebp, edx
inc edi
xor edx, edx
mov dl, byte [edi + ebx]
mov ebx, eax
sar ebx, 2
and ebx, 0x3f
and eax, 3
shl eax, 4
mov bl, byte [ebx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
inc edi
mov byte [ecx + esi], bl
mov ebx, ebp
sar ebx, 4
and ebx, 0xf
inc ecx
or ebx, eax
and ebp, 0xf
shl ebp, 2
mov al, byte [ebx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [ecx + esi], al
mov eax, edx
sar eax, 6
and eax, 3
inc ecx
or eax, ebp
and edx, 0x3f
inc ecx
mov al, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [ecx + esi - 1], al
mov dl, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov eax, dword [esp + 0x10]
mov byte [ecx + esi], dl
add eax, 4
inc ecx
cmp eax, 0x49
mov dword [esp + 0x10], eax
jl 0x401ad8
mov al, byte [0x42d344]
mov byte [ecx + esi], al
mov al, byte [0x42d345]
inc ecx
test al, al
je 0x401ad0
mov byte [ecx + esi], al
inc ecx
mov dword [esp + 0x10], 0
mov eax, dword [esp + 0x20]
mov ebx, dword [esp + 0x18]
dec eax
mov dword [esp + 0x20], eax
jne 0x401a41
mov eax, dword [esp + 0x1c]
mov ebp, 3
cdq
idiv ebp
sub edx, 0
je 0x401baf
dec edx
je 0x401b81
dec edx
jne 0x401bc4
xor edx, edx
xor eax, eax
mov dl, byte [edi + ebx]
mov al, byte [edi + ebx + 1]
mov ebp, edx
sar edx, 2
and edx, 0x3f
and ebp, 3
shl ebp, 4
mov dl, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [ecx + esi], dl
mov edx, eax
sar edx, 4
and edx, 0xf
inc ecx
or edx, ebp
inc ecx
and eax, 0xf
mov dl, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [ecx + esi - 1], dl
mov al, byte [eax*4 + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [ecx + esi], al
inc ecx
mov byte [ecx + esi], 0x3d
mov dl, byte [0x42d344]
inc ecx
mov byte [ecx + esi], dl
mov al, byte [0x42d345]
inc ecx
test al, al
je 0x401bc4
mov edx, dword [esp + 0x28]
mov byte [ecx + esi], al
inc ecx
pop edi
mov eax, 1
mov byte [ecx + esi], 0
pop esi
pop ebp
mov dword [edx], ecx
pop ebx
pop ecx
ret
xor eax, eax
mov al, byte [edi + ebx]
mov edx, eax
and eax, 3
sar edx, 2
and edx, 0x3f
inc ecx
shl eax, 4
mov dl, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [ecx + esi - 1], dl
mov al, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [ecx + esi], al
inc ecx
mov byte [ecx + esi], 0x3d
jmp 0x401b4f
mov al, byte [0x42d344]
mov byte [ecx + esi], al
mov al, byte [0x42d345]
inc ecx
test al, al
je 0x401bc4
mov byte [ecx + esi], al
mov edx, dword [esp + 0x28]
mov byte [ecx + esi], 0
pop edi
pop esi
pop ebp
mov dword [edx], ecx
mov eax, 1
pop ebx
pop ecx
ret