Function at 0x10003ed0
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x124
mov ecx, dword [ebp + 0x10]
push ebx
push esi
mov esi, dword [ebp + 0xc]
test ecx, ecx
push edi
jne 0x10003ef2
push esi
call sub.MSVCRT.dll_strlen
pop ecx
mov dword [ebp + 0x10], eax
mov ecx, eax
mov eax, dword [ebp + 8]
and dword [ebp - 4], 0
and dword [ebp + 8], 0
mov dword [ebp + 0xc], eax
lea eax, [ecx - 3]
mov dword [ebp - 8], esi
test eax, eax
mov ebx, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
jle 0x1000401e
push 3
add eax, 2
xor edx, edx
pop ecx
div ecx
mov ecx, eax
mov dword [ebp - 0xc], eax
shl ecx, 2
lea eax, [eax + eax*2]
mov dword [ebp - 4], ecx
mov dword [ebp + 8], eax
mov eax, dword [ebp - 8]
push 0x10
pop ecx
mov esi, ebx
lea edi, [ebp - 0x124]
mov edx, dword [eax]
rep movsd dword es:[edi], dword [esi]
mov eax, edx
shr eax, 2
and eax, 0x3f
movsb byte es:[edi], byte [esi]
jl 0x10003f59
cmp eax, 0x40
jge 0x10003f59
mov al, byte [ebp + eax - 0x124]
jmp 0x10003f5b
mov al, 0x3d
movsx eax, al
mov dword [ebp - 0x10], eax
mov eax, edx
mov ecx, edx
push 0x10
shr eax, 0xc
and ecx, 3
and eax, 0xf
shl ecx, 4
or eax, ecx
pop ecx
mov esi, ebx
lea edi, [ebp - 0x9c]
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jl 0x10003f91
cmp eax, 0x40
jge 0x10003f91
mov al, byte [ebp + eax - 0x9c]
jmp 0x10003f93
mov al, 0x3d
movsx eax, al
mov dword [ebp - 0x14], eax
mov eax, edx
shr eax, 8
mov ecx, edx
and eax, 0xf
shr ecx, 0x16
shl eax, 2
and ecx, 3
push 0x10
or eax, ecx
pop ecx
mov esi, ebx
lea edi, [ebp - 0xe0]
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jl 0x10003fcc
cmp eax, 0x40
jge 0x10003fcc
mov al, byte [ebp + eax - 0xe0]
jmp 0x10003fce
mov al, 0x3d
push 0x10
mov esi, ebx
pop ecx
lea edi, [ebp - 0x58]
rep movsd dword es:[edi], dword [esi]
shr edx, 0x10
and edx, 0x3f
movsx eax, al
movsb byte es:[edi], byte [esi]
jl 0x10003fef
cmp edx, 0x40
jge 0x10003fef
mov cl, byte [ebp + edx - 0x58]
jmp 0x10003ff1
mov cl, 0x3d
movsx ecx, cl
shl ecx, 8
or ecx, eax
mov eax, dword [ebp + 0xc]
shl ecx, 8
or ecx, dword [ebp - 0x14]
add dword [ebp + 0xc], 4
add dword [ebp - 8], 3
shl ecx, 8
or ecx, dword [ebp - 0x10]
dec dword [ebp - 0xc]
mov dword [eax], ecx
jne 0x10003f2e
mov ecx, dword [ebp + 0x10]
cmp dword [ebp + 8], ecx
jge 0x10004115
sub ecx, dword [ebp + 8]
xor edx, edx
mov dword [ebp + 0x10], edx
test ecx, ecx
mov dword [ebp + 8], ecx
jle 0x1000404d
mov esi, dword [ebp - 8]
mov eax, ecx
lea edi, [ebp + 0x10]
shr ecx, 2
rep movsd dword es:[edi], dword [esi]
mov ecx, eax
and ecx, 3
rep movsb byte es:[edi], byte [esi]
mov edx, dword [ebp + 0x10]
push 0x10
mov esi, ebx
pop ecx
lea edi, [ebp - 0x58]
rep movsd dword es:[edi], dword [esi]
mov eax, edx
shr eax, 2
and eax, 0x3f
movsb byte es:[edi], byte [esi]
jl 0x1000406d
cmp eax, 0x40
jge 0x1000406d
mov al, byte [ebp + eax - 0x58]
jmp 0x1000406f
mov al, 0x3d
mov ecx, dword [ebp + 0xc]
push 0x10
mov esi, ebx
lea edi, [ebp - 0x58]
mov byte [ecx], al
mov eax, edx
mov ecx, edx
shr eax, 0xc
and ecx, 3
and eax, 0xf
shl ecx, 4
or eax, ecx
pop ecx
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jl 0x1000409e
cmp eax, 0x40
jge 0x1000409e
mov al, byte [ebp + eax - 0x58]
jmp 0x100040a0
mov al, 0x3d
mov ecx, dword [ebp + 0xc]
cmp dword [ebp + 8], 1
mov byte [ecx + 1], al
jle 0x100040d9
mov eax, edx
mov ecx, edx
shr eax, 8
and eax, 0xf
push 0x10
shr ecx, 0x16
shl eax, 2
and ecx, 3
mov esi, ebx
or eax, ecx
pop ecx
lea edi, [ebp - 0x58]
rep movsd dword es:[edi], dword [esi]
movsb byte es:[edi], byte [esi]
jl 0x100040d9
cmp eax, 0x40
jge 0x100040d9
mov al, byte [ebp + eax - 0x58]
jmp 0x100040db
mov al, 0x3d
mov ecx, dword [ebp + 0xc]
cmp dword [ebp + 8], 2
mov byte [ecx + 2], al
jle 0x10004105
push 0x10
mov esi, ebx
pop ecx
lea edi, [ebp - 0x58]
rep movsd dword es:[edi], dword [esi]
shr edx, 0x10
and edx, 0x3f
movsb byte es:[edi], byte [esi]
jl 0x10004105
cmp edx, 0x40
jge 0x10004105
mov al, byte [ebp + edx - 0x58]
jmp 0x10004107
mov al, 0x3d
mov ecx, dword [ebp + 0xc]
add dword [ebp + 0xc], 4
add dword [ebp - 4], 4
mov byte [ecx + 3], al
mov eax, dword [ebp + 0xc]
pop edi
pop esi
pop ebx
and byte [eax], 0
mov eax, dword [ebp - 4]
leave
ret