Function at 0x40dcfa
Capabilities:
Encode data using base64

Disassembly:
push ecx
push ecx
push ebx
push ebp
push esi
mov esi, dword [esp + 0x18]
mov ebp, ecx
push edi
mov edi, edx
mov dword [esp + 0x10], ebp
mov dword [esp + 0x14], edi
mov ebx, ebp
cmp edi, 0x10
jb 0x40de96
xor edx, edx
mov eax, edi
push 0xc
pop ecx
div ecx
lea edi, [esi + 6]
imul edx, eax, 0xc
lea eax, [ebp + 5]
add edx, ebp
mov ebp, eax
movzx eax, byte [ebx]
shl eax, 8
movzx ecx, byte [ebp - 4]
add ecx, eax
movzx eax, byte [ebp - 3]
shl ecx, 8
add ecx, eax
mov eax, ecx
shr eax, 0x12
mov al, byte [eax + 0x69b490]
mov byte [esi], al
mov eax, ecx
shr eax, 0xc
and eax, 0x3f
mov al, byte [eax + 0x69b490]
mov byte [edi - 5], al
mov eax, ecx
shr eax, 6
and ecx, 0x3f
and eax, 0x3f
mov al, byte [eax + 0x69b490]
mov byte [edi - 4], al
mov al, byte [ecx + 0x69b490]
mov byte [edi - 3], al
movzx ecx, byte [ebp - 2]
movzx eax, byte [ebp - 1]
shl ecx, 8
add ecx, eax
movzx eax, byte [ebp]
shl ecx, 8
add ecx, eax
mov eax, ecx
shr eax, 0x12
mov al, byte [eax + 0x69b490]
mov byte [edi - 2], al
mov eax, ecx
shr eax, 0xc
and eax, 0x3f
mov al, byte [eax + 0x69b490]
mov byte [edi - 1], al
mov eax, ecx
shr eax, 6
and ecx, 0x3f
and eax, 0x3f
mov al, byte [eax + 0x69b490]
mov byte [edi], al
mov al, byte [ecx + 0x69b490]
mov byte [edi + 1], al
movzx ecx, byte [ebp + 1]
movzx eax, byte [ebp + 2]
shl ecx, 8
add ecx, eax
movzx eax, byte [ebp + 3]
shl ecx, 8
add ecx, eax
mov eax, ecx
shr eax, 0x12
mov al, byte [eax + 0x69b490]
mov byte [edi + 2], al
mov eax, ecx
shr eax, 0xc
and eax, 0x3f
mov al, byte [eax + 0x69b490]
mov byte [edi + 3], al
mov eax, ecx
shr eax, 6
and ecx, 0x3f
and eax, 0x3f
mov al, byte [eax + 0x69b490]
mov byte [edi + 4], al
mov al, byte [ecx + 0x69b490]
mov byte [edi + 5], al
movzx ecx, byte [ebp + 4]
movzx eax, byte [ebp + 5]
shl ecx, 8
add ecx, eax
movzx eax, byte [ebp + 6]
shl ecx, 8
add ecx, eax
mov eax, ecx
shr eax, 0x12
mov al, byte [eax + 0x69b490]
lea ebp, [ebp + 0xc]
mov byte [edi + 6], al
lea edi, [edi + 0x10]
mov eax, ecx
add ebx, 0xc
shr eax, 0xc
add esi, 0x10
and eax, 0x3f
mov al, byte [eax + 0x69b490]
mov byte [edi - 9], al
mov eax, ecx
shr eax, 6
and ecx, 0x3f
and eax, 0x3f
mov al, byte [eax + 0x69b490]
mov byte [edi - 8], al
mov al, byte [ecx + 0x69b490]
mov byte [edi - 7], al
cmp ebx, edx
jne 0x40dd31
mov ebp, dword [esp + 0x10]
mov edi, dword [esp + 0x14]
sub ebp, ebx
add edi, ebp
push 3
pop ecx
cmp edi, ecx
jb 0x40df03
mov eax, edi
xor edx, edx
div ecx
mov ebp, eax
movzx edx, byte [ebx]
sub edi, 3
movzx ecx, byte [ebx + 1]
shl edx, 8
add edx, ecx
movzx ecx, byte [ebx + 2]
shl edx, 8
add ebx, 3
add edx, ecx
mov eax, edx
shr eax, 0x12
mov al, byte [eax + 0x69b490]
mov byte [esi], al
mov eax, edx
shr eax, 0xc
and eax, 0x3f
mov al, byte [eax + 0x69b490]
mov byte [esi + 1], al
mov eax, edx
shr eax, 6
and edx, 0x3f
and eax, 0x3f
mov al, byte [eax + 0x69b490]
mov byte [esi + 2], al
mov al, byte [edx + 0x69b490]
mov byte [esi + 3], al
add esi, 4
sub ebp, 1
jne 0x40dea5
cmp edi, 1
jne 0x40df2f
movzx ecx, byte [ebx]
mov eax, ecx
mov word [esi + 2], 0x3d3d
shr eax, 2
and ecx, 3
shl ecx, 4
mov al, byte [eax + 0x69b490]
mov byte [esi], al
mov al, byte [ecx + 0x69b490]
mov byte [esi + 1], al
jmp 0x40df6f
cmp edi, 2
jne 0x40df6f
movzx ecx, byte [ebx]
movzx eax, byte [ebx + 1]
shl ecx, 8
add ecx, eax
mov byte [esi + 3], 0x3d
mov eax, ecx
shr eax, 0xa
mov al, byte [eax + 0x69b490]
mov byte [esi], al
mov eax, ecx
shr eax, 4
and eax, 0x3f
and ecx, 0xf
mov al, byte [eax + 0x69b490]
mov byte [esi + 1], al
mov al, byte [ecx*4 + 0x69b490]
mov byte [esi + 2], al
pop edi
pop esi
pop ebp
pop ebx
pop ecx
pop ecx
ret