Function at 0x401d42
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x28
mov dword [ebp - 0x10], 0
mov dword [ebp - 0x14], 0
cmp dword [ebp + 0xc], 0
jne 0x401d61
jmp 0x401f98
mov eax, dword [ebp + 0xc]
mov dword [esp], eax
call sym._strlen
mov dword [ebp - 4], eax
mov dword [ebp - 0xc], 0
mov eax, dword [ebp - 4]
mov dword [ebp - 0x18], eax
mov eax, 0x55555556
imul dword [ebp - 0x18]
mov ecx, edx
mov eax, dword [ebp - 0x18]
sar eax, 0x1f
sub ecx, eax
mov eax, ecx
cmp eax, dword [ebp - 0xc]
jle 0x401e5a
mov dword [esp + 8], 3
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
lea eax, [ebp - 0x10]
mov dword [esp], eax
call sym._strncpy
lea eax, [ebp - 0x10]
mov dword [esp], eax
call sym._ThreeBytesReverse
lea eax, [ebp - 0x10]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0xc]
shl eax, 2
add eax, dword [ebp + 8]
lea edx, [eax + 3]
mov eax, dword [ebp - 0x14]
movzx eax, byte [eax]
and eax, 0x3f
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
mov byte [edx], al
mov eax, dword [ebp - 0xc]
shl eax, 2
add eax, dword [ebp + 8]
lea edx, [eax + 2]
mov eax, dword [ebp - 0x14]
movzx eax, word [eax]
shr eax, 6
movzx eax, ax
and eax, 0x3f
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
mov byte [edx], al
mov eax, dword [ebp - 0xc]
shl eax, 2
add eax, dword [ebp + 8]
lea edx, [eax + 1]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
shr eax, 0xc
and eax, 0x3f
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
mov byte [edx], al
mov eax, dword [ebp - 0xc]
lea edx, [eax*4]
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x14]
movzx eax, byte [eax + 2]
shr al, 2
movzx eax, al
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
mov byte [edx + ecx], al
lea eax, [ebp + 0xc]
add dword [eax], 3
lea eax, [ebp - 0xc]
inc dword [eax]
jmp 0x401d76
mov eax, dword [ebp - 4]
mov dword [ebp - 0x18], eax
mov eax, 0x55555556
imul dword [ebp - 0x18]
mov ecx, edx
mov eax, dword [ebp - 0x18]
sar eax, 0x1f
sub ecx, eax
mov eax, ecx
add eax, eax
add eax, ecx
mov edx, dword [ebp - 0x18]
sub edx, eax
mov eax, edx
mov dword [ebp - 8], eax
mov dword [esp + 8], 3
mov eax, dword [ebp + 0xc]
mov dword [esp + 4], eax
lea eax, [ebp - 0x10]
mov dword [esp], eax
call sym._strncpy
lea eax, [ebp - 0x10]
mov dword [esp], eax
call sym._ThreeBytesReverse
cmp dword [ebp - 8], 1
jne 0x401f15
lea eax, [ebp - 0x10]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0xc]
lea edx, [eax*4]
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x14]
movzx eax, byte [eax + 2]
shr al, 2
movzx eax, al
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
mov byte [edx + ecx], al
mov eax, dword [ebp - 0xc]
shl eax, 2
add eax, dword [ebp + 8]
lea edx, [eax + 1]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
shr eax, 0xc
and eax, 0x3f
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
mov byte [edx], al
mov eax, dword [ebp - 0xc]
shl eax, 2
add eax, dword [ebp + 8]
add eax, 2
mov byte [eax], 0x3d
mov eax, dword [ebp - 0xc]
shl eax, 2
add eax, dword [ebp + 8]
add eax, 3
mov byte [eax], 0x3d
cmp dword [ebp - 8], 2
jne 0x401f98
lea eax, [ebp - 0x10]
mov dword [ebp - 0x14], eax
mov eax, dword [ebp - 0xc]
lea edx, [eax*4]
mov ecx, dword [ebp + 8]
mov eax, dword [ebp - 0x14]
movzx eax, byte [eax + 2]
shr al, 2
movzx eax, al
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
mov byte [edx + ecx], al
mov eax, dword [ebp - 0xc]
shl eax, 2
add eax, dword [ebp + 8]
lea edx, [eax + 1]
mov eax, dword [ebp - 0x14]
mov eax, dword [eax]
shr eax, 0xc
and eax, 0x3f
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
mov byte [edx], al
mov eax, dword [ebp - 0xc]
shl eax, 2
add eax, dword [ebp + 8]
lea edx, [eax + 2]
mov eax, dword [ebp - 0x14]
movzx eax, word [eax]
shr eax, 6
movzx eax, ax
and eax, 0x3f
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789]
mov byte [edx], al
mov eax, dword [ebp - 0xc]
shl eax, 2
add eax, dword [ebp + 8]
add eax, 3
mov byte [eax], 0x3d
leave
ret