Function at 0x4145d0
Capabilities:
Encode data using base64

Disassembly:
push ebp
mov ebp, esp
sub esp, 0x10
push ebx
push esi
mov esi, dword [ebp + 0xc]
push edi
xor edi, edi
xor ecx, ecx
mov dword [ebp - 8], edi
xor edx, edx
lea ebx, [esi + 1]
mov al, byte [esi]
inc esi
test al, al
jne 0x4145e8
sub esi, ebx
test esi, esi
jle 0x4147c9
lea esp, [esp]
mov eax, dword [ebp + 0xc]
mov al, byte [edx + eax]
mov esi, str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_
mov byte [ebp - 1], al
xor eax, eax
lea ebx, [esi + 1]
mov dword [ebp - 0xc], eax
mov dword [ebp - 0x10], ebx
lea esp, [esp]
mov bl, byte [esi]
inc esi
test bl, bl
jne 0x414620
sub esi, dword [ebp - 0x10]
je 0x41464a
movsx ebx, byte [ebp - 1]
movzx eax, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
cmp ebx, eax
je 0x414772
mov eax, dword [ebp - 0xc]
inc eax
mov dword [ebp - 0xc], eax
cmp eax, esi
jb 0x414630
or al, 0xff
movsx eax, al
shl eax, 0x12
xor eax, ecx
and eax, 0xfc0000
xor ecx, eax
mov eax, dword [ebp + 0xc]
mov bl, byte [edx + eax + 1]
xor eax, eax
test esi, esi
je 0x414687
movsx edi, bl
jmp 0x414670
movzx ebx, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
cmp edi, ebx
je 0x41477a
inc eax
cmp eax, esi
jb 0x414670
mov edi, dword [ebp - 8]
or al, 0xff
movsx eax, al
shl eax, 0xc
xor eax, ecx
and eax, 0x3f000
xor ecx, eax
mov eax, dword [ebp + 0xc]
mov bl, byte [edx + eax + 2]
xor eax, eax
test esi, esi
je 0x4146c7
movsx edi, bl
jmp 0x4146b0
movzx ebx, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
cmp edi, ebx
je 0x414782
inc eax
cmp eax, esi
jb 0x4146b0
mov edi, dword [ebp - 8]
or al, 0xff
movsx eax, al
shl eax, 6
xor eax, ecx
and eax, 0xfc0
xor ecx, eax
mov eax, dword [ebp + 0xc]
mov bl, byte [edx + eax + 3]
xor eax, eax
test esi, esi
je 0x414707
movsx edi, bl
jmp 0x4146f0
movzx ebx, byte [eax + str.ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789_]
cmp edi, ebx
je 0x41478a
inc eax
cmp eax, esi
jb 0x4146f0
mov edi, dword [ebp - 8]
or al, 0xff
mov ebx, dword [ebp + 0xc]
mov esi, dword [ebp + 8]
movsx eax, al
xor eax, ecx
and eax, 0x3f
add edx, 4
xor ecx, eax
cmp byte [ebx + edx - 2], 0x3d
je 0x414792
cmp byte [edx + ebx - 1], 0x3d
je 0x4147a9
mov eax, ecx
shr eax, 0x10
mov byte [edi + esi], al
mov eax, ecx
shr eax, 8
mov byte [edi + esi + 1], al
mov byte [edi + esi + 2], cl
add edi, 3
mov esi, ebx
mov dword [ebp - 8], edi
lea ebx, [esi + 1]
lea ebx, [ebx]
mov al, byte [esi]
inc esi
test al, al
jne 0x414750
sub esi, ebx
cmp edx, esi
jl 0x414600
mov ecx, dword [ebp + 8]
mov byte [edi + ecx], al
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov al, byte [ebp - 0xc]
jmp 0x41464c
mov edi, dword [ebp - 8]
jmp 0x414689
mov edi, dword [ebp - 8]
jmp 0x4146c9
mov edi, dword [ebp - 8]
jmp 0x414709
shr ecx, 0x10
mov byte [edi + esi], cl
mov byte [edi + esi + 1], 0
lea eax, [edi + 1]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov edx, ecx
shr edx, 0x10
mov byte [edi + esi], dl
shr ecx, 8
mov byte [edi + esi + 1], cl
mov byte [edi + esi + 2], 0
lea eax, [edi + 2]
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8
mov eax, dword [ebp + 8]
mov byte [edi + eax], cl
mov eax, edi
pop edi
pop esi
pop ebx
mov esp, ebp
pop ebp
ret 8