Function at 0x403870
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
cmp dword [ebp + 8], 0
je 0x403882
cmp dword [ebp + 0xc], 0
jne 0x403889
xor eax, eax
jmp 0x403add
mov dword [ebp - 8], 0x3f
mov dword [ebp - 4], 0
mov dword [ebp - 0x10], 0
jmp 0x4038b2
mov eax, dword [ebp - 4]
add eax, 3
mov dword [ebp - 4], eax
mov ecx, dword [ebp - 0x10]
add ecx, 4
mov dword [ebp - 0x10], ecx
mov edx, dword [ebp + 0xc]
sub edx, 3
cmp dword [ebp - 4], edx
jg 0x40398b
mov eax, dword [ebp + 0x14]
sub eax, 4
cmp dword [ebp - 0x10], eax
jg 0x40398b
mov dword [ebp - 0xc], 0
mov ecx, dword [ebp + 8]
add ecx, dword [ebp - 4]
movzx edx, byte [ecx]
or edx, dword [ebp - 0xc]
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 0xc]
shl eax, 8
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp + 8]
add ecx, dword [ebp - 4]
movzx edx, byte [ecx + 1]
or edx, dword [ebp - 0xc]
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 0xc]
shl eax, 8
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp + 8]
add ecx, dword [ebp - 4]
movzx edx, byte [ecx + 2]
or edx, dword [ebp - 0xc]
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 0xc]
and eax, dword [ebp - 8]
mov ecx, dword [ebp + 0x10]
add ecx, dword [ebp - 0x10]
mov dl, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [ecx + 3], dl
mov eax, dword [ebp - 0xc]
shr eax, 6
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp - 0xc]
and ecx, dword [ebp - 8]
mov edx, dword [ebp + 0x10]
add edx, dword [ebp - 0x10]
mov al, byte [ecx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [edx + 2], al
mov ecx, dword [ebp - 0xc]
shr ecx, 6
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp - 0xc]
and edx, dword [ebp - 8]
mov eax, dword [ebp + 0x10]
add eax, dword [ebp - 0x10]
mov cl, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [eax + 1], cl
mov edx, dword [ebp - 0xc]
shr edx, 6
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 0xc]
and eax, dword [ebp - 8]
mov ecx, dword [ebp + 0x10]
add ecx, dword [ebp - 0x10]
mov dl, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [ecx], dl
jmp 0x4038a0
mov eax, dword [ebp + 0xc]
cmp eax, dword [ebp - 4]
jne 0x4039af
mov ecx, dword [ebp + 0x14]
sub ecx, 1
cmp dword [ebp - 0x10], ecx
jge 0x4039a7
mov edx, dword [ebp + 0x10]
add edx, dword [ebp - 0x10]
mov byte [edx], 0
mov eax, dword [ebp - 0x10]
jmp 0x403add
mov eax, dword [ebp + 0xc]
sub eax, dword [ebp - 4]
cmp eax, 1
jne 0x403a1e
mov dword [ebp - 0xc], 0
mov ecx, dword [ebp + 8]
add ecx, dword [ebp - 4]
movzx edx, byte [ecx]
or edx, dword [ebp - 0xc]
mov dword [ebp - 0xc], edx
mov eax, dword [ebp + 0x10]
add eax, dword [ebp - 0x10]
mov byte [eax + 3], 0x3d
mov ecx, dword [ebp + 0x10]
add ecx, dword [ebp - 0x10]
mov byte [ecx + 2], 0x3d
mov edx, dword [ebp - 0xc]
and edx, 3
shl edx, 4
mov eax, dword [ebp + 0x10]
add eax, dword [ebp - 0x10]
mov cl, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [eax + 1], cl
mov edx, dword [ebp - 0xc]
shr edx, 2
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 0xc]
and eax, dword [ebp - 8]
mov ecx, dword [ebp + 0x10]
add ecx, dword [ebp - 0x10]
mov dl, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [ecx], dl
jmp 0x403abd
mov eax, dword [ebp + 0xc]
sub eax, dword [ebp - 4]
cmp eax, 2
jne 0x403ab9
mov dword [ebp - 0xc], 0
mov ecx, dword [ebp + 8]
add ecx, dword [ebp - 4]
movzx edx, byte [ecx]
or edx, dword [ebp - 0xc]
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 0xc]
shl eax, 8
mov dword [ebp - 0xc], eax
mov ecx, dword [ebp + 8]
add ecx, dword [ebp - 4]
movzx edx, byte [ecx + 1]
or edx, dword [ebp - 0xc]
mov dword [ebp - 0xc], edx
mov eax, dword [ebp + 0x10]
add eax, dword [ebp - 0x10]
mov byte [eax + 3], 0x3d
mov ecx, dword [ebp - 0xc]
and ecx, 0xf
mov edx, dword [ebp + 0x10]
add edx, dword [ebp - 0x10]
mov al, byte [ecx*4 + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [edx + 2], al
mov ecx, dword [ebp - 0xc]
shr ecx, 4
mov dword [ebp - 0xc], ecx
mov edx, dword [ebp - 0xc]
and edx, dword [ebp - 8]
mov eax, dword [ebp + 0x10]
add eax, dword [ebp - 0x10]
mov cl, byte [edx + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [eax + 1], cl
mov edx, dword [ebp - 0xc]
shr edx, 6
mov dword [ebp - 0xc], edx
mov eax, dword [ebp - 0xc]
and eax, dword [ebp - 8]
mov ecx, dword [ebp + 0x10]
add ecx, dword [ebp - 0x10]
mov dl, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
mov byte [ecx], dl
jmp 0x403abd
xor eax, eax
jmp 0x403add
mov eax, dword [ebp - 0x10]
add eax, 4
mov ecx, dword [ebp + 0x14]
sub ecx, 1
cmp eax, ecx
jge 0x403ad7
mov edx, dword [ebp + 0x10]
add edx, dword [ebp - 0x10]
mov byte [edx + 4], 0
mov eax, dword [ebp - 0x10]
add eax, 4
mov esp, ebp
pop ebp
ret